/** * Base nav item, displayed as text */ export interface NavItem { text: string; ariaLabel?: string; icon?: { name: string; size?: string; color?: string; }; } /** * Base nav group, has nav items children */ export interface NavGroup extends NavItem { children: T[]; } /** * Props for `` */ export interface NavLink extends NavItem { link: string; rel?: string; target?: string; activeMatch?: string; } /** * Navbar types */ export type NavbarItem = NavLink; export type NavbarGroup = NavGroup; export type NavbarConfig = (NavbarItem | NavbarGroup | string)[]; export type ResolvedNavbarItem = NavbarItem | NavGroup; /** * Sidebar types */ export type SidebarItem = NavItem & Partial; export type SidebarGroup = SidebarItem & NavGroup; export type SidebarGroupCollapsible = SidebarGroup & { collapsible?: boolean; }; export type SidebarConfigArray = (SidebarItem | SidebarGroupCollapsible | string)[]; export type SidebarConfigObject = Record; export type SidebarConfig = SidebarConfigArray | SidebarConfigObject; export type ResolvedSidebarItem = SidebarItem & Partial> & { collapsible?: boolean; };