'use client';
import type { ApiItemKind } from '@microsoft/api-extractor-model';
import { VscSymbolClass } from '@react-icons/all-files/vsc/VscSymbolClass';
import { VscSymbolEnum } from '@react-icons/all-files/vsc/VscSymbolEnum';
import { VscSymbolField } from '@react-icons/all-files/vsc/VscSymbolField';
import { VscSymbolInterface } from '@react-icons/all-files/vsc/VscSymbolInterface';
import { VscSymbolMethod } from '@react-icons/all-files/vsc/VscSymbolMethod';
import { VscSymbolVariable } from '@react-icons/all-files/vsc/VscSymbolVariable';
import { usePathname } from 'next/navigation';
import { useMemo } from 'react';
import { ItemLink } from './ItemLink';
import { Section } from './Section';
import { useNav } from '~/contexts/nav';
export interface SidebarSectionItemData {
href: string;
kind: ApiItemKind;
name: string;
overloadIndex?: number | undefined;
}
interface GroupedMembers {
Classes: SidebarSectionItemData[];
Enums: SidebarSectionItemData[];
Functions: SidebarSectionItemData[];
Interfaces: SidebarSectionItemData[];
Types: SidebarSectionItemData[];
Variables: SidebarSectionItemData[];
}
function groupMembers(members: readonly SidebarSectionItemData[]): GroupedMembers {
const Classes: SidebarSectionItemData[] = [];
const Enums: SidebarSectionItemData[] = [];
const Interfaces: SidebarSectionItemData[] = [];
const Types: SidebarSectionItemData[] = [];
const Variables: SidebarSectionItemData[] = [];
const Functions: SidebarSectionItemData[] = [];
for (const member of members) {
switch (member.kind) {
case 'Class':
Classes.push(member);
break;
case 'Enum':
Enums.push(member);
break;
case 'Interface':
Interfaces.push(member);
break;
case 'TypeAlias':
Types.push(member);
break;
case 'Variable':
Variables.push(member);
break;
case 'Function':
Functions.push(member);
break;
default:
break;
}
}
return { Classes, Functions, Enums, Interfaces, Types, Variables };
}
function resolveIcon(item: string) {
switch (item) {
case 'Classes':
return