11import React , { useState , useEffect , useRef } from 'react' ;
2- import { Menu , X , ChevronDown , User , Settings , LogOut , Moon , Sun , Zap , BarChart3 , Network , Code , BookOpen , Type , Layers , Info } from 'lucide-react' ;
2+ import { Menu , X , ChevronDown , User , Settings , LogOut , Zap , BarChart3 , Network , Code , BookOpen , Type , Layers , Info } from 'lucide-react' ;
33import { Link , useLocation } from 'react-router-dom' ;
4+ import ThemeToggle from './ThemeToggle' ;
45
5- const Navbar = ( { darkMode, setDarkMode } ) => {
6+ const Navbar = ( { theme, onThemeChange } ) => {
7+ const isDark = theme === 'dark' ;
68 const [ isMenuOpen , setIsMenuOpen ] = useState ( false ) ;
79 const [ isProductsOpen , setIsProductsOpen ] = useState ( false ) ;
810 const [ isProfileOpen , setIsProfileOpen ] = useState ( false ) ;
@@ -83,12 +85,12 @@ const Navbar = ({ darkMode, setDarkMode }) => {
8385 fixed top-0 left-0 right-0 z-50 transition-all duration-200
8486 ${ isScrolled
8587 ? `backdrop-blur-xl border-b ${
86- darkMode
88+ isDark
8789 ? 'bg-gray-900/80 border-gray-800'
8890 : 'bg-white/80 border-gray-200'
8991 } `
9092 : `backdrop-blur-sm ${
91- darkMode
93+ isDark
9294 ? 'bg-gray-900/40 border-gray-800/40'
9395 : 'bg-white/40 border-gray-200/40'
9496 } border-b`
@@ -106,7 +108,7 @@ const Navbar = ({ darkMode, setDarkMode }) => {
106108 transition-colors duration-200 focus-visible:outline-none
107109 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2
108110 rounded-lg px-2 py-1
109- ${ darkMode
111+ ${ isDark
110112 ? 'text-white hover:text-blue-400 focus-visible:ring-offset-gray-900'
111113 : 'text-gray-900 hover:text-blue-600 focus-visible:ring-offset-white'
112114 }
@@ -134,8 +136,8 @@ const Navbar = ({ darkMode, setDarkMode }) => {
134136 focus-visible:outline-none focus-visible:ring-2
135137 focus-visible:ring-blue-500 focus-visible:ring-offset-2
136138 ${ isActive ( path )
137- ? ( darkMode ? 'bg-blue-600 text-white' : 'bg-blue-600 text-white' )
138- : ( darkMode
139+ ? 'bg-blue-600 text-white'
140+ : ( isDark
139141 ? 'text-gray-300 hover:text-white hover:bg-gray-700'
140142 : 'text-gray-700 hover:text-gray-900 hover:bg-gray-100'
141143 )
@@ -152,19 +154,7 @@ const Navbar = ({ darkMode, setDarkMode }) => {
152154 { /* Right side items */ }
153155 < div className = "hidden md:flex items-center space-x-3" >
154156 { /* Theme Toggle */ }
155- < button
156- onClick = { ( ) => setDarkMode ( ! darkMode ) }
157- className = { `
158- p-2 rounded-lg transition-all
159- ${ darkMode
160- ? 'bg-yellow-500/20 text-yellow-300 hover:bg-yellow-500/30'
161- : 'bg-gray-800/20 text-gray-600 hover:bg-gray-800/30'
162- }
163- ` }
164- aria-label = "Toggle theme"
165- >
166- { darkMode ? < Sun className = "h-5 w-5" /> : < Moon className = "h-5 w-5" /> }
167- </ button >
157+ < ThemeToggle theme = { theme } onToggle = { onThemeChange } />
168158 </ div >
169159
170160 { /* Mobile menu button */ }
@@ -175,7 +165,7 @@ const Navbar = ({ darkMode, setDarkMode }) => {
175165 p-2 rounded-lg transition-colors duration-200
176166 focus-visible:outline-none focus-visible:ring-2
177167 focus-visible:ring-blue-500 focus-visible:ring-offset-2
178- ${ darkMode
168+ ${ isDark
179169 ? 'hover:bg-gray-800 text-gray-300 hover:text-white focus-visible:ring-offset-gray-900'
180170 : 'hover:bg-gray-100 text-gray-600 hover:text-gray-900 focus-visible:ring-offset-white'
181171 }
@@ -191,7 +181,7 @@ const Navbar = ({ darkMode, setDarkMode }) => {
191181 { isMenuOpen && (
192182 < div className = { `
193183 md:hidden border-t backdrop-blur-xl
194- ${ darkMode ? 'bg-gray-900/95 border-gray-800' : 'bg-white/95 border-gray-200' }
184+ ${ isDark ? 'bg-gray-900/95 border-gray-800' : 'bg-white/95 border-gray-200' }
195185 ` } >
196186 < div className = "px-4 py-3 space-y-1" >
197187 { navItems . map ( ( { path, label, icon : Icon } ) => (
@@ -203,7 +193,7 @@ const Navbar = ({ darkMode, setDarkMode }) => {
203193 transition-colors duration-200
204194 focus-visible:outline-none focus-visible:ring-2
205195 focus-visible:ring-blue-500 focus-visible:ring-offset-2
206- ${ darkMode
196+ ${ isDark
207197 ? `hover:bg-gray-800 focus-visible:ring-offset-gray-900
208198 ${ isActive ( path ) ? 'bg-gray-800 text-white' : 'text-gray-300' } `
209199 : `hover:bg-gray-100 focus-visible:ring-offset-white
@@ -227,7 +217,7 @@ const Navbar = ({ darkMode, setDarkMode }) => {
227217 transition-all duration-200
228218 focus-visible:outline-none focus-visible:ring-2
229219 focus-visible:ring-blue-500 focus-visible:ring-offset-2
230- ${ darkMode ? 'focus-visible:ring-offset-gray-900' : 'focus-visible:ring-offset-white' }
220+ ${ isDark ? 'focus-visible:ring-offset-gray-900' : 'focus-visible:ring-offset-white' }
231221 ` }
232222 >
233223 Get Started
0 commit comments