import Link from 'next/link.js'; import clsx from 'clsx'; import { Disclosure, Transition } from '@headlessui/react'; export interface NavItem { name: string; href: string; } export interface NavGroup { name: string; path: string; level: number; children: Array; } interface Props { currentPath: string; nav: Array; } function isNavGroup(item: NavItem | NavGroup): item is NavGroup { return (item as NavGroup).children !== undefined; } function navItemBeforeNavGroup(a, b) { if (isNavGroup(a) === isNavGroup(b)) { return 0; } if (isNavGroup(a) && !isNavGroup(b)) { return 1; } return -1; } function sortNavGroupChildren(items: Array) { return items.sort( (a, b) => navItemBeforeNavGroup(a, b) || a.name.localeCompare(b.name) ); } export const SiteToc: React.FC = ({ currentPath, nav }) => { return ( ); }; const NavComponent: React.FC<{ item: NavItem | NavGroup; currentPath: string; }> = ({ item, currentPath }) => { function isActiveItem(item: NavItem) { return item.href === "/" + currentPath; } return !isNavGroup(item) ? ( {item.name} ) : ( {({ open }) => (
{item.name} {/* {sortNavGroupChildren(item.children).map((subItem) => ( */} {item.children.map((subItem) => ( ))}
)}
); };