@@ -19,32 +19,16 @@ const Navbar = () => {
19
19
const [ isDeveloperKitHover , setIsDeveloperKitHover ] = useState ( false ) ;
20
20
const [ isToolsHover , setIsToolsHover ] = useState ( false ) ;
21
21
const [ eCommerceHover , setECommerceHover ] = useState ( false )
22
+ const [ isActiveToolsMenu , setIsActiveToolsMenu ] = useState ( false ) ;
23
+ const [ isActiveEcommcerMenu , setIsActiveEcommcerMenu ] = useState ( false ) ;
24
+ const [ isActiveDeveloperKitMenu , setIsActiveDeveloperKitMenu ] = useState ( false ) ;
22
25
23
26
const [ searchPlaceholderText , setSearchPlaceholderText ] = useState ( "search component" ) ;
24
27
25
28
const handleSearchClick = ( ) => {
26
29
setIsSearchOpen ( true ) ;
27
30
} ;
28
31
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
-
48
32
const getTheRouteName = ( ) => {
49
33
return window . location . pathname
50
34
}
@@ -104,6 +88,49 @@ const Navbar = () => {
104
88
return ( ) => clearInterval ( interval ) ;
105
89
} , [ ] ) ;
106
90
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
+
107
134
return (
108
135
< >
109
136
< nav
@@ -132,14 +159,15 @@ const Navbar = () => {
132
159
< ul className = { `text-gray-600 flex items-center gap-8 font-[500] capitalize text-[1.2rem]` } >
133
160
< Link to = '/about-us' className = 'cursor-pointer hover:text-[#0FABCA] transition-all duration-200' > About Us</ Link >
134
161
< li
135
- onMouseEnter = { ( ) => setIsToolsHover ( true ) }
162
+ onMouseEnter = { handleToolsMouseHover }
136
163
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]` }
138
166
>
139
167
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` } />
141
169
142
- { isToolsHover && (
170
+ { ( isToolsHover || isActiveToolsMenu ) && (
143
171
< motion . div
144
172
initial = { { opacity : 0 , scale : 0.8 } }
145
173
animate = { { opacity : 1 , scale : 1 } }
@@ -183,14 +211,15 @@ const Navbar = () => {
183
211
</ li >
184
212
185
213
< li
186
- onMouseEnter = { ( ) => setIsDeveloperKitHover ( true ) }
214
+ onMouseEnter = { handleDeveloperKitMouseHover }
187
215
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]` }
189
218
>
190
219
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` } />
192
221
193
- { isDeveloperKitHover && (
222
+ { ( isDeveloperKitHover || isActiveDeveloperKitMenu ) && (
194
223
< motion . div
195
224
initial = { { opacity : 0 , scale : 0.8 } }
196
225
animate = { { opacity : 1 , scale : 1 } }
@@ -237,16 +266,17 @@ const Navbar = () => {
237
266
</ li >
238
267
239
268
< li
240
- onMouseEnter = { ( ) => setECommerceHover ( true ) }
269
+ onMouseEnter = { handleEcommerceMouseHover }
241
270
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]` }
243
273
>
244
274
E-Commerce
245
275
< NewBadge />
246
276
< 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` } />
248
278
249
- { eCommerceHover && (
279
+ { ( eCommerceHover || isActiveEcommcerMenu ) && (
250
280
< motion . div
251
281
initial = { { opacity : 0 , scale : 0.8 } }
252
282
animate = { { opacity : 1 , scale : 1 } }
0 commit comments