@@ -5,14 +5,32 @@ import { Container } from '@/components/Other/Container'
55import { BrandLogo } from './BrandLogo'
66import logoLight from '../../images/cortex-reply-light.png'
77import logoDark from '../../images/cortex-reply-dark.png'
8+ import { Moon , Sun } from 'lucide-react'
89
910interface HeaderProps {
1011 isMenuOpen : boolean
1112 setIsMenuOpen ?: ( isOpen : boolean ) => void
1213}
1314
1415export function HeaderDesktop ( { isMenuOpen, setIsMenuOpen } : HeaderProps ) {
15- const [ isScrolled , setIsScrolled ] = useState ( false )
16+ const [ isScrolled , setIsScrolled ] = useState ( false )
17+ const [ currentTheme , setCurrentTheme ] = useState ( 'light' )
18+ const themes = [ 'light' , 'dark' ]
19+
20+ useEffect ( ( ) => {
21+ // Load theme from local storage or set to default 'light'
22+ const storedTheme = localStorage . getItem ( 'theme' ) || 'light'
23+ console . log ( 'storedTheme' , storedTheme )
24+ setCurrentTheme ( storedTheme )
25+ document . documentElement . setAttribute ( 'class' , storedTheme )
26+ } , [ ] )
27+
28+ const toggleTheme = ( ) => {
29+ const nextTheme = themes [ ( themes . indexOf ( currentTheme ) + 1 ) % themes . length ]
30+ setCurrentTheme ( nextTheme )
31+ document . documentElement . setAttribute ( 'class' , nextTheme )
32+ localStorage . setItem ( 'theme' , nextTheme ) // Save theme to local storage
33+ }
1634
1735 useEffect ( ( ) => {
1836 const handleScroll = ( ) => {
@@ -42,46 +60,59 @@ export function HeaderDesktop({ isMenuOpen, setIsMenuOpen }: HeaderProps) {
4260 >
4361 < Container >
4462 < nav className = "backdrop-blur-sm text-white p-0 rounded-b-xl" >
45- < div className = "flex items-center justify-between bg-primary px-9 py-0 dark:bg-[#212124] [&_.logo-light]:[filter:brightness(0)_invert(1)] rounded-b-xl" >
63+ < div className = "flex items-center justify-between bg-accent px-9 py-0 dark:bg-[#212124] [&_.logo-light]:[filter:brightness(0)_invert(1)] rounded-b-xl dark:border dark:border-accent " >
4664 < BrandLogo logoDark = { logoDark } logoLight = { logoLight } />
4765 < ul className = "flex items-center justify-center flex-grow space-x-8 text-md" >
4866 < li >
4967 < a href = "/services" className = "relative transition-colors group" >
5068 Services
51- < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-primary transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
69+ < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
5270 </ a >
5371 </ li >
5472 < li >
5573 < a href = "/insights" className = "relative transition-colors group" >
5674 Insights
57- < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-primary transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
75+ < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
5876 </ a >
5977 </ li >
6078 < li >
6179 < a href = "/about" className = "relative transition-colors group" >
6280 About Us
63- < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-primary transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
81+ < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
6482 </ a >
6583 </ li >
6684 < li >
6785 < a href = "/contact" className = "relative transition-colors group" >
6886 Contact
69- < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-primary transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
87+ < span className = "absolute -bottom-1 left-1/2 w-1/2 h-0.5 bg-white dark:bg-accent transform -translate-x-1/2 scale-x-0 transition-transform duration-300 ease-in-out group-hover:scale-x-100" > </ span >
7088 </ a >
7189 </ li >
7290 </ ul >
91+ < div className = 'flex items-center space-x-4' >
92+ < button
93+ className = "fixed right-16 z-[60] p-2 rounded-full bg-white/10 backdrop-blur-sm transition-all duration-300 hover:bg-white/20 text-white dark:hover:text-accent"
94+ onClick = { toggleTheme }
95+ >
96+ < div className = "relative" >
97+
98+ < Sun className = "absolute h-6 w-6 rotate-0 scale-100 transition-transform dark:-rotate-90 dark:scale-0" />
99+ < Moon className = "absoulte h-6 w-6 rotate-0 scale-0 transition-transform dark:rotate-0 dark:scale-100" />
100+ { /* <X className="w-6 h-6 text-white" /> */ }
101+ </ div >
102+ </ button >
73103 { ! isScrolled && setIsMenuOpen && (
74104 < button
75- className = "fixed right-4 z-[60] p-2 rounded-full bg-white/10 backdrop-blur-sm transition-all duration-300 hover:bg-white/20"
105+ className = "fixed right-4 z-[60] p-2 rounded-full bg-white/10 backdrop-blur-sm transition-all duration-300 hover:bg-white/20 text-white dark:hover:text-accent "
76106 onClick = { toggleMenu }
77107 >
78108 { isMenuOpen ? (
79- < X className = "w-6 h-6 text-white " />
109+ < X className = "w-6 h-6" />
80110 ) : (
81- < Menu className = "w-6 h-6 text-white " />
111+ < Menu className = "w-6 h-6 " />
82112 ) }
83113 </ button >
84114 ) }
115+ </ div >
85116 </ div >
86117 </ nav >
87118 </ Container >
0 commit comments