'use client'; import { useMemo } from 'react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import type { MenuNode } from '@/lib/api/types/menu'; import { ClassicCascadeFlyoutPortal } from '@/components/layout/ClassicCascadeFlyout'; import { NavTooltip } from '@/components/layout/nav-tooltip'; import { NavIconOrLabel, NavStateGuard, normalizeHref, layoutNavRootsFromApi, subtreeContainsActivePath, visibleChildren, } from '@/components/layout/nav-shared'; import { useFlyoutState } from '@/lib/hooks/use-flyout-state'; import { useMenuNavigation } from '@/lib/hooks/use-menu-navigation'; import { useLayoutStore } from '@/stores/layout-store'; const RAIL_W = 'w-[72px]'; export function ClassicCollapsedSidebar({ items, loading, error, authed, }: { items: MenuNode[]; loading: boolean; error: string | null; authed: boolean; onMenuNavigate?: (path: string, title: string) => void; }) { const pathname = usePathname() ?? '/'; const roots = useMemo(() => layoutNavRootsFromApi(items), [items]); const toggleClassicNavRail = useLayoutStore((s) => s.toggleClassicNavRail); const onMenuNavigate = useMenuNavigation(); const { flyoutRoot, l1AnchorRect, openFlyout, scheduleCloseFlyout, clearCloseTimer, closeFlyoutNow, toggleFlyoutClick, railScrollRef, } = useFlyoutState(pathname); const railShell = (inner: React.ReactNode) => (