@conscia-labs/design-system 1.0.2 → 1.1.2
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.
- package/AGENT_GUIDE.md +213 -0
- package/README.md +188 -51
- package/agent-manifest.json +472 -0
- package/bin/conscia-design-system.mjs +109 -0
- package/dist/{chunk-YAJUTCGD.js → chunk-HWUUODVE.js} +23 -13
- package/dist/chunk-HWUUODVE.js.map +1 -0
- package/dist/{chunk-WEI3PU4A.js → chunk-OYJH5CVD.js} +545 -252
- package/dist/chunk-OYJH5CVD.js.map +1 -0
- package/dist/{chunk-H5ORBU5O.js → chunk-SIRISAFC.js} +12 -8
- package/dist/chunk-SIRISAFC.js.map +1 -0
- package/dist/foundation.css +35 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +27 -3
- package/dist/patterns/index.d.ts +86 -7
- package/dist/patterns/index.js +26 -2
- package/dist/primitives/index.d.ts +12 -5
- package/dist/primitives/index.js +2 -2
- package/dist/standalone.css +1 -1
- package/dist/styles.css +35 -2
- package/package.json +19 -6
- package/dist/chunk-H5ORBU5O.js.map +0 -1
- package/dist/chunk-WEI3PU4A.js.map +0 -1
- package/dist/chunk-YAJUTCGD.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/patterns/pagination.tsx","../src/patterns/data-table.tsx","../src/patterns/entity-table.tsx","../src/patterns/command-palette.tsx","../src/patterns/data-panel.tsx","../src/patterns/detail-back-link.tsx","../src/patterns/filter-bar.tsx","../src/patterns/app-shell.tsx","../src/patterns/activity-list.tsx","../src/patterns/attention-list.tsx","../src/patterns/confirmation-dialog.tsx","../src/patterns/code-block.tsx","../src/patterns/inventory-surface.tsx","../src/patterns/metric-band.tsx","../src/patterns/metric-card.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","../src/patterns/workbench.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { IconButton } 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-text-supporting 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 <IconButton type=\"button\" variant=\"outline\" size=\"sm\" className=\"size-8\" aria-label=\"Previous page\" onClick={onPrevious ?? (() => onPageChange?.(currentPage - 1))} disabled={currentPage <= 1}><ChevronLeft /></IconButton>\n {onPageChange ? pageItems(currentPage, pageCount).map((item, index) => item === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"flex size-8 items-center justify-center text-text-supporting\" aria-hidden=\"true\">…</span>\n ) : (\n <IconButton type=\"button\" key={item} variant={item === currentPage ? \"secondary\" : \"ghost\"} size=\"sm\" className=\"size-8\" aria-label={`Page ${item}`} aria-current={item === currentPage ? \"page\" : undefined} onClick={() => onPageChange(item)}>{item}</IconButton>\n )) : <span className=\"px-2 text-[var(--ds-metadata)]\">Page {currentPage} of {pageCount}</span>}\n <IconButton type=\"button\" variant=\"outline\" size=\"sm\" className=\"size-8\" aria-label=\"Next page\" onClick={onNext ?? (() => onPageChange?.(currentPage + 1))} disabled={currentPage >= pageCount}><ChevronRight /></IconButton>\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, TableCaption, 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 caption?: 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 caption,\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()}\n indeterminate={table.getIsSomePageRowsSelected() && !table.getIsAllPageRowsSelected()}\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-canvas\", className)}>\n <div className={mobileRow ? \"hidden md:block\" : undefined}>\n <Table>\n {caption ? <TableCaption>{caption}</TableCaption> : null}\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-text-supporting hover:text-text-primary\"\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-selected={row.getIsSelected() ? \"true\" : undefined}\n aria-selected={row.getIsSelected() ? \"true\" : 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-focus/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 caption?: 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 caption,\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 caption={caption}\n className={className}\n />\n );\n}\n\nexport { EntityTable };\nexport type { EntityTableColumn, EntityTableProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Combobox } from \"@base-ui/react/combobox\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../primitives/dialog\";\nimport { cn } from \"../primitives/utils\";\n\ntype CommandPaletteItem = {\n description?: React.ReactNode;\n disabled?: boolean;\n group?: string;\n icon?: React.ReactNode;\n id: string;\n keywords?: readonly string[];\n label: string;\n shortcut?: React.ReactNode;\n};\n\ntype CommandPaletteProps = Omit<React.ComponentProps<\"div\">, \"children\" | \"onSelect\"> & {\n closeOnSelect?: boolean;\n defaultOpen?: boolean;\n description?: React.ReactNode;\n emptyMessage?: React.ReactNode;\n items: readonly CommandPaletteItem[];\n onOpenChange?: (open: boolean) => void;\n onSelect: (item: CommandPaletteItem) => void;\n open?: boolean;\n placeholder?: string;\n title?: React.ReactNode;\n trigger?: React.ReactElement;\n};\n\nfunction CommandPalette({\n className,\n closeOnSelect = true,\n defaultOpen = false,\n description,\n emptyMessage = \"No commands found.\",\n items,\n onOpenChange,\n onSelect,\n open,\n placeholder = \"Search commands...\",\n title = \"Command menu\",\n trigger,\n ...props\n}: CommandPaletteProps) {\n const [query, setQuery] = React.useState(\"\");\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isControlled = open !== undefined;\n const isOpen = open ?? internalOpen;\n const filteredItems = React.useMemo(() => {\n const normalizedQuery = query.trim().toLocaleLowerCase();\n if (!normalizedQuery) {\n return items;\n }\n\n return items.filter((item) =>\n [item.label, ...(item.keywords ?? [])].some((value) =>\n value.toLocaleLowerCase().includes(normalizedQuery),\n ),\n );\n }, [items, query]);\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n if (nextOpen) {\n setQuery(\"\");\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const handleSelect = React.useCallback(\n (item: CommandPaletteItem) => {\n onSelect(item);\n if (closeOnSelect) {\n handleOpenChange(false);\n }\n },\n [closeOnSelect, handleOpenChange, onSelect],\n );\n\n return (\n <div data-slot=\"command-palette\" className={cn(\"contents\", className)} {...props}>\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n {trigger ? <DialogTrigger render={trigger} /> : null}\n <DialogContent\n showCloseButton={false}\n size=\"small\"\n aria-label={typeof title === \"string\" ? undefined : \"Command menu\"}\n className=\"max-w-xl gap-0 p-0\"\n >\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n {description ? <DialogDescription>{description}</DialogDescription> : null}\n </DialogHeader>\n <DialogBody className=\"overflow-hidden\">\n <Combobox.Root<CommandPaletteItem>\n items={filteredItems}\n filter={() => true}\n open\n autoHighlight\n inputValue={query}\n onInputValueChange={setQuery}\n onValueChange={(item) => {\n if (item) {\n handleSelect(item);\n }\n }}\n itemToStringLabel={(item) => [item.label, ...(item.keywords ?? [])].join(\" \")}\n itemToStringValue={(item) => item.id}\n >\n <div className=\"flex items-center gap-2 border-b border-border-subtle px-4\">\n <SearchIcon aria-hidden=\"true\" className=\"size-4 shrink-0 text-text-supporting\" />\n <Combobox.Input\n aria-label=\"Search commands\"\n autoFocus\n className=\"ds-type-control h-12 min-w-0 flex-1 bg-transparent outline-none placeholder:text-text-supporting\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n handleOpenChange(false);\n }\n }}\n placeholder={placeholder}\n />\n </div>\n {filteredItems.length === 0 ? (\n <div role=\"status\" className=\"px-3 py-8 text-center text-sm text-text-supporting\">\n {emptyMessage}\n </div>\n ) : null}\n <Combobox.List\n aria-label=\"Commands\"\n className=\"max-h-[min(24rem,calc(100vh-10rem))] overflow-y-auto p-2 outline-none\"\n >\n {filteredItems.map((item, index) => (\n <React.Fragment key={item.id}>\n {item.group && (index === 0 || filteredItems[index - 1]?.group !== item.group) ? (\n <div role=\"presentation\" className=\"px-3 pb-1 pt-3 text-xs font-semibold uppercase tracking-wide text-text-supporting first:pt-1\">\n {item.group}\n </div>\n ) : null}\n <Combobox.Item\n index={index}\n value={item}\n disabled={item.disabled}\n className=\"data-highlighted:bg-surface-muted data-highlighted:text-text-primary relative flex min-w-0 items-start gap-3 rounded-md px-3 py-2.5 text-left outline-none data-disabled:pointer-events-none data-disabled:opacity-50\"\n >\n {item.icon ? <span className=\"mt-0.5 flex size-4 shrink-0 items-center justify-center text-text-supporting\">{item.icon}</span> : null}\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-sm font-medium\">{item.label}</span>\n {item.description ? <span className=\"mt-0.5 block truncate text-xs text-text-supporting\">{item.description}</span> : null}\n </span>\n {item.shortcut ? <span className=\"shrink-0 text-xs text-text-supporting\">{item.shortcut}</span> : null}\n </Combobox.Item>\n </React.Fragment>\n ))}\n </Combobox.List>\n </Combobox.Root>\n </DialogBody>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nexport { CommandPalette };\nexport type { CommandPaletteItem, CommandPaletteProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\nfunction DataPanel({ className, ...props }: React.ComponentProps<\"section\">) {\n return <section data-slot=\"data-panel\" className={cn(\"min-w-0 overflow-hidden rounded-[var(--ds-radius-surface)] border border-border-default bg-surface text-text-primary shadow-[var(--ds-shadow-raised)]\", className)} {...props} />;\n}\n\ntype DataPanelHeaderProps = React.ComponentProps<\"header\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction DataPanelHeader({ title, description, status, actions, className, ...props }: DataPanelHeaderProps) {\n return (\n <header data-slot=\"data-panel-header\" className={cn(\"flex min-w-0 items-start justify-between gap-4 border-b border-border-subtle px-[var(--ds-surface-padding)] py-3\", className)} {...props}>\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h2 className=\"ds-type-card-title\">{title}</h2>\n {status}\n </div>\n {description ? <p className=\"ds-type-metadata mt-0.5 text-text-supporting\">{description}</p> : null}\n </div>\n {actions ? <div className=\"shrink-0\">{actions}</div> : null}\n </header>\n );\n}\n\ntype DataPanelContentProps = React.ComponentProps<\"div\"> & { padded?: boolean };\n\nfunction DataPanelContent({ padded = false, className, ...props }: DataPanelContentProps) {\n return <div data-slot=\"data-panel-content\" data-padded={padded ? \"true\" : undefined} className={cn(padded && \"p-[var(--ds-surface-padding)]\", className)} {...props} />;\n}\n\nfunction DataPanelFooter({ className, ...props }: React.ComponentProps<\"footer\">) {\n return <footer data-slot=\"data-panel-footer\" className={cn(\"border-t border-border-subtle px-[var(--ds-surface-padding)] py-3 ds-type-metadata text-text-supporting\", className)} {...props} />;\n}\n\nexport { DataPanel, DataPanelContent, DataPanelFooter, DataPanelHeader };\nexport type { DataPanelContentProps, DataPanelHeaderProps };\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-text-supporting outline-none transition-colors hover:bg-surface-muted hover:text-text-primary focus-visible:ring-[3px] focus-visible:ring-focus/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","import * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { cn } from \"../primitives/utils\";\n\ntype FilterBarProps = React.ComponentProps<\"div\"> & {\n clearAllLabel?: string;\n onClearAll?: () => void;\n};\n\nfunction FilterBar({\n children,\n clearAllLabel = \"Clear all\",\n className,\n onClearAll,\n ...props\n}: FilterBarProps) {\n return (\n <div\n data-slot=\"filter-bar\"\n className={cn(\n \"flex min-w-0 flex-wrap items-center gap-2 rounded-[var(--ds-radius-control)] border border-border-subtle bg-surface-muted/60 px-2 py-1.5\",\n className,\n )}\n role=\"group\"\n aria-label={props[\"aria-label\"] ?? \"Active filters\"}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 flex-wrap items-center gap-1.5\">{children}</div>\n {onClearAll ? (\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={onClearAll} className=\"shrink-0\">\n {clearAllLabel}\n </Button>\n ) : null}\n </div>\n );\n}\n\nexport { FilterBar };\nexport type { FilterBarProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { PanelLeftIcon, Search, X } from \"lucide-react\";\n\nimport { Button, IconButton, type IconButtonProps } from \"../primitives/button\";\nimport { Input } from \"../primitives/input\";\nimport { ShortcutHint } from \"../primitives/shortcut-hint\";\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\ntype AppShellProps = React.ComponentProps<\"div\"> & {\n defaultSidebarOpen?: boolean;\n headerLayout?: \"split\" | \"integrated\";\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 useSidebarOverflow() {\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const subscribe = React.useCallback((onStoreChange: () => void) => {\n const element = contentRef.current;\n\n if (!element) {\n return () => undefined;\n }\n\n const handleScroll = () => onStoreChange();\n element.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n const resizeObserver =\n typeof ResizeObserver === \"undefined\"\n ? null\n : new ResizeObserver(onStoreChange);\n resizeObserver?.observe(element);\n window.addEventListener(\"resize\", onStoreChange);\n\n return () => {\n element.removeEventListener(\"scroll\", handleScroll);\n resizeObserver?.disconnect();\n window.removeEventListener(\"resize\", onStoreChange);\n };\n }, []);\n const getSnapshot = React.useCallback(() => {\n const element = contentRef.current;\n\n if (!element) {\n return 0;\n }\n\n const hasScrollBefore = element.scrollTop > 1;\n const hasScrollAfter =\n element.scrollHeight - element.clientHeight - element.scrollTop > 1;\n\n return (hasScrollBefore ? 1 : 0) | (hasScrollAfter ? 2 : 0);\n }, []);\n const scrollState = React.useSyncExternalStore(\n subscribe,\n getSnapshot,\n () => 0,\n );\n\n return {\n contentRef,\n hasScrollBefore: Boolean(scrollState & 1),\n hasScrollAfter: Boolean(scrollState & 2),\n };\n}\n\nfunction AppShell({\n defaultSidebarOpen = true,\n headerLayout = \"split\",\n children,\n className,\n style,\n ...props\n}: AppShellProps) {\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 data-header-layout={headerLayout}\n suppressHydrationWarning\n className={cn(\n \"group/shell min-h-svh bg-canvas text-text-primary\",\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 = \"auto\",\n className,\n children,\n title = \"Application navigation\",\n description = \"Primary product navigation.\",\n ...props\n}: React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\";\n /** Use the appearance-aware sidebar by default; explicit variants remain available. */\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 side={side} 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 \"group-data-[header-layout=integrated]/shell:top-[var(--ds-topbar-height)]\",\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 const { contentRef, hasScrollBefore, hasScrollAfter } = useSidebarOverflow();\n\n return (\n <div\n data-slot=\"app-sidebar-content\"\n data-scroll-before={hasScrollBefore ? \"true\" : undefined}\n data-scroll-after={hasScrollAfter ? \"true\" : undefined}\n ref={contentRef}\n className={cn(\n \"relative flex min-h-0 min-w-0 flex-1 flex-col gap-[var(--ds-sidebar-group-gap)] overflow-x-clip 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 collapsedLabel,\n className,\n}: {\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n collapsedLabel?: 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 {collapsedLabel && !icon ? (\n <div className=\"hidden shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover px-2 py-1 text-xs font-semibold text-sidebar-primary-text group-data-[sidebar-state=collapsed]/shell:flex\">\n {collapsedLabel}\n </div>\n ) : null}\n <div className=\"min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden\">\n <div className=\"ds-type-navigation truncate font-semibold text-sidebar-primary-text\">\n {label}\n </div>\n {description ? (\n <div className=\"ds-type-metadata truncate 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 const labelId = React.useId();\n\n return (\n <section\n data-slot=\"navigation-group\"\n aria-labelledby={label ? labelId : undefined}\n className={cn(\n \"flex min-w-0 flex-col gap-[var(--ds-sidebar-label-gap)]\",\n className,\n )}\n >\n {label ? (\n <div\n data-slot=\"navigation-group-label\"\n id={labelId}\n className=\"flex min-h-6 items-center gap-2 px-2 pb-0 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-[var(--ds-sidebar-group-label-line-height)] tracking-[0.04em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden\"\n >\n {label}\n {count !== undefined ? (\n <span className=\"ds-type-metadata ml-auto shrink-0 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-[var(--ds-sidebar-item-gap)]\">\n {children}\n </div>\n </section>\n );\n}\n\nfunction navigationItemClasses(active?: boolean) {\n return cn(\n \"ds-type-navigation 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 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-background font-semibold text-sidebar-active-foreground hover:bg-sidebar-active-background hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n );\n}\n\ntype NavigationItemProps = Omit<\n React.ComponentProps<\"button\">,\n \"render\"\n> & {\n active?: boolean;\n tooltip?: string;\n render?: useRender.ComponentProps<\"button\">[\"render\"];\n};\n\nconst NavigationItem = React.forwardRef<HTMLElement, NavigationItemProps>(\n function NavigationItem(\n {\n active = false,\n tooltip,\n render,\n type,\n \"aria-expanded\": ariaExpanded,\n className,\n children,\n ...props\n },\n ref,\n ) {\n const { sidebarState, sidebarSide, isMobile } = useAppShell();\n const item = useRender({\n defaultTagName: \"button\",\n render,\n ref,\n props: {\n \"data-slot\": \"navigation-item\",\n \"data-active\": active ? \"true\" : undefined,\n \"aria-expanded\": ariaExpanded,\n type: render ? undefined : type ?? \"button\",\n className: cn(navigationItemClasses(active), className),\n ...props,\n ...(render ? {} : { children }),\n },\n });\n\n if (!tooltip) {\n return item;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger render={item} />\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);\n\ntype NavigationSubItemProps = Omit<React.ComponentProps<\"a\">, \"render\"> & {\n active?: boolean;\n render?: useRender.ComponentProps<\"a\">[\"render\"];\n};\n\nconst NavigationSubItem = React.forwardRef<HTMLElement, NavigationSubItemProps>(\n function NavigationSubItem(\n {\n active = false,\n render,\n className,\n ...props\n },\n ref,\n ) {\n return useRender({\n defaultTagName: \"a\",\n render,\n ref,\n props: {\n \"data-slot\": \"navigation-sub-item\",\n \"data-active\": active ? \"true\" : undefined,\n className: cn(\n \"ds-type-navigation 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-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-background font-semibold text-sidebar-active-foreground hover:bg-sidebar-active-background hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n className,\n ),\n ...props,\n },\n });\n },\n);\n\n/*\n * NavigationItem and NavigationSubItem intentionally use Base UI's render\n * contract instead of a Slot compatibility layer. This keeps the navigation\n * API small while allowing framework links to own routing.\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-[var(--ds-sidebar-item-gap)] 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 AppHeader or TopBar, not AppSidebar, so it remains available\n * after the sidebar collapses and in the mobile drawer layout.\n */\nfunction SidebarTrigger({\n className,\n \"aria-label\": ariaLabel,\n onClick,\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"aria-labelledby\">) {\n const { isMobile, mobileOpen, sidebarOpen, toggleSidebar } = useAppShell();\n const triggerProps = {\n ...props,\n \"data-slot\": \"sidebar-trigger\",\n type: \"button\" as const,\n variant: \"ghost\" as const,\n className: cn(\n \"shrink-0 cursor-pointer text-text-supporting hover:bg-surface-muted hover:text-text-primary focus-visible:ring-focus\",\n className,\n ),\n \"aria-label\": ariaLabel ?? \"Toggle navigation\",\n \"aria-expanded\": isMobile ? mobileOpen : sidebarOpen,\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n toggleSidebar();\n },\n } as IconButtonProps;\n\n return (\n <IconButton {...triggerProps}>\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle navigation</span>\n </IconButton>\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 \"ds-type-navigation 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 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 <ShortcutHint className=\"ds-type-metadata ml-auto border-sidebar-border bg-transparent text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden\">\n {shortcut}\n </ShortcutHint>\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=\"ds-type-control h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 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 \"group-data-[header-layout=integrated]/shell:pt-[var(--ds-topbar-height)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppHeader({\n className,\n ...props\n}: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"app-header\"\n className={cn(\n \"fixed inset-x-0 top-0 z-30 flex h-[var(--ds-topbar-height)] min-h-[var(--ds-topbar-height)] items-center gap-2 border-b border-border-subtle bg-canvas/96 px-[var(--ds-topbar-padding-x)] backdrop-blur supports-[backdrop-filter]:bg-canvas/88 md:gap-3 md:px-[var(--ds-topbar-padding-x-wide)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppHeaderStart({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-header-start\"\n className={cn(\"flex min-w-0 flex-1 items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\ntype AppHeaderSearchProps = React.ComponentProps<\"div\"> & {\n mobileTrigger: React.ReactNode;\n};\n\nfunction AppHeaderSearch({\n mobileTrigger,\n children,\n className,\n ...props\n}: AppHeaderSearchProps) {\n return (\n <div\n data-slot=\"app-header-search\"\n className={cn(\"ml-auto flex shrink-0 items-center\", className)}\n {...props}\n >\n <div className=\"hidden w-[min(22rem,32vw)] md:block\">{children}</div>\n <div className=\"md:hidden\">{mobileTrigger}</div>\n </div>\n );\n}\n\nfunction AppHeaderActions({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-header-actions\"\n className={cn(\"flex shrink-0 items-center gap-1\", className)}\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 h-[var(--ds-topbar-height)] min-h-[var(--ds-topbar-height)] shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-canvas/96 px-[var(--ds-topbar-padding-x)] backdrop-blur md:px-[var(--ds-topbar-padding-x-wide)]\",\n \"supports-[backdrop-filter]:bg-canvas/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 AppHeader,\n AppHeaderActions,\n AppHeaderSearch,\n AppHeaderStart,\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\nexport type {\n AppHeaderSearchProps,\n AppShellProps,\n NavigationItemProps,\n NavigationSubItemProps,\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 leading?: React.ReactNode;\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n trailing?: React.ReactNode;\n status?: React.ReactNode;\n layout?: \"standard\" | \"compact\";\n};\n\nfunction ActivityItem({\n leading,\n icon,\n title,\n description,\n metadata,\n trailing,\n status,\n layout = \"standard\",\n className,\n ...props\n}: ActivityItemProps) {\n const hasLeading = leading !== undefined || icon !== undefined;\n const resolvedTrailing = trailing ?? status;\n\n return (\n <div\n data-slot=\"activity-item\"\n data-layout={layout}\n className={cn(\n \"grid gap-3 py-3\",\n hasLeading && resolvedTrailing && \"grid-cols-[auto_minmax(0,1fr)_auto]\",\n hasLeading && !resolvedTrailing && \"grid-cols-[auto_minmax(0,1fr)]\",\n !hasLeading && resolvedTrailing && \"grid-cols-[minmax(0,1fr)_auto]\",\n !hasLeading && !resolvedTrailing && \"grid-cols-1\",\n layout === \"compact\" && \"py-2\",\n className,\n )}\n {...props}\n >\n {leading !== undefined ? (\n <div data-slot=\"activity-item-leading\" className=\"shrink-0\">{leading}</div>\n ) : icon !== undefined ? (\n <div data-slot=\"activity-item-leading\" className=\"flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0\">\n <div className=\"ds-type-ui font-medium text-text-primary\">{title}</div>\n {description ? <div className=\"ds-type-ui mt-0.5 text-text-supporting\">{description}</div> : null}\n {metadata ? <div className=\"ds-type-metadata mt-1 text-text-supporting\">{metadata}</div> : null}\n </div>\n {resolvedTrailing ? <div data-slot=\"activity-item-trailing\" className=\"shrink-0\">{resolvedTrailing}</div> : null}\n </div>\n );\n}\n\nexport { ActivityItem, ActivityList };\nexport type { ActivityItemProps };\n","import * as React from \"react\";\nimport { CheckCircle2, CircleAlert, CircleX, Info } from \"lucide-react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype AttentionTone = \"neutral\" | \"information\" | \"success\" | \"warning\" | \"danger\";\n\nfunction AttentionList({ className, ...props }: React.ComponentProps<\"ul\">) {\n return <ul data-slot=\"attention-list\" className={cn(\"grid gap-2\", className)} {...props} />;\n}\n\ntype AttentionItemProps = Omit<React.ComponentProps<\"li\">, \"title\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n action?: React.ReactNode;\n tone?: AttentionTone;\n severityLabel?: string;\n icon?: React.ReactNode;\n};\n\nconst toneClasses: Record<AttentionTone, string> = {\n neutral: \"border-neutral-border bg-neutral-background text-neutral-foreground\",\n information: \"border-information-border bg-information-background text-information-foreground\",\n success: \"border-success-border bg-success-background text-success-foreground\",\n warning: \"border-warning-border bg-warning-background text-warning-foreground\",\n danger: \"border-danger-border bg-danger-background text-danger-foreground\",\n};\n\nfunction AttentionItem({ title, description, metadata, action, tone = \"neutral\", severityLabel = `${tone[0].toUpperCase()}${tone.slice(1)}`, icon, className, ...props }: AttentionItemProps) {\n const Icon = tone === \"danger\" ? CircleX : tone === \"warning\" ? CircleAlert : tone === \"success\" ? CheckCircle2 : Info;\n\n return (\n <li data-slot=\"attention-item\" data-tone={tone} className={cn(\"grid grid-cols-[auto_minmax(0,1fr)_auto] items-start gap-3 rounded-[var(--ds-radius-control)] border px-3 py-2.5\", toneClasses[tone], className)} {...props}>\n <span className=\"mt-0.5 [&>svg]:size-4\" aria-hidden=\"true\">{icon ?? <Icon />}</span>\n <div className=\"min-w-0\">\n <span className=\"sr-only\">{severityLabel}: </span>\n <div className=\"ds-type-ui font-medium\">{title}</div>\n {description ? <div className=\"ds-type-metadata mt-0.5 opacity-85\">{description}</div> : null}\n {metadata ? <div className=\"ds-type-metadata mt-1 opacity-85\">{metadata}</div> : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </li>\n );\n}\n\nexport { AttentionItem, AttentionList };\nexport type { AttentionItemProps, AttentionTone };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from \"../primitives/alert-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 <AlertDialog open={open} onOpenChange={setOpen}>\n <AlertDialogTrigger render={trigger as React.ReactElement}>{trigger}</AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{title}</AlertDialogTitle>\n <AlertDialogDescription>{description}</AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogBody>{children}</AlertDialogBody>\n <AlertDialogFooter>\n <AlertDialogCancel render={<Button type=\"button\" variant=\"outline\" disabled={isPending} />}>{cancelLabel}</AlertDialogCancel>\n <AlertDialogAction render={<Button type=\"button\" variant={confirmVariant} disabled={isPending} onClick={confirm} />}>\n {isPending ? \"Working...\" : confirmLabel}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\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\n aria-label={`${snippet.label} code example`}\n tabIndex={0}\n className=\"max-h-[32rem] overflow-auto p-4 text-sm leading-6 outline-none focus-visible:ring-[3px] focus-visible:ring-inset focus-visible:ring-focus/50\"\n >\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=\"ds-type-ui text-text-supporting\">{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=\"ds-type-metadata text-text-supporting\">\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\";\nimport { ArrowDown, ArrowUp, Minus } from \"lucide-react\";\n\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { cn } from \"../primitives/utils\";\n\ntype MetricTrendProps = React.ComponentProps<\"span\"> & {\n direction: \"up\" | \"down\" | \"flat\";\n sentiment?: \"positive\" | \"negative\" | \"neutral\";\n value: React.ReactNode;\n accessibleLabel: string;\n};\n\nfunction MetricTrend({\n direction,\n sentiment = \"neutral\",\n value,\n accessibleLabel,\n className,\n ...props\n}: MetricTrendProps) {\n const Icon = direction === \"up\" ? ArrowUp : direction === \"down\" ? ArrowDown : Minus;\n\n return (\n <span\n data-slot=\"metric-trend\"\n data-direction={direction}\n data-sentiment={sentiment}\n role=\"img\"\n aria-label={accessibleLabel}\n className={cn(\n \"inline-flex items-center gap-1 ds-type-metadata font-medium text-trend-neutral\",\n sentiment === \"positive\" && \"text-trend-positive\",\n sentiment === \"negative\" && \"text-trend-negative\",\n className,\n )}\n {...props}\n >\n <Icon aria-hidden=\"true\" className=\"size-3.5 stroke-[2]\" />\n <span aria-hidden=\"true\">{value}</span>\n </span>\n );\n}\n\ntype MetricCardBaseProps = React.ComponentProps<\"section\"> & {\n label: React.ReactNode;\n description?: React.ReactNode;\n value?: React.ReactNode;\n unit?: React.ReactNode;\n trend?: React.ReactNode;\n status?: React.ReactNode;\n emphasis?: \"primary\" | \"supporting\";\n loading?: boolean;\n};\n\ntype MetricCardProps = MetricCardBaseProps &\n (\n | { visualization?: undefined; visualizationSummary?: never }\n | { visualization: React.ReactNode; visualizationSummary: string }\n );\n\nfunction MetricCard({\n label,\n description,\n value,\n unit,\n trend,\n status,\n emphasis = \"supporting\",\n loading = false,\n visualization,\n visualizationSummary,\n className,\n ...props\n}: MetricCardProps) {\n const labelId = React.useId();\n\n return (\n <section\n data-slot=\"metric-card\"\n data-emphasis={emphasis}\n aria-labelledby={labelId}\n className={cn(\n \"flex min-w-0 flex-col overflow-hidden rounded-[var(--ds-radius-surface)] border border-border-default bg-surface text-text-primary shadow-[var(--ds-shadow-raised)]\",\n emphasis === \"primary\" ? \"min-h-80\" : \"min-h-40\",\n className,\n )}\n {...props}\n >\n <div className=\"flex items-start justify-between gap-4 px-[var(--ds-surface-padding)] pt-[var(--ds-surface-padding)]\">\n <div className=\"min-w-0\">\n <h2 id={labelId} className=\"ds-type-card-title\">{label}</h2>\n {description ? <p className=\"ds-type-metadata mt-0.5 text-text-supporting\">{description}</p> : null}\n </div>\n {status ? <div className=\"shrink-0\">{status}</div> : null}\n </div>\n <div className=\"flex flex-wrap items-baseline gap-x-2 gap-y-1 px-[var(--ds-surface-padding)] pt-3\">\n {loading ? (\n <Skeleton className={cn(\"h-8\", emphasis === \"primary\" ? \"w-24\" : \"w-16\")} />\n ) : (\n <>\n <span className={cn(\"font-semibold tabular-nums tracking-tight\", emphasis === \"primary\" ? \"text-4xl\" : \"text-2xl\")}>\n {value ?? 0}\n </span>\n {unit ? <span className=\"ds-type-ui text-text-supporting\">{unit}</span> : null}\n </>\n )}\n {trend ? <div className=\"ml-1\">{trend}</div> : null}\n </div>\n {visualization ? (\n <figure className=\"mt-auto min-h-0 flex-1 pt-4\">\n <div data-slot=\"metric-card-visualization\" className=\"h-full min-h-20 w-full\">{visualization}</div>\n <figcaption className=\"sr-only\">{visualizationSummary}</figcaption>\n </figure>\n ) : null}\n </section>\n );\n}\n\nexport { MetricCard, MetricTrend };\nexport type { MetricCardProps, MetricTrendProps };\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=\"ds-type-button inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-action px-3 py-2 text-action-foreground shadow-xs outline-none transition-colors hover:bg-action-hover focus-visible:border-focus focus-visible:ring-3 focus-visible:ring-focus/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-canvas 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=\"ds-type-page-title truncate\">{title}</h1>\n {status}\n </div>\n {description ? <p className=\"ds-type-ui mt-1 max-w-3xl text-text-supporting\">{description}</p> : null}\n {metadata ? <div className=\"ds-type-metadata mt-2 text-text-supporting\">{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-canvas 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-text-supporting\">\n {label}\n </legend>\n <div className=\"grid w-full grid-cols-3 rounded-[var(--ds-radius-control)] bg-surface-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=\"min-w-0 h-7 rounded-[calc(var(--ds-radius-control)-2px)] px-1.5 text-[var(--ds-metadata)] font-medium capitalize text-text-supporting outline-none transition-colors hover:text-text-primary focus-visible:ring-[3px] focus-visible:ring-focus/50 aria-pressed:bg-canvas aria-pressed:text-text-primary 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-text-primary\",\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=\"ds-type-ui truncate font-medium text-text-primary\">{name}</div>\n {description ? <div className=\"ds-type-metadata mt-0.5 truncate text-text-supporting\">{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-canvas\",\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=\"ds-type-section-title truncate\">\n {title}\n </h2>\n ) : null}\n {status}\n </div>\n ) : null}\n {description ? (\n <p className=\"ds-type-ui mt-1 max-w-3xl text-text-supporting\">\n {description}\n </p>\n ) : null}\n {metadata ? (\n <div className=\"ds-type-metadata mt-2 text-text-supporting\">\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=\"ds-type-section-title\">\n {title}\n </h2>\n {description ? (\n <p className=\"ds-type-ui mt-1 max-w-3xl text-text-supporting\">\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(\"ds-type-ui grid gap-3\", 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-text-supporting\">{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 DropdownMenuLinkItem,\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 collapsedLabel?: React.ReactNode;\n badge?: React.ReactNode;\n badgeLabel?: string;\n count?: React.ReactNode;\n countLabel?: string;\n active?: boolean;\n startsSection?: boolean;\n};\n\n/** @deprecated Prefer an explicit SidebarNavigationGroup or SidebarNavigationSubmenu. */\nexport type SidebarNavigationSection = Omit<\n SidebarNavigationItem,\n \"active\"\n> & {\n type?: undefined;\n active?: boolean;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationGroup = {\n type: \"group\";\n id: string;\n label: string;\n count?: React.ReactNode;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationSubmenu = Omit<\n SidebarNavigationSection,\n \"active\" | \"type\"\n> & {\n type: \"submenu\";\n defaultOpen?: boolean;\n};\n\nexport type SidebarNavigationEntry =\n | SidebarNavigationItem\n | SidebarNavigationSection\n | SidebarNavigationGroup\n | SidebarNavigationSubmenu;\n\nexport type SidebarNavigationLinkProps = {\n \"aria-current\"?: \"page\";\n \"aria-label\": string;\n children: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\nexport type 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 hasItems(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection | SidebarNavigationGroup | SidebarNavigationSubmenu {\n return \"items\" in entry;\n}\n\nfunction isStaticGroup(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationGroup {\n return hasItems(entry) && entry.type === \"group\";\n}\n\nfunction isCollapsibleSection(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection | SidebarNavigationSubmenu {\n return hasItems(entry) && entry.type !== \"group\";\n}\n\nfunction getNavigationAccessibleLabel(item: SidebarNavigationItem) {\n const metadata = [item.badgeLabel, item.countLabel].filter(Boolean);\n\n return metadata.length > 0\n ? `${item.label}, ${metadata.join(\", \")}`\n : item.label;\n}\n\nfunction NavigationMetadata({\n badge,\n count,\n}: Pick<SidebarNavigationItem, \"badge\" | \"count\">) {\n if (badge === undefined && count === undefined) {\n return null;\n }\n\n return (\n <span\n aria-hidden=\"true\"\n className=\"ml-auto flex min-w-0 shrink-0 items-center gap-1.5 text-sidebar-metadata-text\"\n >\n {badge !== undefined ? (\n <span className=\"max-w-28 truncate rounded-full bg-sidebar-hover px-1.5 py-0.5 text-[length:var(--ds-metadata)] font-semibold leading-none\">\n {badge}\n </span>\n ) : null}\n {count !== undefined ? (\n <span className=\"ds-type-metadata tabular-nums\">{count}</span>\n ) : null}\n </span>\n );\n}\n\nfunction NavigationItemContent({ item }: { item: SidebarNavigationItem }) {\n return (\n <>\n {item.icon}\n {!item.icon && item.collapsedLabel ? (\n <span className=\"hidden shrink-0 font-semibold group-data-[sidebar-state=collapsed]/shell:inline\">\n {item.collapsedLabel}\n </span>\n ) : null}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {item.label}\n </span>\n <NavigationMetadata badge={item.badge} count={item.count} />\n </>\n );\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, setMobileOpen, 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(isCollapsibleSection)\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 if (isMobile) {\n setMobileOpen(false);\n }\n onNavigate?.();\n }, [isMobile, onNavigate, setMobileOpen]);\n\n return (\n <nav\n data-slot=\"sidebar-navigation\"\n aria-label=\"Primary navigation\"\n className={cn(\n \"flex flex-col gap-[var(--ds-sidebar-group-gap)]\",\n className,\n )}\n >\n {entries.map((entry) => {\n if (isStaticGroup(entry)) {\n return (\n <NavigationGroup key={entry.id} label={entry.label} count={entry.count}>\n {entry.items.map((item) => (\n <NavigationItem\n key={item.id}\n active={item.active}\n tooltip={item.label}\n render={renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(item),\n onClick: handleNavigate,\n children: <NavigationItemContent item={item} />,\n })}\n />\n ))}\n </NavigationGroup>\n );\n }\n\n if (!hasItems(entry)) {\n return (\n <NavigationGroup\n key={entry.id}\n className={\n entry.startsSection\n ? \"mt-[var(--ds-sidebar-group-gap)]\"\n : undefined\n }\n >\n <NavigationItem\n active={entry.active}\n tooltip={entry.label}\n render={renderLink(entry, {\n \"aria-current\": entry.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(entry),\n onClick: handleNavigate,\n children: <NavigationItemContent item={entry} />,\n })}\n />\n </NavigationGroup>\n );\n }\n\n const activeChild = entry.items.some((item) => item.active);\n const defaultOpen = entry.type === \"submenu\" ? entry.defaultOpen : false;\n const legacyActive = entry.type === undefined ? entry.active : false;\n const sectionOpen =\n (openSections[entry.id] ?? defaultOpen) || activeChild || legacyActive;\n\n if (sidebarState === \"collapsed\" && !isMobile) {\n return (\n <DropdownMenu key={entry.id}>\n <NavigationGroup\n className={\n entry.startsSection\n ? \"mt-[var(--ds-sidebar-group-gap)]\"\n : undefined\n }\n >\n <DropdownMenuTrigger\n render={\n <NavigationItem\n aria-label={`${getNavigationAccessibleLabel(entry)} menu`}\n className={activeChild ? \"text-sidebar-primary-text\" : undefined}\n >\n {entry.icon}\n <span className=\"sr-only\">{entry.label}</span>\n </NavigationItem>\n }\n />\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-text-supporting\">\n {entry.label}\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {entry.items.map((item) => (\n <DropdownMenuLinkItem\n key={item.id}\n closeOnClick\n render={renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(item),\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n <NavigationMetadata badge={item.badge} count={item.count} />\n </>\n ),\n })}\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 font-semibold text-selection-foreground focus:bg-selection-background focus:text-selection-foreground\",\n )}\n />\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\n render={\n <NavigationItem\n tooltip={entry.label}\n aria-label={getNavigationAccessibleLabel(entry)}\n className={activeChild ? \"text-sidebar-primary-text\" : undefined}\n >\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n <NavigationMetadata badge={entry.badge} count={entry.count} />\n <ChevronRight className=\"ml-auto transition-transform duration-150 ease-out group-data-[sidebar-state=collapsed]/shell:hidden group-data-[open]/collapsible:rotate-90\" />\n </NavigationItem>\n }\n />\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 active={item.active}\n render={renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": getNavigationAccessibleLabel(item),\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n <NavigationMetadata badge={item.badge} count={item.count} />\n </>\n ),\n })}\n />\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=\"ds-type-section-title\">{title}</h2>\n {description ? <p className=\"ds-type-ui max-w-md text-text-supporting\">{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-surface-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-text-primary\">{label}</span>\n <span className=\"text-text-supporting\">{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-text-supporting\">{detail}</div> : null}\n </div>\n );\n}\n\nexport { ValueMeter };\nexport type { ValueMeterProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype WorkbenchShellProps = React.ComponentProps<\"div\">;\n\nfunction WorkbenchShell({ className, ...props }: WorkbenchShellProps) {\n return <div data-slot=\"workbench-shell\" className={cn(\"min-w-0\", className)} {...props} />;\n}\n\ntype WorkbenchRailProps = React.ComponentProps<\"aside\"> & {\n variant?: \"global\" | \"secondary\";\n open?: boolean;\n};\n\nfunction WorkbenchRail({ variant = \"secondary\", open = true, className, ...props }: WorkbenchRailProps) {\n return (\n <aside\n data-slot=\"workbench-rail\"\n data-variant={variant}\n data-open={open ? \"true\" : \"false\"}\n className={cn(\"min-w-0\", className)}\n {...props}\n />\n );\n}\n\nfunction WorkbenchMain({ className, ...props }: React.ComponentProps<\"main\">) {\n return <main data-slot=\"workbench-main\" className={cn(\"min-w-0\", className)} {...props} />;\n}\n\nfunction WorkbenchInspector({ className, ...props }: React.ComponentProps<\"aside\">) {\n return <aside data-slot=\"workbench-inspector\" className={cn(\"min-w-0\", className)} {...props} />;\n}\n\nfunction WorkbenchMobileToolbar({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"workbench-mobile-toolbar\" className={cn(className)} {...props} />;\n}\n\nfunction WorkbenchBackdrop({ open = true, className, ...props }: React.ComponentProps<\"button\"> & { open?: boolean }) {\n return (\n <button\n type=\"button\"\n data-slot=\"workbench-backdrop\"\n data-open={open ? \"true\" : \"false\"}\n className={cn(className)}\n {...props}\n />\n );\n}\n\ntype WorkbenchSectionProps = React.ComponentProps<\"section\">;\n\nfunction WorkbenchSection({ className, ...props }: WorkbenchSectionProps) {\n return <section data-slot=\"workbench-section\" className={cn(className)} {...props} />;\n}\n\ntype WorkbenchSectionHeaderProps = React.ComponentProps<\"div\"> & {\n title: React.ReactNode;\n metadata?: React.ReactNode;\n action?: React.ReactNode;\n};\n\nfunction WorkbenchSectionHeader({ title, metadata, action, className, ...props }: WorkbenchSectionHeaderProps) {\n return (\n <div data-slot=\"workbench-section-header\" className={cn(className)} {...props}>\n <div data-slot=\"workbench-section-heading\">\n <h2>{title}</h2>\n {metadata ? <span>{metadata}</span> : null}\n </div>\n {action ? <div data-slot=\"workbench-section-action\">{action}</div> : null}\n </div>\n );\n}\n\ntype ResourceRowProps = React.HTMLAttributes<HTMLElement> & {\n as?: \"div\" | \"a\" | \"button\";\n href?: string;\n selected?: boolean;\n};\n\nfunction ResourceRow({ as = \"div\", href, selected = false, className, children, ...props }: ResourceRowProps) {\n return React.createElement(\n as,\n {\n ...props,\n ...(as === \"a\" && href ? { href } : {}),\n ...(as === \"button\" ? { type: \"button\" } : {}),\n \"data-slot\": \"resource-row\",\n \"data-selected\": selected ? \"true\" : \"false\",\n className: cn(className),\n },\n children,\n );\n}\n\nfunction ResourceRowIcon({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-icon\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowContent({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-content\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowTitle({ className, ...props }: React.ComponentProps<\"strong\">) {\n return <strong data-slot=\"resource-row-title\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowDescription({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-description\" className={cn(className)} {...props} />;\n}\n\nfunction ResourceRowMeta({ className, ...props }: React.ComponentProps<\"span\">) {\n return <span data-slot=\"resource-row-meta\" className={cn(className)} {...props} />;\n}\n\ntype WorkbenchInspectorSectionProps = React.ComponentProps<\"section\"> & {\n label: React.ReactNode;\n action?: React.ReactNode;\n};\n\nfunction WorkbenchInspectorSection({ label, action, className, children, ...props }: WorkbenchInspectorSectionProps) {\n return (\n <section data-slot=\"workbench-inspector-section\" className={cn(className)} {...props}>\n <div data-slot=\"workbench-inspector-label\">\n <h3>{label}</h3>\n {action ? <div>{action}</div> : null}\n </div>\n {children}\n </section>\n );\n}\n\ntype IdentityRowProps = React.ComponentProps<\"div\"> & {\n initials: React.ReactNode;\n name: React.ReactNode;\n detail?: React.ReactNode;\n compact?: boolean;\n};\n\nfunction IdentityRow({ initials, name, detail, compact = false, className, ...props }: IdentityRowProps) {\n return (\n <div data-slot=\"identity-row\" data-compact={compact ? \"true\" : \"false\"} className={cn(className)} {...props}>\n <span data-slot=\"identity-avatar\">{initials}</span>\n <span data-slot=\"identity-copy\">\n <strong>{name}</strong>\n {detail ? <small>{detail}</small> : null}\n </span>\n </div>\n );\n}\n\nexport {\n IdentityRow,\n ResourceRow,\n ResourceRowContent,\n ResourceRowDescription,\n ResourceRowIcon,\n ResourceRowMeta,\n ResourceRowTitle,\n WorkbenchBackdrop,\n WorkbenchInspector,\n WorkbenchInspectorSection,\n WorkbenchMain,\n WorkbenchMobileToolbar,\n WorkbenchRail,\n WorkbenchSection,\n WorkbenchSectionHeader,\n WorkbenchShell,\n};\nexport type {\n IdentityRowProps,\n ResourceRowProps,\n WorkbenchInspectorSectionProps,\n WorkbenchRailProps,\n WorkbenchSectionHeaderProps,\n WorkbenchSectionProps,\n WorkbenchShellProps,\n};\n"],"mappings":"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","names":["jsx","jsxs","table","jsx","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","Fragment","jsx","jsxs","NavigationItem","NavigationSubItem","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsx","jsxs","React","ArrowDown","ArrowUp","Fragment","jsx","jsxs","ArrowUp","ArrowDown","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","ChevronRight","Fragment","jsx","jsxs","ChevronRight","jsx","jsxs","_","React","jsx","jsxs","React","jsx","jsxs"]}
|
|
@@ -64,6 +64,7 @@ import {
|
|
|
64
64
|
isHTMLElement,
|
|
65
65
|
matchesFocusVisible,
|
|
66
66
|
mergeCleanups,
|
|
67
|
+
overlayLayers,
|
|
67
68
|
ownerDocument,
|
|
68
69
|
popupStateMapping,
|
|
69
70
|
popupStoreSelectors,
|
|
@@ -117,7 +118,7 @@ import {
|
|
|
117
118
|
useValueChanged,
|
|
118
119
|
visuallyHidden,
|
|
119
120
|
visuallyHiddenInput
|
|
120
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-HWUUODVE.js";
|
|
121
122
|
import {
|
|
122
123
|
cn
|
|
123
124
|
} from "./chunk-JU5DQXFC.js";
|
|
@@ -1011,6 +1012,7 @@ function FormSelect({
|
|
|
1011
1012
|
defaultValue,
|
|
1012
1013
|
required,
|
|
1013
1014
|
disabled,
|
|
1015
|
+
modal,
|
|
1014
1016
|
placeholder,
|
|
1015
1017
|
options,
|
|
1016
1018
|
className,
|
|
@@ -1036,6 +1038,7 @@ function FormSelect({
|
|
|
1036
1038
|
value: toSelectValue(currentValue),
|
|
1037
1039
|
required,
|
|
1038
1040
|
disabled,
|
|
1041
|
+
modal,
|
|
1039
1042
|
onValueChange: handleValueChange,
|
|
1040
1043
|
children: [
|
|
1041
1044
|
/* @__PURE__ */ jsx11(SelectTrigger, { id, "aria-label": ariaLabel, className: triggerClassName, children: /* @__PURE__ */ jsx11(SelectValue, { placeholder }) }),
|
|
@@ -2004,10 +2007,10 @@ function PopoverPortal3({ ...props }) {
|
|
|
2004
2007
|
return /* @__PURE__ */ jsx15(index_parts_exports3.Portal, { "data-slot": "popover-portal", ...props });
|
|
2005
2008
|
}
|
|
2006
2009
|
function PopoverPositioner3({ className, ...props }) {
|
|
2007
|
-
return /* @__PURE__ */ jsx15(index_parts_exports3.Positioner, { "data-slot": "popover-positioner", className, ...props });
|
|
2010
|
+
return /* @__PURE__ */ jsx15(index_parts_exports3.Positioner, { "data-slot": "popover-positioner", className: cn(overlayLayers.popup, className), ...props });
|
|
2008
2011
|
}
|
|
2009
2012
|
function PopoverContent({ className, children, ...props }) {
|
|
2010
|
-
return /* @__PURE__ */ jsx15(PopoverPortal3, { children: /* @__PURE__ */ jsx15(PopoverPositioner3, { children: /* @__PURE__ */ jsx15(index_parts_exports3.Popup, { "data-slot": "popover-content", className: cn("
|
|
2013
|
+
return /* @__PURE__ */ jsx15(PopoverPortal3, { children: /* @__PURE__ */ jsx15(PopoverPositioner3, { children: /* @__PURE__ */ jsx15(index_parts_exports3.Popup, { "data-slot": "popover-content", className: cn("w-72 rounded-md border bg-surface-floating p-4 text-text-primary shadow-[var(--ds-shadow-floating)] outline-none data-open:animate-in data-closed:animate-out", className), ...props, children }) }) });
|
|
2011
2014
|
}
|
|
2012
2015
|
function PopoverArrow3({ ...props }) {
|
|
2013
2016
|
return /* @__PURE__ */ jsx15(index_parts_exports3.Arrow, { "data-slot": "popover-arrow", ...props });
|
|
@@ -2026,7 +2029,7 @@ function PopoverClose3({ ...props }) {
|
|
|
2026
2029
|
import * as React24 from "react";
|
|
2027
2030
|
import { Check, ChevronsUpDown, X } from "lucide-react";
|
|
2028
2031
|
import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2029
|
-
function SearchableSelect({ id, name, value = "", options, onValueChange, placeholder = "Select an option", searchPlaceholder = "Search...", emptyMessage = "No matching options.", disabled = false, clearable = false, clearLabel = "Clear selection", optionsLabel, className, "aria-label": ariaLabel }) {
|
|
2032
|
+
function SearchableSelect({ id, name, value = "", options, onValueChange, placeholder = "Select an option", searchPlaceholder = "Search...", emptyMessage = "No matching options.", disabled = false, clearable = false, clearLabel = "Clear selection", optionsLabel, className, modal = false, "aria-label": ariaLabel }) {
|
|
2030
2033
|
const selected = options.find((option) => option.value === value) ?? null;
|
|
2031
2034
|
const items = React24.useMemo(() => options.map((option) => option.value), [options]);
|
|
2032
2035
|
const [open, setOpen] = React24.useState(false);
|
|
@@ -2035,7 +2038,7 @@ function SearchableSelect({ id, name, value = "", options, onValueChange, placeh
|
|
|
2035
2038
|
React24.useLayoutEffect(() => {
|
|
2036
2039
|
if (!open && inputRef.current) inputRef.current.value = selected?.label ?? "";
|
|
2037
2040
|
}, [open, selected?.label]);
|
|
2038
|
-
return /* @__PURE__ */ jsx16("div", { "data-slot": "searchable-select", className: cn("relative min-w-0", className), children: /* @__PURE__ */ jsxs7(index_parts_exports.Root, { items, autoHighlight: true, open, onOpenChange: (nextOpen) => {
|
|
2041
|
+
return /* @__PURE__ */ jsx16("div", { "data-slot": "searchable-select", className: cn("relative min-w-0", className), children: /* @__PURE__ */ jsxs7(index_parts_exports.Root, { items, autoHighlight: true, modal, open, onOpenChange: (nextOpen) => {
|
|
2039
2042
|
setOpen(nextOpen);
|
|
2040
2043
|
if (!nextOpen) setInputValue(selected?.label ?? "");
|
|
2041
2044
|
}, value, inputValue: open ? inputValue : selected?.label ?? "", onInputValueChange: setInputValue, onValueChange: (next) => {
|
|
@@ -2058,7 +2061,7 @@ function SearchableSelect({ id, name, value = "", options, onValueChange, placeh
|
|
|
2058
2061
|
clearable && selected ? /* @__PURE__ */ jsx16(IconButton, { type: "button", size: "sm", variant: "ghost", "aria-label": clearLabel, onClick: () => onValueChange(""), className: "absolute right-7", children: /* @__PURE__ */ jsx16(X, { className: "size-4" }) }) : null,
|
|
2059
2062
|
/* @__PURE__ */ jsx16(index_parts_exports.Trigger, { "aria-label": ariaLabel ?? placeholder, className: "absolute right-1 inline-flex size-8 items-center justify-center rounded-sm text-text-supporting outline-none focus-visible:ring-2 focus-visible:ring-focus", children: /* @__PURE__ */ jsx16(ChevronsUpDown, { className: "size-4" }) })
|
|
2060
2063
|
] }),
|
|
2061
|
-
/* @__PURE__ */ jsx16(index_parts_exports.Portal, { children: /* @__PURE__ */ jsx16(index_parts_exports.Positioner, {
|
|
2064
|
+
/* @__PURE__ */ jsx16(index_parts_exports.Portal, { children: /* @__PURE__ */ jsx16(index_parts_exports.Positioner, { "data-slot": "searchable-select-positioner", className: cn(overlayLayers.popup, "w-[var(--anchor-width)]"), children: /* @__PURE__ */ jsxs7(index_parts_exports.Popup, { className: "mt-1 max-h-72 overflow-auto rounded-md border bg-surface-floating p-1 text-text-primary shadow-[var(--ds-shadow-floating)] outline-none", children: [
|
|
2062
2065
|
/* @__PURE__ */ jsx16(index_parts_exports.Empty, { className: "px-2 py-3 text-sm text-text-supporting", children: emptyMessage }),
|
|
2063
2066
|
/* @__PURE__ */ jsx16(index_parts_exports.List, { "aria-label": optionsLabel ?? "Options", children: (optionValue) => {
|
|
2064
2067
|
const option = options.find((candidate) => candidate.value === optionValue);
|
|
@@ -3692,7 +3695,8 @@ function ToastViewport3({ className, placement = "bottom-end", ...props }) {
|
|
|
3692
3695
|
{
|
|
3693
3696
|
"data-slot": "toast-viewport",
|
|
3694
3697
|
className: cn(
|
|
3695
|
-
"pointer-events-none fixed
|
|
3698
|
+
"pointer-events-none fixed flex w-[min(24rem,calc(100vw-2rem))] max-w-[calc(100vw-2rem)] flex-col gap-2 p-4 outline-none",
|
|
3699
|
+
overlayLayers.transient,
|
|
3696
3700
|
placement === "bottom-end" && "right-0 bottom-0 items-end",
|
|
3697
3701
|
placement === "bottom-start" && "bottom-0 left-0 items-start",
|
|
3698
3702
|
placement === "top-end" && "top-0 right-0 items-end",
|
|
@@ -3831,4 +3835,4 @@ export {
|
|
|
3831
3835
|
ToastAction3 as ToastAction,
|
|
3832
3836
|
ToastClose3 as ToastClose
|
|
3833
3837
|
};
|
|
3834
|
-
//# sourceMappingURL=chunk-
|
|
3838
|
+
//# sourceMappingURL=chunk-SIRISAFC.js.map
|