11"use client" ;
22
3+ import React from "react" ;
34import {
45 SiDiscord ,
56 SiGithub ,
@@ -21,44 +22,50 @@ const Footer = () => {
2122 const iconSize = 28 ;
2223 const { theme } = useTheme ( ) ;
2324
24- const socialMediaLinks = [
25- {
26- url : "https://discord.gg/RFjtXKfJy3" ,
27- icon : < SiDiscord className = "discord" size = { iconSize } /> ,
28- } ,
29- {
30- url : "https://github.com/ditectrev" ,
31- icon : < SiGithub className = "github" size = { iconSize } /> ,
32- } ,
33- {
34- url : "https://instagram.com/ditectrev" ,
35- icon : < SiInstagram className = "instagram" size = { iconSize } /> ,
36- } ,
37- {
38- url : "https://linkedin.com/company/ditectrev" ,
39- icon : < SiLinkedin className = "linkedin" size = { iconSize } /> ,
40- } ,
41- {
42- url : "https://medium.com/@ditectrev" ,
43- icon : < SiMedium className = "medium" size = { iconSize } /> ,
44- } ,
45- {
46- url : "https://patreon.com/Ditectrev" ,
47- icon : < SiPatreon className = "patreon" size = { iconSize } /> ,
48- } ,
49- {
50- url : "https://udemy.com/user/social-ditectrev" ,
51- icon : < SiUdemy className = "udemy" size = { iconSize } /> ,
52- } ,
53- {
54- url : "https://x.com/ditectrev" ,
55- icon : < SiX className = "x" size = { iconSize } /> ,
56- } ,
57- {
58- url : "https://youtube.com/@Ditectrev" ,
59- icon : < SiYoutube className = "youtube" size = { iconSize } /> ,
60- } ,
61- ] ;
25+ const socialMediaLinks : Array < { url : string ; Icon : any ; className : string } > =
26+ [
27+ {
28+ url : "https://discord.gg/RFjtXKfJy3" ,
29+ Icon : SiDiscord ,
30+ className : "discord" ,
31+ } ,
32+ {
33+ url : "https://github.com/ditectrev" ,
34+ Icon : SiGithub ,
35+ className : "github" ,
36+ } ,
37+ {
38+ url : "https://instagram.com/ditectrev" ,
39+ Icon : SiInstagram ,
40+ className : "instagram" ,
41+ } ,
42+ {
43+ url : "https://linkedin.com/company/ditectrev" ,
44+ Icon : SiLinkedin ,
45+ className : "linkedin" ,
46+ } ,
47+ {
48+ url : "https://medium.com/@ditectrev" ,
49+ Icon : SiMedium ,
50+ className : "medium" ,
51+ } ,
52+ {
53+ url : "https://patreon.com/Ditectrev" ,
54+ Icon : SiPatreon ,
55+ className : "patreon" ,
56+ } ,
57+ {
58+ url : "https://udemy.com/user/social-ditectrev" ,
59+ Icon : SiUdemy ,
60+ className : "udemy" ,
61+ } ,
62+ { url : "https://x.com/ditectrev" , Icon : SiX , className : "x" } ,
63+ {
64+ url : "https://youtube.com/@Ditectrev" ,
65+ Icon : SiYoutube ,
66+ className : "youtube" ,
67+ } ,
68+ ] ;
6269
6370 const gradientClass =
6471 theme === "dark"
@@ -69,18 +76,22 @@ const Footer = () => {
6976 < footer className = { `relative ${ gradientClass } overflow-hidden` } >
7077 < ParticlesFooter />
7178 < div className = "relative z-10 mx-3 my-3 social-icons-container text-white" >
72- { socialMediaLinks . map ( ( link , index ) => (
73- < a
74- key = { index }
75- className = "px-2"
76- href = { link . url }
77- target = "_blank"
78- rel = "noopener noreferrer"
79- aria-label = { `Visit ${ link . url } ` }
80- >
81- { link . icon }
82- </ a >
83- ) ) }
79+ { socialMediaLinks . map ( ( link , index ) => {
80+ const IconComponent = link . Icon ;
81+ return (
82+ < a
83+ key = { index }
84+ className = "px-2"
85+ href = { link . url }
86+ target = "_blank"
87+ rel = "noopener noreferrer"
88+ aria-label = { `Visit ${ link . url } ` }
89+ >
90+ { /* @ts -ignore - react-icons types incompatible with React 18.3 strict types */ }
91+ < IconComponent className = { link . className } size = { iconSize } />
92+ </ a >
93+ ) ;
94+ } ) }
8495 </ div >
8596
8697 { /* GitHub Star */ }
@@ -104,7 +115,7 @@ const Footer = () => {
104115
105116 { /* Copyright */ }
106117 < p className = "relative z-10 text-white text-sm flex justify-center" >
107- © 2026 Ditectrev and its contributors
118+ © { currentYear } Ditectrev and its contributors
108119 </ p >
109120 </ footer >
110121 ) ;
0 commit comments