@@ -19,32 +19,16 @@ const Navbar = () => {
1919 const [ isDeveloperKitHover , setIsDeveloperKitHover ] = useState ( false ) ;
2020 const [ isToolsHover , setIsToolsHover ] = useState ( false ) ;
2121 const [ eCommerceHover , setECommerceHover ] = useState ( false )
22+ const [ isActiveToolsMenu , setIsActiveToolsMenu ] = useState ( false ) ;
23+ const [ isActiveEcommcerMenu , setIsActiveEcommcerMenu ] = useState ( false ) ;
24+ const [ isActiveDeveloperKitMenu , setIsActiveDeveloperKitMenu ] = useState ( false ) ;
2225
2326 const [ searchPlaceholderText , setSearchPlaceholderText ] = useState ( "search component" ) ;
2427
2528 const handleSearchClick = ( ) => {
2629 setIsSearchOpen ( true ) ;
2730 } ;
2831
29- // light and dark mood
30- const [ toggle , setToggle ] = useState (
31- JSON . parse ( localStorage . getItem ( "theme" ) )
32- ? JSON . parse ( localStorage . getItem ( "theme" ) )
33- : false
34- ) ;
35-
36- const element = document . documentElement ;
37-
38- localStorage . setItem ( "theme" , JSON . stringify ( toggle ) ) ;
39-
40- useEffect ( ( ) => {
41- if ( toggle ) {
42- element . classList . add ( "dark" ) ;
43- } else {
44- element . classList . remove ( "dark" ) ;
45- }
46- } , [ toggle ] ) ;
47-
4832 const getTheRouteName = ( ) => {
4933 return window . location . pathname
5034 }
@@ -104,6 +88,49 @@ const Navbar = () => {
10488 return ( ) => clearInterval ( interval ) ;
10589 } , [ ] ) ;
10690
91+
92+ const handleActiveToolsMenu = ( ) => {
93+ setIsActiveToolsMenu ( ! isActiveToolsMenu )
94+ setIsActiveEcommcerMenu ( false )
95+ setIsActiveDeveloperKitMenu ( false )
96+ }
97+
98+ const handleActiveDeveloperKitMenu = ( ) => {
99+ setIsActiveDeveloperKitMenu ( ! isActiveDeveloperKitMenu )
100+ setIsActiveToolsMenu ( false )
101+ setIsActiveEcommcerMenu ( false )
102+ }
103+
104+ const handleActiveEcommerceMenu = ( ) => {
105+ setIsActiveEcommcerMenu ( ! isActiveEcommcerMenu )
106+ setIsActiveToolsMenu ( false )
107+ setIsActiveDeveloperKitMenu ( false )
108+ }
109+
110+ const handleToolsMouseHover = ( ) => {
111+ setIsToolsHover ( true )
112+ setIsDeveloperKitHover ( false )
113+ setIsActiveEcommcerMenu ( false )
114+ setIsActiveDeveloperKitMenu ( false )
115+ setECommerceHover ( false )
116+ }
117+
118+ const handleDeveloperKitMouseHover = ( ) => {
119+ setIsToolsHover ( false )
120+ setIsDeveloperKitHover ( true )
121+ setIsActiveToolsMenu ( false )
122+ setIsActiveEcommcerMenu ( false )
123+ setECommerceHover ( false )
124+ }
125+
126+ const handleEcommerceMouseHover = ( ) => {
127+ setIsToolsHover ( false )
128+ setIsDeveloperKitHover ( false )
129+ setIsActiveToolsMenu ( false )
130+ setIsActiveDeveloperKitMenu ( false )
131+ setECommerceHover ( true )
132+ }
133+
107134 return (
108135 < >
109136 < nav
@@ -132,14 +159,15 @@ const Navbar = () => {
132159 < ul className = { `text-gray-600 flex items-center gap-8 font-[500] capitalize text-[1.2rem]` } >
133160 < Link to = '/about-us' className = 'cursor-pointer hover:text-[#0FABCA] transition-all duration-200' > About Us</ Link >
134161 < li
135- onMouseEnter = { ( ) => setIsToolsHover ( true ) }
162+ onMouseEnter = { handleToolsMouseHover }
136163 onMouseLeave = { ( ) => setIsToolsHover ( false ) }
137- className = 'cursor-pointer relative py-[23px] hover:text-[#0FABCA] transition-all duration-200 flex items-center gap-[8px]'
164+ onClick = { handleActiveToolsMenu }
165+ className = { `${ isActiveToolsMenu && 'text-[#0FABCA]' } cursor-pointer relative py-[23px] hover:text-[#0FABCA] transition-all duration-200 flex items-center gap-[8px]` }
138166 >
139167 Tools
140- < IoIosArrowDown className = { `${ isToolsHover ? 'rotate-[180deg]' : 'rotate-0' } transition-all duration-300` } />
168+ < IoIosArrowDown className = { `${ ( isToolsHover || isActiveToolsMenu ) ? 'rotate-[180deg]' : 'rotate-0' } transition-all duration-300` } />
141169
142- { isToolsHover && (
170+ { ( isToolsHover || isActiveToolsMenu ) && (
143171 < motion . div
144172 initial = { { opacity : 0 , scale : 0.8 } }
145173 animate = { { opacity : 1 , scale : 1 } }
@@ -183,14 +211,15 @@ const Navbar = () => {
183211 </ li >
184212
185213 < li
186- onMouseEnter = { ( ) => setIsDeveloperKitHover ( true ) }
214+ onMouseEnter = { handleDeveloperKitMouseHover }
187215 onMouseLeave = { ( ) => setIsDeveloperKitHover ( false ) }
188- className = 'cursor-pointer relative py-[23px] hover:text-[#0FABCA] transition-all duration-200 flex items-center gap-[8px]'
216+ onClick = { handleActiveDeveloperKitMenu }
217+ className = { `${ isActiveDeveloperKitMenu && 'text-[#0FABCA]' } cursor-pointer relative py-[23px] hover:text-[#0FABCA] transition-all duration-200 flex items-center gap-[8px]` }
189218 >
190219 Components
191- < IoIosArrowDown className = { `${ isDeveloperKitHover ? 'rotate-[180deg]' : 'rotate-0' } transition-all duration-300` } />
220+ < IoIosArrowDown className = { `${ ( isDeveloperKitHover || isActiveDeveloperKitMenu ) ? 'rotate-[180deg]' : 'rotate-0' } transition-all duration-300` } />
192221
193- { isDeveloperKitHover && (
222+ { ( isDeveloperKitHover || isActiveDeveloperKitMenu ) && (
194223 < motion . div
195224 initial = { { opacity : 0 , scale : 0.8 } }
196225 animate = { { opacity : 1 , scale : 1 } }
@@ -237,16 +266,17 @@ const Navbar = () => {
237266 </ li >
238267
239268 < li
240- onMouseEnter = { ( ) => setECommerceHover ( true ) }
269+ onMouseEnter = { handleEcommerceMouseHover }
241270 onMouseLeave = { ( ) => setECommerceHover ( false ) }
242- className = 'cursor-pointer relative py-[23px] hover:text-[#0FABCA] transition-all duration-200 flex items-center gap-[8px]'
271+ onClick = { handleActiveEcommerceMenu }
272+ className = { `${ isActiveEcommcerMenu && 'text-[#0FABCA]' } cursor-pointer relative py-[23px] hover:text-[#0FABCA] transition-all duration-200 flex items-center gap-[8px]` }
243273 >
244274 E-Commerce
245275 < NewBadge />
246276 < div className = 'w-[8px] h-[8px] bg-green-500 rounded-full absolute top-5 right-6 animate-[ping_1.5s_linear_infinite]' > </ div >
247- < IoIosArrowDown className = { `${ eCommerceHover ? 'rotate-[180deg]' : 'rotate-0' } transition-all duration-300` } />
277+ < IoIosArrowDown className = { `${ ( eCommerceHover || isActiveEcommcerMenu ) ? 'rotate-[180deg]' : 'rotate-0' } transition-all duration-300` } />
248278
249- { eCommerceHover && (
279+ { ( eCommerceHover || isActiveEcommcerMenu ) && (
250280 < motion . div
251281 initial = { { opacity : 0 , scale : 0.8 } }
252282 animate = { { opacity : 1 , scale : 1 } }
0 commit comments