"use client" /** * DesignSystemSidebarDrillInPanel — collapsible tiers (Question bank cadence). * * Tiers expand inline in one drill-in pane — categories as sub-labels, components * as sub-links. No secondary drill stack when opening a tier or doc. */ import * as React from "react" import { Link, useLocation } from "react-router-dom" import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible" import { SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar, } from "@/components/ui/sidebar" import { SidebarNavLabel } from "@/components/ui/sidebar-nav-label" import { useSecondaryPanel } from "@/components/sidebar/secondary-panel" import { SidebarDrillInSearchField } from "@/components/sidebar/sidebar-drill-in-search-field" import { DESIGN_SYSTEM_DRILL_IN_HOME_LABEL } from "@/lib/design-system/hub-label" import { catalogEntryMatchesQuery } from "@/lib/design-system/catalog-entry-search" import { buildDesignSystemNavSections, DESIGN_SYSTEM_REGISTRY_ENTRIES, DESIGN_SYSTEM_TIER_ICONS, getDesignSystemEntry, type DesignSystemNavSection, type DesignSystemTier, } from "@/lib/design-system/registry" import { cn } from "@/lib/utils" function designSystemBasePath(pathname: string): string { const match = pathname.match(/^(\/[^/]+)\/design-system(?:\/|$)/) return match ? `${match[1]}/design-system` : "/design-os/design-system" } function activeSlugFromPath(pathname: string, basePath: string): string | undefined { const prefix = `${basePath}/` if (!pathname.startsWith(prefix)) return undefined const rest = pathname.slice(prefix.length) return rest.split("/")[0] || undefined } const DESIGN_SYSTEM_SLUG_ICONS: Record = { accordion: "fa-light fa-bars-staggered", avatar: "fa-light fa-circle-user", badge: "fa-light fa-badge-check", banner: "fa-light fa-flag", breadcrumb: "fa-light fa-route", button: "fa-light fa-hand-pointer", card: "fa-light fa-rectangle", chart: "fa-light fa-chart-line", checkbox: "fa-light fa-square-check", command: "fa-light fa-terminal", "data-table": "fa-light fa-table", "table-cells": "fa-light fa-table-cells", "date-picker": "fa-light fa-calendar-days", dialog: "fa-light fa-message", "dropdown-menu": "fa-light fa-list-dropdown", field: "fa-light fa-input-text", form: "fa-light fa-rectangle-list", input: "fa-light fa-keyboard", kbd: "fa-light fa-keyboard", popover: "fa-light fa-window-restore", "radio-group": "fa-light fa-circle-dot", select: "fa-light fa-list-ul", separator: "fa-light fa-grip-lines", skeleton: "fa-light fa-loader", table: "fa-light fa-table-cells", tabs: "fa-light fa-window", "filter-chip-group": "fa-light fa-filter", "filter-button": "fa-light fa-filter", "filter-bar": "fa-light fa-filter-list", tip: "fa-light fa-circle-info", "toggle-switch": "fa-light fa-toggle-on", } const DESIGN_SYSTEM_GROUP_ICONS: Record = { Actions: "fa-light fa-bolt", Feedback: "fa-light fa-message-exclamation", Forms: "fa-light fa-pen-field", Layout: "fa-light fa-grid-2", Navigation: "fa-light fa-route", Overlays: "fa-light fa-window-restore", "Data display": "fa-light fa-chart-simple", "Table cells": "fa-light fa-table-cells", Leo: "fa-light fa-sparkles", "Data views": "fa-light fa-table-list", "Page chrome": "fa-light fa-browser", Search: "fa-light fa-magnifying-glass", Values: "fa-light fa-hashtag", Status: "fa-light fa-tags", People: "fa-light fa-users", Links: "fa-light fa-link", Overview: "fa-light fa-list", "Hub shells": "fa-light fa-columns-3", Focus: "fa-light fa-bullseye", "Reference hubs": "fa-light fa-layer-group", Categories: "fa-light fa-palette", "Component tokens": "fa-light fa-swatchbook", Foundation: "fa-light fa-scale-balanced", Product: "fa-light fa-building", UX: "fa-light fa-compass", Tokens: "fa-light fa-droplet", "Ship gate": "fa-light fa-shield-check", Core: "fa-light fa-cube", Agents: "fa-light fa-robot", Workspace: "fa-light fa-book", Routing: "fa-light fa-route", } function designSystemNavIcon(item: { slug: string; group: string }): string { return DESIGN_SYSTEM_SLUG_ICONS[item.slug] ?? DESIGN_SYSTEM_GROUP_ICONS[item.group] ?? "fa-light fa-cube" } function designSystemNavIconClass(iconClass: string, isActive: boolean): string { if (!isActive) return iconClass return iconClass.replace(/^fa-light\b/, "fa-solid") } function DesignSystemDrillInNavIcon({ iconClass, isActive, }: { iconClass: string isActive: boolean }) { return (