Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
VCCI-News
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Văn Hoàng
VCCI-News
Commits
c69c62e2
Commit
c69c62e2
authored
May 21, 2026
by
Lê Đức Huy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: add Zalo and TikTok icons and integrate them into the footer social links
parent
0e293688
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
54 deletions
+33
-54
footer.tsx
src/app/(main)/_lib/layout/footer.tsx
+1
-27
header.tsx
src/app/(main)/_lib/layout/header.tsx
+1
-27
icons.tsx
src/components/ui/icons.tsx
+31
-0
No files found.
src/app/(main)/_lib/layout/footer.tsx
View file @
c69c62e2
...
...
@@ -17,6 +17,7 @@ import { useQuery } from "@tanstack/react-query";
import
{
subscribeNewsletterEmail
}
from
"@/lib/api/newsletter-subscriptions"
;
import
{
getSiteInformation
}
from
"@/api/endpoints/site-information"
;
import
type
{
SiteInformationData
}
from
"@/api/models"
;
import
{
ZaloIcon
,
TiktokIcon
}
from
"@/components/ui/icons"
;
type
ApiEnvelope
<
T
>
=
{
responseData
?:
T
;
...
...
@@ -31,33 +32,6 @@ type SocialItem = {
icon
:
React
.
ReactNode
;
};
const
ZaloIcon
=
({
size
=
20
,
className
=
""
}:
{
size
?:
number
;
className
?:
string
})
=>
(
<
svg
viewBox=
"0 0 24 24"
width=
{
size
}
height=
{
size
}
fill=
"currentColor"
className=
{
className
}
>
<
path
d=
"M12.49 10.2722v-.4496h1.3467v6.3218h-.7704a.576.576 0 01-.5763-.5729l-.0006.0005a3.273 3.273 0 01-1.9372.6321c-1.8138 0-3.2844-1.4697-3.2844-3.2823 0-1.8125 1.4706-3.2822 3.2844-3.2822a3.273 3.273 0 011.9372.6321l.0006.0005zM6.9188 7.7896v.205c0 .3823-.051.6944-.2995 1.0605l-.03.0343c-.0542.0615-.1815.206-.2421.2843L2.024 14.8h4.8948v.7682a.5764.5764 0 01-.5767.5761H0v-.3622c0-.4436.1102-.6414.2495-.8476L4.8582 9.23H.1922V7.7896h6.7266zm8.5513 8.3548a.4805.4805 0 01-.4803-.4798v-7.875h1.4416v8.3548H15.47zM20.6934 9.6C22.52 9.6 24 11.0807 24 12.9044c0 1.8252-1.4801 3.306-3.3066 3.306-1.8264 0-3.3066-1.4808-3.3066-3.306 0-1.8237 1.4802-3.3044 3.3066-3.3044zm-10.1412 5.253c1.0675 0 1.9324-.8645 1.9324-1.9312 0-1.065-.865-1.9295-1.9324-1.9295s-1.9324.8644-1.9324 1.9295c0 1.0667.865 1.9312 1.9324 1.9312zm10.1412-.0033c1.0737 0 1.945-.8707 1.945-1.9453 0-1.073-.8713-1.9436-1.945-1.9436-1.0753 0-1.945.8706-1.945 1.9436 0 1.0746.8697 1.9453 1.945 1.9453z"
/>
</
svg
>
);
const
TiktokIcon
=
({
size
=
20
,
className
=
""
}:
{
size
?:
number
;
className
?:
string
})
=>
(
<
svg
viewBox=
"0 0 24 24"
width=
{
size
}
height=
{
size
}
fill=
"currentColor"
className=
{
className
}
>
<
path
d=
"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"
/>
</
svg
>
);
const
fallbackSocials
:
SocialItem
[]
=
[
{
...
...
src/app/(main)/_lib/layout/header.tsx
View file @
c69c62e2
...
...
@@ -19,6 +19,7 @@ import MenuItem from "@/components/base/menu-item";
import
{
useCustomClient
as
customClient
}
from
"@/api/mutator/custom-client"
;
import
type
{
Category
}
from
"@/api/models/category"
;
import
{
getCategoryFallbackResponse
}
from
"@/mockdata/categories"
;
import
{
ZaloIcon
,
TiktokIcon
}
from
"@/components/ui/icons"
;
type
HeaderMenuItem
=
{
id
:
string
;
...
...
@@ -58,33 +59,6 @@ type SocialItem = {
const
getEnvelopeData
=
<
T
,
>
(payload?: ApiEnvelope
<
T
>
| null) =
>
payload?.responseData ?? payload?.data?.responseData;
const ZaloIcon = (
{
size
=
12
,
className
=
""
}
:
{
size
?:
number
;
className
?:
string
}
) =
>
(
<
svg
viewBox=
"0 0 24 24"
width=
{
size
}
height=
{
size
}
fill=
"currentColor"
className=
{
className
}
>
<
path
d=
"M12.49 10.2722v-.4496h1.3467v6.3218h-.7704a.576.576 0 01-.5763-.5729l-.0006.0005a3.273 3.273 0 01-1.9372.6321c-1.8138 0-3.2844-1.4697-3.2844-3.2823 0-1.8125 1.4706-3.2822 3.2844-3.2822a3.273 3.273 0 011.9372.6321l.0006.0005zM6.9188 7.7896v.205c0 .3823-.051.6944-.2995 1.0605l-.03.0343c-.0542.0615-.1815.206-.2421.2843L2.024 14.8h4.8948v.7682a.5764.5764 0 01-.5767.5761H0v-.3622c0-.4436.1102-.6414.2495-.8476L4.8582 9.23H.1922V7.7896h6.7266zm8.5513 8.3548a.4805.4805 0 01-.4803-.4798v-7.875h1.4416v8.3548H15.47zM20.6934 9.6C22.52 9.6 24 11.0807 24 12.9044c0 1.8252-1.4801 3.306-3.3066 3.306-1.8264 0-3.3066-1.4808-3.3066-3.306 0-1.8237 1.4802-3.3044 3.3066-3.3044zm-10.1412 5.253c1.0675 0 1.9324-.8645 1.9324-1.9312 0-1.065-.865-1.9295-1.9324-1.9295s-1.9324.8644-1.9324 1.9295c0 1.0667.865 1.9312 1.9324 1.9312zm10.1412-.0033c1.0737 0 1.945-.8707 1.945-1.9453 0-1.073-.8713-1.9436-1.945-1.9436-1.0753 0-1.945.8706-1.945 1.9436 0 1.0746.8697 1.9453 1.945 1.9453z"
/>
</
svg
>
);
const TiktokIcon = (
{
size
=
12
,
className
=
""
}
:
{
size
?:
number
;
className
?:
string
}
) =
>
(
<
svg
viewBox=
"0 0 24 24"
width=
{
size
}
height=
{
size
}
fill=
"currentColor"
className=
{
className
}
>
<
path
d=
"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"
/>
</
svg
>
);
const fallbackSocials: SocialItem[] = [
{
...
...
src/components/ui/icons.tsx
View file @
c69c62e2
import
*
as
React
from
'react'
import
{
Check
,
Sun
,
Moon
}
from
'lucide-react'
export
const
ZaloIcon
=
({
size
=
20
,
className
=
""
}:
{
size
?:
number
;
className
?:
string
})
=>
(
<
svg
viewBox=
"0 0 24 24"
width=
{
size
}
height=
{
size
}
fill=
"currentColor"
className=
{
className
}
>
<
path
d=
"M12.49 10.2722v-.4496h1.3467v6.3218h-.7704a.576.576 0 01-.5763-.5729l-.0006.0005a3.273 3.273 0 01-1.9372.6321c-1.8138 0-3.2844-1.4697-3.2844-3.2823 0-1.8125 1.4706-3.2822 3.2844-3.2822a3.273 3.273 0 011.9372.6321l.0006.0005zM6.9188 7.7896v.205c0 .3823-.051.6944-.2995 1.0605l-.03.0343c-.0542.0615-.1815.206-.2421.2843L2.024 14.8h4.8948v.7682a.5764.5764 0 01-.5767.5761H0v-.3622c0-.4436.1102-.6414.2495-.8476L4.8582 9.23H.1922V7.7896h6.7266zm8.5513 8.3548a.4805.4805 0 01-.4803-.4798v-7.875h1.4416v8.3548H15.47zM20.6934 9.6C22.52 9.6 24 11.0807 24 12.9044c0 1.8252-1.4801 3.306-3.3066 3.306-1.8264 0-3.3066-1.4808-3.3066-3.306 0-1.8237 1.4802-3.3044 3.3066-3.3044zm-10.1412 5.253c1.0675 0 1.9324-.8645 1.9324-1.9312 0-1.065-.865-1.9295-1.9324-1.9295s-1.9324.8644-1.9324 1.9295c0 1.0667.865 1.9312 1.9324 1.9312zm10.1412-.0033c1.0737 0 1.945-.8707 1.945-1.9453 0-1.073-.8713-1.9436-1.945-1.9436-1.0753 0-1.945.8706-1.945 1.9436 0 1.0746.8697 1.9453 1.945 1.9453z"
/>
</
svg
>
);
const
TiktokIcon
=
({
size
=
20
,
className
=
""
}:
{
size
?:
number
;
className
?:
string
})
=>
(
<
svg
viewBox=
"0 0 24 24"
width=
{
size
}
height=
{
size
}
fill=
"currentColor"
className=
{
className
}
>
<
path
d=
"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"
/>
</
svg
>
);
export
const
Icons
=
{
Check
,
Sun
,
Moon
,
Zalo
:
ZaloIcon
,
Tiktok
:
TiktokIcon
,
}
export
default
Icons
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment