@conscia-labs/design-system 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/patterns/pagination.tsx","../src/patterns/data-table.tsx","../src/patterns/entity-table.tsx","../src/patterns/detail-back-link.tsx","../src/patterns/app-shell.tsx","../src/patterns/activity-list.tsx","../src/patterns/confirmation-dialog.tsx","../src/patterns/code-block.tsx","../src/patterns/inventory-surface.tsx","../src/patterns/metric-band.tsx","../src/patterns/page-header.tsx","../src/patterns/page-toolbar.tsx","../src/patterns/preference-controls.tsx","../src/patterns/provider-mark.tsx","../src/patterns/resource-detail.tsx","../src/patterns/sidebar-navigation.tsx","../src/patterns/state-views.tsx","../src/patterns/value-meter.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../primitives/select\";\nimport { cn } from \"../primitives/utils\";\n\ntype PaginationControlsProps = React.ComponentProps<\"div\"> & {\n currentPage: number;\n pageCount: number;\n totalLabel?: React.ReactNode;\n onPrevious?: () => void;\n onNext?: () => void;\n onPageChange?: (page: number) => void;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (pageSize: number) => void;\n};\n\nfunction PaginationControls({\n currentPage,\n pageCount,\n totalLabel,\n onPrevious,\n onNext,\n onPageChange,\n pageSize,\n pageSizeOptions = [10, 25, 50],\n onPageSizeChange,\n className,\n ...props\n}: PaginationControlsProps) {\n return (\n <div\n data-slot=\"pagination-controls\"\n className={cn(\"flex flex-col gap-2 border-t border-border-subtle px-5 py-3 text-sm text-muted-foreground sm:flex-row sm:items-center sm:justify-between\", className)}\n {...props}\n >\n <div className=\"flex flex-wrap items-center gap-3\">\n <span>{totalLabel}</span>\n {pageSize && onPageSizeChange ? (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[var(--ds-metadata)]\">Rows</span>\n <Select value={String(pageSize)} onValueChange={(value) => onPageSizeChange(Number(value))}>\n <SelectTrigger size=\"sm\" className=\"w-[4.5rem]\" aria-label=\"Rows per page\"><SelectValue /></SelectTrigger>\n <SelectContent>{pageSizeOptions.map((size) => <SelectItem key={size} value={String(size)}>{size}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n ) : null}\n </div>\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"outline\" size=\"icon\" className=\"size-8\" aria-label=\"Previous page\" onClick={onPrevious ?? (() => onPageChange?.(currentPage - 1))} disabled={currentPage <= 1}><ChevronLeft /></Button>\n {onPageChange ? pageItems(currentPage, pageCount).map((item, index) => item === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"flex size-8 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">…</span>\n ) : (\n <Button type=\"button\" key={item} variant={item === currentPage ? \"secondary\" : \"ghost\"} size=\"icon\" className=\"size-8\" aria-label={`Page ${item}`} aria-current={item === currentPage ? \"page\" : undefined} onClick={() => onPageChange(item)}>{item}</Button>\n )) : <span className=\"px-2 text-[var(--ds-metadata)]\">Page {currentPage} of {pageCount}</span>}\n <Button type=\"button\" variant=\"outline\" size=\"icon\" className=\"size-8\" aria-label=\"Next page\" onClick={onNext ?? (() => onPageChange?.(currentPage + 1))} disabled={currentPage >= pageCount}><ChevronRight /></Button>\n </div>\n </div>\n );\n}\n\nfunction pageItems(currentPage: number, pageCount: number): Array<number | \"ellipsis\"> {\n if (pageCount <= 7) return Array.from({ length: pageCount }, (_, index) => index + 1);\n const pages = new Set([1, pageCount, currentPage - 1, currentPage, currentPage + 1]);\n const sorted = Array.from(pages).filter((page) => page > 0 && page <= pageCount).sort((a, b) => a - b);\n const result: Array<number | \"ellipsis\"> = [];\n sorted.forEach((page, index) => {\n if (index && page - sorted[index - 1]! > 1) result.push(\"ellipsis\");\n result.push(page);\n });\n return result;\n}\n\nexport { PaginationControls };\nexport type { PaginationControlsProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../primitives/table\";\nimport { cn } from \"../primitives/utils\";\nimport { PaginationControls } from \"./pagination\";\n\ntype DataTableColumn<TData> = {\n id: string;\n header: React.ReactNode;\n cell: (item: TData) => React.ReactNode;\n accessor?: (item: TData) => string | number | null | undefined;\n sortable?: boolean;\n className?: string;\n};\n\ntype DataTableProps<TData> = {\n data: TData[];\n columns: DataTableColumn<TData>[];\n getRowId: (item: TData) => string;\n getRowLabel?: (item: TData) => string;\n onRowClick?: (item: TData) => void;\n isRowClickable?: (item: TData) => boolean;\n rowActions?: (item: TData) => React.ReactNode;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pagination?: PaginationState;\n onPaginationChange?: (pagination: PaginationState) => void;\n manualPagination?: boolean;\n pageCount?: number;\n rowCount?: number;\n pageSizeOptions?: number[];\n totalLabel?: React.ReactNode;\n mobileRow?: (item: TData) => React.ReactNode;\n empty?: React.ReactNode;\n className?: string;\n};\n\nfunction DataTable<TData>({\n data,\n columns,\n getRowId,\n getRowLabel,\n onRowClick,\n isRowClickable,\n rowActions,\n selectedIds,\n onSelectionChange,\n sorting,\n onSortingChange,\n manualSorting = false,\n pagination,\n onPaginationChange,\n manualPagination = false,\n pageCount,\n rowCount,\n pageSizeOptions,\n totalLabel,\n mobileRow,\n empty,\n className,\n}: DataTableProps<TData>) {\n const rowSelection = React.useMemo<RowSelectionState>(() => {\n const selection: RowSelectionState = {};\n selectedIds?.forEach((id) => { selection[id] = true; });\n return selection;\n }, [selectedIds]);\n\n const tableColumns = React.useMemo<ColumnDef<TData>[]>(() => {\n const result: ColumnDef<TData>[] = [];\n if (onSelectionChange) {\n result.push({\n id: \"select\",\n enableSorting: false,\n header: ({ table }) => (\n <Checkbox\n aria-label=\"Select all rows on this page\"\n checked={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && \"indeterminate\")}\n onCheckedChange={(checked) => table.toggleAllPageRowsSelected(Boolean(checked))}\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n aria-label={`Select ${getRowLabel?.(row.original) ?? row.id}`}\n checked={row.getIsSelected()}\n onCheckedChange={(checked) => row.toggleSelected(Boolean(checked))}\n onClick={(event) => event.stopPropagation()}\n />\n ),\n meta: { className: \"w-10\" },\n });\n }\n result.push(...columns.map((column): ColumnDef<TData> => ({\n id: column.id,\n ...(column.accessor ? { accessorFn: column.accessor } : {}),\n enableSorting: column.sortable ?? false,\n header: () => column.header,\n cell: ({ row }: { row: Row<TData> }) => column.cell(row.original),\n meta: { className: column.className, label: typeof column.header === \"string\" ? column.header : column.id },\n })));\n if (rowActions) {\n result.push({\n id: \"actions\",\n enableSorting: false,\n header: \"Actions\",\n cell: ({ row }) => (\n <div\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n >\n {rowActions(row.original)}\n </div>\n ),\n meta: { className: \"w-12 text-right\" },\n });\n }\n return result;\n }, [columns, getRowLabel, onSelectionChange, rowActions]);\n\n // TanStack Table intentionally returns a mutable table instance; React Compiler skips this hook.\n // eslint-disable-next-line react-hooks/incompatible-library\n const table = useReactTable({\n data,\n columns: tableColumns,\n getRowId: (row) => getRowId(row),\n state: { rowSelection, ...(sorting ? { sorting } : {}), ...(pagination ? { pagination } : {}) },\n enableRowSelection: Boolean(onSelectionChange),\n onRowSelectionChange: (updater) => {\n if (!onSelectionChange) return;\n const next = typeof updater === \"function\" ? updater(rowSelection) : updater;\n onSelectionChange(new Set(Object.keys(next).filter((id) => next[id])));\n },\n onSortingChange: (updater) => {\n if (!onSortingChange) return;\n onSortingChange(typeof updater === \"function\" ? updater(sorting ?? []) : updater);\n },\n onPaginationChange: (updater) => {\n if (!onPaginationChange || !pagination) return;\n onPaginationChange(typeof updater === \"function\" ? updater(pagination) : updater);\n },\n manualSorting,\n manualPagination,\n pageCount,\n rowCount,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getPaginationRowModel: pagination && !manualPagination ? getPaginationRowModel() : undefined,\n });\n\n if (!data.length && empty) return <>{empty}</>;\n\n const visibleRows = table.getRowModel().rows;\n const showPagination = Boolean(pagination && onPaginationChange);\n\n return (\n <div data-slot=\"data-table\" className={cn(\"bg-background\", className)}>\n <div className={mobileRow ? \"hidden md:block\" : undefined}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta as { className?: string; label?: string } | undefined;\n const canSort = header.column.getCanSort();\n const sorted = header.column.getIsSorted();\n return (\n <TableHead\n key={header.id}\n className={meta?.className}\n aria-sort={\n canSort\n ? sorted === \"asc\"\n ? \"ascending\"\n : sorted === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 h-8 gap-1.5 px-2 text-[var(--ds-metadata)] font-semibold uppercase text-muted-foreground hover:text-foreground\"\n onClick={header.column.getToggleSortingHandler()}\n aria-label={`Sort by ${meta?.label ?? header.column.id}`}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sorted === \"asc\" ? <ArrowUp className=\"size-3.5\" /> : sorted === \"desc\" ? <ArrowDown className=\"size-3.5\" /> : <ChevronsUpDown className=\"size-3.5 opacity-60\" />}\n </Button>\n ) : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {visibleRows.map((row) => {\n const rowClickable = Boolean(\n onRowClick && (isRowClickable?.(row.original) ?? true),\n );\n return (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n tabIndex={rowClickable ? 0 : undefined}\n aria-label={rowClickable ? getRowLabel?.(row.original) ?? row.id : undefined}\n className={cn(rowClickable && \"cursor-pointer outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\")}\n onClick={() => {\n if (rowClickable) onRowClick?.(row.original);\n }}\n onKeyDown={(event) => {\n if (!rowClickable || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onRowClick?.(row.original);\n }}\n >\n {row.getVisibleCells().map((cell) => {\n const meta = cell.column.columnDef.meta as { className?: string } | undefined;\n return <TableCell key={cell.id} className={meta?.className}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</TableCell>;\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n {mobileRow ? (\n <div className=\"divide-y divide-border-subtle md:hidden\" role=\"list\">\n {visibleRows.map((row) => <div key={row.id} role=\"listitem\">{mobileRow(row.original)}</div>)}\n </div>\n ) : null}\n {showPagination ? (\n <PaginationControls\n currentPage={pagination!.pageIndex + 1}\n pageCount={Math.max(1, table.getPageCount())}\n pageSize={pagination!.pageSize}\n pageSizeOptions={pageSizeOptions}\n totalLabel={totalLabel}\n onPageChange={(nextPage) => table.setPageIndex(nextPage - 1)}\n onPageSizeChange={(nextSize) => table.setPageSize(nextSize)}\n />\n ) : null}\n </div>\n );\n}\n\nexport { DataTable };\nexport type { DataTableColumn, DataTableProps, PaginationState, SortingState };\n","import * as React from \"react\";\n\nimport { DataTable, type DataTableColumn } from \"./data-table\";\n\ntype EntityTableColumn<T> = {\n key: string;\n header: React.ReactNode;\n cell: (item: T) => React.ReactNode;\n className?: string;\n};\n\ntype EntityTableProps<T> = {\n items: T[];\n columns: EntityTableColumn<T>[];\n getRowId: (item: T) => string;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n onRowClick?: (item: T) => void;\n getRowLabel?: (item: T) => string;\n rowActions?: (item: T) => React.ReactNode;\n className?: string;\n};\n\nfunction EntityTable<T>({\n items,\n columns,\n getRowId,\n selectedIds,\n onSelectionChange,\n onRowClick,\n getRowLabel,\n rowActions,\n className\n}: EntityTableProps<T>) {\n return (\n <DataTable\n data={items}\n columns={columns.map((column): DataTableColumn<T> => ({ ...column, id: column.key }))}\n getRowId={getRowId}\n selectedIds={selectedIds}\n onSelectionChange={onSelectionChange}\n onRowClick={onRowClick}\n getRowLabel={getRowLabel}\n rowActions={rowActions}\n className={className}\n />\n );\n}\n\nexport { EntityTable };\nexport type { EntityTableColumn, EntityTableProps };\n","import * as React from \"react\";\nimport { ArrowLeft } from \"lucide-react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype DetailBackLinkProps = Omit<React.ComponentProps<\"a\">, \"children\"> & {\n label: string;\n};\n\nfunction DetailBackLink({ label, className, ...props }: DetailBackLinkProps) {\n return (\n <a\n data-slot=\"detail-back-link\"\n className={cn(\n \"inline-flex h-8 w-fit items-center gap-2 rounded-md px-2 text-sm font-medium text-muted-foreground outline-none transition-colors hover:bg-surface-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n className,\n )}\n {...props}\n >\n <ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n {label}\n </a>\n );\n}\n\nexport { DetailBackLink };\nexport type { DetailBackLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { PanelLeftIcon, Search, X } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Input } from \"../primitives/input\";\nimport { Separator } from \"../primitives/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../primitives/sheet\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../primitives/tooltip\";\nimport { cn } from \"../primitives/utils\";\n\nconst SIDEBAR_COOKIE_NAME = \"conscia_sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 30;\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\nconst SIDEBAR_STORAGE_KEY = \"conscia-sidebar-open:v1\";\nconst SIDEBAR_STATE_CHANGE_EVENT = \"conscia-sidebar-state-change\";\n\nfunction parseSidebarOpen(value: string | null) {\n return value === \"true\" ? true : value === \"false\" ? false : null;\n}\n\nfunction readPersistedSidebarOpen() {\n if (typeof document === \"undefined\") {\n return null;\n }\n\n try {\n const storedValue = window.localStorage.getItem(SIDEBAR_STORAGE_KEY);\n const storedSidebarOpen = parseSidebarOpen(storedValue);\n\n if (storedSidebarOpen !== null) {\n return storedSidebarOpen;\n }\n } catch {\n // Fall back to the cookie when storage is unavailable.\n }\n\n const cookie = document.cookie\n .split(\"; \")\n .find((entry) => entry.startsWith(`${SIDEBAR_COOKIE_NAME}=`));\n\n if (!cookie) {\n return null;\n }\n\n const value = cookie.slice(SIDEBAR_COOKIE_NAME.length + 1);\n\n return parseSidebarOpen(value);\n}\n\nfunction persistSidebarOpen(open: boolean) {\n try {\n window.localStorage.setItem(SIDEBAR_STORAGE_KEY, String(open));\n } catch {\n // The cookie still preserves the preference when storage is unavailable.\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n window.dispatchEvent(new Event(SIDEBAR_STATE_CHANGE_EVENT));\n}\n\nfunction subscribeToSidebarOpen(onStoreChange: () => void) {\n function onStorage(event: StorageEvent) {\n if (event.key === SIDEBAR_STORAGE_KEY) {\n onStoreChange();\n }\n }\n\n window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.addEventListener(\"storage\", onStorage);\n\n return () => {\n window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\ntype AppShellContextValue = {\n sidebarState: \"expanded\" | \"collapsed\";\n sidebarSide: \"left\" | \"right\";\n setSidebarSide: (side: \"left\" | \"right\") => void;\n sidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n mobileOpen: boolean;\n setMobileOpen: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst AppShellContext = React.createContext<AppShellContextValue | null>(null);\n\nfunction useAppShell() {\n const context = React.useContext(AppShellContext);\n\n if (!context) {\n throw new Error(\"useAppShell must be used within AppShell.\");\n }\n\n return context;\n}\n\nfunction useMediaQuery(query: string) {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const media = window.matchMedia(query);\n const sync = () => setMatches(media.matches);\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [query]);\n\n return matches;\n}\n\nfunction AppShell({\n defaultSidebarOpen = true,\n children,\n className,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultSidebarOpen?: boolean;\n}) {\n const isMobile = useMediaQuery(\"(max-width: 1023px)\");\n const [sidebarOpen, setSidebarOpenState] = React.useState(defaultSidebarOpen);\n const [sidebarSide, setSidebarSide] = React.useState<\"left\" | \"right\">(\"left\");\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n React.useEffect(() => {\n function syncSidebarOpen() {\n setSidebarOpenState(readPersistedSidebarOpen() ?? defaultSidebarOpen);\n }\n\n const unsubscribe = subscribeToSidebarOpen(syncSidebarOpen);\n queueMicrotask(syncSidebarOpen);\n\n return unsubscribe;\n }, [defaultSidebarOpen]);\n\n const setSidebarOpen = React.useCallback((open: boolean) => {\n persistSidebarOpen(open);\n }, []);\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setMobileOpen((current) => !current);\n return;\n }\n\n persistSidebarOpen(!sidebarOpen);\n }, [isMobile, sidebarOpen]);\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n event.key.toLowerCase() === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [toggleSidebar]);\n\n const contextValue = React.useMemo<AppShellContextValue>(\n () => ({\n sidebarState: sidebarOpen ? \"expanded\" : \"collapsed\",\n sidebarSide,\n setSidebarSide,\n sidebarOpen,\n setSidebarOpen,\n mobileOpen,\n setMobileOpen,\n isMobile,\n toggleSidebar,\n }),\n [\n isMobile,\n mobileOpen,\n setSidebarOpen,\n sidebarOpen,\n sidebarSide,\n toggleSidebar,\n ],\n );\n\n return (\n <AppShellContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={120}>\n <div\n data-slot=\"app-shell\"\n data-sidebar-state={sidebarOpen ? \"expanded\" : \"collapsed\"}\n data-sidebar-side={sidebarSide}\n suppressHydrationWarning\n className={cn(\n \"group/shell min-h-svh bg-canvas text-foreground\",\n \"[--ds-app-sidebar-width:var(--ds-sidebar-width)] [--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)] data-[sidebar-state=collapsed]:[--ds-app-sidebar-width:3.5rem]\",\n className,\n )}\n style={style}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </AppShellContext.Provider>\n );\n}\n\nfunction AppSidebar({\n side = \"left\",\n variant = \"dark\",\n className,\n children,\n title = \"Application navigation\",\n description = \"Primary product navigation.\",\n ...props\n}: React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\";\n /** Preserve the historical dark sidebar by default; auto follows appearance. */\n variant?: \"light\" | \"dark\" | \"auto\";\n title?: string;\n description?: string;\n}) {\n const { mobileOpen, setMobileOpen, setSidebarSide } = useAppShell();\n\n React.useEffect(() => {\n setSidebarSide(side);\n }, [setSidebarSide, side]);\n\n return (\n <>\n <Sheet open={mobileOpen} onOpenChange={setMobileOpen}>\n <SheetContent\n side={side}\n data-sidebar-variant={variant}\n className=\"w-[var(--ds-sidebar-width-mobile)] border-sidebar-border bg-sidebar-canvas p-0 text-sidebar-primary-text [&>[data-slot=sheet-close]]:right-3 [&>[data-slot=sheet-close]]:top-3 [&>[data-slot=sheet-close]]:text-sidebar-secondary-text [&>[data-slot=sheet-close]]:hover:text-sidebar-primary-text\"\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>{title}</SheetTitle>\n <SheetDescription>{description}</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full min-h-0 flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n\n <aside\n data-slot=\"app-sidebar\"\n data-side={side}\n data-sidebar-variant={variant}\n className={cn(\n \"fixed inset-y-0 z-20 hidden w-[var(--ds-app-sidebar-width)] shrink-0 flex-col border-sidebar-border bg-sidebar-canvas text-sidebar-primary-text transition-[width] duration-200 ease-linear lg:flex\",\n side === \"left\" ? \"left-0 border-r\" : \"right-0 border-l\",\n \"group-data-[sidebar-state=collapsed]/shell:w-[var(--ds-app-sidebar-width)]\",\n className,\n )}\n {...props}\n >\n {children}\n </aside>\n </>\n );\n}\n\nfunction AppSidebarHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-header\"\n className={cn(\n \"flex min-h-[var(--ds-topbar-height)] min-w-0 shrink-0 items-center overflow-hidden border-b border-sidebar-border bg-sidebar-header px-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-content\"\n className={cn(\n \"flex min-h-0 min-w-0 flex-1 flex-col gap-[var(--ds-sidebar-group-gap)] overflow-x-hidden overflow-y-auto bg-sidebar-content px-[var(--ds-sidebar-content-padding-x)] py-[var(--ds-sidebar-content-padding-y)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-footer\"\n className={cn(\n \"mt-auto flex min-w-0 shrink-0 flex-col gap-2 overflow-hidden border-t border-sidebar-border bg-sidebar-footer p-[var(--ds-sidebar-footer-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProductIdentity({\n label,\n description,\n icon,\n className,\n}: {\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n data-slot=\"product-identity\"\n className={cn(\"flex min-w-0 items-center gap-2\", className)}\n >\n {icon ? (\n <div className=\"flex size-7 shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover text-sidebar-icon\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden\">\n <div className=\"truncate text-sm font-semibold leading-5 text-sidebar-primary-text\">\n {label}\n </div>\n {description ? (\n <div className=\"truncate text-[var(--ds-metadata)] leading-4 text-sidebar-metadata-text\">\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"app-sidebar-separator\"\n className={cn(\"bg-sidebar-border\", className)}\n {...props}\n />\n );\n}\n\nfunction NavigationGroup({\n label,\n count,\n children,\n className,\n}: {\n label?: React.ReactNode;\n count?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <section\n data-slot=\"navigation-group\"\n className={cn(\"flex min-w-0 flex-col gap-1\", className)}\n >\n {label ? (\n <div\n data-slot=\"navigation-group-label\"\n className=\"flex min-h-6 items-center gap-2 px-2 pb-1 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-5 tracking-[0.08em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden\"\n >\n {label}\n {count !== undefined ? (\n <span className=\"ml-auto shrink-0 text-[length:var(--ds-metadata)] font-medium normal-case tracking-normal text-sidebar-group-count\">\n {count}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className=\"flex min-w-0 flex-col gap-1\">{children}</div>\n </section>\n );\n}\n\nfunction navigationItemClasses(active?: boolean) {\n return cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sm font-medium text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[var(--ds-sidebar-item-height)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text\",\n \"focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n \"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n );\n}\n\nfunction NavigationItem({\n asChild = false,\n active = false,\n tooltip,\n type,\n className,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n active?: boolean;\n tooltip?: string;\n}) {\n const Comp = asChild ? Slot : \"button\";\n const { sidebarState, sidebarSide, isMobile } = useAppShell();\n const item = (\n <Comp\n data-slot=\"navigation-item\"\n data-active={active ? \"true\" : undefined}\n type={asChild ? undefined : (type ?? \"button\")}\n className={cn(navigationItemClasses(active), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n\n if (!tooltip) {\n return item;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{item}</TooltipTrigger>\n <TooltipContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"center\"\n hidden={sidebarState !== \"collapsed\" || isMobile}\n >\n {tooltip}\n </TooltipContent>\n </Tooltip>\n );\n}\n\nfunction NavigationSubItem({\n asChild = false,\n active = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n active?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"navigation-sub-item\"\n data-active={active ? \"true\" : undefined}\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sm text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[calc(var(--ds-sidebar-item-height)-0.25rem)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"group-data-[sidebar-state=collapsed]/shell:hidden [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationSubList({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"navigation-sub-list\"\n className={cn(\n \"ml-4 flex min-w-0 flex-col gap-1 border-l border-sidebar-border pl-2 group-data-[sidebar-state=collapsed]/shell:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * Place this control inside TopBar, not AppSidebar, so it remains available\n * after the sidebar collapses and in the mobile drawer layout.\n */\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { isMobile, mobileOpen, sidebarOpen, toggleSidebar } = useAppShell();\n\n return (\n <Button\n data-slot=\"sidebar-trigger\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n \"shrink-0 cursor-pointer text-muted-foreground hover:bg-surface-muted hover:text-foreground focus-visible:ring-ring\",\n className,\n )}\n aria-expanded={isMobile ? mobileOpen : sidebarOpen}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle navigation</span>\n </Button>\n );\n}\n\ntype SidebarSearchProps = Omit<React.ComponentProps<typeof Input>, \"type\"> & {\n expanded?: boolean;\n defaultExpanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void;\n triggerLabel?: string;\n shortcut?: string;\n};\n\n/**\n * Shared search affordance for sidebars. Applications own query state and\n * filtering; this component owns the compact trigger, focus handoff, and\n * keyboard-accessible expanded field.\n */\nfunction SidebarSearch({\n expanded: expandedProp,\n defaultExpanded = false,\n onExpandedChange,\n triggerLabel = \"Search navigation\",\n shortcut,\n className,\n onKeyDown,\n ...props\n}: SidebarSearchProps) {\n const [expandedState, setExpandedState] = React.useState(defaultExpanded);\n const expanded = expandedProp ?? expandedState;\n const inputRef = React.useRef<HTMLInputElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const mountedRef = React.useRef(false);\n\n const setExpanded = React.useCallback(\n (nextExpanded: boolean) => {\n if (expandedProp === undefined) {\n setExpandedState(nextExpanded);\n }\n onExpandedChange?.(nextExpanded);\n },\n [expandedProp, onExpandedChange],\n );\n\n React.useEffect(() => {\n if (expanded) {\n queueMicrotask(() => inputRef.current?.focus());\n } else if (mountedRef.current) {\n queueMicrotask(() => triggerRef.current?.focus());\n }\n\n mountedRef.current = true;\n }, [expanded]);\n\n if (!expanded) {\n return (\n <button\n ref={triggerRef}\n type=\"button\"\n data-slot=\"sidebar-search-trigger\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left text-sm font-medium text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring lg:min-h-[var(--ds-sidebar-item-height)]\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n className,\n )}\n onClick={() => setExpanded(true)}\n aria-label={triggerLabel}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {triggerLabel}\n </span>\n {shortcut ? (\n <kbd className=\"ml-auto rounded border border-sidebar-border px-1.5 py-0.5 text-[length:var(--ds-metadata)] font-medium text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden\">\n {shortcut}\n </kbd>\n ) : null}\n </button>\n );\n }\n\n return (\n <div\n data-slot=\"sidebar-search\"\n data-expanded=\"true\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] items-center gap-2 rounded-[var(--ds-radius-control)] border border-sidebar-border bg-sidebar-search px-2 text-sidebar-primary-text shadow-[var(--ds-shadow-raised)] lg:min-h-[var(--ds-sidebar-item-height)]\",\n className,\n )}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <Input\n ref={inputRef}\n type=\"search\"\n className=\"h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 text-sm shadow-none focus-visible:border-0 focus-visible:ring-0\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setExpanded(false);\n }\n onKeyDown?.(event);\n }}\n {...props}\n />\n <button\n type=\"button\"\n data-slot=\"sidebar-search-close\"\n className=\"grid size-7 shrink-0 cursor-pointer place-items-center rounded-[var(--ds-radius-control)] text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-2 focus-visible:ring-sidebar-focus-ring\"\n onClick={() => {\n setExpanded(false);\n }}\n aria-label=\"Close search\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n );\n}\n\nfunction MainRegion({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"main-region\"\n className={cn(\n \"flex min-h-svh min-w-0 w-full flex-1 flex-col transition-[padding] duration-200 ease-linear\",\n \"group-data-[sidebar-side=left]/shell:lg:pl-[var(--ds-app-sidebar-width)] group-data-[sidebar-side=right]/shell:lg:pr-[var(--ds-app-sidebar-width)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TopBar({\n className,\n ...props\n}: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"top-bar\"\n className={cn(\n \"sticky top-0 z-10 flex min-h-[var(--ds-topbar-height)] shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-background/96 px-3 backdrop-blur md:px-4\",\n \"supports-[backdrop-filter]:bg-background/88\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageFrame({\n width = \"full\",\n className,\n ...props\n}: React.ComponentProps<\"main\"> & {\n width?: \"full\" | \"wide\" | \"focused\" | \"reading\";\n}) {\n return (\n <main\n data-slot=\"page-frame\"\n data-width={width}\n className={cn(\n \"min-w-0 w-full flex-1 px-3 py-[var(--ds-space-section)] md:px-[var(--ds-space-page)]\",\n width === \"wide\" && \"mx-auto w-full max-w-[86rem]\",\n width === \"focused\" && \"mx-auto w-full max-w-[64rem]\",\n width === \"reading\" && \"mx-auto w-full max-w-[48rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-content\"\n className={cn(\"flex min-w-0 flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\nfunction PageBoundary({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-boundary\"\n className={cn(\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InspectorRegion({\n className,\n ...props\n}: React.ComponentProps<\"aside\">) {\n return (\n <aside\n data-slot=\"inspector-region\"\n className={cn(\n \"w-full border-l border-border-subtle bg-surface md:w-[20rem] xl:w-[24rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n AppShell,\n AppSidebar,\n AppSidebarContent,\n AppSidebarFooter,\n AppSidebarHeader,\n InspectorRegion,\n MainRegion,\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n PageBoundary,\n PageContent,\n PageFrame,\n ProductIdentity,\n SidebarSeparator,\n SidebarSearch,\n SidebarTrigger,\n TopBar,\n useAppShell,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\nfunction ActivityList({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"activity-list\" className={cn(\"divide-y divide-border-subtle\", className)} {...props} />;\n}\n\ntype ActivityItemProps = React.ComponentProps<\"div\"> & {\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n status?: React.ReactNode;\n};\n\nfunction ActivityItem({ icon, title, description, metadata, status, className, ...props }: ActivityItemProps) {\n return (\n <div data-slot=\"activity-item\" className={cn(\"grid grid-cols-[auto_minmax(0,1fr)_auto] gap-3 py-3\", className)} {...props}>\n <div className=\"flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4\">\n {icon}\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-sm font-medium text-foreground\">{title}</div>\n {description ? <div className=\"mt-0.5 text-sm text-muted-foreground\">{description}</div> : null}\n {metadata ? <div className=\"mt-1 text-[var(--ds-metadata)] text-muted-foreground\">{metadata}</div> : null}\n </div>\n {status ? <div className=\"shrink-0\">{status}</div> : null}\n </div>\n );\n}\n\nexport { ActivityItem, ActivityList };\nexport type { ActivityItemProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from \"../primitives/dialog\";\n\ntype ConfirmationDialogProps = {\n trigger: React.ReactNode;\n title: React.ReactNode;\n description: React.ReactNode;\n children?: React.ReactNode;\n confirmLabel?: React.ReactNode;\n cancelLabel?: React.ReactNode;\n confirmVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n pending?: boolean;\n onConfirm: () => unknown | Promise<unknown>;\n onError?: (error: unknown) => void;\n};\n\nfunction ConfirmationDialog({ trigger, title, description, children, confirmLabel = \"Confirm\", cancelLabel = \"Cancel\", confirmVariant = \"destructive\", pending = false, onConfirm, onError }: ConfirmationDialogProps) {\n const [open, setOpen] = React.useState(false);\n const [confirming, setConfirming] = React.useState(false);\n const isPending = pending || confirming;\n\n async function confirm() {\n if (isPending) {\n return;\n }\n\n setConfirming(true);\n\n try {\n await onConfirm();\n setOpen(false);\n } catch (error) {\n onError?.(error);\n } finally {\n setConfirming(false);\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>{trigger}</DialogTrigger>\n <DialogContent size=\"small\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogBody>{children}</DialogBody>\n <DialogFooter>\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\" disabled={isPending}>{cancelLabel}</Button>\n </DialogClose>\n <Button type=\"button\" variant={confirmVariant} disabled={isPending} onClick={confirm}>\n {isPending ? \"Working...\" : confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\nexport { ConfirmationDialog };\nexport type { ConfirmationDialogProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, Copy } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../primitives/tabs\";\nimport { cn } from \"../primitives/utils\";\n\ntype CodeBlockSnippet = {\n value: string;\n label: string;\n code: string;\n};\n\ntype CodeBlockProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n snippets: CodeBlockSnippet[];\n defaultValue?: string;\n copyLabel?: string;\n};\n\nfunction CodeBlock({\n snippets,\n defaultValue,\n copyLabel = \"Copy code\",\n className,\n ...props\n}: CodeBlockProps) {\n const initialValue = defaultValue ?? snippets[0]?.value ?? \"\";\n const [activeValue, setActiveValue] = React.useState(initialValue);\n const [copiedValue, setCopiedValue] = React.useState<string | null>(null);\n const [copyError, setCopyError] = React.useState(false);\n const copyStatusId = React.useId();\n const activeSnippet =\n snippets.find((snippet) => snippet.value === activeValue) ?? snippets[0];\n\n if (!activeSnippet) return null;\n\n return (\n <div\n data-slot=\"code-block\"\n className={cn(\"overflow-hidden rounded-lg border border-border-subtle bg-surface\", className)}\n {...props}\n >\n <Tabs value={activeSnippet.value} onValueChange={setActiveValue} variant=\"segmented\" className=\"gap-0\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-subtle bg-surface-muted px-3 py-2\">\n <TabsList variant=\"segmented\" size=\"compact\" aria-label=\"Code language\">\n {snippets.map((snippet) => (\n <TabsTrigger key={snippet.value} value={snippet.value}>\n {snippet.label}\n </TabsTrigger>\n ))}\n </TabsList>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={async () => {\n try {\n await navigator.clipboard.writeText(activeSnippet.code);\n setCopiedValue(activeSnippet.value);\n setCopyError(false);\n } catch {\n setCopiedValue(null);\n setCopyError(true);\n }\n }}\n aria-describedby={copyStatusId}\n >\n {copiedValue === activeSnippet.value ? <Check /> : <Copy />}\n {copiedValue === activeSnippet.value ? \"Copied\" : copyLabel}\n </Button>\n <span id={copyStatusId} className=\"sr-only\" role=\"status\" aria-live=\"polite\">{copyError ? \"Code could not be copied. Select the code and copy it manually.\" : copiedValue === activeSnippet.value ? \"Code copied to clipboard.\" : \"\"}</span>\n </div>\n {snippets.map((snippet) => (\n <TabsContent key={snippet.value} value={snippet.value} className=\"m-0\">\n <pre className=\"max-h-[32rem] overflow-auto p-4 text-sm leading-6\">\n <code>{snippet.code}</code>\n </pre>\n </TabsContent>\n ))}\n </Tabs>\n </div>\n );\n}\n\nexport { CodeBlock };\nexport type { CodeBlockProps, CodeBlockSnippet };\n","import * as React from \"react\";\n\nimport { Card } from \"../primitives/card\";\nimport { cn } from \"../primitives/utils\";\n\nfunction InventorySurface({ className, ...props }: React.ComponentProps<typeof Card>) {\n return (\n <Card\n data-slot=\"inventory-surface\"\n className={cn(\"gap-0 overflow-hidden py-0\", className)}\n {...props}\n />\n );\n}\n\nfunction InventoryDesktop({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-desktop\" className={cn(\"hidden lg:block\", className)} {...props} />;\n}\n\nfunction InventoryMobile({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-mobile\" className={cn(\"divide-y divide-border-subtle lg:hidden\", className)} {...props} />;\n}\n\nexport { InventoryDesktop, InventoryMobile, InventorySurface };\n","import * as React from \"react\";\n\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { cn } from \"../primitives/utils\";\n\ntype MetricBandProps = React.ComponentProps<\"div\"> & {\n columns?: 2 | 3 | 4 | 5;\n};\n\nfunction MetricBand({ columns = 4, className, ...props }: MetricBandProps) {\n return (\n <div\n data-slot=\"metric-band\"\n data-columns={columns}\n className={cn(\n \"grid grid-cols-2 border-b border-border-subtle\",\n columns === 2 && \"lg:grid-cols-2\",\n columns === 3 && \"lg:grid-cols-3\",\n columns === 4 && \"lg:grid-cols-4\",\n columns === 5 && \"lg:grid-cols-5\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype MetricBandItemProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value?: React.ReactNode;\n detail?: React.ReactNode;\n icon?: React.ReactNode;\n iconClassName?: string;\n loading?: boolean;\n};\n\nfunction MetricBandItem({\n label,\n value,\n detail,\n icon,\n iconClassName,\n loading = false,\n className,\n ...props\n}: MetricBandItemProps) {\n return (\n <div\n data-slot=\"metric-band-item\"\n className={cn(\n \"flex min-h-28 flex-col items-start gap-3 border-r border-border-subtle p-4 last:border-r-0 sm:flex-row sm:items-center sm:gap-4 sm:p-5\",\n \"[&:nth-child(-n+2)]:border-b lg:[&:nth-child(-n+2)]:border-b-0\",\n className,\n )}\n {...props}\n >\n {icon ? (\n <div\n className={cn(\n \"flex size-10 shrink-0 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\",\n iconClassName,\n )}\n >\n {icon}\n </div>\n ) : null}\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"text-sm leading-snug text-muted-foreground\">{label}</div>\n {loading ? (\n <Skeleton className=\"h-7 w-14\" />\n ) : (\n <div className=\"text-2xl font-semibold tracking-tight\">{value ?? 0}</div>\n )}\n {detail ? (\n <div className=\"text-[var(--ds-metadata)] leading-snug text-muted-foreground\">\n {detail}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { MetricBand, MetricBandItem };\nexport type { MetricBandItemProps, MetricBandProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageHeaderProps = React.ComponentProps<\"header\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should pass an explicit actions node.\n */\n action?: {\n label: string;\n href: string;\n };\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should use actions.\n */\n actionNode?: React.ReactNode;\n};\n\nfunction PageHeader({\n title,\n description,\n status,\n metadata,\n actions,\n action,\n actionNode,\n className,\n ...props\n}: PageHeaderProps) {\n const resolvedActions =\n actions ??\n actionNode ??\n (action ? (\n <a\n className=\"inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground shadow-xs outline-none transition-colors hover:bg-accent-hover focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\"\n href={action.href}\n >\n {action.label}\n </a>\n ) : null);\n\n return (\n <header\n data-slot=\"page-header\"\n className={cn(\"flex flex-col gap-3 border-b border-border-subtle bg-background px-5 py-4 lg:flex-row lg:items-start lg:justify-between\", className)}\n {...props}\n >\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <h1 className=\"truncate text-[length:var(--ds-page-title)] font-semibold leading-tight\">{title}</h1>\n {status}\n </div>\n {description ? <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{description}</p> : null}\n {metadata ? <div className=\"mt-2 text-[var(--ds-metadata)] text-muted-foreground\">{metadata}</div> : null}\n </div>\n {resolvedActions ? <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{resolvedActions}</div> : null}\n </header>\n );\n}\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageToolbarProps = React.ComponentProps<\"div\"> & {\n search?: React.ReactNode;\n filters?: React.ReactNode;\n viewControls?: React.ReactNode;\n bulkActions?: React.ReactNode;\n};\n\nfunction PageToolbar({\n search,\n filters,\n viewControls,\n bulkActions,\n className,\n children,\n ...props\n}: PageToolbarProps) {\n return (\n <div\n data-slot=\"page-toolbar\"\n className={cn(\"grid gap-2 border-b border-border-subtle bg-background px-5 py-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center\", className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center\">\n {search ? <div className=\"min-w-0 flex-1 sm:min-w-48 sm:max-w-sm\">{search}</div> : null}\n {filters ? <div className=\"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:flex-wrap sm:items-center\">{filters}</div> : null}\n </div>\n <div className=\"flex min-h-[var(--ds-control-height)] flex-wrap items-center gap-2 lg:justify-end\">\n {bulkActions ? (\n <div data-slot=\"page-toolbar-bulk-actions\" className=\"contents\">\n {bulkActions}\n </div>\n ) : null}\n {viewControls}\n {children}\n </div>\n </div>\n );\n}\n\nexport { PageToolbar };\nexport type { PageToolbarProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n appearanceOptions,\n applyConsciaPreferences,\n densityOptions,\n type ConsciaAppearance,\n type ConsciaDensity,\n} from \"../foundation/preferences\";\nimport { cn } from \"../primitives/utils\";\n\nconst APPEARANCE_KEY = \"conscia-appearance:v1\";\nconst DENSITY_KEY = \"conscia-density:v1\";\nconst PREFERENCE_EVENT = \"conscia-preferences\";\nconst volatilePreferences = new Map<string, string>();\n\nfunction readPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n if (typeof window === \"undefined\") {\n return fallback;\n }\n\n try {\n const value =\n window.localStorage.getItem(key) ?? volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n } catch {\n const value = volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n }\n}\n\nfunction writePreference(key: string, value: string) {\n volatilePreferences.set(key, value);\n\n try {\n window.localStorage.setItem(key, value);\n } catch {\n // Preferences still apply for this session when storage is unavailable.\n }\n\n window.dispatchEvent(new Event(PREFERENCE_EVENT));\n}\n\nfunction useStoredPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n return React.useSyncExternalStore(\n (onStoreChange) => {\n window.addEventListener(\"storage\", onStoreChange);\n window.addEventListener(PREFERENCE_EVENT, onStoreChange);\n return () => {\n window.removeEventListener(\"storage\", onStoreChange);\n window.removeEventListener(PREFERENCE_EVENT, onStoreChange);\n };\n },\n () => readPreference(key, fallback, allowedValues),\n () => fallback,\n );\n}\n\nfunction useConsciaPreferences() {\n const appearance = useStoredPreference<ConsciaAppearance>(\n APPEARANCE_KEY,\n \"system\",\n appearanceOptions,\n );\n const density = useStoredPreference<ConsciaDensity>(\n DENSITY_KEY,\n \"comfortable\",\n densityOptions,\n );\n\n return { appearance, density };\n}\n\nfunction DesignSystemPreferenceSync() {\n const { appearance, density } = useConsciaPreferences();\n\n React.useEffect(() => {\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const sync = () =>\n applyConsciaPreferences(\n document.documentElement,\n appearance,\n density,\n media.matches,\n );\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [appearance, density]);\n\n return null;\n}\n\nfunction AppearanceControl({ className }: { className?: string }) {\n const { appearance } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Appearance\"\n value={appearance}\n values={appearanceOptions}\n onChange={(value) => writePreference(APPEARANCE_KEY, value)}\n />\n );\n}\n\nfunction DensityControl({ className }: { className?: string }) {\n const { density } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Density\"\n value={density}\n values={densityOptions}\n onChange={(value) => writePreference(DENSITY_KEY, value)}\n />\n );\n}\n\nfunction DesignPreferenceControls({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col gap-3 text-sm\", className)}>\n <AppearanceControl />\n <DensityControl />\n </div>\n );\n}\n\nfunction SegmentedControl({\n className,\n label,\n value,\n values,\n onChange,\n}: {\n className?: string;\n label: string;\n value: string;\n values: string[];\n onChange: (value: string) => void;\n}) {\n return (\n <fieldset className={cn(\"flex flex-col gap-2\", className)}>\n <legend className=\"text-[var(--ds-metadata)] font-medium text-muted-foreground\">\n {label}\n </legend>\n <div className=\"inline-flex rounded-[var(--ds-radius-control)] bg-muted p-1\">\n {values.map((item) => (\n <button\n key={item}\n type=\"button\"\n aria-pressed={value === item}\n suppressHydrationWarning\n onClick={() => onChange(item)}\n className=\"h-7 rounded-[calc(var(--ds-radius-control)-2px)] px-2.5 text-[var(--ds-metadata)] font-medium capitalize text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-pressed:bg-background aria-pressed:text-foreground aria-pressed:shadow-xs\"\n >\n {item}\n </button>\n ))}\n </div>\n </fieldset>\n );\n}\n\nexport {\n AppearanceControl,\n DensityControl,\n DesignPreferenceControls,\n DesignSystemPreferenceSync,\n useConsciaPreferences,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ProviderMarkProps = React.ComponentProps<\"div\"> & {\n name: string;\n shortName: string;\n description?: React.ReactNode;\n size?: \"sm\" | \"default\";\n};\n\nfunction ProviderMark({ name, shortName, description, size = \"default\", className, ...props }: ProviderMarkProps) {\n return (\n <div data-slot=\"provider-mark\" className={cn(\"flex min-w-0 items-center gap-3\", className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface-muted font-semibold tracking-tight text-foreground\",\n size === \"sm\" ? \"size-8 text-[10px]\" : \"size-10 text-xs\",\n )}\n >\n {shortName}\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium text-foreground\">{name}</div>\n {description ? <div className=\"mt-0.5 truncate text-[var(--ds-metadata)] text-muted-foreground\">{description}</div> : null}\n </div>\n </div>\n );\n}\n\nexport { ProviderMark };\nexport type { ProviderMarkProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ResourceSummaryProps = React.ComponentProps<\"section\"> & {\n variant?: \"plain\" | \"surface\";\n title?: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction ResourceSummary({\n variant = \"plain\",\n title,\n description,\n status,\n metadata,\n actions,\n className,\n children,\n ...props\n}: ResourceSummaryProps) {\n return (\n <section\n data-slot=\"resource-summary\"\n className={cn(\n \"px-5 py-4\",\n variant === \"plain\" && \"border-b border-border-subtle bg-background\",\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"min-w-0\">\n {title || status ? (\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n {title ? (\n <h2 className=\"truncate text-[var(--ds-section-title)] font-semibold\">\n {title}\n </h2>\n ) : null}\n {status}\n </div>\n ) : null}\n {description ? (\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">\n {description}\n </p>\n ) : null}\n {metadata ? (\n <div className=\"mt-2 text-[var(--ds-metadata)] text-muted-foreground\">\n {metadata}\n </div>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n {actions}\n </div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction DetailSections({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"detail-sections\"\n className={cn(\"flex flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\ntype DetailSectionProps = React.ComponentProps<\"section\"> & {\n variant?: \"surface\" | \"open\";\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction DetailSection({\n variant = \"surface\",\n title,\n description,\n actions,\n className,\n children,\n ...props\n}: DetailSectionProps) {\n return (\n <section\n data-slot=\"detail-section\"\n className={cn(\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n variant === \"open\" && \"border-b border-border-subtle pb-[var(--ds-space-section)]\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[var(--ds-section-title)] font-semibold\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">\n {description}\n </p>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction KeyValueList({\n className,\n ...props\n}: React.ComponentProps<\"dl\">) {\n return (\n <dl\n data-slot=\"key-value-list\"\n className={cn(\"grid gap-3 text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction KeyValueItem({\n label,\n value,\n breakValue = false,\n}: {\n label: React.ReactNode;\n value: React.ReactNode;\n breakValue?: boolean;\n}) {\n return (\n <div data-slot=\"key-value-item\" className=\"flex justify-between gap-4\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd\n className={cn(\n \"text-right font-medium\",\n breakValue && \"break-all\",\n )}\n >\n {value}\n </dd>\n </div>\n );\n}\n\nexport {\n DetailSection,\n DetailSections,\n KeyValueItem,\n KeyValueList,\n ResourceSummary,\n};\nexport type { DetailSectionProps, ResourceSummaryProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../primitives/collapsible\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuTrigger,\n} from \"../primitives/dropdown-menu\";\nimport { cn } from \"../primitives/utils\";\nimport {\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n useAppShell,\n} from \"./app-shell\";\n\nexport type SidebarNavigationItem = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n active?: boolean;\n startsSection?: boolean;\n};\n\nexport type SidebarNavigationSection = Omit<\n SidebarNavigationItem,\n \"active\"\n> & {\n active?: boolean;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationEntry =\n | SidebarNavigationItem\n | SidebarNavigationSection;\n\nexport type SidebarNavigationLinkProps = {\n \"aria-current\"?: \"page\";\n \"aria-label\": string;\n children: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\ntype SidebarNavigationProps = {\n entries: SidebarNavigationEntry[];\n renderLink: (\n item: SidebarNavigationItem,\n props: SidebarNavigationLinkProps,\n ) => React.ReactElement;\n onNavigate?: () => void;\n storageKey?: string;\n className?: string;\n};\n\nfunction isSection(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection {\n return \"items\" in entry;\n}\n\nfunction readOpenSections(storageKey?: string) {\n if (!storageKey || typeof window === \"undefined\") {\n return {};\n }\n\n try {\n const storedValue = window.localStorage.getItem(storageKey);\n\n if (!storedValue) {\n return {};\n }\n\n const parsedValue: unknown = JSON.parse(storedValue);\n return typeof parsedValue === \"object\" && parsedValue !== null\n ? (parsedValue as Record<string, boolean>)\n : {};\n } catch {\n return {};\n }\n}\n\nfunction SidebarNavigation({\n entries,\n renderLink,\n onNavigate,\n storageKey,\n className,\n}: SidebarNavigationProps) {\n const { isMobile, sidebarSide, sidebarState } = useAppShell();\n const [openSections, setOpenSections] = React.useState<\n Record<string, boolean>\n >({});\n const storageReady = React.useRef(false);\n\n React.useEffect(() => {\n storageReady.current = false;\n const storedSections = readOpenSections(storageKey);\n\n queueMicrotask(() => {\n storageReady.current = true;\n setOpenSections(storedSections);\n });\n }, [storageKey]);\n\n React.useEffect(() => {\n if (\n !storageReady.current ||\n !storageKey ||\n !entries.some(isSection)\n ) {\n return;\n }\n\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(openSections));\n } catch {\n // Navigation remains functional when storage is unavailable.\n }\n }, [entries, openSections, storageKey]);\n\n const handleNavigate = React.useCallback<\n React.MouseEventHandler<HTMLAnchorElement>\n >(() => {\n onNavigate?.();\n }, [onNavigate]);\n\n return (\n <nav\n data-slot=\"sidebar-navigation\"\n aria-label=\"Primary navigation\"\n className={cn(\"flex flex-col gap-1\", className)}\n >\n {entries.map((entry) => {\n if (!isSection(entry)) {\n return (\n <NavigationGroup\n key={entry.id}\n className={entry.startsSection ? \"mt-2\" : undefined}\n >\n <NavigationItem asChild active={entry.active} tooltip={entry.label}>\n {renderLink(entry, {\n \"aria-current\": entry.active ? \"page\" : undefined,\n \"aria-label\": entry.label,\n onClick: handleNavigate,\n children: (\n <>\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n </>\n ),\n })}\n </NavigationItem>\n </NavigationGroup>\n );\n }\n\n const sectionOpen = (openSections[entry.id] ?? false) || entry.active;\n\n if (sidebarState === \"collapsed\" && !isMobile) {\n return (\n <DropdownMenu key={entry.id}>\n <NavigationGroup\n className={entry.startsSection ? \"mt-2\" : undefined}\n >\n <DropdownMenuTrigger asChild>\n <NavigationItem\n active={entry.active}\n aria-label={`${entry.label} menu`}\n >\n {entry.icon}\n <span className=\"sr-only\">{entry.label}</span>\n </NavigationItem>\n </DropdownMenuTrigger>\n </NavigationGroup>\n <DropdownMenuContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"start\"\n sideOffset={8}\n className=\"min-w-56 rounded-[var(--ds-radius-surface)] p-1.5\"\n >\n <DropdownMenuLabel className=\"px-2 py-1.5 font-semibold text-muted-foreground\">\n {entry.label}\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {entry.items.map((item) => (\n <DropdownMenuItem\n key={item.id}\n asChild\n className={cn(\n \"min-h-9 cursor-pointer rounded-[var(--ds-radius-control)] [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75]\",\n item.active &&\n \"bg-selection-background text-selection-foreground shadow-[inset_2px_0_0_var(--selection-indicator)] focus:bg-selection-background focus:text-selection-foreground\",\n )}\n >\n {renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": item.label,\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n </>\n ),\n })}\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <Collapsible\n key={entry.id}\n open={sectionOpen}\n onOpenChange={(open) =>\n setOpenSections((current) => ({\n ...current,\n [entry.id]: open,\n }))\n }\n className={cn(\n \"group/collapsible\",\n entry.startsSection && \"mt-2\",\n )}\n >\n <NavigationGroup>\n <CollapsibleTrigger asChild>\n <NavigationItem\n active={entry.active}\n tooltip={entry.label}\n aria-label={entry.label}\n aria-expanded={sectionOpen}\n >\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n <ChevronRight className=\"ml-auto transition-transform duration-150 ease-out group-data-[sidebar-state=collapsed]/shell:hidden group-data-[state=open]/collapsible:rotate-90\" />\n </NavigationItem>\n </CollapsibleTrigger>\n <CollapsibleContent\n data-slot=\"sidebar-collapsible-content\"\n className=\"overflow-hidden\"\n >\n <NavigationSubList>\n {entry.items.map((item) => (\n <NavigationSubItem\n key={item.id}\n asChild\n active={item.active}\n >\n {renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": item.label,\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n </>\n ),\n })}\n </NavigationSubItem>\n ))}\n </NavigationSubList>\n </CollapsibleContent>\n </NavigationGroup>\n </Collapsible>\n );\n })}\n </nav>\n );\n}\n\nexport { SidebarNavigation };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype StateViewProps = React.ComponentProps<\"div\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n icon?: React.ReactNode;\n};\n\nfunction StateView({ title, description, action, icon, className, ...props }: StateViewProps) {\n return (\n <div\n data-slot=\"state-view\"\n className={cn(\"flex min-h-72 flex-col items-center justify-center gap-3 border-b px-6 py-12 text-center\", className)}\n {...props}\n >\n {icon ? (\n <div className=\"flex size-10 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\">\n {icon}\n </div>\n ) : null}\n <h2 className=\"text-base font-semibold\">{title}</h2>\n {description ? <p className=\"max-w-md text-sm text-muted-foreground\">{description}</p> : null}\n {action ? <div className=\"mt-1\">{action}</div> : null}\n </div>\n );\n}\n\nfunction LoadingRows({\n rows = 6,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div data-slot=\"loading-rows\" className=\"border-b\">\n {Array.from({ length: rows }).map((_, index) => (\n <div\n key={index}\n className=\"grid h-[var(--ds-row-height)] items-center gap-4 border-b px-5 last:border-b-0\"\n style={{ gridTemplateColumns: `2fr repeat(${Math.max(columns - 1, 1)}, minmax(5rem, 1fr))` }}\n >\n {Array.from({ length: columns }).map((_, columnIndex) => (\n <div\n key={columnIndex}\n className={cn(\n \"h-3 rounded bg-muted\",\n columnIndex === 0 ? \"w-44\" : \"w-24\",\n )}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nfunction ErrorState({ title, description, action, className, ...props }: StateViewProps) {\n return (\n <StateView\n title={title}\n description={description}\n action={action}\n className={cn(\"bg-danger-background/60\", className)}\n role=\"alert\"\n aria-live=\"assertive\"\n {...props}\n />\n );\n}\n\nexport { ErrorState, LoadingRows, StateView };\nexport type { StateViewProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ValueMeterProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value: number;\n maximum?: number | null;\n valueLabel?: React.ReactNode;\n detail?: React.ReactNode;\n tone?: \"neutral\" | \"success\" | \"warning\" | \"danger\";\n};\n\nfunction ValueMeter({\n label,\n value,\n maximum,\n valueLabel,\n detail,\n tone = \"neutral\",\n className,\n ...props\n}: ValueMeterProps) {\n const labelId = React.useId();\n const hasMaximum = typeof maximum === \"number\" && maximum > 0;\n const boundedValue = hasMaximum\n ? Math.min(maximum, Math.max(0, value))\n : value;\n const percentage = hasMaximum\n ? (boundedValue / maximum) * 100\n : null;\n const resolvedValueLabel =\n valueLabel ??\n (hasMaximum ? `${boundedValue} of ${maximum}` : String(boundedValue));\n\n return (\n <div\n data-slot=\"value-meter\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n >\n <div className=\"flex items-baseline justify-between gap-4 text-sm\">\n <span id={labelId} className=\"font-medium text-foreground\">{label}</span>\n <span className=\"text-muted-foreground\">{resolvedValueLabel}</span>\n </div>\n {percentage === null ? null : (\n <div\n role=\"progressbar\"\n aria-labelledby={labelId}\n aria-valuemin={0}\n aria-valuemax={maximum ?? undefined}\n aria-valuenow={boundedValue}\n className=\"h-2 overflow-hidden rounded-full bg-surface-muted\"\n >\n <div\n className={cn(\n \"h-full rounded-full bg-neutral-foreground transition-[width]\",\n tone === \"success\" && \"bg-success-foreground\",\n tone === \"warning\" && \"bg-warning-foreground\",\n tone === \"danger\" && \"bg-danger-foreground\",\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )}\n {detail ? <div className=\"text-xs text-muted-foreground\">{detail}</div> : null}\n </div>\n );\n}\n\nexport { ValueMeter };\nexport type { ValueMeterProps };\n"],"mappings":"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","names":["jsx","jsxs","table","jsx","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","ChevronRight","Fragment","jsx","jsxs","ChevronRight","jsx","jsxs","_","React","jsx","jsxs"]}
@@ -6,6 +6,7 @@ import {
6
6
  CardHeader,
7
7
  CardTitle,
8
8
  Checkbox,
9
+ Input,
9
10
  Select,
10
11
  SelectContent,
11
12
  SelectGroup,
@@ -18,7 +19,7 @@ import {
18
19
  TableHead,
19
20
  TableHeader,
20
21
  TableRow
21
- } from "./chunk-YHPZ5CQU.js";
22
+ } from "./chunk-HLND6FZS.js";
22
23
  import {
23
24
  cn
24
25
  } from "./chunk-JU5DQXFC.js";
@@ -155,34 +156,15 @@ function Badge({
155
156
  return /* @__PURE__ */ jsx3("span", { "data-slot": "badge", className: cn(badgeVariants({ variant, className })), ...props });
156
157
  }
157
158
 
158
- // src/primitives/input.tsx
159
- import { jsx as jsx4 } from "react/jsx-runtime";
160
- function Input({ className, type, ...props }) {
161
- return /* @__PURE__ */ jsx4(
162
- "input",
163
- {
164
- type,
165
- "data-slot": "input",
166
- className: cn(
167
- "border-input bg-card flex h-[var(--ds-field-control-height)] w-full min-w-0 rounded-[var(--ds-field-control-radius)] border px-[var(--ds-field-control-padding-x)] py-2 text-base shadow-none transition-colors outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
168
- "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
169
- "aria-invalid:border-danger aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40",
170
- className
171
- ),
172
- ...props
173
- }
174
- );
175
- }
176
-
177
159
  // src/primitives/switch.tsx
178
160
  import * as SwitchPrimitive from "@radix-ui/react-switch";
179
- import { jsx as jsx5 } from "react/jsx-runtime";
161
+ import { jsx as jsx4 } from "react/jsx-runtime";
180
162
  function Switch({
181
163
  className,
182
164
  size = "default",
183
165
  ...props
184
166
  }) {
185
- return /* @__PURE__ */ jsx5(
167
+ return /* @__PURE__ */ jsx4(
186
168
  SwitchPrimitive.Root,
187
169
  {
188
170
  "data-slot": "switch",
@@ -192,7 +174,7 @@ function Switch({
192
174
  className
193
175
  ),
194
176
  ...props,
195
- children: /* @__PURE__ */ jsx5(
177
+ children: /* @__PURE__ */ jsx4(
196
178
  SwitchPrimitive.Thumb,
197
179
  {
198
180
  "data-slot": "switch-thumb",
@@ -204,9 +186,9 @@ function Switch({
204
186
  }
205
187
 
206
188
  // src/primitives/textarea.tsx
207
- import { jsx as jsx6 } from "react/jsx-runtime";
189
+ import { jsx as jsx5 } from "react/jsx-runtime";
208
190
  function Textarea({ className, ...props }) {
209
- return /* @__PURE__ */ jsx6(
191
+ return /* @__PURE__ */ jsx5(
210
192
  "textarea",
211
193
  {
212
194
  "data-slot": "textarea",
@@ -217,13 +199,13 @@ function Textarea({ className, ...props }) {
217
199
  }
218
200
 
219
201
  // src/primitives/compat.tsx
220
- import { jsx as jsx7, jsxs } from "react/jsx-runtime";
202
+ import { jsx as jsx6, jsxs } from "react/jsx-runtime";
221
203
  var ConsciaButton = Button;
222
204
  function ConsciaIconButton({
223
205
  size = "icon",
224
206
  ...props
225
207
  }) {
226
- return /* @__PURE__ */ jsx7(Button, { size, ...props });
208
+ return /* @__PURE__ */ jsx6(Button, { size, ...props });
227
209
  }
228
210
  var ConsciaCard = Card;
229
211
  var ConsciaCardContent = CardContent;
@@ -235,7 +217,7 @@ function ConsciaCardHeader({
235
217
  ...props
236
218
  }) {
237
219
  if (!actionRight) {
238
- return /* @__PURE__ */ jsx7(CardHeader, { className, ...props, children });
220
+ return /* @__PURE__ */ jsx6(CardHeader, { className, ...props, children });
239
221
  }
240
222
  return /* @__PURE__ */ jsxs(
241
223
  CardHeader,
@@ -246,8 +228,8 @@ function ConsciaCardHeader({
246
228
  ),
247
229
  ...props,
248
230
  children: [
249
- /* @__PURE__ */ jsx7("div", { className: "grid gap-2", children }),
250
- /* @__PURE__ */ jsx7("div", { className: "justify-self-end", children: actionRight })
231
+ /* @__PURE__ */ jsx6("div", { className: "grid gap-2", children }),
232
+ /* @__PURE__ */ jsx6("div", { className: "justify-self-end", children: actionRight })
251
233
  ]
252
234
  }
253
235
  );
@@ -271,12 +253,12 @@ var ConsciaTableHead = TableHead;
271
253
  var ConsciaTableRow = TableRow;
272
254
 
273
255
  // src/primitives/field.tsx
274
- import { jsx as jsx8 } from "react/jsx-runtime";
256
+ import { jsx as jsx7 } from "react/jsx-runtime";
275
257
  function Field({
276
258
  className,
277
259
  ...props
278
260
  }) {
279
- return /* @__PURE__ */ jsx8(
261
+ return /* @__PURE__ */ jsx7(
280
262
  "div",
281
263
  {
282
264
  "data-slot": "field",
@@ -289,7 +271,7 @@ function FieldGroup({
289
271
  className,
290
272
  ...props
291
273
  }) {
292
- return /* @__PURE__ */ jsx8(
274
+ return /* @__PURE__ */ jsx7(
293
275
  "div",
294
276
  {
295
277
  "data-slot": "field-group",
@@ -302,7 +284,7 @@ function FieldLabel({
302
284
  className,
303
285
  ...props
304
286
  }) {
305
- return /* @__PURE__ */ jsx8(
287
+ return /* @__PURE__ */ jsx7(
306
288
  "label",
307
289
  {
308
290
  "data-slot": "field-label",
@@ -315,7 +297,7 @@ function FieldDescription({
315
297
  className,
316
298
  ...props
317
299
  }) {
318
- return /* @__PURE__ */ jsx8(
300
+ return /* @__PURE__ */ jsx7(
319
301
  "p",
320
302
  {
321
303
  "data-slot": "field-description",
@@ -328,7 +310,7 @@ function FieldError({
328
310
  className,
329
311
  ...props
330
312
  }) {
331
- return /* @__PURE__ */ jsx8(
313
+ return /* @__PURE__ */ jsx7(
332
314
  "p",
333
315
  {
334
316
  "data-slot": "field-error",
@@ -340,7 +322,7 @@ function FieldError({
340
322
 
341
323
  // src/primitives/form-select.tsx
342
324
  import * as React from "react";
343
- import { jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
325
+ import { jsx as jsx8, jsxs as jsxs2 } from "react/jsx-runtime";
344
326
  var emptyValue = "__conscia_empty_select_value__";
345
327
  function toSelectValue(value) {
346
328
  if (value === void 0) {
@@ -376,7 +358,7 @@ function FormSelect({
376
358
  }
377
359
  onValueChange?.(actualValue);
378
360
  }
379
- return /* @__PURE__ */ jsx9("div", { className: cn("min-w-0", className), onClick, children: /* @__PURE__ */ jsxs2(
361
+ return /* @__PURE__ */ jsx8("div", { className: cn("min-w-0", className), onClick, children: /* @__PURE__ */ jsxs2(
380
362
  Select,
381
363
  {
382
364
  name,
@@ -385,8 +367,8 @@ function FormSelect({
385
367
  disabled,
386
368
  onValueChange: handleValueChange,
387
369
  children: [
388
- /* @__PURE__ */ jsx9(SelectTrigger, { id, "aria-label": ariaLabel, className: triggerClassName, children: /* @__PURE__ */ jsx9(SelectValue, { placeholder }) }),
389
- /* @__PURE__ */ jsx9(SelectContent, { className: contentClassName, children: /* @__PURE__ */ jsx9(SelectGroup, { children: options.map((option) => /* @__PURE__ */ jsx9(
370
+ /* @__PURE__ */ jsx8(SelectTrigger, { id, "aria-label": ariaLabel, className: triggerClassName, children: /* @__PURE__ */ jsx8(SelectValue, { placeholder }) }),
371
+ /* @__PURE__ */ jsx8(SelectContent, { className: contentClassName, children: /* @__PURE__ */ jsx8(SelectGroup, { children: options.map((option) => /* @__PURE__ */ jsx8(
390
372
  SelectItem,
391
373
  {
392
374
  value: toSelectValue(option.value) ?? emptyValue,
@@ -403,12 +385,12 @@ var ConsciaFormSelect = FormSelect;
403
385
 
404
386
  // src/primitives/label.tsx
405
387
  import * as LabelPrimitive from "@radix-ui/react-label";
406
- import { jsx as jsx10 } from "react/jsx-runtime";
388
+ import { jsx as jsx9 } from "react/jsx-runtime";
407
389
  function Label({
408
390
  className,
409
391
  ...props
410
392
  }) {
411
- return /* @__PURE__ */ jsx10(
393
+ return /* @__PURE__ */ jsx9(
412
394
  LabelPrimitive.Root,
413
395
  {
414
396
  "data-slot": "label",
@@ -424,7 +406,7 @@ function Label({
424
406
  // src/primitives/searchable-select.tsx
425
407
  import * as React2 from "react";
426
408
  import { Check, ChevronsUpDown, Search, X } from "lucide-react";
427
- import { jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
409
+ import { jsx as jsx10, jsxs as jsxs3 } from "react/jsx-runtime";
428
410
  function SearchableSelect({
429
411
  id,
430
412
  name,
@@ -521,10 +503,10 @@ function SearchableSelect({
521
503
  }
522
504
  }
523
505
  return /* @__PURE__ */ jsxs3("div", { ref: rootRef, "data-slot": "searchable-select", className: cn("relative min-w-0", className), children: [
524
- name ? /* @__PURE__ */ jsx11("input", { type: "hidden", name, value }) : null,
506
+ name ? /* @__PURE__ */ jsx10("input", { type: "hidden", name, value }) : null,
525
507
  /* @__PURE__ */ jsxs3("div", { className: "relative", children: [
526
- /* @__PURE__ */ jsx11(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" }),
527
- /* @__PURE__ */ jsx11(
508
+ /* @__PURE__ */ jsx10(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" }),
509
+ /* @__PURE__ */ jsx10(
528
510
  Input,
529
511
  {
530
512
  id,
@@ -558,7 +540,7 @@ function SearchableSelect({
558
540
  onKeyDown
559
541
  }
560
542
  ),
561
- clearable && value ? /* @__PURE__ */ jsx11(
543
+ clearable && value ? /* @__PURE__ */ jsx10(
562
544
  Button,
563
545
  {
564
546
  type: "button",
@@ -572,12 +554,12 @@ function SearchableSelect({
572
554
  onValueChange("");
573
555
  setSearch("");
574
556
  },
575
- children: /* @__PURE__ */ jsx11(X, {})
557
+ children: /* @__PURE__ */ jsx10(X, {})
576
558
  }
577
559
  ) : null,
578
- /* @__PURE__ */ jsx11(ChevronsUpDown, { className: "pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" })
560
+ /* @__PURE__ */ jsx10(ChevronsUpDown, { className: "pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" })
579
561
  ] }),
580
- open ? /* @__PURE__ */ jsx11(
562
+ open ? /* @__PURE__ */ jsx10(
581
563
  "div",
582
564
  {
583
565
  id: listboxId,
@@ -602,14 +584,14 @@ function SearchableSelect({
602
584
  onClick: () => select(option),
603
585
  children: [
604
586
  /* @__PURE__ */ jsxs3("span", { className: "grid min-w-0 flex-1 gap-0.5", children: [
605
- /* @__PURE__ */ jsx11("span", { className: "truncate font-medium", children: option.label }),
606
- option.description ? /* @__PURE__ */ jsx11("span", { className: "truncate text-[length:var(--ds-menu-label-size)] text-muted-foreground", children: option.description }) : null
587
+ /* @__PURE__ */ jsx10("span", { className: "truncate font-medium", children: option.label }),
588
+ option.description ? /* @__PURE__ */ jsx10("span", { className: "truncate text-[length:var(--ds-menu-label-size)] text-muted-foreground", children: option.description }) : null
607
589
  ] }),
608
- option.value === value ? /* @__PURE__ */ jsx11(Check, { className: "size-4 shrink-0 text-success-foreground", "aria-hidden": "true" }) : null
590
+ option.value === value ? /* @__PURE__ */ jsx10(Check, { className: "size-4 shrink-0 text-success-foreground", "aria-hidden": "true" }) : null
609
591
  ]
610
592
  },
611
593
  option.value
612
- )) : /* @__PURE__ */ jsx11("p", { className: "px-3 py-6 text-center text-[length:var(--ds-menu-item-size)] text-muted-foreground", children: emptyMessage })
594
+ )) : /* @__PURE__ */ jsx10("p", { className: "px-3 py-6 text-center text-[length:var(--ds-menu-item-size)] text-muted-foreground", children: emptyMessage })
613
595
  }
614
596
  ) : null
615
597
  ] });
@@ -625,7 +607,6 @@ export {
625
607
  AvatarFallback,
626
608
  badgeVariants,
627
609
  Badge,
628
- Input,
629
610
  Switch,
630
611
  Textarea,
631
612
  ConsciaButton,
@@ -661,4 +642,4 @@ export {
661
642
  Label,
662
643
  SearchableSelect
663
644
  };
664
- //# sourceMappingURL=chunk-CU3OXBFI.js.map
645
+ //# sourceMappingURL=chunk-VVTTFVCC.js.map