import { Fragment, useEffect, useRef, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from 'react'; import { Bell, CalendarClock, Cast, Check, ChevronDown, CircleHelp, ClipboardCopy, Info, ListVideo, PanelLeftClose, PanelLeftOpen, Plus, Search } from 'lucide-react'; import chicoryMarkUrl from '../../../design-system/assets/chicory-mark.svg'; import { useChannelsQuery, useDashboardVersionQuery, type DashboardHealthQueryState } from '../api'; import { Button, IconButton, NavItem } from '../components'; import { designSystemThemes, type DesignSystemThemeId } from '../designSystem'; import { usePrimaryActionHandler } from '../primaryAction'; import { navigateToPath } from '../routing'; import { useSidebarState } from './sidebarState'; import { DashboardHealthSummary } from '../screens/DashboardScreen'; import { UnauthorizedBanner } from '../UnauthorizedBanner'; import { UserMenu } from '../UserMenu'; import { routeById, routeHref, sidebarNavGroups, type ScreenId, type ScreenRoute } from './routes'; type NavigateHandler = (route: ScreenRoute, event: MouseEvent) => void; function SidebarNavGroup({ activeRoute, collapsed, ids, onNavigate }: { activeRoute: ScreenRoute | null; collapsed: boolean; ids: readonly ScreenId[]; onNavigate: NavigateHandler; }) { return ( <> {ids.map((id) => { const route = routeById.get(id)!; return (