import { VscGithubInverted } from '@react-icons/all-files/vsc/VscGithubInverted'; import { ChevronDown, ChevronUp } from 'lucide-react'; import dynamic from 'next/dynamic'; import Link from 'next/link'; import { fetchSitemap } from '~/util/fetchSitemap'; import { fetchVersions } from '~/util/fetchVersions'; import { resolveNodeKind } from './DocKind'; import { NavigationItem } from './NavigationItem'; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/Collapsible'; import { PackageSelect } from './ui/PackageSelect'; import { SearchButton } from './ui/SearchButton'; import { VersionSelect } from './ui/VersionSelect'; // eslint-disable-next-line promise/prefer-await-to-then const ThemeSwitch = dynamic(async () => import('~/components/ui/ThemeSwitch').then((mod) => mod.ThemeSwitch), { ssr: false, }); export async function Navigation({ className = '', packageName, version, drawer = false, }: { readonly className?: string; readonly drawer?: boolean; readonly packageName: string; readonly version: string; }) { const node = await fetchSitemap({ packageName, version }); const versions = await fetchVersions(packageName); const groupedNodes = node.reduce((acc: any, node: any) => { (acc[node.kind.toLowerCase()] ||= []).push(node); return acc; }, {}); return ( ); }