@conscia-labs/design-system 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/{chunk-6VZDLHRF.js → chunk-TXCHAKNG.js} +4 -4
- package/dist/chunk-TXCHAKNG.js.map +1 -0
- package/dist/foundation.css +6 -3
- package/dist/index.js +1 -1
- package/dist/patterns/index.d.ts +4 -0
- package/dist/patterns/index.js +1 -1
- package/dist/standalone.css +1 -1
- package/dist/styles.css +6 -3
- package/package.json +2 -1
- package/dist/chunk-6VZDLHRF.js.map +0 -1
package/README.md
CHANGED
|
@@ -252,6 +252,7 @@ export function ProductShell({
|
|
|
252
252
|
|
|
253
253
|
<MainRegion>
|
|
254
254
|
<TopBar>
|
|
255
|
+
{/* Keep the toggle in the topbar; it must remain visible when the sidebar collapses. */}
|
|
255
256
|
<SidebarTrigger />
|
|
256
257
|
</TopBar>
|
|
257
258
|
|
|
@@ -270,6 +271,16 @@ export function ProductShell({
|
|
|
270
271
|
}
|
|
271
272
|
```
|
|
272
273
|
|
|
274
|
+
### Typography and font loading
|
|
275
|
+
|
|
276
|
+
The design system declares the open-source Inter variable font as a runtime
|
|
277
|
+
dependency and loads it through its CSS entry points. Inter is distributed
|
|
278
|
+
under the SIL Open Font License 1.1 and supports the system's fractional
|
|
279
|
+
weight values. Consumers should import the published `tailwind.css` or
|
|
280
|
+
`styles.css` entry and should not add a separate Saans or Inter download.
|
|
281
|
+
Applications may override `--font-sans` only when a deliberate product-specific
|
|
282
|
+
type decision has been made.
|
|
283
|
+
|
|
273
284
|
### Sidebar variants and semantic surfaces
|
|
274
285
|
|
|
275
286
|
`AppSidebar` keeps the historical dark treatment by default. Consumers that
|
|
@@ -305,6 +316,12 @@ can still be supplied as arbitrary React nodes. Routing, conversation rows,
|
|
|
305
316
|
row actions, account menus, permissions, and appearance controls remain
|
|
306
317
|
application-owned.
|
|
307
318
|
|
|
319
|
+
The shell uses `--ds-topbar-height` as the shared chrome-height contract. The
|
|
320
|
+
sidebar header aliases the historical `--ds-sidebar-header-height` token to the
|
|
321
|
+
same value, so the two rails stay aligned. `SidebarTrigger` should be rendered
|
|
322
|
+
as a child of `TopBar`, never inside `AppSidebar`; the topbar remains mounted
|
|
323
|
+
when the sidebar enters collapsed or mobile states.
|
|
324
|
+
|
|
308
325
|
For migration, replace a consuming application's light-only `--sidebar-*`
|
|
309
326
|
root override with `variant="auto"` on its shared `AppSidebar`. Remove
|
|
310
327
|
descendant opacity and background overrides as each shell adopts the semantic
|
|
@@ -570,7 +570,7 @@ function AppSidebarHeader({
|
|
|
570
570
|
{
|
|
571
571
|
"data-slot": "app-sidebar-header",
|
|
572
572
|
className: cn(
|
|
573
|
-
"flex min-h-[var(--ds-
|
|
573
|
+
"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",
|
|
574
574
|
className
|
|
575
575
|
),
|
|
576
576
|
...props
|
|
@@ -773,7 +773,7 @@ function SidebarTrigger({
|
|
|
773
773
|
variant: "ghost",
|
|
774
774
|
size: "icon",
|
|
775
775
|
className: cn(
|
|
776
|
-
"shrink-0 cursor-pointer text-
|
|
776
|
+
"shrink-0 cursor-pointer text-muted-foreground hover:bg-surface-muted hover:text-foreground focus-visible:ring-ring",
|
|
777
777
|
className
|
|
778
778
|
),
|
|
779
779
|
"aria-expanded": isMobile ? mobileOpen : sidebarOpen,
|
|
@@ -913,7 +913,7 @@ function TopBar({
|
|
|
913
913
|
{
|
|
914
914
|
"data-slot": "top-bar",
|
|
915
915
|
className: cn(
|
|
916
|
-
"sticky top-0 z-10 flex min-h-
|
|
916
|
+
"sticky top-0 z-10 flex min-h-[var(--ds-topbar-height)] shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-background/96 px-3 backdrop-blur md:px-4",
|
|
917
917
|
"supports-[backdrop-filter]:bg-background/88",
|
|
918
918
|
className
|
|
919
919
|
),
|
|
@@ -1879,4 +1879,4 @@ export {
|
|
|
1879
1879
|
ErrorState,
|
|
1880
1880
|
ValueMeter
|
|
1881
1881
|
};
|
|
1882
|
-
//# sourceMappingURL=chunk-
|
|
1882
|
+
//# sourceMappingURL=chunk-TXCHAKNG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/patterns/pagination.tsx","../src/patterns/data-table.tsx","../src/patterns/entity-table.tsx","../src/patterns/detail-back-link.tsx","../src/patterns/app-shell.tsx","../src/patterns/activity-list.tsx","../src/patterns/confirmation-dialog.tsx","../src/patterns/code-block.tsx","../src/patterns/inventory-surface.tsx","../src/patterns/metric-band.tsx","../src/patterns/page-header.tsx","../src/patterns/page-toolbar.tsx","../src/patterns/preference-controls.tsx","../src/patterns/provider-mark.tsx","../src/patterns/resource-detail.tsx","../src/patterns/sidebar-navigation.tsx","../src/patterns/state-views.tsx","../src/patterns/value-meter.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../primitives/select\";\nimport { cn } from \"../primitives/utils\";\n\ntype PaginationControlsProps = React.ComponentProps<\"div\"> & {\n currentPage: number;\n pageCount: number;\n totalLabel?: React.ReactNode;\n onPrevious?: () => void;\n onNext?: () => void;\n onPageChange?: (page: number) => void;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (pageSize: number) => void;\n};\n\nfunction PaginationControls({\n currentPage,\n pageCount,\n totalLabel,\n onPrevious,\n onNext,\n onPageChange,\n pageSize,\n pageSizeOptions = [10, 25, 50],\n onPageSizeChange,\n className,\n ...props\n}: PaginationControlsProps) {\n return (\n <div\n data-slot=\"pagination-controls\"\n className={cn(\"flex flex-col gap-2 border-t border-border-subtle px-5 py-3 text-sm text-muted-foreground sm:flex-row sm:items-center sm:justify-between\", className)}\n {...props}\n >\n <div className=\"flex flex-wrap items-center gap-3\">\n <span>{totalLabel}</span>\n {pageSize && onPageSizeChange ? (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[var(--ds-metadata)]\">Rows</span>\n <Select value={String(pageSize)} onValueChange={(value) => onPageSizeChange(Number(value))}>\n <SelectTrigger size=\"sm\" className=\"w-[4.5rem]\" aria-label=\"Rows per page\"><SelectValue /></SelectTrigger>\n <SelectContent>{pageSizeOptions.map((size) => <SelectItem key={size} value={String(size)}>{size}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n ) : null}\n </div>\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"outline\" size=\"icon\" className=\"size-8\" aria-label=\"Previous page\" onClick={onPrevious ?? (() => onPageChange?.(currentPage - 1))} disabled={currentPage <= 1}><ChevronLeft /></Button>\n {onPageChange ? pageItems(currentPage, pageCount).map((item, index) => item === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"flex size-8 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">…</span>\n ) : (\n <Button type=\"button\" key={item} variant={item === currentPage ? \"secondary\" : \"ghost\"} size=\"icon\" className=\"size-8\" aria-label={`Page ${item}`} aria-current={item === currentPage ? \"page\" : undefined} onClick={() => onPageChange(item)}>{item}</Button>\n )) : <span className=\"px-2 text-[var(--ds-metadata)]\">Page {currentPage} of {pageCount}</span>}\n <Button type=\"button\" variant=\"outline\" size=\"icon\" className=\"size-8\" aria-label=\"Next page\" onClick={onNext ?? (() => onPageChange?.(currentPage + 1))} disabled={currentPage >= pageCount}><ChevronRight /></Button>\n </div>\n </div>\n );\n}\n\nfunction pageItems(currentPage: number, pageCount: number): Array<number | \"ellipsis\"> {\n if (pageCount <= 7) return Array.from({ length: pageCount }, (_, index) => index + 1);\n const pages = new Set([1, pageCount, currentPage - 1, currentPage, currentPage + 1]);\n const sorted = Array.from(pages).filter((page) => page > 0 && page <= pageCount).sort((a, b) => a - b);\n const result: Array<number | \"ellipsis\"> = [];\n sorted.forEach((page, index) => {\n if (index && page - sorted[index - 1]! > 1) result.push(\"ellipsis\");\n result.push(page);\n });\n return result;\n}\n\nexport { PaginationControls };\nexport type { PaginationControlsProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../primitives/table\";\nimport { cn } from \"../primitives/utils\";\nimport { PaginationControls } from \"./pagination\";\n\ntype DataTableColumn<TData> = {\n id: string;\n header: React.ReactNode;\n cell: (item: TData) => React.ReactNode;\n accessor?: (item: TData) => string | number | null | undefined;\n sortable?: boolean;\n className?: string;\n};\n\ntype DataTableProps<TData> = {\n data: TData[];\n columns: DataTableColumn<TData>[];\n getRowId: (item: TData) => string;\n getRowLabel?: (item: TData) => string;\n onRowClick?: (item: TData) => void;\n isRowClickable?: (item: TData) => boolean;\n rowActions?: (item: TData) => React.ReactNode;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pagination?: PaginationState;\n onPaginationChange?: (pagination: PaginationState) => void;\n manualPagination?: boolean;\n pageCount?: number;\n rowCount?: number;\n pageSizeOptions?: number[];\n totalLabel?: React.ReactNode;\n mobileRow?: (item: TData) => React.ReactNode;\n empty?: React.ReactNode;\n className?: string;\n};\n\nfunction DataTable<TData>({\n data,\n columns,\n getRowId,\n getRowLabel,\n onRowClick,\n isRowClickable,\n rowActions,\n selectedIds,\n onSelectionChange,\n sorting,\n onSortingChange,\n manualSorting = false,\n pagination,\n onPaginationChange,\n manualPagination = false,\n pageCount,\n rowCount,\n pageSizeOptions,\n totalLabel,\n mobileRow,\n empty,\n className,\n}: DataTableProps<TData>) {\n const rowSelection = React.useMemo<RowSelectionState>(() => {\n const selection: RowSelectionState = {};\n selectedIds?.forEach((id) => { selection[id] = true; });\n return selection;\n }, [selectedIds]);\n\n const tableColumns = React.useMemo<ColumnDef<TData>[]>(() => {\n const result: ColumnDef<TData>[] = [];\n if (onSelectionChange) {\n result.push({\n id: \"select\",\n enableSorting: false,\n header: ({ table }) => (\n <Checkbox\n aria-label=\"Select all rows on this page\"\n checked={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && \"indeterminate\")}\n onCheckedChange={(checked) => table.toggleAllPageRowsSelected(Boolean(checked))}\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n aria-label={`Select ${getRowLabel?.(row.original) ?? row.id}`}\n checked={row.getIsSelected()}\n onCheckedChange={(checked) => row.toggleSelected(Boolean(checked))}\n onClick={(event) => event.stopPropagation()}\n />\n ),\n meta: { className: \"w-10\" },\n });\n }\n result.push(...columns.map((column): ColumnDef<TData> => ({\n id: column.id,\n ...(column.accessor ? { accessorFn: column.accessor } : {}),\n enableSorting: column.sortable ?? false,\n header: () => column.header,\n cell: ({ row }: { row: Row<TData> }) => column.cell(row.original),\n meta: { className: column.className, label: typeof column.header === \"string\" ? column.header : column.id },\n })));\n if (rowActions) {\n result.push({\n id: \"actions\",\n enableSorting: false,\n header: \"Actions\",\n cell: ({ row }) => (\n <div\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n >\n {rowActions(row.original)}\n </div>\n ),\n meta: { className: \"w-12 text-right\" },\n });\n }\n return result;\n }, [columns, getRowLabel, onSelectionChange, rowActions]);\n\n // TanStack Table intentionally returns a mutable table instance; React Compiler skips this hook.\n // eslint-disable-next-line react-hooks/incompatible-library\n const table = useReactTable({\n data,\n columns: tableColumns,\n getRowId: (row) => getRowId(row),\n state: { rowSelection, ...(sorting ? { sorting } : {}), ...(pagination ? { pagination } : {}) },\n enableRowSelection: Boolean(onSelectionChange),\n onRowSelectionChange: (updater) => {\n if (!onSelectionChange) return;\n const next = typeof updater === \"function\" ? updater(rowSelection) : updater;\n onSelectionChange(new Set(Object.keys(next).filter((id) => next[id])));\n },\n onSortingChange: (updater) => {\n if (!onSortingChange) return;\n onSortingChange(typeof updater === \"function\" ? updater(sorting ?? []) : updater);\n },\n onPaginationChange: (updater) => {\n if (!onPaginationChange || !pagination) return;\n onPaginationChange(typeof updater === \"function\" ? updater(pagination) : updater);\n },\n manualSorting,\n manualPagination,\n pageCount,\n rowCount,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getPaginationRowModel: pagination && !manualPagination ? getPaginationRowModel() : undefined,\n });\n\n if (!data.length && empty) return <>{empty}</>;\n\n const visibleRows = table.getRowModel().rows;\n const showPagination = Boolean(pagination && onPaginationChange);\n\n return (\n <div data-slot=\"data-table\" className={cn(\"bg-background\", className)}>\n <div className={mobileRow ? \"hidden md:block\" : undefined}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta as { className?: string; label?: string } | undefined;\n const canSort = header.column.getCanSort();\n const sorted = header.column.getIsSorted();\n return (\n <TableHead\n key={header.id}\n className={meta?.className}\n aria-sort={\n canSort\n ? sorted === \"asc\"\n ? \"ascending\"\n : sorted === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 h-8 gap-1.5 px-2 text-[var(--ds-metadata)] font-semibold uppercase text-muted-foreground hover:text-foreground\"\n onClick={header.column.getToggleSortingHandler()}\n aria-label={`Sort by ${meta?.label ?? header.column.id}`}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sorted === \"asc\" ? <ArrowUp className=\"size-3.5\" /> : sorted === \"desc\" ? <ArrowDown className=\"size-3.5\" /> : <ChevronsUpDown className=\"size-3.5 opacity-60\" />}\n </Button>\n ) : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {visibleRows.map((row) => {\n const rowClickable = Boolean(\n onRowClick && (isRowClickable?.(row.original) ?? true),\n );\n return (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n tabIndex={rowClickable ? 0 : undefined}\n aria-label={rowClickable ? getRowLabel?.(row.original) ?? row.id : undefined}\n className={cn(rowClickable && \"cursor-pointer outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\")}\n onClick={() => {\n if (rowClickable) onRowClick?.(row.original);\n }}\n onKeyDown={(event) => {\n if (!rowClickable || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onRowClick?.(row.original);\n }}\n >\n {row.getVisibleCells().map((cell) => {\n const meta = cell.column.columnDef.meta as { className?: string } | undefined;\n return <TableCell key={cell.id} className={meta?.className}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</TableCell>;\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n {mobileRow ? (\n <div className=\"divide-y divide-border-subtle md:hidden\" role=\"list\">\n {visibleRows.map((row) => <div key={row.id} role=\"listitem\">{mobileRow(row.original)}</div>)}\n </div>\n ) : null}\n {showPagination ? (\n <PaginationControls\n currentPage={pagination!.pageIndex + 1}\n pageCount={Math.max(1, table.getPageCount())}\n pageSize={pagination!.pageSize}\n pageSizeOptions={pageSizeOptions}\n totalLabel={totalLabel}\n onPageChange={(nextPage) => table.setPageIndex(nextPage - 1)}\n onPageSizeChange={(nextSize) => table.setPageSize(nextSize)}\n />\n ) : null}\n </div>\n );\n}\n\nexport { DataTable };\nexport type { DataTableColumn, DataTableProps, PaginationState, SortingState };\n","import * as React from \"react\";\n\nimport { DataTable, type DataTableColumn } from \"./data-table\";\n\ntype EntityTableColumn<T> = {\n key: string;\n header: React.ReactNode;\n cell: (item: T) => React.ReactNode;\n className?: string;\n};\n\ntype EntityTableProps<T> = {\n items: T[];\n columns: EntityTableColumn<T>[];\n getRowId: (item: T) => string;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n onRowClick?: (item: T) => void;\n getRowLabel?: (item: T) => string;\n rowActions?: (item: T) => React.ReactNode;\n className?: string;\n};\n\nfunction EntityTable<T>({\n items,\n columns,\n getRowId,\n selectedIds,\n onSelectionChange,\n onRowClick,\n getRowLabel,\n rowActions,\n className\n}: EntityTableProps<T>) {\n return (\n <DataTable\n data={items}\n columns={columns.map((column): DataTableColumn<T> => ({ ...column, id: column.key }))}\n getRowId={getRowId}\n selectedIds={selectedIds}\n onSelectionChange={onSelectionChange}\n onRowClick={onRowClick}\n getRowLabel={getRowLabel}\n rowActions={rowActions}\n className={className}\n />\n );\n}\n\nexport { EntityTable };\nexport type { EntityTableColumn, EntityTableProps };\n","import * as React from \"react\";\nimport { ArrowLeft } from \"lucide-react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype DetailBackLinkProps = Omit<React.ComponentProps<\"a\">, \"children\"> & {\n label: string;\n};\n\nfunction DetailBackLink({ label, className, ...props }: DetailBackLinkProps) {\n return (\n <a\n data-slot=\"detail-back-link\"\n className={cn(\n \"inline-flex h-8 w-fit items-center gap-2 rounded-md px-2 text-sm font-medium text-muted-foreground outline-none transition-colors hover:bg-surface-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n className,\n )}\n {...props}\n >\n <ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n {label}\n </a>\n );\n}\n\nexport { DetailBackLink };\nexport type { DetailBackLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { PanelLeftIcon, Search, X } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Input } from \"../primitives/input\";\nimport { Separator } from \"../primitives/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../primitives/sheet\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../primitives/tooltip\";\nimport { cn } from \"../primitives/utils\";\n\nconst SIDEBAR_COOKIE_NAME = \"conscia_sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 30;\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\nconst SIDEBAR_STORAGE_KEY = \"conscia-sidebar-open:v1\";\nconst SIDEBAR_STATE_CHANGE_EVENT = \"conscia-sidebar-state-change\";\n\nfunction parseSidebarOpen(value: string | null) {\n return value === \"true\" ? true : value === \"false\" ? false : null;\n}\n\nfunction readPersistedSidebarOpen() {\n if (typeof document === \"undefined\") {\n return null;\n }\n\n try {\n const storedValue = window.localStorage.getItem(SIDEBAR_STORAGE_KEY);\n const storedSidebarOpen = parseSidebarOpen(storedValue);\n\n if (storedSidebarOpen !== null) {\n return storedSidebarOpen;\n }\n } catch {\n // Fall back to the cookie when storage is unavailable.\n }\n\n const cookie = document.cookie\n .split(\"; \")\n .find((entry) => entry.startsWith(`${SIDEBAR_COOKIE_NAME}=`));\n\n if (!cookie) {\n return null;\n }\n\n const value = cookie.slice(SIDEBAR_COOKIE_NAME.length + 1);\n\n return parseSidebarOpen(value);\n}\n\nfunction persistSidebarOpen(open: boolean) {\n try {\n window.localStorage.setItem(SIDEBAR_STORAGE_KEY, String(open));\n } catch {\n // The cookie still preserves the preference when storage is unavailable.\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n window.dispatchEvent(new Event(SIDEBAR_STATE_CHANGE_EVENT));\n}\n\nfunction subscribeToSidebarOpen(onStoreChange: () => void) {\n function onStorage(event: StorageEvent) {\n if (event.key === SIDEBAR_STORAGE_KEY) {\n onStoreChange();\n }\n }\n\n window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.addEventListener(\"storage\", onStorage);\n\n return () => {\n window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\ntype AppShellContextValue = {\n sidebarState: \"expanded\" | \"collapsed\";\n sidebarSide: \"left\" | \"right\";\n setSidebarSide: (side: \"left\" | \"right\") => void;\n sidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n mobileOpen: boolean;\n setMobileOpen: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst AppShellContext = React.createContext<AppShellContextValue | null>(null);\n\nfunction useAppShell() {\n const context = React.useContext(AppShellContext);\n\n if (!context) {\n throw new Error(\"useAppShell must be used within AppShell.\");\n }\n\n return context;\n}\n\nfunction useMediaQuery(query: string) {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const media = window.matchMedia(query);\n const sync = () => setMatches(media.matches);\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [query]);\n\n return matches;\n}\n\nfunction AppShell({\n defaultSidebarOpen = true,\n children,\n className,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultSidebarOpen?: boolean;\n}) {\n const isMobile = useMediaQuery(\"(max-width: 1023px)\");\n const [sidebarOpen, setSidebarOpenState] = React.useState(defaultSidebarOpen);\n const [sidebarSide, setSidebarSide] = React.useState<\"left\" | \"right\">(\"left\");\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n React.useEffect(() => {\n function syncSidebarOpen() {\n setSidebarOpenState(readPersistedSidebarOpen() ?? defaultSidebarOpen);\n }\n\n const unsubscribe = subscribeToSidebarOpen(syncSidebarOpen);\n queueMicrotask(syncSidebarOpen);\n\n return unsubscribe;\n }, [defaultSidebarOpen]);\n\n const setSidebarOpen = React.useCallback((open: boolean) => {\n persistSidebarOpen(open);\n }, []);\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setMobileOpen((current) => !current);\n return;\n }\n\n persistSidebarOpen(!sidebarOpen);\n }, [isMobile, sidebarOpen]);\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n event.key.toLowerCase() === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [toggleSidebar]);\n\n const contextValue = React.useMemo<AppShellContextValue>(\n () => ({\n sidebarState: sidebarOpen ? \"expanded\" : \"collapsed\",\n sidebarSide,\n setSidebarSide,\n sidebarOpen,\n setSidebarOpen,\n mobileOpen,\n setMobileOpen,\n isMobile,\n toggleSidebar,\n }),\n [\n isMobile,\n mobileOpen,\n setSidebarOpen,\n sidebarOpen,\n sidebarSide,\n toggleSidebar,\n ],\n );\n\n return (\n <AppShellContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={120}>\n <div\n data-slot=\"app-shell\"\n data-sidebar-state={sidebarOpen ? \"expanded\" : \"collapsed\"}\n data-sidebar-side={sidebarSide}\n suppressHydrationWarning\n className={cn(\n \"group/shell min-h-svh bg-canvas text-foreground\",\n \"[--ds-app-sidebar-width:var(--ds-sidebar-width)] [--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)] data-[sidebar-state=collapsed]:[--ds-app-sidebar-width:3.5rem]\",\n className,\n )}\n style={style}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </AppShellContext.Provider>\n );\n}\n\nfunction AppSidebar({\n side = \"left\",\n variant = \"dark\",\n className,\n children,\n title = \"Application navigation\",\n description = \"Primary product navigation.\",\n ...props\n}: React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\";\n /** Preserve the historical dark sidebar by default; auto follows appearance. */\n variant?: \"light\" | \"dark\" | \"auto\";\n title?: string;\n description?: string;\n}) {\n const { mobileOpen, setMobileOpen, setSidebarSide } = useAppShell();\n\n React.useEffect(() => {\n setSidebarSide(side);\n }, [setSidebarSide, side]);\n\n return (\n <>\n <Sheet open={mobileOpen} onOpenChange={setMobileOpen}>\n <SheetContent\n side={side}\n data-sidebar-variant={variant}\n className=\"w-[var(--ds-sidebar-width-mobile)] border-sidebar-border bg-sidebar-canvas p-0 text-sidebar-primary-text [&>[data-slot=sheet-close]]:right-3 [&>[data-slot=sheet-close]]:top-3 [&>[data-slot=sheet-close]]:text-sidebar-secondary-text [&>[data-slot=sheet-close]]:hover:text-sidebar-primary-text\"\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>{title}</SheetTitle>\n <SheetDescription>{description}</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full min-h-0 flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n\n <aside\n data-slot=\"app-sidebar\"\n data-side={side}\n data-sidebar-variant={variant}\n className={cn(\n \"fixed inset-y-0 z-20 hidden w-[var(--ds-app-sidebar-width)] shrink-0 flex-col border-sidebar-border bg-sidebar-canvas text-sidebar-primary-text transition-[width] duration-200 ease-linear lg:flex\",\n side === \"left\" ? \"left-0 border-r\" : \"right-0 border-l\",\n \"group-data-[sidebar-state=collapsed]/shell:w-[var(--ds-app-sidebar-width)]\",\n className,\n )}\n {...props}\n >\n {children}\n </aside>\n </>\n );\n}\n\nfunction AppSidebarHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-header\"\n className={cn(\n \"flex min-h-[var(--ds-topbar-height)] min-w-0 shrink-0 items-center overflow-hidden border-b border-sidebar-border bg-sidebar-header px-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-content\"\n className={cn(\n \"flex min-h-0 min-w-0 flex-1 flex-col gap-[var(--ds-sidebar-group-gap)] overflow-x-hidden overflow-y-auto bg-sidebar-content px-[var(--ds-sidebar-content-padding-x)] py-[var(--ds-sidebar-content-padding-y)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-footer\"\n className={cn(\n \"mt-auto flex min-w-0 shrink-0 flex-col gap-2 overflow-hidden border-t border-sidebar-border bg-sidebar-footer p-[var(--ds-sidebar-footer-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProductIdentity({\n label,\n description,\n icon,\n className,\n}: {\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n data-slot=\"product-identity\"\n className={cn(\"flex min-w-0 items-center gap-2\", className)}\n >\n {icon ? (\n <div className=\"flex size-7 shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover text-sidebar-icon\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden\">\n <div className=\"truncate text-sm font-semibold leading-5 text-sidebar-primary-text\">\n {label}\n </div>\n {description ? (\n <div className=\"truncate text-[var(--ds-metadata)] leading-4 text-sidebar-metadata-text\">\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"app-sidebar-separator\"\n className={cn(\"bg-sidebar-border\", className)}\n {...props}\n />\n );\n}\n\nfunction NavigationGroup({\n label,\n count,\n children,\n className,\n}: {\n label?: React.ReactNode;\n count?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <section\n data-slot=\"navigation-group\"\n className={cn(\"flex min-w-0 flex-col gap-1\", className)}\n >\n {label ? (\n <div\n data-slot=\"navigation-group-label\"\n className=\"flex min-h-6 items-center gap-2 px-2 pb-1 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-5 tracking-[0.08em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden\"\n >\n {label}\n {count !== undefined ? (\n <span className=\"ml-auto shrink-0 text-[length:var(--ds-metadata)] font-medium normal-case tracking-normal text-sidebar-group-count\">\n {count}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className=\"flex min-w-0 flex-col gap-1\">{children}</div>\n </section>\n );\n}\n\nfunction navigationItemClasses(active?: boolean) {\n return cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sm font-medium text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[var(--ds-sidebar-item-height)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text\",\n \"focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n \"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n );\n}\n\nfunction NavigationItem({\n asChild = false,\n active = false,\n tooltip,\n type,\n className,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n active?: boolean;\n tooltip?: string;\n}) {\n const Comp = asChild ? Slot : \"button\";\n const { sidebarState, sidebarSide, isMobile } = useAppShell();\n const item = (\n <Comp\n data-slot=\"navigation-item\"\n data-active={active ? \"true\" : undefined}\n type={asChild ? undefined : (type ?? \"button\")}\n className={cn(navigationItemClasses(active), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n\n if (!tooltip) {\n return item;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{item}</TooltipTrigger>\n <TooltipContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"center\"\n hidden={sidebarState !== \"collapsed\" || isMobile}\n >\n {tooltip}\n </TooltipContent>\n </Tooltip>\n );\n}\n\nfunction NavigationSubItem({\n asChild = false,\n active = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n active?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"navigation-sub-item\"\n data-active={active ? \"true\" : undefined}\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sm text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[calc(var(--ds-sidebar-item-height)-0.25rem)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"group-data-[sidebar-state=collapsed]/shell:hidden [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationSubList({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"navigation-sub-list\"\n className={cn(\n \"ml-4 flex min-w-0 flex-col gap-1 border-l border-sidebar-border pl-2 group-data-[sidebar-state=collapsed]/shell:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * Place this control inside TopBar, not AppSidebar, so it remains available\n * after the sidebar collapses and in the mobile drawer layout.\n */\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { isMobile, mobileOpen, sidebarOpen, toggleSidebar } = useAppShell();\n\n return (\n <Button\n data-slot=\"sidebar-trigger\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n \"shrink-0 cursor-pointer text-muted-foreground hover:bg-surface-muted hover:text-foreground focus-visible:ring-ring\",\n className,\n )}\n aria-expanded={isMobile ? mobileOpen : sidebarOpen}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle navigation</span>\n </Button>\n );\n}\n\ntype SidebarSearchProps = Omit<React.ComponentProps<typeof Input>, \"type\"> & {\n expanded?: boolean;\n defaultExpanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void;\n triggerLabel?: string;\n shortcut?: string;\n};\n\n/**\n * Shared search affordance for sidebars. Applications own query state and\n * filtering; this component owns the compact trigger, focus handoff, and\n * keyboard-accessible expanded field.\n */\nfunction SidebarSearch({\n expanded: expandedProp,\n defaultExpanded = false,\n onExpandedChange,\n triggerLabel = \"Search navigation\",\n shortcut,\n className,\n onKeyDown,\n ...props\n}: SidebarSearchProps) {\n const [expandedState, setExpandedState] = React.useState(defaultExpanded);\n const expanded = expandedProp ?? expandedState;\n const inputRef = React.useRef<HTMLInputElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const mountedRef = React.useRef(false);\n\n const setExpanded = React.useCallback(\n (nextExpanded: boolean) => {\n if (expandedProp === undefined) {\n setExpandedState(nextExpanded);\n }\n onExpandedChange?.(nextExpanded);\n },\n [expandedProp, onExpandedChange],\n );\n\n React.useEffect(() => {\n if (expanded) {\n queueMicrotask(() => inputRef.current?.focus());\n } else if (mountedRef.current) {\n queueMicrotask(() => triggerRef.current?.focus());\n }\n\n mountedRef.current = true;\n }, [expanded]);\n\n if (!expanded) {\n return (\n <button\n ref={triggerRef}\n type=\"button\"\n data-slot=\"sidebar-search-trigger\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left text-sm font-medium text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring lg:min-h-[var(--ds-sidebar-item-height)]\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n className,\n )}\n onClick={() => setExpanded(true)}\n aria-label={triggerLabel}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {triggerLabel}\n </span>\n {shortcut ? (\n <kbd className=\"ml-auto rounded border border-sidebar-border px-1.5 py-0.5 text-[length:var(--ds-metadata)] font-medium text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden\">\n {shortcut}\n </kbd>\n ) : null}\n </button>\n );\n }\n\n return (\n <div\n data-slot=\"sidebar-search\"\n data-expanded=\"true\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] items-center gap-2 rounded-[var(--ds-radius-control)] border border-sidebar-border bg-sidebar-search px-2 text-sidebar-primary-text shadow-[var(--ds-shadow-raised)] lg:min-h-[var(--ds-sidebar-item-height)]\",\n className,\n )}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <Input\n ref={inputRef}\n type=\"search\"\n className=\"h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 text-sm shadow-none focus-visible:border-0 focus-visible:ring-0\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setExpanded(false);\n }\n onKeyDown?.(event);\n }}\n {...props}\n />\n <button\n type=\"button\"\n data-slot=\"sidebar-search-close\"\n className=\"grid size-7 shrink-0 cursor-pointer place-items-center rounded-[var(--ds-radius-control)] text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-2 focus-visible:ring-sidebar-focus-ring\"\n onClick={() => {\n setExpanded(false);\n }}\n aria-label=\"Close search\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n );\n}\n\nfunction MainRegion({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"main-region\"\n className={cn(\n \"flex min-h-svh min-w-0 w-full flex-1 flex-col transition-[padding] duration-200 ease-linear\",\n \"group-data-[sidebar-side=left]/shell:lg:pl-[var(--ds-app-sidebar-width)] group-data-[sidebar-side=right]/shell:lg:pr-[var(--ds-app-sidebar-width)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TopBar({\n className,\n ...props\n}: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"top-bar\"\n className={cn(\n \"sticky top-0 z-10 flex min-h-[var(--ds-topbar-height)] shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-background/96 px-3 backdrop-blur md:px-4\",\n \"supports-[backdrop-filter]:bg-background/88\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageFrame({\n width = \"full\",\n className,\n ...props\n}: React.ComponentProps<\"main\"> & {\n width?: \"full\" | \"wide\" | \"focused\" | \"reading\";\n}) {\n return (\n <main\n data-slot=\"page-frame\"\n data-width={width}\n className={cn(\n \"min-w-0 w-full flex-1 px-3 py-[var(--ds-space-section)] md:px-[var(--ds-space-page)]\",\n width === \"wide\" && \"mx-auto w-full max-w-[86rem]\",\n width === \"focused\" && \"mx-auto w-full max-w-[64rem]\",\n width === \"reading\" && \"mx-auto w-full max-w-[48rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-content\"\n className={cn(\"flex min-w-0 flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\nfunction PageBoundary({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-boundary\"\n className={cn(\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InspectorRegion({\n className,\n ...props\n}: React.ComponentProps<\"aside\">) {\n return (\n <aside\n data-slot=\"inspector-region\"\n className={cn(\n \"w-full border-l border-border-subtle bg-surface md:w-[20rem] xl:w-[24rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n AppShell,\n AppSidebar,\n AppSidebarContent,\n AppSidebarFooter,\n AppSidebarHeader,\n InspectorRegion,\n MainRegion,\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n PageBoundary,\n PageContent,\n PageFrame,\n ProductIdentity,\n SidebarSeparator,\n SidebarSearch,\n SidebarTrigger,\n TopBar,\n useAppShell,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\nfunction ActivityList({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"activity-list\" className={cn(\"divide-y divide-border-subtle\", className)} {...props} />;\n}\n\ntype ActivityItemProps = React.ComponentProps<\"div\"> & {\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n status?: React.ReactNode;\n};\n\nfunction ActivityItem({ icon, title, description, metadata, status, className, ...props }: ActivityItemProps) {\n return (\n <div data-slot=\"activity-item\" className={cn(\"grid grid-cols-[auto_minmax(0,1fr)_auto] gap-3 py-3\", className)} {...props}>\n <div className=\"flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4\">\n {icon}\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-sm font-medium text-foreground\">{title}</div>\n {description ? <div className=\"mt-0.5 text-sm text-muted-foreground\">{description}</div> : null}\n {metadata ? <div className=\"mt-1 text-[var(--ds-metadata)] text-muted-foreground\">{metadata}</div> : null}\n </div>\n {status ? <div className=\"shrink-0\">{status}</div> : null}\n </div>\n );\n}\n\nexport { ActivityItem, ActivityList };\nexport type { ActivityItemProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from \"../primitives/dialog\";\n\ntype ConfirmationDialogProps = {\n trigger: React.ReactNode;\n title: React.ReactNode;\n description: React.ReactNode;\n children?: React.ReactNode;\n confirmLabel?: React.ReactNode;\n cancelLabel?: React.ReactNode;\n confirmVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n pending?: boolean;\n onConfirm: () => unknown | Promise<unknown>;\n onError?: (error: unknown) => void;\n};\n\nfunction ConfirmationDialog({ trigger, title, description, children, confirmLabel = \"Confirm\", cancelLabel = \"Cancel\", confirmVariant = \"destructive\", pending = false, onConfirm, onError }: ConfirmationDialogProps) {\n const [open, setOpen] = React.useState(false);\n const [confirming, setConfirming] = React.useState(false);\n const isPending = pending || confirming;\n\n async function confirm() {\n if (isPending) {\n return;\n }\n\n setConfirming(true);\n\n try {\n await onConfirm();\n setOpen(false);\n } catch (error) {\n onError?.(error);\n } finally {\n setConfirming(false);\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>{trigger}</DialogTrigger>\n <DialogContent size=\"small\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogBody>{children}</DialogBody>\n <DialogFooter>\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\" disabled={isPending}>{cancelLabel}</Button>\n </DialogClose>\n <Button type=\"button\" variant={confirmVariant} disabled={isPending} onClick={confirm}>\n {isPending ? \"Working...\" : confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\nexport { ConfirmationDialog };\nexport type { ConfirmationDialogProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, Copy } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../primitives/tabs\";\nimport { cn } from \"../primitives/utils\";\n\ntype CodeBlockSnippet = {\n value: string;\n label: string;\n code: string;\n};\n\ntype CodeBlockProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n snippets: CodeBlockSnippet[];\n defaultValue?: string;\n copyLabel?: string;\n};\n\nfunction CodeBlock({\n snippets,\n defaultValue,\n copyLabel = \"Copy code\",\n className,\n ...props\n}: CodeBlockProps) {\n const initialValue = defaultValue ?? snippets[0]?.value ?? \"\";\n const [activeValue, setActiveValue] = React.useState(initialValue);\n const [copiedValue, setCopiedValue] = React.useState<string | null>(null);\n const [copyError, setCopyError] = React.useState(false);\n const copyStatusId = React.useId();\n const activeSnippet =\n snippets.find((snippet) => snippet.value === activeValue) ?? snippets[0];\n\n if (!activeSnippet) return null;\n\n return (\n <div\n data-slot=\"code-block\"\n className={cn(\"overflow-hidden rounded-lg border border-border-subtle bg-surface\", className)}\n {...props}\n >\n <Tabs value={activeSnippet.value} onValueChange={setActiveValue} variant=\"segmented\" className=\"gap-0\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-subtle bg-surface-muted px-3 py-2\">\n <TabsList variant=\"segmented\" size=\"compact\" aria-label=\"Code language\">\n {snippets.map((snippet) => (\n <TabsTrigger key={snippet.value} value={snippet.value}>\n {snippet.label}\n </TabsTrigger>\n ))}\n </TabsList>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={async () => {\n try {\n await navigator.clipboard.writeText(activeSnippet.code);\n setCopiedValue(activeSnippet.value);\n setCopyError(false);\n } catch {\n setCopiedValue(null);\n setCopyError(true);\n }\n }}\n aria-describedby={copyStatusId}\n >\n {copiedValue === activeSnippet.value ? <Check /> : <Copy />}\n {copiedValue === activeSnippet.value ? \"Copied\" : copyLabel}\n </Button>\n <span id={copyStatusId} className=\"sr-only\" role=\"status\" aria-live=\"polite\">{copyError ? \"Code could not be copied. Select the code and copy it manually.\" : copiedValue === activeSnippet.value ? \"Code copied to clipboard.\" : \"\"}</span>\n </div>\n {snippets.map((snippet) => (\n <TabsContent key={snippet.value} value={snippet.value} className=\"m-0\">\n <pre className=\"max-h-[32rem] overflow-auto p-4 text-sm leading-6\">\n <code>{snippet.code}</code>\n </pre>\n </TabsContent>\n ))}\n </Tabs>\n </div>\n );\n}\n\nexport { CodeBlock };\nexport type { CodeBlockProps, CodeBlockSnippet };\n","import * as React from \"react\";\n\nimport { Card } from \"../primitives/card\";\nimport { cn } from \"../primitives/utils\";\n\nfunction InventorySurface({ className, ...props }: React.ComponentProps<typeof Card>) {\n return (\n <Card\n data-slot=\"inventory-surface\"\n className={cn(\"gap-0 overflow-hidden py-0\", className)}\n {...props}\n />\n );\n}\n\nfunction InventoryDesktop({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-desktop\" className={cn(\"hidden lg:block\", className)} {...props} />;\n}\n\nfunction InventoryMobile({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-mobile\" className={cn(\"divide-y divide-border-subtle lg:hidden\", className)} {...props} />;\n}\n\nexport { InventoryDesktop, InventoryMobile, InventorySurface };\n","import * as React from \"react\";\n\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { cn } from \"../primitives/utils\";\n\ntype MetricBandProps = React.ComponentProps<\"div\"> & {\n columns?: 2 | 3 | 4 | 5;\n};\n\nfunction MetricBand({ columns = 4, className, ...props }: MetricBandProps) {\n return (\n <div\n data-slot=\"metric-band\"\n data-columns={columns}\n className={cn(\n \"grid grid-cols-2 border-b border-border-subtle\",\n columns === 2 && \"lg:grid-cols-2\",\n columns === 3 && \"lg:grid-cols-3\",\n columns === 4 && \"lg:grid-cols-4\",\n columns === 5 && \"lg:grid-cols-5\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype MetricBandItemProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value?: React.ReactNode;\n detail?: React.ReactNode;\n icon?: React.ReactNode;\n iconClassName?: string;\n loading?: boolean;\n};\n\nfunction MetricBandItem({\n label,\n value,\n detail,\n icon,\n iconClassName,\n loading = false,\n className,\n ...props\n}: MetricBandItemProps) {\n return (\n <div\n data-slot=\"metric-band-item\"\n className={cn(\n \"flex min-h-28 flex-col items-start gap-3 border-r border-border-subtle p-4 last:border-r-0 sm:flex-row sm:items-center sm:gap-4 sm:p-5\",\n \"[&:nth-child(-n+2)]:border-b lg:[&:nth-child(-n+2)]:border-b-0\",\n className,\n )}\n {...props}\n >\n {icon ? (\n <div\n className={cn(\n \"flex size-10 shrink-0 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\",\n iconClassName,\n )}\n >\n {icon}\n </div>\n ) : null}\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"text-sm leading-snug text-muted-foreground\">{label}</div>\n {loading ? (\n <Skeleton className=\"h-7 w-14\" />\n ) : (\n <div className=\"text-2xl font-semibold tracking-tight\">{value ?? 0}</div>\n )}\n {detail ? (\n <div className=\"text-[var(--ds-metadata)] leading-snug text-muted-foreground\">\n {detail}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { MetricBand, MetricBandItem };\nexport type { MetricBandItemProps, MetricBandProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageHeaderProps = React.ComponentProps<\"header\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should pass an explicit actions node.\n */\n action?: {\n label: string;\n href: string;\n };\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should use actions.\n */\n actionNode?: React.ReactNode;\n};\n\nfunction PageHeader({\n title,\n description,\n status,\n metadata,\n actions,\n action,\n actionNode,\n className,\n ...props\n}: PageHeaderProps) {\n const resolvedActions =\n actions ??\n actionNode ??\n (action ? (\n <a\n className=\"inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground shadow-xs outline-none transition-colors hover:bg-accent-hover focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\"\n href={action.href}\n >\n {action.label}\n </a>\n ) : null);\n\n return (\n <header\n data-slot=\"page-header\"\n className={cn(\"flex flex-col gap-3 border-b border-border-subtle bg-background px-5 py-4 lg:flex-row lg:items-start lg:justify-between\", className)}\n {...props}\n >\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <h1 className=\"truncate text-[length:var(--ds-page-title)] font-semibold leading-tight\">{title}</h1>\n {status}\n </div>\n {description ? <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{description}</p> : null}\n {metadata ? <div className=\"mt-2 text-[var(--ds-metadata)] text-muted-foreground\">{metadata}</div> : null}\n </div>\n {resolvedActions ? <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{resolvedActions}</div> : null}\n </header>\n );\n}\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageToolbarProps = React.ComponentProps<\"div\"> & {\n search?: React.ReactNode;\n filters?: React.ReactNode;\n viewControls?: React.ReactNode;\n bulkActions?: React.ReactNode;\n};\n\nfunction PageToolbar({\n search,\n filters,\n viewControls,\n bulkActions,\n className,\n children,\n ...props\n}: PageToolbarProps) {\n return (\n <div\n data-slot=\"page-toolbar\"\n className={cn(\"grid gap-2 border-b border-border-subtle bg-background px-5 py-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center\", className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center\">\n {search ? <div className=\"min-w-0 flex-1 sm:min-w-48 sm:max-w-sm\">{search}</div> : null}\n {filters ? <div className=\"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:flex-wrap sm:items-center\">{filters}</div> : null}\n </div>\n <div className=\"flex min-h-[var(--ds-control-height)] flex-wrap items-center gap-2 lg:justify-end\">\n {bulkActions ? (\n <div data-slot=\"page-toolbar-bulk-actions\" className=\"contents\">\n {bulkActions}\n </div>\n ) : null}\n {viewControls}\n {children}\n </div>\n </div>\n );\n}\n\nexport { PageToolbar };\nexport type { PageToolbarProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n appearanceOptions,\n applyConsciaPreferences,\n densityOptions,\n type ConsciaAppearance,\n type ConsciaDensity,\n} from \"../foundation/preferences\";\nimport { cn } from \"../primitives/utils\";\n\nconst APPEARANCE_KEY = \"conscia-appearance:v1\";\nconst DENSITY_KEY = \"conscia-density:v1\";\nconst PREFERENCE_EVENT = \"conscia-preferences\";\nconst volatilePreferences = new Map<string, string>();\n\nfunction readPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n if (typeof window === \"undefined\") {\n return fallback;\n }\n\n try {\n const value =\n window.localStorage.getItem(key) ?? volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n } catch {\n const value = volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n }\n}\n\nfunction writePreference(key: string, value: string) {\n volatilePreferences.set(key, value);\n\n try {\n window.localStorage.setItem(key, value);\n } catch {\n // Preferences still apply for this session when storage is unavailable.\n }\n\n window.dispatchEvent(new Event(PREFERENCE_EVENT));\n}\n\nfunction useStoredPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n return React.useSyncExternalStore(\n (onStoreChange) => {\n window.addEventListener(\"storage\", onStoreChange);\n window.addEventListener(PREFERENCE_EVENT, onStoreChange);\n return () => {\n window.removeEventListener(\"storage\", onStoreChange);\n window.removeEventListener(PREFERENCE_EVENT, onStoreChange);\n };\n },\n () => readPreference(key, fallback, allowedValues),\n () => fallback,\n );\n}\n\nfunction useConsciaPreferences() {\n const appearance = useStoredPreference<ConsciaAppearance>(\n APPEARANCE_KEY,\n \"system\",\n appearanceOptions,\n );\n const density = useStoredPreference<ConsciaDensity>(\n DENSITY_KEY,\n \"comfortable\",\n densityOptions,\n );\n\n return { appearance, density };\n}\n\nfunction DesignSystemPreferenceSync() {\n const { appearance, density } = useConsciaPreferences();\n\n React.useEffect(() => {\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const sync = () =>\n applyConsciaPreferences(\n document.documentElement,\n appearance,\n density,\n media.matches,\n );\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [appearance, density]);\n\n return null;\n}\n\nfunction AppearanceControl({ className }: { className?: string }) {\n const { appearance } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Appearance\"\n value={appearance}\n values={appearanceOptions}\n onChange={(value) => writePreference(APPEARANCE_KEY, value)}\n />\n );\n}\n\nfunction DensityControl({ className }: { className?: string }) {\n const { density } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Density\"\n value={density}\n values={densityOptions}\n onChange={(value) => writePreference(DENSITY_KEY, value)}\n />\n );\n}\n\nfunction DesignPreferenceControls({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col gap-3 text-sm\", className)}>\n <AppearanceControl />\n <DensityControl />\n </div>\n );\n}\n\nfunction SegmentedControl({\n className,\n label,\n value,\n values,\n onChange,\n}: {\n className?: string;\n label: string;\n value: string;\n values: string[];\n onChange: (value: string) => void;\n}) {\n return (\n <fieldset className={cn(\"flex flex-col gap-2\", className)}>\n <legend className=\"text-[var(--ds-metadata)] font-medium text-muted-foreground\">\n {label}\n </legend>\n <div className=\"inline-flex rounded-[var(--ds-radius-control)] bg-muted p-1\">\n {values.map((item) => (\n <button\n key={item}\n type=\"button\"\n aria-pressed={value === item}\n suppressHydrationWarning\n onClick={() => onChange(item)}\n className=\"h-7 rounded-[calc(var(--ds-radius-control)-2px)] px-2.5 text-[var(--ds-metadata)] font-medium capitalize text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-pressed:bg-background aria-pressed:text-foreground aria-pressed:shadow-xs\"\n >\n {item}\n </button>\n ))}\n </div>\n </fieldset>\n );\n}\n\nexport {\n AppearanceControl,\n DensityControl,\n DesignPreferenceControls,\n DesignSystemPreferenceSync,\n useConsciaPreferences,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ProviderMarkProps = React.ComponentProps<\"div\"> & {\n name: string;\n shortName: string;\n description?: React.ReactNode;\n size?: \"sm\" | \"default\";\n};\n\nfunction ProviderMark({ name, shortName, description, size = \"default\", className, ...props }: ProviderMarkProps) {\n return (\n <div data-slot=\"provider-mark\" className={cn(\"flex min-w-0 items-center gap-3\", className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface-muted font-semibold tracking-tight text-foreground\",\n size === \"sm\" ? \"size-8 text-[10px]\" : \"size-10 text-xs\",\n )}\n >\n {shortName}\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium text-foreground\">{name}</div>\n {description ? <div className=\"mt-0.5 truncate text-[var(--ds-metadata)] text-muted-foreground\">{description}</div> : null}\n </div>\n </div>\n );\n}\n\nexport { ProviderMark };\nexport type { ProviderMarkProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ResourceSummaryProps = React.ComponentProps<\"section\"> & {\n variant?: \"plain\" | \"surface\";\n title?: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction ResourceSummary({\n variant = \"plain\",\n title,\n description,\n status,\n metadata,\n actions,\n className,\n children,\n ...props\n}: ResourceSummaryProps) {\n return (\n <section\n data-slot=\"resource-summary\"\n className={cn(\n \"px-5 py-4\",\n variant === \"plain\" && \"border-b border-border-subtle bg-background\",\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"min-w-0\">\n {title || status ? (\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n {title ? (\n <h2 className=\"truncate text-[var(--ds-section-title)] font-semibold\">\n {title}\n </h2>\n ) : null}\n {status}\n </div>\n ) : null}\n {description ? (\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">\n {description}\n </p>\n ) : null}\n {metadata ? (\n <div className=\"mt-2 text-[var(--ds-metadata)] text-muted-foreground\">\n {metadata}\n </div>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n {actions}\n </div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction DetailSections({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"detail-sections\"\n className={cn(\"flex flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\ntype DetailSectionProps = React.ComponentProps<\"section\"> & {\n variant?: \"surface\" | \"open\";\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction DetailSection({\n variant = \"surface\",\n title,\n description,\n actions,\n className,\n children,\n ...props\n}: DetailSectionProps) {\n return (\n <section\n data-slot=\"detail-section\"\n className={cn(\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n variant === \"open\" && \"border-b border-border-subtle pb-[var(--ds-space-section)]\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[var(--ds-section-title)] font-semibold\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">\n {description}\n </p>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction KeyValueList({\n className,\n ...props\n}: React.ComponentProps<\"dl\">) {\n return (\n <dl\n data-slot=\"key-value-list\"\n className={cn(\"grid gap-3 text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction KeyValueItem({\n label,\n value,\n breakValue = false,\n}: {\n label: React.ReactNode;\n value: React.ReactNode;\n breakValue?: boolean;\n}) {\n return (\n <div data-slot=\"key-value-item\" className=\"flex justify-between gap-4\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd\n className={cn(\n \"text-right font-medium\",\n breakValue && \"break-all\",\n )}\n >\n {value}\n </dd>\n </div>\n );\n}\n\nexport {\n DetailSection,\n DetailSections,\n KeyValueItem,\n KeyValueList,\n ResourceSummary,\n};\nexport type { DetailSectionProps, ResourceSummaryProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../primitives/collapsible\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuTrigger,\n} from \"../primitives/dropdown-menu\";\nimport { cn } from \"../primitives/utils\";\nimport {\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n useAppShell,\n} from \"./app-shell\";\n\nexport type SidebarNavigationItem = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n active?: boolean;\n startsSection?: boolean;\n};\n\nexport type SidebarNavigationSection = Omit<\n SidebarNavigationItem,\n \"active\"\n> & {\n active?: boolean;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationEntry =\n | SidebarNavigationItem\n | SidebarNavigationSection;\n\nexport type SidebarNavigationLinkProps = {\n \"aria-current\"?: \"page\";\n \"aria-label\": string;\n children: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\ntype SidebarNavigationProps = {\n entries: SidebarNavigationEntry[];\n renderLink: (\n item: SidebarNavigationItem,\n props: SidebarNavigationLinkProps,\n ) => React.ReactElement;\n onNavigate?: () => void;\n storageKey?: string;\n className?: string;\n};\n\nfunction isSection(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection {\n return \"items\" in entry;\n}\n\nfunction readOpenSections(storageKey?: string) {\n if (!storageKey || typeof window === \"undefined\") {\n return {};\n }\n\n try {\n const storedValue = window.localStorage.getItem(storageKey);\n\n if (!storedValue) {\n return {};\n }\n\n const parsedValue: unknown = JSON.parse(storedValue);\n return typeof parsedValue === \"object\" && parsedValue !== null\n ? (parsedValue as Record<string, boolean>)\n : {};\n } catch {\n return {};\n }\n}\n\nfunction SidebarNavigation({\n entries,\n renderLink,\n onNavigate,\n storageKey,\n className,\n}: SidebarNavigationProps) {\n const { isMobile, sidebarSide, sidebarState } = useAppShell();\n const [openSections, setOpenSections] = React.useState<\n Record<string, boolean>\n >({});\n const storageReady = React.useRef(false);\n\n React.useEffect(() => {\n storageReady.current = false;\n const storedSections = readOpenSections(storageKey);\n\n queueMicrotask(() => {\n storageReady.current = true;\n setOpenSections(storedSections);\n });\n }, [storageKey]);\n\n React.useEffect(() => {\n if (\n !storageReady.current ||\n !storageKey ||\n !entries.some(isSection)\n ) {\n return;\n }\n\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(openSections));\n } catch {\n // Navigation remains functional when storage is unavailable.\n }\n }, [entries, openSections, storageKey]);\n\n const handleNavigate = React.useCallback<\n React.MouseEventHandler<HTMLAnchorElement>\n >(() => {\n onNavigate?.();\n }, [onNavigate]);\n\n return (\n <nav\n data-slot=\"sidebar-navigation\"\n aria-label=\"Primary navigation\"\n className={cn(\"flex flex-col gap-1\", className)}\n >\n {entries.map((entry) => {\n if (!isSection(entry)) {\n return (\n <NavigationGroup\n key={entry.id}\n className={entry.startsSection ? \"mt-2\" : undefined}\n >\n <NavigationItem asChild active={entry.active} tooltip={entry.label}>\n {renderLink(entry, {\n \"aria-current\": entry.active ? \"page\" : undefined,\n \"aria-label\": entry.label,\n onClick: handleNavigate,\n children: (\n <>\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n </>\n ),\n })}\n </NavigationItem>\n </NavigationGroup>\n );\n }\n\n const sectionOpen = (openSections[entry.id] ?? false) || entry.active;\n\n if (sidebarState === \"collapsed\" && !isMobile) {\n return (\n <DropdownMenu key={entry.id}>\n <NavigationGroup\n className={entry.startsSection ? \"mt-2\" : undefined}\n >\n <DropdownMenuTrigger asChild>\n <NavigationItem\n active={entry.active}\n aria-label={`${entry.label} menu`}\n >\n {entry.icon}\n <span className=\"sr-only\">{entry.label}</span>\n </NavigationItem>\n </DropdownMenuTrigger>\n </NavigationGroup>\n <DropdownMenuContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"start\"\n sideOffset={8}\n className=\"min-w-56 rounded-[var(--ds-radius-surface)] p-1.5\"\n >\n <DropdownMenuLabel className=\"px-2 py-1.5 font-semibold text-muted-foreground\">\n {entry.label}\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {entry.items.map((item) => (\n <DropdownMenuItem\n key={item.id}\n asChild\n className={cn(\n \"min-h-9 cursor-pointer rounded-[var(--ds-radius-control)] [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75]\",\n item.active &&\n \"bg-selection-background text-selection-foreground shadow-[inset_2px_0_0_var(--selection-indicator)] focus:bg-selection-background focus:text-selection-foreground\",\n )}\n >\n {renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": item.label,\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n </>\n ),\n })}\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <Collapsible\n key={entry.id}\n open={sectionOpen}\n onOpenChange={(open) =>\n setOpenSections((current) => ({\n ...current,\n [entry.id]: open,\n }))\n }\n className={cn(\n \"group/collapsible\",\n entry.startsSection && \"mt-2\",\n )}\n >\n <NavigationGroup>\n <CollapsibleTrigger asChild>\n <NavigationItem\n active={entry.active}\n tooltip={entry.label}\n aria-label={entry.label}\n aria-expanded={sectionOpen}\n >\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n <ChevronRight className=\"ml-auto transition-transform duration-150 ease-out group-data-[sidebar-state=collapsed]/shell:hidden group-data-[state=open]/collapsible:rotate-90\" />\n </NavigationItem>\n </CollapsibleTrigger>\n <CollapsibleContent\n data-slot=\"sidebar-collapsible-content\"\n className=\"overflow-hidden\"\n >\n <NavigationSubList>\n {entry.items.map((item) => (\n <NavigationSubItem\n key={item.id}\n asChild\n active={item.active}\n >\n {renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": item.label,\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n </>\n ),\n })}\n </NavigationSubItem>\n ))}\n </NavigationSubList>\n </CollapsibleContent>\n </NavigationGroup>\n </Collapsible>\n );\n })}\n </nav>\n );\n}\n\nexport { SidebarNavigation };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype StateViewProps = React.ComponentProps<\"div\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n icon?: React.ReactNode;\n};\n\nfunction StateView({ title, description, action, icon, className, ...props }: StateViewProps) {\n return (\n <div\n data-slot=\"state-view\"\n className={cn(\"flex min-h-72 flex-col items-center justify-center gap-3 border-b px-6 py-12 text-center\", className)}\n {...props}\n >\n {icon ? (\n <div className=\"flex size-10 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\">\n {icon}\n </div>\n ) : null}\n <h2 className=\"text-base font-semibold\">{title}</h2>\n {description ? <p className=\"max-w-md text-sm text-muted-foreground\">{description}</p> : null}\n {action ? <div className=\"mt-1\">{action}</div> : null}\n </div>\n );\n}\n\nfunction LoadingRows({\n rows = 6,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div data-slot=\"loading-rows\" className=\"border-b\">\n {Array.from({ length: rows }).map((_, index) => (\n <div\n key={index}\n className=\"grid h-[var(--ds-row-height)] items-center gap-4 border-b px-5 last:border-b-0\"\n style={{ gridTemplateColumns: `2fr repeat(${Math.max(columns - 1, 1)}, minmax(5rem, 1fr))` }}\n >\n {Array.from({ length: columns }).map((_, columnIndex) => (\n <div\n key={columnIndex}\n className={cn(\n \"h-3 rounded bg-muted\",\n columnIndex === 0 ? \"w-44\" : \"w-24\",\n )}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nfunction ErrorState({ title, description, action, className, ...props }: StateViewProps) {\n return (\n <StateView\n title={title}\n description={description}\n action={action}\n className={cn(\"bg-danger-background/60\", className)}\n role=\"alert\"\n aria-live=\"assertive\"\n {...props}\n />\n );\n}\n\nexport { ErrorState, LoadingRows, StateView };\nexport type { StateViewProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ValueMeterProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value: number;\n maximum?: number | null;\n valueLabel?: React.ReactNode;\n detail?: React.ReactNode;\n tone?: \"neutral\" | \"success\" | \"warning\" | \"danger\";\n};\n\nfunction ValueMeter({\n label,\n value,\n maximum,\n valueLabel,\n detail,\n tone = \"neutral\",\n className,\n ...props\n}: ValueMeterProps) {\n const labelId = React.useId();\n const hasMaximum = typeof maximum === \"number\" && maximum > 0;\n const boundedValue = hasMaximum\n ? Math.min(maximum, Math.max(0, value))\n : value;\n const percentage = hasMaximum\n ? (boundedValue / maximum) * 100\n : null;\n const resolvedValueLabel =\n valueLabel ??\n (hasMaximum ? `${boundedValue} of ${maximum}` : String(boundedValue));\n\n return (\n <div\n data-slot=\"value-meter\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n >\n <div className=\"flex items-baseline justify-between gap-4 text-sm\">\n <span id={labelId} className=\"font-medium text-foreground\">{label}</span>\n <span className=\"text-muted-foreground\">{resolvedValueLabel}</span>\n </div>\n {percentage === null ? null : (\n <div\n role=\"progressbar\"\n aria-labelledby={labelId}\n aria-valuemin={0}\n aria-valuemax={maximum ?? undefined}\n aria-valuenow={boundedValue}\n className=\"h-2 overflow-hidden rounded-full bg-surface-muted\"\n >\n <div\n className={cn(\n \"h-full rounded-full bg-neutral-foreground transition-[width]\",\n tone === \"success\" && \"bg-success-foreground\",\n tone === \"warning\" && \"bg-warning-foreground\",\n tone === \"danger\" && \"bg-danger-foreground\",\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )}\n {detail ? <div className=\"text-xs text-muted-foreground\">{detail}</div> : null}\n </div>\n );\n}\n\nexport { ValueMeter };\nexport type { ValueMeterProps };\n"],"mappings":"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","names":["jsx","jsxs","table","jsx","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","ChevronRight","Fragment","jsx","jsxs","ChevronRight","jsx","jsxs","_","React","jsx","jsxs"]}
|
package/dist/foundation.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@import "@fontsource-variable/inter/index.css";
|
|
2
|
+
|
|
1
3
|
@custom-variant dark (&:is(.dark *));
|
|
2
4
|
|
|
3
5
|
@keyframes ds-sidebar-expand {
|
|
@@ -135,7 +137,7 @@
|
|
|
135
137
|
--sidebar-group-label: color-mix(in oklab, var(--sidebar-foreground) 72%, transparent);
|
|
136
138
|
--sidebar-group-count: color-mix(in oklab, var(--sidebar-foreground) 62%, transparent);
|
|
137
139
|
--sidebar-focus-ring: var(--ring);
|
|
138
|
-
--font-sans: "
|
|
140
|
+
--font-sans: "Inter Variable", "Inter", "Aptos", "Segoe UI", Arial, sans-serif;
|
|
139
141
|
--ds-space-inline: 0.5rem;
|
|
140
142
|
--ds-space-control: 0.625rem;
|
|
141
143
|
--ds-field-gap: 1.25rem;
|
|
@@ -157,16 +159,17 @@
|
|
|
157
159
|
--ds-control-height-sm: 2rem;
|
|
158
160
|
--ds-control-height-lg: 2.75rem;
|
|
159
161
|
--ds-control-padding-x: 1rem;
|
|
162
|
+
--ds-topbar-height: 3.5rem;
|
|
160
163
|
--ds-sidebar-width: 16rem;
|
|
161
164
|
--ds-sidebar-width-mobile: 18rem;
|
|
162
165
|
--ds-sidebar-item-height: 2.25rem;
|
|
163
166
|
--ds-sidebar-item-height-touch: 2.75rem;
|
|
164
|
-
--ds-sidebar-header-height:
|
|
167
|
+
--ds-sidebar-header-height: var(--ds-topbar-height);
|
|
165
168
|
--ds-sidebar-content-padding-x: 0.625rem;
|
|
166
169
|
--ds-sidebar-content-padding-y: 0.75rem;
|
|
167
170
|
--ds-sidebar-footer-padding: 0.625rem;
|
|
168
171
|
--ds-sidebar-group-gap: 0.25rem;
|
|
169
|
-
--ds-sidebar-group-label-size:
|
|
172
|
+
--ds-sidebar-group-label-size: var(--ds-field-label-size);
|
|
170
173
|
--ds-surface-padding: 1.25rem;
|
|
171
174
|
--ds-table-header-height: 2.25rem;
|
|
172
175
|
--ds-row-height: 2.75rem;
|
package/dist/index.js
CHANGED
package/dist/patterns/index.d.ts
CHANGED
|
@@ -113,6 +113,10 @@ declare function NavigationSubItem({ asChild, active, className, ...props }: Rea
|
|
|
113
113
|
active?: boolean;
|
|
114
114
|
}): React.JSX.Element;
|
|
115
115
|
declare function NavigationSubList({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
116
|
+
/**
|
|
117
|
+
* Place this control inside TopBar, not AppSidebar, so it remains available
|
|
118
|
+
* after the sidebar collapses and in the mobile drawer layout.
|
|
119
|
+
*/
|
|
116
120
|
declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
|
|
117
121
|
type SidebarSearchProps = Omit<React.ComponentProps<typeof Input>, "type"> & {
|
|
118
122
|
expanded?: boolean;
|
package/dist/patterns/index.js
CHANGED
package/dist/standalone.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scroll-snap-strictness:proximity;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--leading-tight:1.25;--leading-snug:1.375;--radius-xs:.125rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-sidebar-active:var(--sidebar-active)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{min-height:100%}body{background:var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);font-size:var(--ds-body);text-rendering:optimizelegibility;font-weight:380;line-height:1.5}h1,h2,h3,h4{color:var(--foreground);letter-spacing:0;font-weight:570}button,input,select,textarea{font:inherit}::selection{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in oklab, var(--primary) 22%, transparent)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components{[data-slot=tabs-list][data-scroll-position=start],[data-slot=navigation-tabs-list][data-scroll-position=start]{-webkit-mask-image:linear-gradient(90deg,#000 0 calc(100% - 1.5rem),#0000 100%);mask-image:linear-gradient(90deg,#000 0 calc(100% - 1.5rem),#0000 100%)}[data-slot=tabs-list][data-scroll-position=middle],[data-slot=navigation-tabs-list][data-scroll-position=middle]{-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem calc(100% - 1.5rem),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem calc(100% - 1.5rem),#0000 100%)}[data-slot=tabs-list][data-scroll-position=end],[data-slot=navigation-tabs-list][data-scroll-position=end]{-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem 100%);mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem 100%)}}@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-8{right:calc(var(--spacing) * 8)}.bottom-0{bottom:0}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-2{grid-column-start:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-\[var\(--ds-field-message-gap\)\]{margin-top:var(--ds-field-message-gap)}.mt-auto{margin-top:auto}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\[var\(--ds-control-height\)\]{width:var(--ds-control-height);height:var(--ds-control-height)}.size-full{width:100%;height:100%}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-\[var\(--ds-control-height\)\]{height:var(--ds-control-height)}.h-\[var\(--ds-control-height-lg\)\]{height:var(--ds-control-height-lg)}.h-\[var\(--ds-control-height-sm\)\]{height:var(--ds-control-height-sm)}.h-\[var\(--ds-field-control-height\)\]{height:var(--ds-field-control-height)}.h-\[var\(--ds-row-height\)\]{height:var(--ds-row-height)}.h-\[var\(--ds-tab-rail-height\)\]{height:var(--ds-tab-rail-height)}.h-\[var\(--ds-tab-rail-height-compact\)\]{height:var(--ds-tab-rail-height-compact)}.h-\[var\(--ds-table-header-height\)\]{height:var(--ds-table-header-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[32rem\]{max-height:32rem}.max-h-\[min\(42rem\,calc\(100vh-2rem\)\)\]{max-height:min(42rem,100vh - 2rem)}.min-h-0{min-height:0}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-\[var\(--ds-control-height\)\]{min-height:var(--ds-control-height)}.min-h-\[var\(--ds-sidebar-header-height\)\]{min-height:var(--ds-sidebar-header-height)}.min-h-\[var\(--ds-sidebar-item-height-touch\)\]{min-height:var(--ds-sidebar-item-height-touch)}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-24{width:calc(var(--spacing) * 24)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-\[4\.5rem\]{width:4.5rem}.w-\[var\(--ds-app-sidebar-width\)\]{width:var(--ds-app-sidebar-width)}.w-\[var\(--ds-sidebar-width-mobile\)\]{width:var(--ds-sidebar-width-mobile)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[48rem\]{max-width:48rem}.max-w-\[64rem\]{max-width:64rem}.max-w-\[86rem\]{max-width:86rem}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-72{min-width:calc(var(--spacing) * 72)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-start{scroll-snap-align:start}.scroll-my-1{scroll-margin-block:var(--spacing)}.scroll-px-2{scroll-padding-inline:calc(var(--spacing) * 2)}.\[scrollbar-width\:none\]{scrollbar-width:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[1rem_minmax\(0\,1fr\)\]{grid-template-columns:1rem minmax(0,1fr)}.grid-cols-\[2\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:2.5rem minmax(0,1fr)}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[var\(--ds-field-gap\)\]{gap:var(--ds-field-gap)}.gap-\[var\(--ds-field-label-gap\)\]{gap:var(--ds-field-label-gap)}.gap-\[var\(--ds-sidebar-group-gap\)\]{gap:var(--ds-sidebar-group-gap)}.gap-\[var\(--ds-space-control\)\]{gap:var(--ds-space-control)}.gap-\[var\(--ds-space-field\)\]{gap:var(--ds-space-field)}.gap-\[var\(--ds-space-group\)\]{gap:var(--ds-space-group)}.gap-\[var\(--ds-space-section\)\]{gap:var(--ds-space-section)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border-subtle>:not(:last-child)){border-color:var(--border-subtle)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-x-contain{overscroll-behavior-x:contain}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--ds-radius-control\)-2px\)\]{border-radius:calc(var(--ds-radius-control) - 2px)}.rounded-\[var\(--ds-field-control-radius\)\]{border-radius:var(--ds-field-control-radius)}.rounded-\[var\(--ds-radius-control\)\]{border-radius:var(--ds-radius-control)}.rounded-\[var\(--ds-radius-surface\)\]{border-radius:var(--ds-radius-surface)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-\[var\(--ds-radius-control\)\]{border-top-left-radius:var(--ds-radius-control);border-top-right-radius:var(--ds-radius-control)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-border-default{border-color:var(--border-default)}.border-border-subtle{border-color:var(--border-subtle)}.border-brand-secondary-border{border-color:var(--brand-secondary-border)}.border-card{border-color:var(--card)}.border-danger-border{border-color:var(--danger-border)}.border-information-border{border-color:var(--information-border)}.border-input{border-color:var(--input)}.border-neutral-border{border-color:var(--neutral-border)}.border-primary{border-color:var(--primary)}.border-selection-border{border-color:var(--selection-border)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-success-border{border-color:var(--success-border)}.border-transparent{border-color:#0000}.border-warning-border{border-color:var(--warning-border)}.bg-background,.bg-background\/96{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/96{background-color:color-mix(in oklab, var(--background) 96%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-border-subtle{background-color:var(--border-subtle)}.bg-brand{background-color:var(--brand)}.bg-brand-secondary-background{background-color:var(--brand-secondary-background)}.bg-canvas{background-color:var(--canvas)}.bg-card{background-color:var(--card)}.bg-danger{background-color:var(--danger)}.bg-danger-background,.bg-danger-background\/60{background-color:var(--danger-background)}@supports (color:color-mix(in lab, red, red)){.bg-danger-background\/60{background-color:color-mix(in oklab, var(--danger-background) 60%, transparent)}}.bg-danger-foreground{background-color:var(--danger-foreground)}.bg-foreground{background-color:var(--foreground)}.bg-information-background{background-color:var(--information-background)}.bg-muted{background-color:var(--muted)}.bg-neutral-background{background-color:var(--neutral-background)}.bg-neutral-foreground{background-color:var(--neutral-foreground)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-selection-background{background-color:var(--selection-background)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar-active{background-color:var(--sidebar-active)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sidebar-canvas{background-color:var(--sidebar-canvas)}.bg-sidebar-content{background-color:var(--sidebar-content)}.bg-sidebar-footer{background-color:var(--sidebar-footer)}.bg-sidebar-header{background-color:var(--sidebar-header)}.bg-sidebar-hover{background-color:var(--sidebar-hover)}.bg-sidebar-search{background-color:var(--sidebar-search)}.bg-success-background{background-color:var(--success-background)}.bg-success-foreground{background-color:var(--success-foreground)}.bg-surface{background-color:var(--surface)}.bg-surface-floating{background-color:var(--surface-floating)}.bg-surface-muted{background-color:var(--surface-muted)}.bg-surface-overlay{background-color:var(--surface-overlay)}.bg-surface-raised{background-color:var(--surface-raised)}.bg-transparent{background-color:#0000}.bg-warning-background{background-color:var(--warning-background)}.bg-warning-foreground{background-color:var(--warning-foreground)}.fill-foreground{fill:var(--foreground)}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[var\(--ds-sidebar-footer-padding\)\]{padding:var(--ds-sidebar-footer-padding)}.p-\[var\(--ds-space-section\)\]{padding:var(--ds-space-section)}.p-\[var\(--ds-surface-padding\)\]{padding:var(--ds-surface-padding)}.px-0{padding-inline:0}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-9{padding-inline:calc(var(--spacing) * 9)}.px-\[var\(--ds-field-control-padding-x\)\]{padding-inline:var(--ds-field-control-padding-x)}.px-\[var\(--ds-sidebar-content-padding-x\)\]{padding-inline:var(--ds-sidebar-content-padding-x)}.px-\[var\(--ds-surface-padding\)\]{padding-inline:var(--ds-surface-padding)}.px-\[var\(--ds-tab-padding-x\)\]{padding-inline:var(--ds-tab-padding-x)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-\[var\(--ds-sidebar-content-padding-y\)\]{padding-block:var(--ds-sidebar-content-padding-y)}.py-\[var\(--ds-space-section\)\]{padding-block:var(--ds-space-section)}.py-\[var\(--ds-surface-padding\)\]{padding-block:var(--ds-surface-padding)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:var(--spacing)}.pb-\[var\(--ds-space-section\)\]{padding-bottom:var(--ds-space-section)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[length\:var\(--ds-field-label-size\)\]{font-size:var(--ds-field-label-size)}.text-\[length\:var\(--ds-menu-item-size\)\]{font-size:var(--ds-menu-item-size)}.text-\[length\:var\(--ds-menu-label-size\)\]{font-size:var(--ds-menu-label-size)}.text-\[length\:var\(--ds-metadata\)\]{font-size:var(--ds-metadata)}.text-\[length\:var\(--ds-page-title\)\]{font-size:var(--ds-page-title)}.text-\[length\:var\(--ds-sidebar-group-label-size\)\]{font-size:var(--ds-sidebar-group-label-size)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[var\(--ds-field-label-line-height\)\]{--tw-leading:var(--ds-field-label-line-height);line-height:var(--ds-field-label-line-height)}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--ds-metadata\)\]{color:var(--ds-metadata)}.text-\[var\(--ds-page-title\)\]{color:var(--ds-page-title)}.text-\[var\(--ds-section-title\)\]{color:var(--ds-section-title)}.text-background{color:var(--background)}.text-brand-foreground{color:var(--brand-foreground)}.text-brand-secondary{color:var(--brand-secondary)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-danger-foreground{color:var(--danger-foreground)}.text-foreground{color:var(--foreground)}.text-information-foreground{color:var(--information-foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral-foreground{color:var(--neutral-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-selection-foreground{color:var(--selection-foreground)}.text-sidebar-active-foreground{color:var(--sidebar-active-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-sidebar-group-count{color:var(--sidebar-group-count)}.text-sidebar-group-label{color:var(--sidebar-group-label)}.text-sidebar-icon{color:var(--sidebar-icon)}.text-sidebar-metadata-text{color:var(--sidebar-metadata-text)}.text-sidebar-primary-text{color:var(--sidebar-primary-text)}.text-sidebar-secondary-text{color:var(--sidebar-secondary-text)}.text-success-foreground{color:var(--success-foreground)}.text-text-link{color:var(--text-link)}.text-text-muted{color:var(--text-muted)}.text-text-primary{color:var(--text-primary)}.text-text-secondary{color:var(--text-secondary)}.text-text-supporting{color:var(--text-supporting)}.text-warning-foreground{color:var(--warning-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-\[inset_2px_0_0_var\(--selection-indicator\)\]{--tw-shadow:inset 2px 0 0 var(--tw-shadow-color,var(--selection-indicator));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_3px_0_0_var\(--sidebar-active-indicator\)\]{--tw-shadow:inset 3px 0 0 var(--tw-shadow-color,var(--sidebar-active-indicator));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--ds-shadow-floating\)\]{--tw-shadow:var(--ds-shadow-floating);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--ds-shadow-raised\)\]{--tw-shadow:var(--ds-shadow-raised);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[background-color\,color\,box-shadow\]{transition-property:background-color,color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[padding\]{transition-property:padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--ds-app-sidebar-width-mobile\:var\(--ds-sidebar-width-mobile\)\]{--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)}.\[--ds-app-sidebar-width\:var\(--ds-sidebar-width\)\]{--ds-app-sidebar-width:var(--ds-sidebar-width)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[sidebar-state\=collapsed\]\/shell\:hidden:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){display:none}.group-data-\[sidebar-state\=collapsed\]\/shell\:w-\[var\(--ds-app-sidebar-width\)\]:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){width:var(--ds-app-sidebar-width)}.group-data-\[sidebar-state\=collapsed\]\/shell\:justify-center:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){justify-content:center}.group-data-\[sidebar-state\=collapsed\]\/shell\:px-0:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){padding-inline:0}.group-data-\[size\=default\]\/switch\:size-4:is(:where(.group\/switch)[data-size=default] *){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/switch\:size-3:is(:where(.group\/switch)[data-size=sm] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[state\=open\]\/collapsible\:rotate-90:is(:where(.group\/collapsible)[data-state=open] *){rotate:90deg}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-x-0:after{content:var(--tw-content);inset-inline:0}.after\:bottom-0:after{content:var(--tw-content);bottom:0}.after\:h-0\.5:after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.after\:bg-transparent:after{content:var(--tw-content);background-color:#0000}.after\:transition-colors:after{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:bg-accent-hover:hover{background-color:var(--accent-hover)}.hover\:bg-danger\/90:hover{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-danger\/90:hover{background-color:color-mix(in oklab, var(--danger) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:bg-sidebar-active:hover{background-color:var(--sidebar-active)}.hover\:bg-sidebar-hover:hover{background-color:var(--sidebar-hover)}.hover\:bg-surface-muted:hover,.hover\:bg-surface-muted\/70:hover{background-color:var(--surface-muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-muted\/70:hover{background-color:color-mix(in oklab, var(--surface-muted) 70%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-sidebar-active-foreground:hover{color:var(--sidebar-active-foreground)}.hover\:text-sidebar-primary-text:hover{color:var(--sidebar-primary-text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-selection-background:focus{background-color:var(--selection-background)}.focus\:bg-surface-muted:focus{background-color:var(--surface-muted)}.focus\:text-foreground:focus{color:var(--foreground)}.focus\:text-selection-foreground:focus{color:var(--selection-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:ring-offset-background:focus{--tw-ring-offset-color:var(--background)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-0:focus-visible{border-style:var(--tw-border-style);border-width:0}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-surface-muted:focus-visible{background-color:var(--surface-muted)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-danger\/20:focus-visible{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-danger\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.focus-visible\:ring-ring\/45:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/45:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 45%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 60%, transparent)}}.focus-visible\:ring-sidebar-focus-ring:focus-visible{--tw-ring-color:var(--sidebar-focus-ring)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\:bg-accent-active:active{background-color:var(--accent-active)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2:has(>svg){padding-inline:calc(var(--spacing) * 2)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-3\.5:has(>svg){padding-inline:calc(var(--spacing) * 3.5)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-danger[aria-invalid=true]{border-color:var(--danger)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-danger\/20[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-danger\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-pressed\:bg-background[aria-pressed=true]{background-color:var(--background)}.aria-pressed\:text-foreground[aria-pressed=true]{color:var(--foreground)}.aria-pressed\:shadow-xs[aria-pressed=true]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[active\=false\]\:text-muted-foreground[data-active=false]{color:var(--muted-foreground)}@media (hover:hover){.data-\[active\=false\]\:hover\:text-foreground[data-active=false]:hover{color:var(--foreground)}}.data-\[active\=true\]\:bg-selection-background[data-active=true]{background-color:var(--selection-background)}.data-\[active\=true\]\:bg-surface-muted[data-active=true]{background-color:var(--surface-muted)}.data-\[active\=true\]\:font-semibold[data-active=true]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[active\=true\]\:text-selection-foreground[data-active=true]{color:var(--selection-foreground)}.data-\[active\=true\]\:after\:bg-selection-indicator[data-active=true]:after{content:var(--tw-content);background-color:var(--selection-indicator)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[inset\=true\]\:pl-8[data-inset=true]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[sidebar-state\=collapsed\]\:\[--ds-app-sidebar-width\:3\.5rem\][data-sidebar-state=collapsed]{--ds-app-sidebar-width:3.5rem}.data-\[size\=default\]\:h-\[1\.15rem\][data-size=default]{height:1.15rem}.data-\[size\=default\]\:h-\[var\(--ds-field-control-height\)\][data-size=default]{height:var(--ds-field-control-height)}.data-\[size\=default\]\:w-8[data-size=default]{width:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-3\.5[data-size=sm]{height:calc(var(--spacing) * 3.5)}.data-\[size\=sm\]\:h-\[var\(--ds-control-height-sm\)\][data-size=sm]{height:var(--ds-control-height-sm)}.data-\[size\=sm\]\:w-6[data-size=sm]{width:calc(var(--spacing) * 6)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:bg-selection-background[data-state=active]{background-color:var(--selection-background)}.data-\[state\=active\]\:font-semibold[data-state=active]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:text-selection-foreground[data-state=active]{color:var(--selection-foreground)}.data-\[state\=active\]\:shadow-xs[data-state=active]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=active\]\:after\:bg-selection-indicator[data-state=active]:after{content:var(--tw-content);background-color:var(--selection-indicator)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=selected\]\:bg-accent-background[data-state=selected]{background-color:var(--accent-background)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-danger-foreground[data-variant=destructive]{color:var(--danger-foreground)}.data-\[variant\=destructive\]\:focus\:bg-danger-background[data-variant=destructive]:focus{background-color:var(--danger-background)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/88{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/88{background-color:color-mix(in oklab, var(--background) 88%, transparent)}}}@media (min-width:40rem){.sm\:w-auto{width:auto}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-48{min-width:calc(var(--spacing) * 48)}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.data-\[size\=default\]\:sm\:max-w-lg[data-size=default]{max-width:var(--container-lg)}.data-\[size\=large\]\:sm\:max-w-3xl[data-size=large]{max-width:var(--container-3xl)}.data-\[size\=small\]\:sm\:max-w-sm[data-size=small]{max-width:var(--container-sm)}}@media (min-width:48rem){.md\:block{display:block}.md\:hidden{display:none}.md\:w-\[20rem\]{width:20rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-\[var\(--ds-space-page\)\]{padding-inline:var(--ds-space-page)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-\[calc\(var\(--ds-sidebar-item-height\)-0\.25rem\)\]{height:calc(var(--ds-sidebar-item-height) - .25rem)}.lg\:h-\[var\(--ds-sidebar-item-height\)\]{height:var(--ds-sidebar-item-height)}.lg\:min-h-0{min-height:0}.lg\:min-h-\[var\(--ds-sidebar-item-height\)\]{min-height:var(--ds-sidebar-item-height)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:justify-end{justify-content:flex-end}.group-data-\[sidebar-side\=left\]\/shell\:lg\:pl-\[var\(--ds-app-sidebar-width\)\]:is(:where(.group\/shell)[data-sidebar-side=left] *){padding-left:var(--ds-app-sidebar-width)}.group-data-\[sidebar-side\=right\]\/shell\:lg\:pr-\[var\(--ds-app-sidebar-width\)\]:is(:where(.group\/shell)[data-sidebar-side=right] *){padding-right:var(--ds-app-sidebar-width)}}@media (min-width:80rem){.xl\:w-\[24rem\]{width:24rem}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_22rem\]{grid-template-columns:minmax(0,1fr) 22rem}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:bg-sidebar:is(.dark *){background-color:var(--sidebar)}.dark\:focus-visible\:ring-danger\/40:is(.dark *):focus-visible{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-danger\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:aria-invalid\:ring-danger\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-danger\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:size-5 svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\]\:border-border-subtle tr{border-color:var(--border-subtle)}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:nth-child\(-n\+2\)\]\:border-b:nth-child(-n+2){border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media (min-width:64rem){.lg\:\[\&\:nth-child\(-n\+2\)\]\:border-b-0:nth-child(-n+2){border-bottom-style:var(--tw-border-style);border-bottom-width:0}}.\[\&\>\[data-slot\=sheet-close\]\]\:top-3>[data-slot=sheet-close]{top:calc(var(--spacing) * 3)}.\[\&\>\[data-slot\=sheet-close\]\]\:right-3>[data-slot=sheet-close]{right:calc(var(--spacing) * 3)}.\[\&\>\[data-slot\=sheet-close\]\]\:text-sidebar-secondary-text>[data-slot=sheet-close]{color:var(--sidebar-secondary-text)}@media (hover:hover){.\[\&\>\[data-slot\=sheet-close\]\]\:hover\:text-sidebar-primary-text>[data-slot=sheet-close]:hover{color:var(--sidebar-primary-text)}}.\[\&\>svg\]\:mt-0\.5>svg{margin-top:calc(var(--spacing) * .5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:stroke-\[1\.75\]>svg{stroke-width:1.75px}.\[\&\>svg\]\:text-sidebar-active-foreground>svg{color:var(--sidebar-active-foreground)}.\[\&\>svg\]\:text-sidebar-icon>svg{color:var(--sidebar-icon)}}@keyframes ds-sidebar-expand{0%{opacity:0;height:0}to{height:var(--radix-collapsible-content-height);opacity:1}}@keyframes ds-sidebar-collapse{0%{height:var(--radix-collapsible-content-height);opacity:1}to{opacity:0;height:0}}[data-slot=sidebar-collapsible-content][data-state=open]{animation:.18s cubic-bezier(.2,0,0,1) ds-sidebar-expand}[data-slot=sidebar-collapsible-content][data-state=closed]{animation:.15s cubic-bezier(.4,0,1,1) ds-sidebar-collapse}@media (prefers-reduced-motion:reduce){[data-slot=sidebar-collapsible-content]{animation:none!important}}:root,[data-appearance-scope=light]{color-scheme:light;--radius:.5rem;--background:#f9f9fa;--foreground:#140c15;--card:#fff;--card-foreground:#140c15;--popover:#fff;--popover-foreground:#140c15;--brand:#4962ff;--brand-foreground:#fff;--brand-secondary:#1c4e51;--brand-secondary-foreground:#fff;--brand-secondary-background:#eaf3f1;--brand-secondary-border:#b2d4cf;--primary:#3f55df;--primary-foreground:#fff;--secondary:#1e0721;--secondary-foreground:#fff;--muted:#f3f4f5;--muted-foreground:#5f6270;--accent:#3f55df;--accent-hover:#3344c7;--accent-active:#293999;--accent-background:#eef0ff;--accent-foreground:#fff;--selection-background:#f0f1f6;--selection-border:#aeb6e3;--selection-indicator:#6672dc;--selection-foreground:#242a44;--destructive:#c44a53;--border:#e4e5e5;--input:#e4e5e5;--ring:#6371d9;--canvas:var(--background);--surface:var(--card);--surface-muted:#f3f4f5;--surface-raised:#fff;--surface-floating:#fff;--surface-overlay:#fff;--text-primary:var(--foreground);--text-secondary:#373b4a;--text-supporting:#5f6270;--text-muted:#838692;--text-disabled:#a7a9b3;--text-inverse:#fff;--text-link:#3f4da8;--border-subtle:#ececed;--border-default:#d9dadd;--border-strong:#babdc5;--border-focus:var(--ring);--information:#28758a;--information-background:#eaf5f7;--information-border:#b8dce3;--information-foreground:#194d5a;--success:#1c6b62;--success-background:#e7f5f2;--success-border:#a3d6cf;--success-foreground:#164946;--warning:#9a6500;--warning-background:#fff4d8;--warning-border:#ffd083;--warning-foreground:#654000;--danger:#c44a53;--danger-background:#ffe8e9;--danger-border:#ffa1a8;--danger-foreground:#822c35;--neutral:#5f6270;--neutral-background:#f3f4f5;--neutral-border:#d9dadd;--neutral-foreground:#373b4a;--sidebar:#19141a;--sidebar-foreground:#fff;--sidebar-accent:#ffffff12;--sidebar-active:#ffffff17;--sidebar-active-foreground:#fff;--sidebar-active-indicator:#7f8ae8;--sidebar-border:#ffffff14;--sidebar-canvas:var(--sidebar);--sidebar-header:var(--sidebar);--sidebar-content:var(--sidebar);--sidebar-hover:var(--sidebar-accent);--sidebar-primary-text:var(--sidebar-foreground);--sidebar-secondary-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-secondary-text:color-mix(in oklab, var(--sidebar-foreground) 78%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-metadata-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-metadata-text:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-icon:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-icon:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-search:var(--sidebar-accent);--sidebar-footer:var(--sidebar);--sidebar-group-label:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-group-label:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-group-count:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-group-count:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-focus-ring:var(--ring);--font-sans:"Saans", "Inter", "Aptos", "Segoe UI", Arial, sans-serif;--ds-space-inline:.5rem;--ds-space-control:.625rem;--ds-field-gap:1.25rem;--ds-field-label-gap:.5rem;--ds-field-message-gap:.375rem;--ds-field-control-height:2.75rem;--ds-field-control-padding-x:.875rem;--ds-field-control-radius:.5rem;--ds-field-label-size:.8125rem;--ds-field-label-line-height:1.25rem;--ds-space-field:var(--ds-field-gap);--ds-space-group:1.25rem;--ds-space-section:2rem;--ds-space-page:2.5rem;--ds-tab-padding-x:.875rem;--ds-tab-rail-height:2.75rem;--ds-tab-rail-height-compact:2.5rem;--ds-control-height:2.5rem;--ds-control-height-sm:2rem;--ds-control-height-lg:2.75rem;--ds-control-padding-x:1rem;--ds-sidebar-width:16rem;--ds-sidebar-width-mobile:18rem;--ds-sidebar-item-height:2.25rem;--ds-sidebar-item-height-touch:2.75rem;--ds-sidebar-header-height:3.5rem;--ds-sidebar-content-padding-x:.625rem;--ds-sidebar-content-padding-y:.75rem;--ds-sidebar-footer-padding:.625rem;--ds-sidebar-group-gap:.25rem;--ds-sidebar-group-label-size:.75rem;--ds-surface-padding:1.25rem;--ds-table-header-height:2.25rem;--ds-row-height:2.75rem;--ds-page-title:1.75rem;--ds-section-title:1.0625rem;--ds-body:.9375rem;--ds-metadata:.8125rem;--ds-menu-item-size:.75rem;--ds-menu-label-size:.6875rem;--ds-radius-control:.375rem;--ds-radius-surface:.5rem;--ds-shadow-raised:0 1px 2px #140c150f;--ds-shadow-floating:0 12px 28px #140c151a;--ds-focus-ring:0 0 0 3px var(--ring)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--ds-focus-ring:0 0 0 3px color-mix(in oklab, var(--ring) 26%, transparent)}}:root[data-density=compact]{--ds-space-inline:.375rem;--ds-space-control:.5rem;--ds-space-field:1rem;--ds-space-group:1rem;--ds-space-section:1.5rem;--ds-space-page:2rem;--ds-tab-padding-x:.75rem;--ds-tab-rail-height:2.5rem;--ds-tab-rail-height-compact:2.25rem;--ds-control-height:2rem;--ds-control-height-sm:1.75rem;--ds-control-height-lg:2.25rem;--ds-control-padding-x:.75rem;--ds-sidebar-width:15rem;--ds-sidebar-width-mobile:17rem;--ds-sidebar-item-height:2rem;--ds-surface-padding:1rem;--ds-table-header-height:2rem;--ds-row-height:2.5rem;--ds-field-gap:1rem;--ds-page-title:1.5rem;--ds-section-title:.9375rem;--ds-body:.875rem;--ds-metadata:.75rem}:root.dark,:root[data-appearance=dark]{color-scheme:dark;--background:#111214;--foreground:#f7f7f8;--card:#191a1e;--card-foreground:#f7f7f8;--popover:#202126;--popover-foreground:#f7f7f8;--brand:#6b7cff;--brand-foreground:#fff;--brand-secondary:#a3d6cf;--brand-secondary-foreground:#102a2c;--brand-secondary-background:#162c2d;--brand-secondary-border:#315c59;--primary:#5965cc;--primary-foreground:#fff;--secondary:#f3f4f5;--secondary-foreground:#17181b;--muted:#25272d;--muted-foreground:#c5c7cf;--accent:#5965cc;--accent-hover:#5f6bd2;--accent-active:#505bb8;--accent-background:#252a46;--accent-foreground:#fff;--selection-background:#272a35;--selection-border:#555e92;--selection-indicator:#7c86df;--selection-foreground:#f2f3f8;--destructive:#ffa1a8;--border:#ffffff26;--input:#ffffff26;--ring:#7c86df;--canvas:var(--background);--surface:var(--card);--surface-muted:#25272d;--surface-raised:#1d1f24;--surface-floating:#22242a;--surface-overlay:#282a31;--text-primary:var(--foreground);--text-secondary:#e7e8eb;--text-supporting:#c5c7cf;--text-muted:#989ba5;--text-disabled:#696c75;--text-inverse:#17181b;--text-link:#aeb6ef;--border-subtle:#ffffff14;--border-default:#ffffff21;--border-strong:#ffffff38;--border-focus:var(--ring);--information:#8ed4df;--information-background:#163238;--information-border:#346b75;--information-foreground:#d9f2f5;--success:#a3d6cf;--success-background:#143b3d;--success-border:#2f7471;--success-foreground:#d8eeeb;--warning:#ffd083;--warning-background:#4b350c;--warning-border:#8a650f;--warning-foreground:#fff4d8;--danger:#ffa1a8;--danger-background:#55212a;--danger-border:#9d3c48;--danger-foreground:#ffe8e9;--neutral:#a7a9b3;--neutral-background:#25272d;--neutral-border:#ffffff24;--neutral-foreground:#f3f4f5;--sidebar:#151116;--sidebar-foreground:#fff;--sidebar-accent:#ffffff12;--sidebar-active:#ffffff17;--sidebar-active-foreground:#fff;--sidebar-active-indicator:#7c86df;--sidebar-border:#ffffff14;--sidebar-canvas:var(--sidebar);--sidebar-header:var(--sidebar);--sidebar-content:var(--sidebar);--sidebar-hover:var(--sidebar-accent);--sidebar-primary-text:var(--sidebar-foreground);--sidebar-secondary-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-secondary-text:color-mix(in oklab, var(--sidebar-foreground) 78%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-metadata-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-metadata-text:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-icon:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-icon:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-search:var(--sidebar-accent);--sidebar-footer:var(--sidebar);--sidebar-group-label:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-group-label:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-group-count:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-group-count:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-focus-ring:var(--ring);--ds-shadow-raised:0 1px 2px #00000047;--ds-shadow-floating:0 16px 32px #00000057}[data-sidebar-variant=light],:root:not(.dark):not([data-appearance=dark]) [data-sidebar-variant=auto]{--sidebar:var(--surface-muted);--sidebar-foreground:var(--text-primary);--sidebar-accent:var(--surface-raised);--sidebar-active:var(--accent-background);--sidebar-active-foreground:var(--selection-foreground);--sidebar-active-indicator:var(--selection-indicator);--sidebar-border:var(--border-subtle);--sidebar-canvas:var(--surface-muted);--sidebar-header:var(--surface);--sidebar-content:var(--surface-muted);--sidebar-hover:var(--surface-raised);--sidebar-primary-text:var(--text-primary);--sidebar-secondary-text:var(--text-secondary);--sidebar-metadata-text:var(--text-supporting);--sidebar-icon:var(--text-secondary);--sidebar-search:var(--surface-raised);--sidebar-footer:var(--surface);--sidebar-group-label:var(--text-secondary);--sidebar-group-count:var(--text-supporting);--sidebar-focus-ring:var(--border-focus)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scroll-snap-strictness:proximity;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--leading-tight:1.25;--leading-snug:1.375;--radius-xs:.125rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-sidebar-active:var(--sidebar-active)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{min-height:100%}body{background:var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);font-size:var(--ds-body);text-rendering:optimizelegibility;font-weight:380;line-height:1.5}h1,h2,h3,h4{color:var(--foreground);letter-spacing:0;font-weight:570}button,input,select,textarea{font:inherit}::selection{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in oklab, var(--primary) 22%, transparent)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components{[data-slot=tabs-list][data-scroll-position=start],[data-slot=navigation-tabs-list][data-scroll-position=start]{-webkit-mask-image:linear-gradient(90deg,#000 0 calc(100% - 1.5rem),#0000 100%);mask-image:linear-gradient(90deg,#000 0 calc(100% - 1.5rem),#0000 100%)}[data-slot=tabs-list][data-scroll-position=middle],[data-slot=navigation-tabs-list][data-scroll-position=middle]{-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem calc(100% - 1.5rem),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem calc(100% - 1.5rem),#0000 100%)}[data-slot=tabs-list][data-scroll-position=end],[data-slot=navigation-tabs-list][data-scroll-position=end]{-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem 100%);mask-image:linear-gradient(90deg,#0000 0,#000 1.5rem 100%)}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-8{right:calc(var(--spacing) * 8)}.bottom-0{bottom:0}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-2{grid-column-start:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-\[var\(--ds-field-message-gap\)\]{margin-top:var(--ds-field-message-gap)}.mt-auto{margin-top:auto}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\[var\(--ds-control-height\)\]{width:var(--ds-control-height);height:var(--ds-control-height)}.size-full{width:100%;height:100%}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-\[var\(--ds-control-height\)\]{height:var(--ds-control-height)}.h-\[var\(--ds-control-height-lg\)\]{height:var(--ds-control-height-lg)}.h-\[var\(--ds-control-height-sm\)\]{height:var(--ds-control-height-sm)}.h-\[var\(--ds-field-control-height\)\]{height:var(--ds-field-control-height)}.h-\[var\(--ds-row-height\)\]{height:var(--ds-row-height)}.h-\[var\(--ds-tab-rail-height\)\]{height:var(--ds-tab-rail-height)}.h-\[var\(--ds-tab-rail-height-compact\)\]{height:var(--ds-tab-rail-height-compact)}.h-\[var\(--ds-table-header-height\)\]{height:var(--ds-table-header-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[32rem\]{max-height:32rem}.max-h-\[min\(42rem\,calc\(100vh-2rem\)\)\]{max-height:min(42rem,100vh - 2rem)}.min-h-0{min-height:0}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-\[var\(--ds-control-height\)\]{min-height:var(--ds-control-height)}.min-h-\[var\(--ds-sidebar-item-height-touch\)\]{min-height:var(--ds-sidebar-item-height-touch)}.min-h-\[var\(--ds-topbar-height\)\]{min-height:var(--ds-topbar-height)}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-24{width:calc(var(--spacing) * 24)}.w-36{width:calc(var(--spacing) * 36)}.w-44{width:calc(var(--spacing) * 44)}.w-\[4\.5rem\]{width:4.5rem}.w-\[var\(--ds-app-sidebar-width\)\]{width:var(--ds-app-sidebar-width)}.w-\[var\(--ds-sidebar-width-mobile\)\]{width:var(--ds-sidebar-width-mobile)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[48rem\]{max-width:48rem}.max-w-\[64rem\]{max-width:64rem}.max-w-\[86rem\]{max-width:86rem}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-72{min-width:calc(var(--spacing) * 72)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-start{scroll-snap-align:start}.scroll-my-1{scroll-margin-block:var(--spacing)}.scroll-px-2{scroll-padding-inline:calc(var(--spacing) * 2)}.\[scrollbar-width\:none\]{scrollbar-width:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[1rem_minmax\(0\,1fr\)\]{grid-template-columns:1rem minmax(0,1fr)}.grid-cols-\[2\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:2.5rem minmax(0,1fr)}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[var\(--ds-field-gap\)\]{gap:var(--ds-field-gap)}.gap-\[var\(--ds-field-label-gap\)\]{gap:var(--ds-field-label-gap)}.gap-\[var\(--ds-sidebar-group-gap\)\]{gap:var(--ds-sidebar-group-gap)}.gap-\[var\(--ds-space-control\)\]{gap:var(--ds-space-control)}.gap-\[var\(--ds-space-field\)\]{gap:var(--ds-space-field)}.gap-\[var\(--ds-space-group\)\]{gap:var(--ds-space-group)}.gap-\[var\(--ds-space-section\)\]{gap:var(--ds-space-section)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border-subtle>:not(:last-child)){border-color:var(--border-subtle)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-x-contain{overscroll-behavior-x:contain}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--ds-radius-control\)-2px\)\]{border-radius:calc(var(--ds-radius-control) - 2px)}.rounded-\[var\(--ds-field-control-radius\)\]{border-radius:var(--ds-field-control-radius)}.rounded-\[var\(--ds-radius-control\)\]{border-radius:var(--ds-radius-control)}.rounded-\[var\(--ds-radius-surface\)\]{border-radius:var(--ds-radius-surface)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-\[var\(--ds-radius-control\)\]{border-top-left-radius:var(--ds-radius-control);border-top-right-radius:var(--ds-radius-control)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-border-default{border-color:var(--border-default)}.border-border-subtle{border-color:var(--border-subtle)}.border-brand-secondary-border{border-color:var(--brand-secondary-border)}.border-card{border-color:var(--card)}.border-danger-border{border-color:var(--danger-border)}.border-information-border{border-color:var(--information-border)}.border-input{border-color:var(--input)}.border-neutral-border{border-color:var(--neutral-border)}.border-primary{border-color:var(--primary)}.border-selection-border{border-color:var(--selection-border)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-success-border{border-color:var(--success-border)}.border-transparent{border-color:#0000}.border-warning-border{border-color:var(--warning-border)}.bg-background,.bg-background\/96{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/96{background-color:color-mix(in oklab, var(--background) 96%, transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-border{background-color:var(--border)}.bg-border-subtle{background-color:var(--border-subtle)}.bg-brand{background-color:var(--brand)}.bg-brand-secondary-background{background-color:var(--brand-secondary-background)}.bg-canvas{background-color:var(--canvas)}.bg-card{background-color:var(--card)}.bg-danger{background-color:var(--danger)}.bg-danger-background,.bg-danger-background\/60{background-color:var(--danger-background)}@supports (color:color-mix(in lab, red, red)){.bg-danger-background\/60{background-color:color-mix(in oklab, var(--danger-background) 60%, transparent)}}.bg-danger-foreground{background-color:var(--danger-foreground)}.bg-foreground{background-color:var(--foreground)}.bg-information-background{background-color:var(--information-background)}.bg-muted{background-color:var(--muted)}.bg-neutral-background{background-color:var(--neutral-background)}.bg-neutral-foreground{background-color:var(--neutral-foreground)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-selection-background{background-color:var(--selection-background)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar-active{background-color:var(--sidebar-active)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sidebar-canvas{background-color:var(--sidebar-canvas)}.bg-sidebar-content{background-color:var(--sidebar-content)}.bg-sidebar-footer{background-color:var(--sidebar-footer)}.bg-sidebar-header{background-color:var(--sidebar-header)}.bg-sidebar-hover{background-color:var(--sidebar-hover)}.bg-sidebar-search{background-color:var(--sidebar-search)}.bg-success-background{background-color:var(--success-background)}.bg-success-foreground{background-color:var(--success-foreground)}.bg-surface{background-color:var(--surface)}.bg-surface-floating{background-color:var(--surface-floating)}.bg-surface-muted{background-color:var(--surface-muted)}.bg-surface-overlay{background-color:var(--surface-overlay)}.bg-surface-raised{background-color:var(--surface-raised)}.bg-transparent{background-color:#0000}.bg-warning-background{background-color:var(--warning-background)}.bg-warning-foreground{background-color:var(--warning-foreground)}.fill-foreground{fill:var(--foreground)}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[var\(--ds-sidebar-footer-padding\)\]{padding:var(--ds-sidebar-footer-padding)}.p-\[var\(--ds-space-section\)\]{padding:var(--ds-space-section)}.p-\[var\(--ds-surface-padding\)\]{padding:var(--ds-surface-padding)}.px-0{padding-inline:0}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-9{padding-inline:calc(var(--spacing) * 9)}.px-\[var\(--ds-field-control-padding-x\)\]{padding-inline:var(--ds-field-control-padding-x)}.px-\[var\(--ds-sidebar-content-padding-x\)\]{padding-inline:var(--ds-sidebar-content-padding-x)}.px-\[var\(--ds-surface-padding\)\]{padding-inline:var(--ds-surface-padding)}.px-\[var\(--ds-tab-padding-x\)\]{padding-inline:var(--ds-tab-padding-x)}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-\[var\(--ds-sidebar-content-padding-y\)\]{padding-block:var(--ds-sidebar-content-padding-y)}.py-\[var\(--ds-space-section\)\]{padding-block:var(--ds-space-section)}.py-\[var\(--ds-surface-padding\)\]{padding-block:var(--ds-surface-padding)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:var(--spacing)}.pb-\[var\(--ds-space-section\)\]{padding-bottom:var(--ds-space-section)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[length\:var\(--ds-field-label-size\)\]{font-size:var(--ds-field-label-size)}.text-\[length\:var\(--ds-menu-item-size\)\]{font-size:var(--ds-menu-item-size)}.text-\[length\:var\(--ds-menu-label-size\)\]{font-size:var(--ds-menu-label-size)}.text-\[length\:var\(--ds-metadata\)\]{font-size:var(--ds-metadata)}.text-\[length\:var\(--ds-page-title\)\]{font-size:var(--ds-page-title)}.text-\[length\:var\(--ds-sidebar-group-label-size\)\]{font-size:var(--ds-sidebar-group-label-size)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-\[var\(--ds-field-label-line-height\)\]{--tw-leading:var(--ds-field-label-line-height);line-height:var(--ds-field-label-line-height)}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--ds-metadata\)\]{color:var(--ds-metadata)}.text-\[var\(--ds-page-title\)\]{color:var(--ds-page-title)}.text-\[var\(--ds-section-title\)\]{color:var(--ds-section-title)}.text-background{color:var(--background)}.text-brand-foreground{color:var(--brand-foreground)}.text-brand-secondary{color:var(--brand-secondary)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-danger-foreground{color:var(--danger-foreground)}.text-foreground{color:var(--foreground)}.text-information-foreground{color:var(--information-foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral-foreground{color:var(--neutral-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-selection-foreground{color:var(--selection-foreground)}.text-sidebar-active-foreground{color:var(--sidebar-active-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-sidebar-group-count{color:var(--sidebar-group-count)}.text-sidebar-group-label{color:var(--sidebar-group-label)}.text-sidebar-icon{color:var(--sidebar-icon)}.text-sidebar-metadata-text{color:var(--sidebar-metadata-text)}.text-sidebar-primary-text{color:var(--sidebar-primary-text)}.text-sidebar-secondary-text{color:var(--sidebar-secondary-text)}.text-success-foreground{color:var(--success-foreground)}.text-text-link{color:var(--text-link)}.text-text-muted{color:var(--text-muted)}.text-text-primary{color:var(--text-primary)}.text-text-secondary{color:var(--text-secondary)}.text-text-supporting{color:var(--text-supporting)}.text-warning-foreground{color:var(--warning-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-\[inset_2px_0_0_var\(--selection-indicator\)\]{--tw-shadow:inset 2px 0 0 var(--tw-shadow-color,var(--selection-indicator));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_3px_0_0_var\(--sidebar-active-indicator\)\]{--tw-shadow:inset 3px 0 0 var(--tw-shadow-color,var(--sidebar-active-indicator));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--ds-shadow-floating\)\]{--tw-shadow:var(--ds-shadow-floating);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--ds-shadow-raised\)\]{--tw-shadow:var(--ds-shadow-raised);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[background-color\,color\,box-shadow\]{transition-property:background-color,color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[padding\]{transition-property:padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--ds-app-sidebar-width-mobile\:var\(--ds-sidebar-width-mobile\)\]{--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)}.\[--ds-app-sidebar-width\:var\(--ds-sidebar-width\)\]{--ds-app-sidebar-width:var(--ds-sidebar-width)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[sidebar-state\=collapsed\]\/shell\:hidden:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){display:none}.group-data-\[sidebar-state\=collapsed\]\/shell\:w-\[var\(--ds-app-sidebar-width\)\]:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){width:var(--ds-app-sidebar-width)}.group-data-\[sidebar-state\=collapsed\]\/shell\:justify-center:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){justify-content:center}.group-data-\[sidebar-state\=collapsed\]\/shell\:px-0:is(:where(.group\/shell)[data-sidebar-state=collapsed] *){padding-inline:0}.group-data-\[size\=default\]\/switch\:size-4:is(:where(.group\/switch)[data-size=default] *){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/switch\:size-3:is(:where(.group\/switch)[data-size=sm] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[state\=open\]\/collapsible\:rotate-90:is(:where(.group\/collapsible)[data-state=open] *){rotate:90deg}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-x-0:after{content:var(--tw-content);inset-inline:0}.after\:bottom-0:after{content:var(--tw-content);bottom:0}.after\:h-0\.5:after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.after\:bg-transparent:after{content:var(--tw-content);background-color:#0000}.after\:transition-colors:after{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:bg-accent-hover:hover{background-color:var(--accent-hover)}.hover\:bg-danger\/90:hover{background-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-danger\/90:hover{background-color:color-mix(in oklab, var(--danger) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:bg-sidebar-active:hover{background-color:var(--sidebar-active)}.hover\:bg-sidebar-hover:hover{background-color:var(--sidebar-hover)}.hover\:bg-surface-muted:hover,.hover\:bg-surface-muted\/70:hover{background-color:var(--surface-muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-muted\/70:hover{background-color:color-mix(in oklab, var(--surface-muted) 70%, transparent)}}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-sidebar-active-foreground:hover{color:var(--sidebar-active-foreground)}.hover\:text-sidebar-primary-text:hover{color:var(--sidebar-primary-text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:bg-selection-background:focus{background-color:var(--selection-background)}.focus\:bg-surface-muted:focus{background-color:var(--surface-muted)}.focus\:text-foreground:focus{color:var(--foreground)}.focus\:text-selection-foreground:focus{color:var(--selection-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:ring-offset-background:focus{--tw-ring-offset-color:var(--background)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-0:focus-visible{border-style:var(--tw-border-style);border-width:0}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-surface-muted:focus-visible{background-color:var(--surface-muted)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-danger\/20:focus-visible{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-danger\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/45:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/45:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 45%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 60%, transparent)}}.focus-visible\:ring-sidebar-focus-ring:focus-visible{--tw-ring-color:var(--sidebar-focus-ring)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.active\:bg-accent-active:active{background-color:var(--accent-active)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\>svg\]\:px-2:has(>svg){padding-inline:calc(var(--spacing) * 2)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-3\.5:has(>svg){padding-inline:calc(var(--spacing) * 3.5)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-danger[aria-invalid=true]{border-color:var(--danger)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-danger\/20[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-danger\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 20%, transparent)}}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-pressed\:bg-background[aria-pressed=true]{background-color:var(--background)}.aria-pressed\:text-foreground[aria-pressed=true]{color:var(--foreground)}.aria-pressed\:shadow-xs[aria-pressed=true]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[active\=false\]\:text-muted-foreground[data-active=false]{color:var(--muted-foreground)}@media (hover:hover){.data-\[active\=false\]\:hover\:text-foreground[data-active=false]:hover{color:var(--foreground)}}.data-\[active\=true\]\:bg-selection-background[data-active=true]{background-color:var(--selection-background)}.data-\[active\=true\]\:bg-surface-muted[data-active=true]{background-color:var(--surface-muted)}.data-\[active\=true\]\:font-semibold[data-active=true]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[active\=true\]\:text-selection-foreground[data-active=true]{color:var(--selection-foreground)}.data-\[active\=true\]\:after\:bg-selection-indicator[data-active=true]:after{content:var(--tw-content);background-color:var(--selection-indicator)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[inset\=true\]\:pl-8[data-inset=true]{padding-left:calc(var(--spacing) * 8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[sidebar-state\=collapsed\]\:\[--ds-app-sidebar-width\:3\.5rem\][data-sidebar-state=collapsed]{--ds-app-sidebar-width:3.5rem}.data-\[size\=default\]\:h-\[1\.15rem\][data-size=default]{height:1.15rem}.data-\[size\=default\]\:h-\[var\(--ds-field-control-height\)\][data-size=default]{height:var(--ds-field-control-height)}.data-\[size\=default\]\:w-8[data-size=default]{width:calc(var(--spacing) * 8)}.data-\[size\=sm\]\:h-3\.5[data-size=sm]{height:calc(var(--spacing) * 3.5)}.data-\[size\=sm\]\:h-\[var\(--ds-control-height-sm\)\][data-size=sm]{height:var(--ds-control-height-sm)}.data-\[size\=sm\]\:w-6[data-size=sm]{width:calc(var(--spacing) * 6)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:bg-selection-background[data-state=active]{background-color:var(--selection-background)}.data-\[state\=active\]\:font-semibold[data-state=active]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=active\]\:text-selection-foreground[data-state=active]{color:var(--selection-foreground)}.data-\[state\=active\]\:shadow-xs[data-state=active]{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[state\=active\]\:after\:bg-selection-indicator[data-state=active]:after{content:var(--tw-content);background-color:var(--selection-indicator)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=selected\]\:bg-accent-background[data-state=selected]{background-color:var(--accent-background)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-danger-foreground[data-variant=destructive]{color:var(--danger-foreground)}.data-\[variant\=destructive\]\:focus\:bg-danger-background[data-variant=destructive]:focus{background-color:var(--danger-background)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/88{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/88{background-color:color-mix(in oklab, var(--background) 88%, transparent)}}}@media (min-width:40rem){.sm\:w-auto{width:auto}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:min-w-48{min-width:calc(var(--spacing) * 48)}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.data-\[size\=default\]\:sm\:max-w-lg[data-size=default]{max-width:var(--container-lg)}.data-\[size\=large\]\:sm\:max-w-3xl[data-size=large]{max-width:var(--container-3xl)}.data-\[size\=small\]\:sm\:max-w-sm[data-size=small]{max-width:var(--container-sm)}}@media (min-width:48rem){.md\:block{display:block}.md\:hidden{display:none}.md\:w-\[20rem\]{width:20rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-\[var\(--ds-space-page\)\]{padding-inline:var(--ds-space-page)}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-\[calc\(var\(--ds-sidebar-item-height\)-0\.25rem\)\]{height:calc(var(--ds-sidebar-item-height) - .25rem)}.lg\:h-\[var\(--ds-sidebar-item-height\)\]{height:var(--ds-sidebar-item-height)}.lg\:min-h-0{min-height:0}.lg\:min-h-\[var\(--ds-sidebar-item-height\)\]{min-height:var(--ds-sidebar-item-height)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:justify-end{justify-content:flex-end}.group-data-\[sidebar-side\=left\]\/shell\:lg\:pl-\[var\(--ds-app-sidebar-width\)\]:is(:where(.group\/shell)[data-sidebar-side=left] *){padding-left:var(--ds-app-sidebar-width)}.group-data-\[sidebar-side\=right\]\/shell\:lg\:pr-\[var\(--ds-app-sidebar-width\)\]:is(:where(.group\/shell)[data-sidebar-side=right] *){padding-right:var(--ds-app-sidebar-width)}}@media (min-width:80rem){.xl\:w-\[24rem\]{width:24rem}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_22rem\]{grid-template-columns:minmax(0,1fr) 22rem}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.dark\:bg-sidebar:is(.dark *){background-color:var(--sidebar)}.dark\:focus-visible\:ring-danger\/40:is(.dark *):focus-visible{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-danger\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:aria-invalid\:ring-danger\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-danger\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--danger) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:size-5 svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\]\:border-border-subtle tr{border-color:var(--border-subtle)}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:nth-child\(-n\+2\)\]\:border-b:nth-child(-n+2){border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media (min-width:64rem){.lg\:\[\&\:nth-child\(-n\+2\)\]\:border-b-0:nth-child(-n+2){border-bottom-style:var(--tw-border-style);border-bottom-width:0}}.\[\&\>\[data-slot\=sheet-close\]\]\:top-3>[data-slot=sheet-close]{top:calc(var(--spacing) * 3)}.\[\&\>\[data-slot\=sheet-close\]\]\:right-3>[data-slot=sheet-close]{right:calc(var(--spacing) * 3)}.\[\&\>\[data-slot\=sheet-close\]\]\:text-sidebar-secondary-text>[data-slot=sheet-close]{color:var(--sidebar-secondary-text)}@media (hover:hover){.\[\&\>\[data-slot\=sheet-close\]\]\:hover\:text-sidebar-primary-text>[data-slot=sheet-close]:hover{color:var(--sidebar-primary-text)}}.\[\&\>svg\]\:mt-0\.5>svg{margin-top:calc(var(--spacing) * .5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:stroke-\[1\.75\]>svg{stroke-width:1.75px}.\[\&\>svg\]\:text-sidebar-active-foreground>svg{color:var(--sidebar-active-foreground)}.\[\&\>svg\]\:text-sidebar-icon>svg{color:var(--sidebar-icon)}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-cyrillic-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-cyrillic-wght-normal.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-greek-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-greek-wght-normal.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-vietnamese-wght-normal.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./files/inter-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@keyframes ds-sidebar-expand{0%{opacity:0;height:0}to{height:var(--radix-collapsible-content-height);opacity:1}}@keyframes ds-sidebar-collapse{0%{height:var(--radix-collapsible-content-height);opacity:1}to{opacity:0;height:0}}[data-slot=sidebar-collapsible-content][data-state=open]{animation:.18s cubic-bezier(.2,0,0,1) ds-sidebar-expand}[data-slot=sidebar-collapsible-content][data-state=closed]{animation:.15s cubic-bezier(.4,0,1,1) ds-sidebar-collapse}@media (prefers-reduced-motion:reduce){[data-slot=sidebar-collapsible-content]{animation:none!important}}:root,[data-appearance-scope=light]{color-scheme:light;--radius:.5rem;--background:#f9f9fa;--foreground:#140c15;--card:#fff;--card-foreground:#140c15;--popover:#fff;--popover-foreground:#140c15;--brand:#4962ff;--brand-foreground:#fff;--brand-secondary:#1c4e51;--brand-secondary-foreground:#fff;--brand-secondary-background:#eaf3f1;--brand-secondary-border:#b2d4cf;--primary:#3f55df;--primary-foreground:#fff;--secondary:#1e0721;--secondary-foreground:#fff;--muted:#f3f4f5;--muted-foreground:#5f6270;--accent:#3f55df;--accent-hover:#3344c7;--accent-active:#293999;--accent-background:#eef0ff;--accent-foreground:#fff;--selection-background:#f0f1f6;--selection-border:#aeb6e3;--selection-indicator:#6672dc;--selection-foreground:#242a44;--destructive:#c44a53;--border:#e4e5e5;--input:#e4e5e5;--ring:#6371d9;--canvas:var(--background);--surface:var(--card);--surface-muted:#f3f4f5;--surface-raised:#fff;--surface-floating:#fff;--surface-overlay:#fff;--text-primary:var(--foreground);--text-secondary:#373b4a;--text-supporting:#5f6270;--text-muted:#838692;--text-disabled:#a7a9b3;--text-inverse:#fff;--text-link:#3f4da8;--border-subtle:#ececed;--border-default:#d9dadd;--border-strong:#babdc5;--border-focus:var(--ring);--information:#28758a;--information-background:#eaf5f7;--information-border:#b8dce3;--information-foreground:#194d5a;--success:#1c6b62;--success-background:#e7f5f2;--success-border:#a3d6cf;--success-foreground:#164946;--warning:#9a6500;--warning-background:#fff4d8;--warning-border:#ffd083;--warning-foreground:#654000;--danger:#c44a53;--danger-background:#ffe8e9;--danger-border:#ffa1a8;--danger-foreground:#822c35;--neutral:#5f6270;--neutral-background:#f3f4f5;--neutral-border:#d9dadd;--neutral-foreground:#373b4a;--sidebar:#19141a;--sidebar-foreground:#fff;--sidebar-accent:#ffffff12;--sidebar-active:#ffffff17;--sidebar-active-foreground:#fff;--sidebar-active-indicator:#7f8ae8;--sidebar-border:#ffffff14;--sidebar-canvas:var(--sidebar);--sidebar-header:var(--sidebar);--sidebar-content:var(--sidebar);--sidebar-hover:var(--sidebar-accent);--sidebar-primary-text:var(--sidebar-foreground);--sidebar-secondary-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-secondary-text:color-mix(in oklab, var(--sidebar-foreground) 78%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-metadata-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-metadata-text:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-icon:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-icon:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-search:var(--sidebar-accent);--sidebar-footer:var(--sidebar);--sidebar-group-label:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-group-label:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-group-count:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--sidebar-group-count:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root,[data-appearance-scope=light]{--sidebar-focus-ring:var(--ring);--font-sans:"Inter Variable", "Inter", "Aptos", "Segoe UI", Arial, sans-serif;--ds-space-inline:.5rem;--ds-space-control:.625rem;--ds-field-gap:1.25rem;--ds-field-label-gap:.5rem;--ds-field-message-gap:.375rem;--ds-field-control-height:2.75rem;--ds-field-control-padding-x:.875rem;--ds-field-control-radius:.5rem;--ds-field-label-size:.8125rem;--ds-field-label-line-height:1.25rem;--ds-space-field:var(--ds-field-gap);--ds-space-group:1.25rem;--ds-space-section:2rem;--ds-space-page:2.5rem;--ds-tab-padding-x:.875rem;--ds-tab-rail-height:2.75rem;--ds-tab-rail-height-compact:2.5rem;--ds-control-height:2.5rem;--ds-control-height-sm:2rem;--ds-control-height-lg:2.75rem;--ds-control-padding-x:1rem;--ds-topbar-height:3.5rem;--ds-sidebar-width:16rem;--ds-sidebar-width-mobile:18rem;--ds-sidebar-item-height:2.25rem;--ds-sidebar-item-height-touch:2.75rem;--ds-sidebar-header-height:var(--ds-topbar-height);--ds-sidebar-content-padding-x:.625rem;--ds-sidebar-content-padding-y:.75rem;--ds-sidebar-footer-padding:.625rem;--ds-sidebar-group-gap:.25rem;--ds-sidebar-group-label-size:var(--ds-field-label-size);--ds-surface-padding:1.25rem;--ds-table-header-height:2.25rem;--ds-row-height:2.75rem;--ds-page-title:1.75rem;--ds-section-title:1.0625rem;--ds-body:.9375rem;--ds-metadata:.8125rem;--ds-menu-item-size:.75rem;--ds-menu-label-size:.6875rem;--ds-radius-control:.375rem;--ds-radius-surface:.5rem;--ds-shadow-raised:0 1px 2px #140c150f;--ds-shadow-floating:0 12px 28px #140c151a;--ds-focus-ring:0 0 0 3px var(--ring)}@supports (color:color-mix(in lab, red, red)){:root,[data-appearance-scope=light]{--ds-focus-ring:0 0 0 3px color-mix(in oklab, var(--ring) 26%, transparent)}}:root[data-density=compact]{--ds-space-inline:.375rem;--ds-space-control:.5rem;--ds-space-field:1rem;--ds-space-group:1rem;--ds-space-section:1.5rem;--ds-space-page:2rem;--ds-tab-padding-x:.75rem;--ds-tab-rail-height:2.5rem;--ds-tab-rail-height-compact:2.25rem;--ds-control-height:2rem;--ds-control-height-sm:1.75rem;--ds-control-height-lg:2.25rem;--ds-control-padding-x:.75rem;--ds-sidebar-width:15rem;--ds-sidebar-width-mobile:17rem;--ds-sidebar-item-height:2rem;--ds-surface-padding:1rem;--ds-table-header-height:2rem;--ds-row-height:2.5rem;--ds-field-gap:1rem;--ds-page-title:1.5rem;--ds-section-title:.9375rem;--ds-body:.875rem;--ds-metadata:.75rem}:root.dark,:root[data-appearance=dark]{color-scheme:dark;--background:#111214;--foreground:#f7f7f8;--card:#191a1e;--card-foreground:#f7f7f8;--popover:#202126;--popover-foreground:#f7f7f8;--brand:#6b7cff;--brand-foreground:#fff;--brand-secondary:#a3d6cf;--brand-secondary-foreground:#102a2c;--brand-secondary-background:#162c2d;--brand-secondary-border:#315c59;--primary:#5965cc;--primary-foreground:#fff;--secondary:#f3f4f5;--secondary-foreground:#17181b;--muted:#25272d;--muted-foreground:#c5c7cf;--accent:#5965cc;--accent-hover:#5f6bd2;--accent-active:#505bb8;--accent-background:#252a46;--accent-foreground:#fff;--selection-background:#272a35;--selection-border:#555e92;--selection-indicator:#7c86df;--selection-foreground:#f2f3f8;--destructive:#ffa1a8;--border:#ffffff26;--input:#ffffff26;--ring:#7c86df;--canvas:var(--background);--surface:var(--card);--surface-muted:#25272d;--surface-raised:#1d1f24;--surface-floating:#22242a;--surface-overlay:#282a31;--text-primary:var(--foreground);--text-secondary:#e7e8eb;--text-supporting:#c5c7cf;--text-muted:#989ba5;--text-disabled:#696c75;--text-inverse:#17181b;--text-link:#aeb6ef;--border-subtle:#ffffff14;--border-default:#ffffff21;--border-strong:#ffffff38;--border-focus:var(--ring);--information:#8ed4df;--information-background:#163238;--information-border:#346b75;--information-foreground:#d9f2f5;--success:#a3d6cf;--success-background:#143b3d;--success-border:#2f7471;--success-foreground:#d8eeeb;--warning:#ffd083;--warning-background:#4b350c;--warning-border:#8a650f;--warning-foreground:#fff4d8;--danger:#ffa1a8;--danger-background:#55212a;--danger-border:#9d3c48;--danger-foreground:#ffe8e9;--neutral:#a7a9b3;--neutral-background:#25272d;--neutral-border:#ffffff24;--neutral-foreground:#f3f4f5;--sidebar:#151116;--sidebar-foreground:#fff;--sidebar-accent:#ffffff12;--sidebar-active:#ffffff17;--sidebar-active-foreground:#fff;--sidebar-active-indicator:#7c86df;--sidebar-border:#ffffff14;--sidebar-canvas:var(--sidebar);--sidebar-header:var(--sidebar);--sidebar-content:var(--sidebar);--sidebar-hover:var(--sidebar-accent);--sidebar-primary-text:var(--sidebar-foreground);--sidebar-secondary-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-secondary-text:color-mix(in oklab, var(--sidebar-foreground) 78%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-metadata-text:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-metadata-text:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-icon:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-icon:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-search:var(--sidebar-accent);--sidebar-footer:var(--sidebar);--sidebar-group-label:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-group-label:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-group-count:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){:root.dark,:root[data-appearance=dark]{--sidebar-group-count:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}:root.dark,:root[data-appearance=dark]{--sidebar-focus-ring:var(--ring);--ds-shadow-raised:0 1px 2px #00000047;--ds-shadow-floating:0 16px 32px #00000057}[data-sidebar-variant=light],:root:not(.dark):not([data-appearance=dark]) [data-sidebar-variant=auto]{--sidebar:var(--surface-muted);--sidebar-foreground:var(--text-primary);--sidebar-accent:var(--surface-raised);--sidebar-active:var(--accent-background);--sidebar-active-foreground:var(--selection-foreground);--sidebar-active-indicator:var(--selection-indicator);--sidebar-border:var(--border-subtle);--sidebar-canvas:var(--surface-muted);--sidebar-header:var(--surface);--sidebar-content:var(--surface-muted);--sidebar-hover:var(--surface-raised);--sidebar-primary-text:var(--text-primary);--sidebar-secondary-text:var(--text-secondary);--sidebar-metadata-text:var(--text-supporting);--sidebar-icon:var(--text-secondary);--sidebar-search:var(--surface-raised);--sidebar-footer:var(--surface);--sidebar-group-label:var(--text-secondary);--sidebar-group-count:var(--text-supporting);--sidebar-focus-ring:var(--border-focus)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
|
package/dist/styles.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@import "@fontsource-variable/inter/index.css";
|
|
2
|
+
|
|
1
3
|
@custom-variant dark (&:is(.dark *));
|
|
2
4
|
|
|
3
5
|
@keyframes ds-sidebar-expand {
|
|
@@ -135,7 +137,7 @@
|
|
|
135
137
|
--sidebar-group-label: color-mix(in oklab, var(--sidebar-foreground) 72%, transparent);
|
|
136
138
|
--sidebar-group-count: color-mix(in oklab, var(--sidebar-foreground) 62%, transparent);
|
|
137
139
|
--sidebar-focus-ring: var(--ring);
|
|
138
|
-
--font-sans: "
|
|
140
|
+
--font-sans: "Inter Variable", "Inter", "Aptos", "Segoe UI", Arial, sans-serif;
|
|
139
141
|
--ds-space-inline: 0.5rem;
|
|
140
142
|
--ds-space-control: 0.625rem;
|
|
141
143
|
--ds-field-gap: 1.25rem;
|
|
@@ -157,16 +159,17 @@
|
|
|
157
159
|
--ds-control-height-sm: 2rem;
|
|
158
160
|
--ds-control-height-lg: 2.75rem;
|
|
159
161
|
--ds-control-padding-x: 1rem;
|
|
162
|
+
--ds-topbar-height: 3.5rem;
|
|
160
163
|
--ds-sidebar-width: 16rem;
|
|
161
164
|
--ds-sidebar-width-mobile: 18rem;
|
|
162
165
|
--ds-sidebar-item-height: 2.25rem;
|
|
163
166
|
--ds-sidebar-item-height-touch: 2.75rem;
|
|
164
|
-
--ds-sidebar-header-height:
|
|
167
|
+
--ds-sidebar-header-height: var(--ds-topbar-height);
|
|
165
168
|
--ds-sidebar-content-padding-x: 0.625rem;
|
|
166
169
|
--ds-sidebar-content-padding-y: 0.75rem;
|
|
167
170
|
--ds-sidebar-footer-padding: 0.625rem;
|
|
168
171
|
--ds-sidebar-group-gap: 0.25rem;
|
|
169
|
-
--ds-sidebar-group-label-size:
|
|
172
|
+
--ds-sidebar-group-label-size: var(--ds-field-label-size);
|
|
170
173
|
--ds-surface-padding: 1.25rem;
|
|
171
174
|
--ds-table-header-height: 2.25rem;
|
|
172
175
|
--ds-row-height: 2.75rem;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conscia-labs/design-system",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "The shared React component library for building clear, consistent, and accessible Conscia product experiences.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -98,6 +98,7 @@
|
|
|
98
98
|
]
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {
|
|
101
|
+
"@fontsource-variable/inter": "^5.3.0",
|
|
101
102
|
"@radix-ui/react-avatar": "^1.1.12",
|
|
102
103
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
103
104
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/patterns/pagination.tsx","../src/patterns/data-table.tsx","../src/patterns/entity-table.tsx","../src/patterns/detail-back-link.tsx","../src/patterns/app-shell.tsx","../src/patterns/activity-list.tsx","../src/patterns/confirmation-dialog.tsx","../src/patterns/code-block.tsx","../src/patterns/inventory-surface.tsx","../src/patterns/metric-band.tsx","../src/patterns/page-header.tsx","../src/patterns/page-toolbar.tsx","../src/patterns/preference-controls.tsx","../src/patterns/provider-mark.tsx","../src/patterns/resource-detail.tsx","../src/patterns/sidebar-navigation.tsx","../src/patterns/state-views.tsx","../src/patterns/value-meter.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../primitives/select\";\nimport { cn } from \"../primitives/utils\";\n\ntype PaginationControlsProps = React.ComponentProps<\"div\"> & {\n currentPage: number;\n pageCount: number;\n totalLabel?: React.ReactNode;\n onPrevious?: () => void;\n onNext?: () => void;\n onPageChange?: (page: number) => void;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (pageSize: number) => void;\n};\n\nfunction PaginationControls({\n currentPage,\n pageCount,\n totalLabel,\n onPrevious,\n onNext,\n onPageChange,\n pageSize,\n pageSizeOptions = [10, 25, 50],\n onPageSizeChange,\n className,\n ...props\n}: PaginationControlsProps) {\n return (\n <div\n data-slot=\"pagination-controls\"\n className={cn(\"flex flex-col gap-2 border-t border-border-subtle px-5 py-3 text-sm text-muted-foreground sm:flex-row sm:items-center sm:justify-between\", className)}\n {...props}\n >\n <div className=\"flex flex-wrap items-center gap-3\">\n <span>{totalLabel}</span>\n {pageSize && onPageSizeChange ? (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-[var(--ds-metadata)]\">Rows</span>\n <Select value={String(pageSize)} onValueChange={(value) => onPageSizeChange(Number(value))}>\n <SelectTrigger size=\"sm\" className=\"w-[4.5rem]\" aria-label=\"Rows per page\"><SelectValue /></SelectTrigger>\n <SelectContent>{pageSizeOptions.map((size) => <SelectItem key={size} value={String(size)}>{size}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n ) : null}\n </div>\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"outline\" size=\"icon\" className=\"size-8\" aria-label=\"Previous page\" onClick={onPrevious ?? (() => onPageChange?.(currentPage - 1))} disabled={currentPage <= 1}><ChevronLeft /></Button>\n {onPageChange ? pageItems(currentPage, pageCount).map((item, index) => item === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"flex size-8 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">…</span>\n ) : (\n <Button type=\"button\" key={item} variant={item === currentPage ? \"secondary\" : \"ghost\"} size=\"icon\" className=\"size-8\" aria-label={`Page ${item}`} aria-current={item === currentPage ? \"page\" : undefined} onClick={() => onPageChange(item)}>{item}</Button>\n )) : <span className=\"px-2 text-[var(--ds-metadata)]\">Page {currentPage} of {pageCount}</span>}\n <Button type=\"button\" variant=\"outline\" size=\"icon\" className=\"size-8\" aria-label=\"Next page\" onClick={onNext ?? (() => onPageChange?.(currentPage + 1))} disabled={currentPage >= pageCount}><ChevronRight /></Button>\n </div>\n </div>\n );\n}\n\nfunction pageItems(currentPage: number, pageCount: number): Array<number | \"ellipsis\"> {\n if (pageCount <= 7) return Array.from({ length: pageCount }, (_, index) => index + 1);\n const pages = new Set([1, pageCount, currentPage - 1, currentPage, currentPage + 1]);\n const sorted = Array.from(pages).filter((page) => page > 0 && page <= pageCount).sort((a, b) => a - b);\n const result: Array<number | \"ellipsis\"> = [];\n sorted.forEach((page, index) => {\n if (index && page - sorted[index - 1]! > 1) result.push(\"ellipsis\");\n result.push(page);\n });\n return result;\n}\n\nexport { PaginationControls };\nexport type { PaginationControlsProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../primitives/table\";\nimport { cn } from \"../primitives/utils\";\nimport { PaginationControls } from \"./pagination\";\n\ntype DataTableColumn<TData> = {\n id: string;\n header: React.ReactNode;\n cell: (item: TData) => React.ReactNode;\n accessor?: (item: TData) => string | number | null | undefined;\n sortable?: boolean;\n className?: string;\n};\n\ntype DataTableProps<TData> = {\n data: TData[];\n columns: DataTableColumn<TData>[];\n getRowId: (item: TData) => string;\n getRowLabel?: (item: TData) => string;\n onRowClick?: (item: TData) => void;\n isRowClickable?: (item: TData) => boolean;\n rowActions?: (item: TData) => React.ReactNode;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n manualSorting?: boolean;\n pagination?: PaginationState;\n onPaginationChange?: (pagination: PaginationState) => void;\n manualPagination?: boolean;\n pageCount?: number;\n rowCount?: number;\n pageSizeOptions?: number[];\n totalLabel?: React.ReactNode;\n mobileRow?: (item: TData) => React.ReactNode;\n empty?: React.ReactNode;\n className?: string;\n};\n\nfunction DataTable<TData>({\n data,\n columns,\n getRowId,\n getRowLabel,\n onRowClick,\n isRowClickable,\n rowActions,\n selectedIds,\n onSelectionChange,\n sorting,\n onSortingChange,\n manualSorting = false,\n pagination,\n onPaginationChange,\n manualPagination = false,\n pageCount,\n rowCount,\n pageSizeOptions,\n totalLabel,\n mobileRow,\n empty,\n className,\n}: DataTableProps<TData>) {\n const rowSelection = React.useMemo<RowSelectionState>(() => {\n const selection: RowSelectionState = {};\n selectedIds?.forEach((id) => { selection[id] = true; });\n return selection;\n }, [selectedIds]);\n\n const tableColumns = React.useMemo<ColumnDef<TData>[]>(() => {\n const result: ColumnDef<TData>[] = [];\n if (onSelectionChange) {\n result.push({\n id: \"select\",\n enableSorting: false,\n header: ({ table }) => (\n <Checkbox\n aria-label=\"Select all rows on this page\"\n checked={table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && \"indeterminate\")}\n onCheckedChange={(checked) => table.toggleAllPageRowsSelected(Boolean(checked))}\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n aria-label={`Select ${getRowLabel?.(row.original) ?? row.id}`}\n checked={row.getIsSelected()}\n onCheckedChange={(checked) => row.toggleSelected(Boolean(checked))}\n onClick={(event) => event.stopPropagation()}\n />\n ),\n meta: { className: \"w-10\" },\n });\n }\n result.push(...columns.map((column): ColumnDef<TData> => ({\n id: column.id,\n ...(column.accessor ? { accessorFn: column.accessor } : {}),\n enableSorting: column.sortable ?? false,\n header: () => column.header,\n cell: ({ row }: { row: Row<TData> }) => column.cell(row.original),\n meta: { className: column.className, label: typeof column.header === \"string\" ? column.header : column.id },\n })));\n if (rowActions) {\n result.push({\n id: \"actions\",\n enableSorting: false,\n header: \"Actions\",\n cell: ({ row }) => (\n <div\n onClick={(event) => event.stopPropagation()}\n onKeyDown={(event) => event.stopPropagation()}\n >\n {rowActions(row.original)}\n </div>\n ),\n meta: { className: \"w-12 text-right\" },\n });\n }\n return result;\n }, [columns, getRowLabel, onSelectionChange, rowActions]);\n\n // TanStack Table intentionally returns a mutable table instance; React Compiler skips this hook.\n // eslint-disable-next-line react-hooks/incompatible-library\n const table = useReactTable({\n data,\n columns: tableColumns,\n getRowId: (row) => getRowId(row),\n state: { rowSelection, ...(sorting ? { sorting } : {}), ...(pagination ? { pagination } : {}) },\n enableRowSelection: Boolean(onSelectionChange),\n onRowSelectionChange: (updater) => {\n if (!onSelectionChange) return;\n const next = typeof updater === \"function\" ? updater(rowSelection) : updater;\n onSelectionChange(new Set(Object.keys(next).filter((id) => next[id])));\n },\n onSortingChange: (updater) => {\n if (!onSortingChange) return;\n onSortingChange(typeof updater === \"function\" ? updater(sorting ?? []) : updater);\n },\n onPaginationChange: (updater) => {\n if (!onPaginationChange || !pagination) return;\n onPaginationChange(typeof updater === \"function\" ? updater(pagination) : updater);\n },\n manualSorting,\n manualPagination,\n pageCount,\n rowCount,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: manualSorting ? undefined : getSortedRowModel(),\n getPaginationRowModel: pagination && !manualPagination ? getPaginationRowModel() : undefined,\n });\n\n if (!data.length && empty) return <>{empty}</>;\n\n const visibleRows = table.getRowModel().rows;\n const showPagination = Boolean(pagination && onPaginationChange);\n\n return (\n <div data-slot=\"data-table\" className={cn(\"bg-background\", className)}>\n <div className={mobileRow ? \"hidden md:block\" : undefined}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const meta = header.column.columnDef.meta as { className?: string; label?: string } | undefined;\n const canSort = header.column.getCanSort();\n const sorted = header.column.getIsSorted();\n return (\n <TableHead\n key={header.id}\n className={meta?.className}\n aria-sort={\n canSort\n ? sorted === \"asc\"\n ? \"ascending\"\n : sorted === \"desc\"\n ? \"descending\"\n : \"none\"\n : undefined\n }\n >\n {header.isPlaceholder ? null : canSort ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 h-8 gap-1.5 px-2 text-[var(--ds-metadata)] font-semibold uppercase text-muted-foreground hover:text-foreground\"\n onClick={header.column.getToggleSortingHandler()}\n aria-label={`Sort by ${meta?.label ?? header.column.id}`}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {sorted === \"asc\" ? <ArrowUp className=\"size-3.5\" /> : sorted === \"desc\" ? <ArrowDown className=\"size-3.5\" /> : <ChevronsUpDown className=\"size-3.5 opacity-60\" />}\n </Button>\n ) : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {visibleRows.map((row) => {\n const rowClickable = Boolean(\n onRowClick && (isRowClickable?.(row.original) ?? true),\n );\n return (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() ? \"selected\" : undefined}\n tabIndex={rowClickable ? 0 : undefined}\n aria-label={rowClickable ? getRowLabel?.(row.original) ?? row.id : undefined}\n className={cn(rowClickable && \"cursor-pointer outline-none focus-visible:ring-[3px] focus-visible:ring-ring/45\")}\n onClick={() => {\n if (rowClickable) onRowClick?.(row.original);\n }}\n onKeyDown={(event) => {\n if (!rowClickable || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onRowClick?.(row.original);\n }}\n >\n {row.getVisibleCells().map((cell) => {\n const meta = cell.column.columnDef.meta as { className?: string } | undefined;\n return <TableCell key={cell.id} className={meta?.className}>{flexRender(cell.column.columnDef.cell, cell.getContext())}</TableCell>;\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n {mobileRow ? (\n <div className=\"divide-y divide-border-subtle md:hidden\" role=\"list\">\n {visibleRows.map((row) => <div key={row.id} role=\"listitem\">{mobileRow(row.original)}</div>)}\n </div>\n ) : null}\n {showPagination ? (\n <PaginationControls\n currentPage={pagination!.pageIndex + 1}\n pageCount={Math.max(1, table.getPageCount())}\n pageSize={pagination!.pageSize}\n pageSizeOptions={pageSizeOptions}\n totalLabel={totalLabel}\n onPageChange={(nextPage) => table.setPageIndex(nextPage - 1)}\n onPageSizeChange={(nextSize) => table.setPageSize(nextSize)}\n />\n ) : null}\n </div>\n );\n}\n\nexport { DataTable };\nexport type { DataTableColumn, DataTableProps, PaginationState, SortingState };\n","import * as React from \"react\";\n\nimport { DataTable, type DataTableColumn } from \"./data-table\";\n\ntype EntityTableColumn<T> = {\n key: string;\n header: React.ReactNode;\n cell: (item: T) => React.ReactNode;\n className?: string;\n};\n\ntype EntityTableProps<T> = {\n items: T[];\n columns: EntityTableColumn<T>[];\n getRowId: (item: T) => string;\n selectedIds?: Set<string>;\n onSelectionChange?: (selectedIds: Set<string>) => void;\n onRowClick?: (item: T) => void;\n getRowLabel?: (item: T) => string;\n rowActions?: (item: T) => React.ReactNode;\n className?: string;\n};\n\nfunction EntityTable<T>({\n items,\n columns,\n getRowId,\n selectedIds,\n onSelectionChange,\n onRowClick,\n getRowLabel,\n rowActions,\n className\n}: EntityTableProps<T>) {\n return (\n <DataTable\n data={items}\n columns={columns.map((column): DataTableColumn<T> => ({ ...column, id: column.key }))}\n getRowId={getRowId}\n selectedIds={selectedIds}\n onSelectionChange={onSelectionChange}\n onRowClick={onRowClick}\n getRowLabel={getRowLabel}\n rowActions={rowActions}\n className={className}\n />\n );\n}\n\nexport { EntityTable };\nexport type { EntityTableColumn, EntityTableProps };\n","import * as React from \"react\";\nimport { ArrowLeft } from \"lucide-react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype DetailBackLinkProps = Omit<React.ComponentProps<\"a\">, \"children\"> & {\n label: string;\n};\n\nfunction DetailBackLink({ label, className, ...props }: DetailBackLinkProps) {\n return (\n <a\n data-slot=\"detail-back-link\"\n className={cn(\n \"inline-flex h-8 w-fit items-center gap-2 rounded-md px-2 text-sm font-medium text-muted-foreground outline-none transition-colors hover:bg-surface-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/45\",\n className,\n )}\n {...props}\n >\n <ArrowLeft className=\"size-4\" aria-hidden=\"true\" />\n {label}\n </a>\n );\n}\n\nexport { DetailBackLink };\nexport type { DetailBackLinkProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { PanelLeftIcon, Search, X } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Input } from \"../primitives/input\";\nimport { Separator } from \"../primitives/separator\";\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../primitives/sheet\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../primitives/tooltip\";\nimport { cn } from \"../primitives/utils\";\n\nconst SIDEBAR_COOKIE_NAME = \"conscia_sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 30;\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\nconst SIDEBAR_STORAGE_KEY = \"conscia-sidebar-open:v1\";\nconst SIDEBAR_STATE_CHANGE_EVENT = \"conscia-sidebar-state-change\";\n\nfunction parseSidebarOpen(value: string | null) {\n return value === \"true\" ? true : value === \"false\" ? false : null;\n}\n\nfunction readPersistedSidebarOpen() {\n if (typeof document === \"undefined\") {\n return null;\n }\n\n try {\n const storedValue = window.localStorage.getItem(SIDEBAR_STORAGE_KEY);\n const storedSidebarOpen = parseSidebarOpen(storedValue);\n\n if (storedSidebarOpen !== null) {\n return storedSidebarOpen;\n }\n } catch {\n // Fall back to the cookie when storage is unavailable.\n }\n\n const cookie = document.cookie\n .split(\"; \")\n .find((entry) => entry.startsWith(`${SIDEBAR_COOKIE_NAME}=`));\n\n if (!cookie) {\n return null;\n }\n\n const value = cookie.slice(SIDEBAR_COOKIE_NAME.length + 1);\n\n return parseSidebarOpen(value);\n}\n\nfunction persistSidebarOpen(open: boolean) {\n try {\n window.localStorage.setItem(SIDEBAR_STORAGE_KEY, String(open));\n } catch {\n // The cookie still preserves the preference when storage is unavailable.\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n window.dispatchEvent(new Event(SIDEBAR_STATE_CHANGE_EVENT));\n}\n\nfunction subscribeToSidebarOpen(onStoreChange: () => void) {\n function onStorage(event: StorageEvent) {\n if (event.key === SIDEBAR_STORAGE_KEY) {\n onStoreChange();\n }\n }\n\n window.addEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.addEventListener(\"storage\", onStorage);\n\n return () => {\n window.removeEventListener(SIDEBAR_STATE_CHANGE_EVENT, onStoreChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\ntype AppShellContextValue = {\n sidebarState: \"expanded\" | \"collapsed\";\n sidebarSide: \"left\" | \"right\";\n setSidebarSide: (side: \"left\" | \"right\") => void;\n sidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n mobileOpen: boolean;\n setMobileOpen: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst AppShellContext = React.createContext<AppShellContextValue | null>(null);\n\nfunction useAppShell() {\n const context = React.useContext(AppShellContext);\n\n if (!context) {\n throw new Error(\"useAppShell must be used within AppShell.\");\n }\n\n return context;\n}\n\nfunction useMediaQuery(query: string) {\n const [matches, setMatches] = React.useState(false);\n\n React.useEffect(() => {\n const media = window.matchMedia(query);\n const sync = () => setMatches(media.matches);\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [query]);\n\n return matches;\n}\n\nfunction AppShell({\n defaultSidebarOpen = true,\n children,\n className,\n style,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultSidebarOpen?: boolean;\n}) {\n const isMobile = useMediaQuery(\"(max-width: 1023px)\");\n const [sidebarOpen, setSidebarOpenState] = React.useState(defaultSidebarOpen);\n const [sidebarSide, setSidebarSide] = React.useState<\"left\" | \"right\">(\"left\");\n const [mobileOpen, setMobileOpen] = React.useState(false);\n\n React.useEffect(() => {\n function syncSidebarOpen() {\n setSidebarOpenState(readPersistedSidebarOpen() ?? defaultSidebarOpen);\n }\n\n const unsubscribe = subscribeToSidebarOpen(syncSidebarOpen);\n queueMicrotask(syncSidebarOpen);\n\n return unsubscribe;\n }, [defaultSidebarOpen]);\n\n const setSidebarOpen = React.useCallback((open: boolean) => {\n persistSidebarOpen(open);\n }, []);\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setMobileOpen((current) => !current);\n return;\n }\n\n persistSidebarOpen(!sidebarOpen);\n }, [isMobile, sidebarOpen]);\n\n React.useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (\n event.key.toLowerCase() === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [toggleSidebar]);\n\n const contextValue = React.useMemo<AppShellContextValue>(\n () => ({\n sidebarState: sidebarOpen ? \"expanded\" : \"collapsed\",\n sidebarSide,\n setSidebarSide,\n sidebarOpen,\n setSidebarOpen,\n mobileOpen,\n setMobileOpen,\n isMobile,\n toggleSidebar,\n }),\n [\n isMobile,\n mobileOpen,\n setSidebarOpen,\n sidebarOpen,\n sidebarSide,\n toggleSidebar,\n ],\n );\n\n return (\n <AppShellContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={120}>\n <div\n data-slot=\"app-shell\"\n data-sidebar-state={sidebarOpen ? \"expanded\" : \"collapsed\"}\n data-sidebar-side={sidebarSide}\n suppressHydrationWarning\n className={cn(\n \"group/shell min-h-svh bg-canvas text-foreground\",\n \"[--ds-app-sidebar-width:var(--ds-sidebar-width)] [--ds-app-sidebar-width-mobile:var(--ds-sidebar-width-mobile)] data-[sidebar-state=collapsed]:[--ds-app-sidebar-width:3.5rem]\",\n className,\n )}\n style={style}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </AppShellContext.Provider>\n );\n}\n\nfunction AppSidebar({\n side = \"left\",\n variant = \"dark\",\n className,\n children,\n title = \"Application navigation\",\n description = \"Primary product navigation.\",\n ...props\n}: React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\";\n /** Preserve the historical dark sidebar by default; auto follows appearance. */\n variant?: \"light\" | \"dark\" | \"auto\";\n title?: string;\n description?: string;\n}) {\n const { mobileOpen, setMobileOpen, setSidebarSide } = useAppShell();\n\n React.useEffect(() => {\n setSidebarSide(side);\n }, [setSidebarSide, side]);\n\n return (\n <>\n <Sheet open={mobileOpen} onOpenChange={setMobileOpen}>\n <SheetContent\n side={side}\n data-sidebar-variant={variant}\n className=\"w-[var(--ds-sidebar-width-mobile)] border-sidebar-border bg-sidebar-canvas p-0 text-sidebar-primary-text [&>[data-slot=sheet-close]]:right-3 [&>[data-slot=sheet-close]]:top-3 [&>[data-slot=sheet-close]]:text-sidebar-secondary-text [&>[data-slot=sheet-close]]:hover:text-sidebar-primary-text\"\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>{title}</SheetTitle>\n <SheetDescription>{description}</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full min-h-0 flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n\n <aside\n data-slot=\"app-sidebar\"\n data-side={side}\n data-sidebar-variant={variant}\n className={cn(\n \"fixed inset-y-0 z-20 hidden w-[var(--ds-app-sidebar-width)] shrink-0 flex-col border-sidebar-border bg-sidebar-canvas text-sidebar-primary-text transition-[width] duration-200 ease-linear lg:flex\",\n side === \"left\" ? \"left-0 border-r\" : \"right-0 border-l\",\n \"group-data-[sidebar-state=collapsed]/shell:w-[var(--ds-app-sidebar-width)]\",\n className,\n )}\n {...props}\n >\n {children}\n </aside>\n </>\n );\n}\n\nfunction AppSidebarHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-header\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-header-height)] min-w-0 shrink-0 items-center overflow-hidden border-b border-sidebar-border bg-sidebar-header px-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-content\"\n className={cn(\n \"flex min-h-0 min-w-0 flex-1 flex-col gap-[var(--ds-sidebar-group-gap)] overflow-x-hidden overflow-y-auto bg-sidebar-content px-[var(--ds-sidebar-content-padding-x)] py-[var(--ds-sidebar-content-padding-y)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AppSidebarFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"app-sidebar-footer\"\n className={cn(\n \"mt-auto flex min-w-0 shrink-0 flex-col gap-2 overflow-hidden border-t border-sidebar-border bg-sidebar-footer p-[var(--ds-sidebar-footer-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ProductIdentity({\n label,\n description,\n icon,\n className,\n}: {\n label: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n data-slot=\"product-identity\"\n className={cn(\"flex min-w-0 items-center gap-2\", className)}\n >\n {icon ? (\n <div className=\"flex size-7 shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover text-sidebar-icon\">\n {icon}\n </div>\n ) : null}\n <div className=\"min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden\">\n <div className=\"truncate text-sm font-semibold leading-5 text-sidebar-primary-text\">\n {label}\n </div>\n {description ? (\n <div className=\"truncate text-[var(--ds-metadata)] leading-4 text-sidebar-metadata-text\">\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"app-sidebar-separator\"\n className={cn(\"bg-sidebar-border\", className)}\n {...props}\n />\n );\n}\n\nfunction NavigationGroup({\n label,\n count,\n children,\n className,\n}: {\n label?: React.ReactNode;\n count?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <section\n data-slot=\"navigation-group\"\n className={cn(\"flex min-w-0 flex-col gap-1\", className)}\n >\n {label ? (\n <div\n data-slot=\"navigation-group-label\"\n className=\"flex min-h-6 items-center gap-2 px-2 pb-1 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-5 tracking-[0.08em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden\"\n >\n {label}\n {count !== undefined ? (\n <span className=\"ml-auto shrink-0 text-[length:var(--ds-metadata)] font-medium normal-case tracking-normal text-sidebar-group-count\">\n {count}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className=\"flex min-w-0 flex-col gap-1\">{children}</div>\n </section>\n );\n}\n\nfunction navigationItemClasses(active?: boolean) {\n return cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sm font-medium text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[var(--ds-sidebar-item-height)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text\",\n \"focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n \"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n );\n}\n\nfunction NavigationItem({\n asChild = false,\n active = false,\n tooltip,\n type,\n className,\n children,\n ...props\n}: React.ComponentProps<\"button\"> & {\n asChild?: boolean;\n active?: boolean;\n tooltip?: string;\n}) {\n const Comp = asChild ? Slot : \"button\";\n const { sidebarState, sidebarSide, isMobile } = useAppShell();\n const item = (\n <Comp\n data-slot=\"navigation-item\"\n data-active={active ? \"true\" : undefined}\n type={asChild ? undefined : (type ?? \"button\")}\n className={cn(navigationItemClasses(active), className)}\n {...props}\n >\n {children}\n </Comp>\n );\n\n if (!tooltip) {\n return item;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{item}</TooltipTrigger>\n <TooltipContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"center\"\n hidden={sidebarState !== \"collapsed\" || isMobile}\n >\n {tooltip}\n </TooltipContent>\n </Tooltip>\n );\n}\n\nfunction NavigationSubItem({\n asChild = false,\n active = false,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean;\n active?: boolean;\n}) {\n const Comp = asChild ? Slot : \"a\";\n\n return (\n <Comp\n data-slot=\"navigation-sub-item\"\n data-active={active ? \"true\" : undefined}\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sm text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[calc(var(--ds-sidebar-item-height)-0.25rem)] lg:min-h-0\",\n \"hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring\",\n \"group-data-[sidebar-state=collapsed]/shell:hidden [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon\",\n active &&\n \"bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationSubList({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"navigation-sub-list\"\n className={cn(\n \"ml-4 flex min-w-0 flex-col gap-1 border-l border-sidebar-border pl-2 group-data-[sidebar-state=collapsed]/shell:hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { isMobile, mobileOpen, sidebarOpen, toggleSidebar } = useAppShell();\n\n return (\n <Button\n data-slot=\"sidebar-trigger\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n \"shrink-0 cursor-pointer text-sidebar-secondary-text hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-sidebar-focus-ring\",\n className,\n )}\n aria-expanded={isMobile ? mobileOpen : sidebarOpen}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle navigation</span>\n </Button>\n );\n}\n\ntype SidebarSearchProps = Omit<React.ComponentProps<typeof Input>, \"type\"> & {\n expanded?: boolean;\n defaultExpanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void;\n triggerLabel?: string;\n shortcut?: string;\n};\n\n/**\n * Shared search affordance for sidebars. Applications own query state and\n * filtering; this component owns the compact trigger, focus handoff, and\n * keyboard-accessible expanded field.\n */\nfunction SidebarSearch({\n expanded: expandedProp,\n defaultExpanded = false,\n onExpandedChange,\n triggerLabel = \"Search navigation\",\n shortcut,\n className,\n onKeyDown,\n ...props\n}: SidebarSearchProps) {\n const [expandedState, setExpandedState] = React.useState(defaultExpanded);\n const expanded = expandedProp ?? expandedState;\n const inputRef = React.useRef<HTMLInputElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const mountedRef = React.useRef(false);\n\n const setExpanded = React.useCallback(\n (nextExpanded: boolean) => {\n if (expandedProp === undefined) {\n setExpandedState(nextExpanded);\n }\n onExpandedChange?.(nextExpanded);\n },\n [expandedProp, onExpandedChange],\n );\n\n React.useEffect(() => {\n if (expanded) {\n queueMicrotask(() => inputRef.current?.focus());\n } else if (mountedRef.current) {\n queueMicrotask(() => triggerRef.current?.focus());\n }\n\n mountedRef.current = true;\n }, [expanded]);\n\n if (!expanded) {\n return (\n <button\n ref={triggerRef}\n type=\"button\"\n data-slot=\"sidebar-search-trigger\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left text-sm font-medium text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring lg:min-h-[var(--ds-sidebar-item-height)]\",\n \"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0\",\n className,\n )}\n onClick={() => setExpanded(true)}\n aria-label={triggerLabel}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {triggerLabel}\n </span>\n {shortcut ? (\n <kbd className=\"ml-auto rounded border border-sidebar-border px-1.5 py-0.5 text-[length:var(--ds-metadata)] font-medium text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden\">\n {shortcut}\n </kbd>\n ) : null}\n </button>\n );\n }\n\n return (\n <div\n data-slot=\"sidebar-search\"\n data-expanded=\"true\"\n className={cn(\n \"flex min-h-[var(--ds-sidebar-item-height-touch)] items-center gap-2 rounded-[var(--ds-radius-control)] border border-sidebar-border bg-sidebar-search px-2 text-sidebar-primary-text shadow-[var(--ds-shadow-raised)] lg:min-h-[var(--ds-sidebar-item-height)]\",\n className,\n )}\n >\n <Search className=\"size-4 shrink-0 text-sidebar-icon\" />\n <Input\n ref={inputRef}\n type=\"search\"\n className=\"h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 text-sm shadow-none focus-visible:border-0 focus-visible:ring-0\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setExpanded(false);\n }\n onKeyDown?.(event);\n }}\n {...props}\n />\n <button\n type=\"button\"\n data-slot=\"sidebar-search-close\"\n className=\"grid size-7 shrink-0 cursor-pointer place-items-center rounded-[var(--ds-radius-control)] text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-2 focus-visible:ring-sidebar-focus-ring\"\n onClick={() => {\n setExpanded(false);\n }}\n aria-label=\"Close search\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n );\n}\n\nfunction MainRegion({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"main-region\"\n className={cn(\n \"flex min-h-svh min-w-0 w-full flex-1 flex-col transition-[padding] duration-200 ease-linear\",\n \"group-data-[sidebar-side=left]/shell:lg:pl-[var(--ds-app-sidebar-width)] group-data-[sidebar-side=right]/shell:lg:pr-[var(--ds-app-sidebar-width)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TopBar({\n className,\n ...props\n}: React.ComponentProps<\"header\">) {\n return (\n <header\n data-slot=\"top-bar\"\n className={cn(\n \"sticky top-0 z-10 flex min-h-14 shrink-0 items-center justify-between gap-3 border-b border-border-subtle bg-background/96 px-3 backdrop-blur md:px-4\",\n \"supports-[backdrop-filter]:bg-background/88\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageFrame({\n width = \"full\",\n className,\n ...props\n}: React.ComponentProps<\"main\"> & {\n width?: \"full\" | \"wide\" | \"focused\" | \"reading\";\n}) {\n return (\n <main\n data-slot=\"page-frame\"\n data-width={width}\n className={cn(\n \"min-w-0 w-full flex-1 px-3 py-[var(--ds-space-section)] md:px-[var(--ds-space-page)]\",\n width === \"wide\" && \"mx-auto w-full max-w-[86rem]\",\n width === \"focused\" && \"mx-auto w-full max-w-[64rem]\",\n width === \"reading\" && \"mx-auto w-full max-w-[48rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction PageContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-content\"\n className={cn(\"flex min-w-0 flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\nfunction PageBoundary({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"page-boundary\"\n className={cn(\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InspectorRegion({\n className,\n ...props\n}: React.ComponentProps<\"aside\">) {\n return (\n <aside\n data-slot=\"inspector-region\"\n className={cn(\n \"w-full border-l border-border-subtle bg-surface md:w-[20rem] xl:w-[24rem]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n AppShell,\n AppSidebar,\n AppSidebarContent,\n AppSidebarFooter,\n AppSidebarHeader,\n InspectorRegion,\n MainRegion,\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n PageBoundary,\n PageContent,\n PageFrame,\n ProductIdentity,\n SidebarSeparator,\n SidebarSearch,\n SidebarTrigger,\n TopBar,\n useAppShell,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\nfunction ActivityList({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"activity-list\" className={cn(\"divide-y divide-border-subtle\", className)} {...props} />;\n}\n\ntype ActivityItemProps = React.ComponentProps<\"div\"> & {\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n metadata?: React.ReactNode;\n status?: React.ReactNode;\n};\n\nfunction ActivityItem({ icon, title, description, metadata, status, className, ...props }: ActivityItemProps) {\n return (\n <div data-slot=\"activity-item\" className={cn(\"grid grid-cols-[auto_minmax(0,1fr)_auto] gap-3 py-3\", className)} {...props}>\n <div className=\"flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4\">\n {icon}\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-sm font-medium text-foreground\">{title}</div>\n {description ? <div className=\"mt-0.5 text-sm text-muted-foreground\">{description}</div> : null}\n {metadata ? <div className=\"mt-1 text-[var(--ds-metadata)] text-muted-foreground\">{metadata}</div> : null}\n </div>\n {status ? <div className=\"shrink-0\">{status}</div> : null}\n </div>\n );\n}\n\nexport { ActivityItem, ActivityList };\nexport type { ActivityItemProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from \"../primitives/dialog\";\n\ntype ConfirmationDialogProps = {\n trigger: React.ReactNode;\n title: React.ReactNode;\n description: React.ReactNode;\n children?: React.ReactNode;\n confirmLabel?: React.ReactNode;\n cancelLabel?: React.ReactNode;\n confirmVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n pending?: boolean;\n onConfirm: () => unknown | Promise<unknown>;\n onError?: (error: unknown) => void;\n};\n\nfunction ConfirmationDialog({ trigger, title, description, children, confirmLabel = \"Confirm\", cancelLabel = \"Cancel\", confirmVariant = \"destructive\", pending = false, onConfirm, onError }: ConfirmationDialogProps) {\n const [open, setOpen] = React.useState(false);\n const [confirming, setConfirming] = React.useState(false);\n const isPending = pending || confirming;\n\n async function confirm() {\n if (isPending) {\n return;\n }\n\n setConfirming(true);\n\n try {\n await onConfirm();\n setOpen(false);\n } catch (error) {\n onError?.(error);\n } finally {\n setConfirming(false);\n }\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>{trigger}</DialogTrigger>\n <DialogContent size=\"small\">\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogBody>{children}</DialogBody>\n <DialogFooter>\n <DialogClose asChild>\n <Button type=\"button\" variant=\"outline\" disabled={isPending}>{cancelLabel}</Button>\n </DialogClose>\n <Button type=\"button\" variant={confirmVariant} disabled={isPending} onClick={confirm}>\n {isPending ? \"Working...\" : confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\nexport { ConfirmationDialog };\nexport type { ConfirmationDialogProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, Copy } from \"lucide-react\";\n\nimport { Button } from \"../primitives/button\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../primitives/tabs\";\nimport { cn } from \"../primitives/utils\";\n\ntype CodeBlockSnippet = {\n value: string;\n label: string;\n code: string;\n};\n\ntype CodeBlockProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n snippets: CodeBlockSnippet[];\n defaultValue?: string;\n copyLabel?: string;\n};\n\nfunction CodeBlock({\n snippets,\n defaultValue,\n copyLabel = \"Copy code\",\n className,\n ...props\n}: CodeBlockProps) {\n const initialValue = defaultValue ?? snippets[0]?.value ?? \"\";\n const [activeValue, setActiveValue] = React.useState(initialValue);\n const [copiedValue, setCopiedValue] = React.useState<string | null>(null);\n const [copyError, setCopyError] = React.useState(false);\n const copyStatusId = React.useId();\n const activeSnippet =\n snippets.find((snippet) => snippet.value === activeValue) ?? snippets[0];\n\n if (!activeSnippet) return null;\n\n return (\n <div\n data-slot=\"code-block\"\n className={cn(\"overflow-hidden rounded-lg border border-border-subtle bg-surface\", className)}\n {...props}\n >\n <Tabs value={activeSnippet.value} onValueChange={setActiveValue} variant=\"segmented\" className=\"gap-0\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-subtle bg-surface-muted px-3 py-2\">\n <TabsList variant=\"segmented\" size=\"compact\" aria-label=\"Code language\">\n {snippets.map((snippet) => (\n <TabsTrigger key={snippet.value} value={snippet.value}>\n {snippet.label}\n </TabsTrigger>\n ))}\n </TabsList>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={async () => {\n try {\n await navigator.clipboard.writeText(activeSnippet.code);\n setCopiedValue(activeSnippet.value);\n setCopyError(false);\n } catch {\n setCopiedValue(null);\n setCopyError(true);\n }\n }}\n aria-describedby={copyStatusId}\n >\n {copiedValue === activeSnippet.value ? <Check /> : <Copy />}\n {copiedValue === activeSnippet.value ? \"Copied\" : copyLabel}\n </Button>\n <span id={copyStatusId} className=\"sr-only\" role=\"status\" aria-live=\"polite\">{copyError ? \"Code could not be copied. Select the code and copy it manually.\" : copiedValue === activeSnippet.value ? \"Code copied to clipboard.\" : \"\"}</span>\n </div>\n {snippets.map((snippet) => (\n <TabsContent key={snippet.value} value={snippet.value} className=\"m-0\">\n <pre className=\"max-h-[32rem] overflow-auto p-4 text-sm leading-6\">\n <code>{snippet.code}</code>\n </pre>\n </TabsContent>\n ))}\n </Tabs>\n </div>\n );\n}\n\nexport { CodeBlock };\nexport type { CodeBlockProps, CodeBlockSnippet };\n","import * as React from \"react\";\n\nimport { Card } from \"../primitives/card\";\nimport { cn } from \"../primitives/utils\";\n\nfunction InventorySurface({ className, ...props }: React.ComponentProps<typeof Card>) {\n return (\n <Card\n data-slot=\"inventory-surface\"\n className={cn(\"gap-0 overflow-hidden py-0\", className)}\n {...props}\n />\n );\n}\n\nfunction InventoryDesktop({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-desktop\" className={cn(\"hidden lg:block\", className)} {...props} />;\n}\n\nfunction InventoryMobile({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"inventory-mobile\" className={cn(\"divide-y divide-border-subtle lg:hidden\", className)} {...props} />;\n}\n\nexport { InventoryDesktop, InventoryMobile, InventorySurface };\n","import * as React from \"react\";\n\nimport { Skeleton } from \"../primitives/skeleton\";\nimport { cn } from \"../primitives/utils\";\n\ntype MetricBandProps = React.ComponentProps<\"div\"> & {\n columns?: 2 | 3 | 4 | 5;\n};\n\nfunction MetricBand({ columns = 4, className, ...props }: MetricBandProps) {\n return (\n <div\n data-slot=\"metric-band\"\n data-columns={columns}\n className={cn(\n \"grid grid-cols-2 border-b border-border-subtle\",\n columns === 2 && \"lg:grid-cols-2\",\n columns === 3 && \"lg:grid-cols-3\",\n columns === 4 && \"lg:grid-cols-4\",\n columns === 5 && \"lg:grid-cols-5\",\n className,\n )}\n {...props}\n />\n );\n}\n\ntype MetricBandItemProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value?: React.ReactNode;\n detail?: React.ReactNode;\n icon?: React.ReactNode;\n iconClassName?: string;\n loading?: boolean;\n};\n\nfunction MetricBandItem({\n label,\n value,\n detail,\n icon,\n iconClassName,\n loading = false,\n className,\n ...props\n}: MetricBandItemProps) {\n return (\n <div\n data-slot=\"metric-band-item\"\n className={cn(\n \"flex min-h-28 flex-col items-start gap-3 border-r border-border-subtle p-4 last:border-r-0 sm:flex-row sm:items-center sm:gap-4 sm:p-5\",\n \"[&:nth-child(-n+2)]:border-b lg:[&:nth-child(-n+2)]:border-b-0\",\n className,\n )}\n {...props}\n >\n {icon ? (\n <div\n className={cn(\n \"flex size-10 shrink-0 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\",\n iconClassName,\n )}\n >\n {icon}\n </div>\n ) : null}\n <div className=\"grid min-w-0 gap-1\">\n <div className=\"text-sm leading-snug text-muted-foreground\">{label}</div>\n {loading ? (\n <Skeleton className=\"h-7 w-14\" />\n ) : (\n <div className=\"text-2xl font-semibold tracking-tight\">{value ?? 0}</div>\n )}\n {detail ? (\n <div className=\"text-[var(--ds-metadata)] leading-snug text-muted-foreground\">\n {detail}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport { MetricBand, MetricBandItem };\nexport type { MetricBandItemProps, MetricBandProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageHeaderProps = React.ComponentProps<\"header\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should pass an explicit actions node.\n */\n action?: {\n label: string;\n href: string;\n };\n /**\n * Temporary compatibility prop for migrated Admin UI pages.\n * New implementations should use actions.\n */\n actionNode?: React.ReactNode;\n};\n\nfunction PageHeader({\n title,\n description,\n status,\n metadata,\n actions,\n action,\n actionNode,\n className,\n ...props\n}: PageHeaderProps) {\n const resolvedActions =\n actions ??\n actionNode ??\n (action ? (\n <a\n className=\"inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground shadow-xs outline-none transition-colors hover:bg-accent-hover focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\"\n href={action.href}\n >\n {action.label}\n </a>\n ) : null);\n\n return (\n <header\n data-slot=\"page-header\"\n className={cn(\"flex flex-col gap-3 border-b border-border-subtle bg-background px-5 py-4 lg:flex-row lg:items-start lg:justify-between\", className)}\n {...props}\n >\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <h1 className=\"truncate text-[length:var(--ds-page-title)] font-semibold leading-tight\">{title}</h1>\n {status}\n </div>\n {description ? <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">{description}</p> : null}\n {metadata ? <div className=\"mt-2 text-[var(--ds-metadata)] text-muted-foreground\">{metadata}</div> : null}\n </div>\n {resolvedActions ? <div className=\"flex shrink-0 flex-wrap items-center gap-2\">{resolvedActions}</div> : null}\n </header>\n );\n}\n\nexport { PageHeader };\nexport type { PageHeaderProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype PageToolbarProps = React.ComponentProps<\"div\"> & {\n search?: React.ReactNode;\n filters?: React.ReactNode;\n viewControls?: React.ReactNode;\n bulkActions?: React.ReactNode;\n};\n\nfunction PageToolbar({\n search,\n filters,\n viewControls,\n bulkActions,\n className,\n children,\n ...props\n}: PageToolbarProps) {\n return (\n <div\n data-slot=\"page-toolbar\"\n className={cn(\"grid gap-2 border-b border-border-subtle bg-background px-5 py-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-center\", className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-2 sm:flex-row sm:items-center\">\n {search ? <div className=\"min-w-0 flex-1 sm:min-w-48 sm:max-w-sm\">{search}</div> : null}\n {filters ? <div className=\"flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:flex-wrap sm:items-center\">{filters}</div> : null}\n </div>\n <div className=\"flex min-h-[var(--ds-control-height)] flex-wrap items-center gap-2 lg:justify-end\">\n {bulkActions ? (\n <div data-slot=\"page-toolbar-bulk-actions\" className=\"contents\">\n {bulkActions}\n </div>\n ) : null}\n {viewControls}\n {children}\n </div>\n </div>\n );\n}\n\nexport { PageToolbar };\nexport type { PageToolbarProps };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n appearanceOptions,\n applyConsciaPreferences,\n densityOptions,\n type ConsciaAppearance,\n type ConsciaDensity,\n} from \"../foundation/preferences\";\nimport { cn } from \"../primitives/utils\";\n\nconst APPEARANCE_KEY = \"conscia-appearance:v1\";\nconst DENSITY_KEY = \"conscia-density:v1\";\nconst PREFERENCE_EVENT = \"conscia-preferences\";\nconst volatilePreferences = new Map<string, string>();\n\nfunction readPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n if (typeof window === \"undefined\") {\n return fallback;\n }\n\n try {\n const value =\n window.localStorage.getItem(key) ?? volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n } catch {\n const value = volatilePreferences.get(key);\n\n return value && allowedValues.includes(value as T)\n ? (value as T)\n : fallback;\n }\n}\n\nfunction writePreference(key: string, value: string) {\n volatilePreferences.set(key, value);\n\n try {\n window.localStorage.setItem(key, value);\n } catch {\n // Preferences still apply for this session when storage is unavailable.\n }\n\n window.dispatchEvent(new Event(PREFERENCE_EVENT));\n}\n\nfunction useStoredPreference<T extends string>(\n key: string,\n fallback: T,\n allowedValues: readonly T[],\n): T {\n return React.useSyncExternalStore(\n (onStoreChange) => {\n window.addEventListener(\"storage\", onStoreChange);\n window.addEventListener(PREFERENCE_EVENT, onStoreChange);\n return () => {\n window.removeEventListener(\"storage\", onStoreChange);\n window.removeEventListener(PREFERENCE_EVENT, onStoreChange);\n };\n },\n () => readPreference(key, fallback, allowedValues),\n () => fallback,\n );\n}\n\nfunction useConsciaPreferences() {\n const appearance = useStoredPreference<ConsciaAppearance>(\n APPEARANCE_KEY,\n \"system\",\n appearanceOptions,\n );\n const density = useStoredPreference<ConsciaDensity>(\n DENSITY_KEY,\n \"comfortable\",\n densityOptions,\n );\n\n return { appearance, density };\n}\n\nfunction DesignSystemPreferenceSync() {\n const { appearance, density } = useConsciaPreferences();\n\n React.useEffect(() => {\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const sync = () =>\n applyConsciaPreferences(\n document.documentElement,\n appearance,\n density,\n media.matches,\n );\n\n sync();\n media.addEventListener(\"change\", sync);\n return () => media.removeEventListener(\"change\", sync);\n }, [appearance, density]);\n\n return null;\n}\n\nfunction AppearanceControl({ className }: { className?: string }) {\n const { appearance } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Appearance\"\n value={appearance}\n values={appearanceOptions}\n onChange={(value) => writePreference(APPEARANCE_KEY, value)}\n />\n );\n}\n\nfunction DensityControl({ className }: { className?: string }) {\n const { density } = useConsciaPreferences();\n\n return (\n <SegmentedControl\n className={className}\n label=\"Density\"\n value={density}\n values={densityOptions}\n onChange={(value) => writePreference(DENSITY_KEY, value)}\n />\n );\n}\n\nfunction DesignPreferenceControls({ className }: { className?: string }) {\n return (\n <div className={cn(\"flex flex-col gap-3 text-sm\", className)}>\n <AppearanceControl />\n <DensityControl />\n </div>\n );\n}\n\nfunction SegmentedControl({\n className,\n label,\n value,\n values,\n onChange,\n}: {\n className?: string;\n label: string;\n value: string;\n values: string[];\n onChange: (value: string) => void;\n}) {\n return (\n <fieldset className={cn(\"flex flex-col gap-2\", className)}>\n <legend className=\"text-[var(--ds-metadata)] font-medium text-muted-foreground\">\n {label}\n </legend>\n <div className=\"inline-flex rounded-[var(--ds-radius-control)] bg-muted p-1\">\n {values.map((item) => (\n <button\n key={item}\n type=\"button\"\n aria-pressed={value === item}\n suppressHydrationWarning\n onClick={() => onChange(item)}\n className=\"h-7 rounded-[calc(var(--ds-radius-control)-2px)] px-2.5 text-[var(--ds-metadata)] font-medium capitalize text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-pressed:bg-background aria-pressed:text-foreground aria-pressed:shadow-xs\"\n >\n {item}\n </button>\n ))}\n </div>\n </fieldset>\n );\n}\n\nexport {\n AppearanceControl,\n DensityControl,\n DesignPreferenceControls,\n DesignSystemPreferenceSync,\n useConsciaPreferences,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ProviderMarkProps = React.ComponentProps<\"div\"> & {\n name: string;\n shortName: string;\n description?: React.ReactNode;\n size?: \"sm\" | \"default\";\n};\n\nfunction ProviderMark({ name, shortName, description, size = \"default\", className, ...props }: ProviderMarkProps) {\n return (\n <div data-slot=\"provider-mark\" className={cn(\"flex min-w-0 items-center gap-3\", className)} {...props}>\n <div\n aria-hidden=\"true\"\n className={cn(\n \"flex shrink-0 items-center justify-center rounded-md border border-border-subtle bg-surface-muted font-semibold tracking-tight text-foreground\",\n size === \"sm\" ? \"size-8 text-[10px]\" : \"size-10 text-xs\",\n )}\n >\n {shortName}\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium text-foreground\">{name}</div>\n {description ? <div className=\"mt-0.5 truncate text-[var(--ds-metadata)] text-muted-foreground\">{description}</div> : null}\n </div>\n </div>\n );\n}\n\nexport { ProviderMark };\nexport type { ProviderMarkProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ResourceSummaryProps = React.ComponentProps<\"section\"> & {\n variant?: \"plain\" | \"surface\";\n title?: React.ReactNode;\n description?: React.ReactNode;\n status?: React.ReactNode;\n metadata?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction ResourceSummary({\n variant = \"plain\",\n title,\n description,\n status,\n metadata,\n actions,\n className,\n children,\n ...props\n}: ResourceSummaryProps) {\n return (\n <section\n data-slot=\"resource-summary\"\n className={cn(\n \"px-5 py-4\",\n variant === \"plain\" && \"border-b border-border-subtle bg-background\",\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between\">\n <div className=\"min-w-0\">\n {title || status ? (\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n {title ? (\n <h2 className=\"truncate text-[var(--ds-section-title)] font-semibold\">\n {title}\n </h2>\n ) : null}\n {status}\n </div>\n ) : null}\n {description ? (\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">\n {description}\n </p>\n ) : null}\n {metadata ? (\n <div className=\"mt-2 text-[var(--ds-metadata)] text-muted-foreground\">\n {metadata}\n </div>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 flex-wrap items-center gap-2\">\n {actions}\n </div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction DetailSections({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"detail-sections\"\n className={cn(\"flex flex-col gap-[var(--ds-space-section)]\", className)}\n {...props}\n />\n );\n}\n\ntype DetailSectionProps = React.ComponentProps<\"section\"> & {\n variant?: \"surface\" | \"open\";\n title: React.ReactNode;\n description?: React.ReactNode;\n actions?: React.ReactNode;\n};\n\nfunction DetailSection({\n variant = \"surface\",\n title,\n description,\n actions,\n className,\n children,\n ...props\n}: DetailSectionProps) {\n return (\n <section\n data-slot=\"detail-section\"\n className={cn(\n variant === \"surface\" &&\n \"rounded-[var(--ds-radius-surface)] border border-border-subtle bg-surface p-[var(--ds-surface-padding)]\",\n variant === \"open\" && \"border-b border-border-subtle pb-[var(--ds-space-section)]\",\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[var(--ds-section-title)] font-semibold\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 max-w-3xl text-sm text-muted-foreground\">\n {description}\n </p>\n ) : null}\n </div>\n {actions ? (\n <div className=\"flex shrink-0 items-center gap-2\">{actions}</div>\n ) : null}\n </div>\n {children ? <div className=\"mt-4\">{children}</div> : null}\n </section>\n );\n}\n\nfunction KeyValueList({\n className,\n ...props\n}: React.ComponentProps<\"dl\">) {\n return (\n <dl\n data-slot=\"key-value-list\"\n className={cn(\"grid gap-3 text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction KeyValueItem({\n label,\n value,\n breakValue = false,\n}: {\n label: React.ReactNode;\n value: React.ReactNode;\n breakValue?: boolean;\n}) {\n return (\n <div data-slot=\"key-value-item\" className=\"flex justify-between gap-4\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd\n className={cn(\n \"text-right font-medium\",\n breakValue && \"break-all\",\n )}\n >\n {value}\n </dd>\n </div>\n );\n}\n\nexport {\n DetailSection,\n DetailSections,\n KeyValueItem,\n KeyValueList,\n ResourceSummary,\n};\nexport type { DetailSectionProps, ResourceSummaryProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../primitives/collapsible\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuTrigger,\n} from \"../primitives/dropdown-menu\";\nimport { cn } from \"../primitives/utils\";\nimport {\n NavigationGroup,\n NavigationItem,\n NavigationSubItem,\n NavigationSubList,\n useAppShell,\n} from \"./app-shell\";\n\nexport type SidebarNavigationItem = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n active?: boolean;\n startsSection?: boolean;\n};\n\nexport type SidebarNavigationSection = Omit<\n SidebarNavigationItem,\n \"active\"\n> & {\n active?: boolean;\n items: SidebarNavigationItem[];\n};\n\nexport type SidebarNavigationEntry =\n | SidebarNavigationItem\n | SidebarNavigationSection;\n\nexport type SidebarNavigationLinkProps = {\n \"aria-current\"?: \"page\";\n \"aria-label\": string;\n children: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\ntype SidebarNavigationProps = {\n entries: SidebarNavigationEntry[];\n renderLink: (\n item: SidebarNavigationItem,\n props: SidebarNavigationLinkProps,\n ) => React.ReactElement;\n onNavigate?: () => void;\n storageKey?: string;\n className?: string;\n};\n\nfunction isSection(\n entry: SidebarNavigationEntry,\n): entry is SidebarNavigationSection {\n return \"items\" in entry;\n}\n\nfunction readOpenSections(storageKey?: string) {\n if (!storageKey || typeof window === \"undefined\") {\n return {};\n }\n\n try {\n const storedValue = window.localStorage.getItem(storageKey);\n\n if (!storedValue) {\n return {};\n }\n\n const parsedValue: unknown = JSON.parse(storedValue);\n return typeof parsedValue === \"object\" && parsedValue !== null\n ? (parsedValue as Record<string, boolean>)\n : {};\n } catch {\n return {};\n }\n}\n\nfunction SidebarNavigation({\n entries,\n renderLink,\n onNavigate,\n storageKey,\n className,\n}: SidebarNavigationProps) {\n const { isMobile, sidebarSide, sidebarState } = useAppShell();\n const [openSections, setOpenSections] = React.useState<\n Record<string, boolean>\n >({});\n const storageReady = React.useRef(false);\n\n React.useEffect(() => {\n storageReady.current = false;\n const storedSections = readOpenSections(storageKey);\n\n queueMicrotask(() => {\n storageReady.current = true;\n setOpenSections(storedSections);\n });\n }, [storageKey]);\n\n React.useEffect(() => {\n if (\n !storageReady.current ||\n !storageKey ||\n !entries.some(isSection)\n ) {\n return;\n }\n\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(openSections));\n } catch {\n // Navigation remains functional when storage is unavailable.\n }\n }, [entries, openSections, storageKey]);\n\n const handleNavigate = React.useCallback<\n React.MouseEventHandler<HTMLAnchorElement>\n >(() => {\n onNavigate?.();\n }, [onNavigate]);\n\n return (\n <nav\n data-slot=\"sidebar-navigation\"\n aria-label=\"Primary navigation\"\n className={cn(\"flex flex-col gap-1\", className)}\n >\n {entries.map((entry) => {\n if (!isSection(entry)) {\n return (\n <NavigationGroup\n key={entry.id}\n className={entry.startsSection ? \"mt-2\" : undefined}\n >\n <NavigationItem asChild active={entry.active} tooltip={entry.label}>\n {renderLink(entry, {\n \"aria-current\": entry.active ? \"page\" : undefined,\n \"aria-label\": entry.label,\n onClick: handleNavigate,\n children: (\n <>\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n </>\n ),\n })}\n </NavigationItem>\n </NavigationGroup>\n );\n }\n\n const sectionOpen = (openSections[entry.id] ?? false) || entry.active;\n\n if (sidebarState === \"collapsed\" && !isMobile) {\n return (\n <DropdownMenu key={entry.id}>\n <NavigationGroup\n className={entry.startsSection ? \"mt-2\" : undefined}\n >\n <DropdownMenuTrigger asChild>\n <NavigationItem\n active={entry.active}\n aria-label={`${entry.label} menu`}\n >\n {entry.icon}\n <span className=\"sr-only\">{entry.label}</span>\n </NavigationItem>\n </DropdownMenuTrigger>\n </NavigationGroup>\n <DropdownMenuContent\n side={sidebarSide === \"left\" ? \"right\" : \"left\"}\n align=\"start\"\n sideOffset={8}\n className=\"min-w-56 rounded-[var(--ds-radius-surface)] p-1.5\"\n >\n <DropdownMenuLabel className=\"px-2 py-1.5 font-semibold text-muted-foreground\">\n {entry.label}\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {entry.items.map((item) => (\n <DropdownMenuItem\n key={item.id}\n asChild\n className={cn(\n \"min-h-9 cursor-pointer rounded-[var(--ds-radius-control)] [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75]\",\n item.active &&\n \"bg-selection-background text-selection-foreground shadow-[inset_2px_0_0_var(--selection-indicator)] focus:bg-selection-background focus:text-selection-foreground\",\n )}\n >\n {renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": item.label,\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n </>\n ),\n })}\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <Collapsible\n key={entry.id}\n open={sectionOpen}\n onOpenChange={(open) =>\n setOpenSections((current) => ({\n ...current,\n [entry.id]: open,\n }))\n }\n className={cn(\n \"group/collapsible\",\n entry.startsSection && \"mt-2\",\n )}\n >\n <NavigationGroup>\n <CollapsibleTrigger asChild>\n <NavigationItem\n active={entry.active}\n tooltip={entry.label}\n aria-label={entry.label}\n aria-expanded={sectionOpen}\n >\n {entry.icon}\n <span className=\"truncate group-data-[sidebar-state=collapsed]/shell:hidden\">\n {entry.label}\n </span>\n <ChevronRight className=\"ml-auto transition-transform duration-150 ease-out group-data-[sidebar-state=collapsed]/shell:hidden group-data-[state=open]/collapsible:rotate-90\" />\n </NavigationItem>\n </CollapsibleTrigger>\n <CollapsibleContent\n data-slot=\"sidebar-collapsible-content\"\n className=\"overflow-hidden\"\n >\n <NavigationSubList>\n {entry.items.map((item) => (\n <NavigationSubItem\n key={item.id}\n asChild\n active={item.active}\n >\n {renderLink(item, {\n \"aria-current\": item.active ? \"page\" : undefined,\n \"aria-label\": item.label,\n onClick: handleNavigate,\n children: (\n <>\n {item.icon}\n <span className=\"truncate\">{item.label}</span>\n </>\n ),\n })}\n </NavigationSubItem>\n ))}\n </NavigationSubList>\n </CollapsibleContent>\n </NavigationGroup>\n </Collapsible>\n );\n })}\n </nav>\n );\n}\n\nexport { SidebarNavigation };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype StateViewProps = React.ComponentProps<\"div\"> & {\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n icon?: React.ReactNode;\n};\n\nfunction StateView({ title, description, action, icon, className, ...props }: StateViewProps) {\n return (\n <div\n data-slot=\"state-view\"\n className={cn(\"flex min-h-72 flex-col items-center justify-center gap-3 border-b px-6 py-12 text-center\", className)}\n {...props}\n >\n {icon ? (\n <div className=\"flex size-10 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5\">\n {icon}\n </div>\n ) : null}\n <h2 className=\"text-base font-semibold\">{title}</h2>\n {description ? <p className=\"max-w-md text-sm text-muted-foreground\">{description}</p> : null}\n {action ? <div className=\"mt-1\">{action}</div> : null}\n </div>\n );\n}\n\nfunction LoadingRows({\n rows = 6,\n columns = 5,\n}: {\n rows?: number;\n columns?: number;\n}) {\n return (\n <div data-slot=\"loading-rows\" className=\"border-b\">\n {Array.from({ length: rows }).map((_, index) => (\n <div\n key={index}\n className=\"grid h-[var(--ds-row-height)] items-center gap-4 border-b px-5 last:border-b-0\"\n style={{ gridTemplateColumns: `2fr repeat(${Math.max(columns - 1, 1)}, minmax(5rem, 1fr))` }}\n >\n {Array.from({ length: columns }).map((_, columnIndex) => (\n <div\n key={columnIndex}\n className={cn(\n \"h-3 rounded bg-muted\",\n columnIndex === 0 ? \"w-44\" : \"w-24\",\n )}\n />\n ))}\n </div>\n ))}\n </div>\n );\n}\n\nfunction ErrorState({ title, description, action, className, ...props }: StateViewProps) {\n return (\n <StateView\n title={title}\n description={description}\n action={action}\n className={cn(\"bg-danger-background/60\", className)}\n role=\"alert\"\n aria-live=\"assertive\"\n {...props}\n />\n );\n}\n\nexport { ErrorState, LoadingRows, StateView };\nexport type { StateViewProps };\n","import * as React from \"react\";\n\nimport { cn } from \"../primitives/utils\";\n\ntype ValueMeterProps = React.ComponentProps<\"div\"> & {\n label: React.ReactNode;\n value: number;\n maximum?: number | null;\n valueLabel?: React.ReactNode;\n detail?: React.ReactNode;\n tone?: \"neutral\" | \"success\" | \"warning\" | \"danger\";\n};\n\nfunction ValueMeter({\n label,\n value,\n maximum,\n valueLabel,\n detail,\n tone = \"neutral\",\n className,\n ...props\n}: ValueMeterProps) {\n const labelId = React.useId();\n const hasMaximum = typeof maximum === \"number\" && maximum > 0;\n const boundedValue = hasMaximum\n ? Math.min(maximum, Math.max(0, value))\n : value;\n const percentage = hasMaximum\n ? (boundedValue / maximum) * 100\n : null;\n const resolvedValueLabel =\n valueLabel ??\n (hasMaximum ? `${boundedValue} of ${maximum}` : String(boundedValue));\n\n return (\n <div\n data-slot=\"value-meter\"\n className={cn(\"grid gap-2\", className)}\n {...props}\n >\n <div className=\"flex items-baseline justify-between gap-4 text-sm\">\n <span id={labelId} className=\"font-medium text-foreground\">{label}</span>\n <span className=\"text-muted-foreground\">{resolvedValueLabel}</span>\n </div>\n {percentage === null ? null : (\n <div\n role=\"progressbar\"\n aria-labelledby={labelId}\n aria-valuemin={0}\n aria-valuemax={maximum ?? undefined}\n aria-valuenow={boundedValue}\n className=\"h-2 overflow-hidden rounded-full bg-surface-muted\"\n >\n <div\n className={cn(\n \"h-full rounded-full bg-neutral-foreground transition-[width]\",\n tone === \"success\" && \"bg-success-foreground\",\n tone === \"warning\" && \"bg-warning-foreground\",\n tone === \"danger\" && \"bg-danger-foreground\",\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )}\n {detail ? <div className=\"text-xs text-muted-foreground\">{detail}</div> : null}\n </div>\n );\n}\n\nexport { ValueMeter };\nexport type { ValueMeterProps };\n"],"mappings":"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","names":["jsx","jsxs","table","jsx","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","ChevronRight","Fragment","jsx","jsxs","ChevronRight","jsx","jsxs","_","React","jsx","jsxs"]}
|