1- import { Fragment } from "react" ;
1+ import { CloseButton } from "@headlessui/ react" ;
22import Link from "@/components/link" ;
33import { normalizeHref , classNames } from "@/utils/strings" ;
44
5- export default function DocsNav ( { as, routes, level = 0 , className } ) {
6- const As = as || Fragment ;
5+ export default function DocsNav ( {
6+ isMobileMenu,
7+ routes,
8+ level = 0 ,
9+ className,
10+ } ) {
711 return (
812 < ul
913 className = { classNames ( className , "my-1" , {
@@ -12,32 +16,42 @@ export default function DocsNav({ as, routes, level = 0, className }) {
1216 data-doc-nav-level = { level }
1317 >
1418 { routes . map ( ( item ) => (
15- < As key = { item . title } >
16- < NavItem item = { item } level = { level } />
17- </ As >
19+ < NavItem
20+ key = { item . title }
21+ item = { item }
22+ level = { level }
23+ isMobileMenu = { isMobileMenu }
24+ />
1825 ) ) }
1926 </ ul >
2027 ) ;
2128}
2229
23- function NavItem ( { item, level, ...props } ) {
30+ function NavItem ( { item, level, isMobileMenu , ...props } ) {
2431 if ( ! item ?. route ) {
2532 throw new Error ( "Item must have a route" ) ;
2633 }
2734
35+ const Component = isMobileMenu ? CloseButton : Link ;
36+
2837 return (
2938 < li className = "py-2 text-gray-400" >
30- < Link
39+ < Component
40+ as = { isMobileMenu ? Link : undefined }
3141 data-doc-nav-level = { level }
3242 href = { normalizeHref ( item . route ) }
3343 noDefaultStyles
3444 activeClassName = "text-blue-500 active"
3545 { ...props }
3646 >
3747 { item . title }
38- </ Link >
48+ </ Component >
3949 { item . children && (
40- < DocsNav as = "ul" level = { level + 1 } routes = { item . children } />
50+ < DocsNav
51+ isMobileMenu = { isMobileMenu }
52+ level = { level + 1 }
53+ routes = { item . children }
54+ />
4155 ) }
4256 </ li >
4357 ) ;
0 commit comments