@@ -142,10 +142,11 @@ export default function TopNav({
142
142
breadcrumbs : RouteItem [ ] ;
143
143
section : 'learn' | 'reference' | 'community' | 'blog' | 'home' | 'unknown' ;
144
144
} ) {
145
- const [ isOpen , setIsOpen ] = useState ( false ) ;
145
+ const [ isMenuOpen , setIsMenuOpen ] = useState ( false ) ;
146
+ const [ showSearch , setShowSearch ] = useState ( false ) ;
147
+ const [ isScrolled , setIsScrolled ] = useState ( false ) ;
146
148
const scrollParentRef = useRef < HTMLDivElement > ( null ) ;
147
149
const { asPath} = useRouter ( ) ;
148
- const [ isScrolled , setIsScrolled ] = useState ( false ) ;
149
150
150
151
// HACK. Fix up the data structures instead.
151
152
if ( ( routeTree as any ) . routes . length === 1 ) {
@@ -154,18 +155,18 @@ export default function TopNav({
154
155
155
156
// While the overlay is open, disable body scroll.
156
157
useEffect ( ( ) => {
157
- if ( isOpen ) {
158
+ if ( isMenuOpen ) {
158
159
const preferredScrollParent = scrollParentRef . current ! ;
159
160
disableBodyScroll ( preferredScrollParent ) ;
160
161
return ( ) => enableBodyScroll ( preferredScrollParent ) ;
161
162
} else {
162
163
return undefined ;
163
164
}
164
- } , [ isOpen ] ) ;
165
+ } , [ isMenuOpen ] ) ;
165
166
166
167
// Close the overlay on any navigation.
167
168
useEffect ( ( ) => {
168
- setIsOpen ( false ) ;
169
+ setIsMenuOpen ( false ) ;
169
170
} , [ asPath ] ) ;
170
171
171
172
// Also close the overlay if the window gets resized past mobile layout.
@@ -175,7 +176,7 @@ export default function TopNav({
175
176
176
177
function closeIfNeeded ( ) {
177
178
if ( ! media . matches ) {
178
- setIsOpen ( false ) ;
179
+ setIsMenuOpen ( false ) ;
179
180
}
180
181
}
181
182
@@ -204,7 +205,6 @@ export default function TopNav({
204
205
return ( ) => observer . disconnect ( ) ;
205
206
} , [ ] ) ;
206
207
207
- const [ showSearch , setShowSearch ] = useState ( false ) ;
208
208
const onOpenSearch = useCallback ( ( ) => {
209
209
startTransition ( ( ) => {
210
210
setShowSearch ( true ) ;
@@ -224,28 +224,28 @@ export default function TopNav({
224
224
< div ref = { scrollDetectorRef } />
225
225
< div
226
226
className = { cn (
227
- isOpen
227
+ isMenuOpen
228
228
? 'h-screen sticky top-0 lg:bottom-0 lg:h-screen flex flex-col shadow-nav dark:shadow-nav-dark z-20'
229
229
: 'z-50 sticky top-0'
230
230
) } >
231
231
< nav
232
232
className = { cn (
233
233
'duration-300 backdrop-filter backdrop-blur-lg backdrop-saturate-200 transition-shadow bg-opacity-90 items-center w-full flex justify-between bg-wash dark:bg-wash-dark dark:bg-opacity-95 px-1.5 lg:pe-5 lg:ps-4 z-50' ,
234
- { 'dark:shadow-nav-dark shadow-nav' : isScrolled || isOpen }
234
+ { 'dark:shadow-nav-dark shadow-nav' : isScrolled || isMenuOpen }
235
235
) } >
236
236
< div className = "flex items-center justify-between w-full h-16 gap-0 sm:gap-3" >
237
237
< div className = "flex flex-row 3xl:flex-1 " >
238
238
< button
239
239
type = "button"
240
240
aria-label = "Menu"
241
- onClick = { ( ) => setIsOpen ( ! isOpen ) }
241
+ onClick = { ( ) => setIsMenuOpen ( ! isMenuOpen ) }
242
242
className = { cn (
243
243
'active:scale-95 transition-transform flex lg:hidden w-12 h-12 rounded-full items-center justify-center hover:bg-primary/5 hover:dark:bg-primary-dark/5 outline-link' ,
244
244
{
245
- 'text-link dark:text-link-dark' : isOpen ,
245
+ 'text-link dark:text-link-dark' : isMenuOpen ,
246
246
}
247
247
) } >
248
- { isOpen ? < IconClose /> : < IconHamburger /> }
248
+ { isMenuOpen ? < IconClose /> : < IconHamburger /> }
249
249
</ button >
250
250
< div className = "flex 3xl:flex-1 align-center" >
251
251
< NextLink
@@ -343,14 +343,14 @@ export default function TopNav({
343
343
</ div >
344
344
</ nav >
345
345
346
- { isOpen && (
346
+ { isMenuOpen && (
347
347
< div
348
348
ref = { scrollParentRef }
349
349
className = "overflow-y-scroll isolate no-bg-scrollbar lg:w-[342px] grow bg-wash dark:bg-wash-dark" >
350
350
< aside
351
351
className = { cn (
352
352
`lg:grow lg:flex flex-col w-full pb-8 lg:pb-0 lg:max-w-custom-xs z-50` ,
353
- isOpen ? 'block z-40' : 'hidden lg:block'
353
+ isMenuOpen ? 'block z-40' : 'hidden lg:block'
354
354
) } >
355
355
< nav
356
356
role = "navigation"
@@ -383,10 +383,10 @@ export default function TopNav({
383
383
< SidebarRouteTree
384
384
// Don't share state between the desktop and mobile versions.
385
385
// This avoids unnecessary animations and visual flicker.
386
- key = { isOpen ? 'mobile-overlay' : 'desktop-or-hidden' }
386
+ key = { isMenuOpen ? 'mobile-overlay' : 'desktop-or-hidden' }
387
387
routeTree = { routeTree }
388
388
breadcrumbs = { breadcrumbs }
389
- isForceExpanded = { isOpen }
389
+ isForceExpanded = { isMenuOpen }
390
390
/>
391
391
</ Suspense >
392
392
< div className = "h-16" />
0 commit comments