@devalok/shilp-sutra 0.44.1 → 0.45.0

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.
Files changed (131) hide show
  1. package/AGENTS.md +13 -11
  2. package/BREAKING.json +209 -27
  3. package/MIGRATION.md +34 -0
  4. package/README.md +12 -0
  5. package/dist/_chunks/badge-group.js +1 -0
  6. package/dist/_chunks/badge-group.js.map +1 -1
  7. package/dist/_chunks/block-shell.js +25 -0
  8. package/dist/_chunks/block-shell.js.map +1 -0
  9. package/dist/_chunks/chat.js +4 -2
  10. package/dist/_chunks/chat.js.map +1 -1
  11. package/dist/_chunks/document-preview.js +1 -1
  12. package/dist/_chunks/image-preview.js +4 -4
  13. package/dist/_chunks/shared.js +65 -78
  14. package/dist/_chunks/shared.js.map +1 -1
  15. package/dist/_chunks/success.js +108 -106
  16. package/dist/_chunks/success.js.map +1 -1
  17. package/dist/ai/blocks/block-shell.d.ts +19 -0
  18. package/dist/ai/blocks/block-shell.d.ts.map +1 -0
  19. package/dist/ai/blocks/block-table.d.ts.map +1 -1
  20. package/dist/ai/blocks/confirm.d.ts.map +1 -1
  21. package/dist/ai/blocks/error.d.ts.map +1 -1
  22. package/dist/ai/blocks/error.js +5 -5
  23. package/dist/ai/blocks/error.js.map +1 -1
  24. package/dist/ai/blocks/success.d.ts.map +1 -1
  25. package/dist/ai/blocks/text.d.ts.map +1 -1
  26. package/dist/ai/blocks/text.js +4 -3
  27. package/dist/ai/blocks/text.js.map +1 -1
  28. package/dist/composed/activity-feed.d.ts.map +1 -1
  29. package/dist/composed/activity-feed.js +14 -12
  30. package/dist/composed/activity-feed.js.map +1 -1
  31. package/dist/composed/file-preview/audio-preview.d.ts.map +1 -1
  32. package/dist/composed/file-preview/shared.d.ts +10 -0
  33. package/dist/composed/file-preview/shared.d.ts.map +1 -1
  34. package/dist/composed/file-preview/video-preview.d.ts.map +1 -1
  35. package/dist/composed/file-preview.js +149 -188
  36. package/dist/composed/file-preview.js.map +1 -1
  37. package/dist/composed/master-detail.d.ts.map +1 -1
  38. package/dist/composed/master-detail.js +13 -4
  39. package/dist/composed/master-detail.js.map +1 -1
  40. package/dist/composed/schedule-view.d.ts.map +1 -1
  41. package/dist/composed/schedule-view.js +52 -39
  42. package/dist/composed/schedule-view.js.map +1 -1
  43. package/dist/shell/notification-preferences.d.ts.map +1 -1
  44. package/dist/shell/notification-preferences.js +115 -114
  45. package/dist/shell/notification-preferences.js.map +1 -1
  46. package/dist/ui/badge-group.d.ts.map +1 -1
  47. package/dist/ui/card.d.ts +66 -16
  48. package/dist/ui/card.d.ts.map +1 -1
  49. package/dist/ui/card.js +85 -60
  50. package/dist/ui/card.js.map +1 -1
  51. package/dist/ui/chat/message.d.ts.map +1 -1
  52. package/dist/ui/color-input.d.ts.map +1 -1
  53. package/dist/ui/color-input.js +18 -18
  54. package/dist/ui/color-input.js.map +1 -1
  55. package/dist/ui/data-table-body.d.ts.map +1 -1
  56. package/dist/ui/data-table-body.js +94 -64
  57. package/dist/ui/data-table-body.js.map +1 -1
  58. package/dist/ui/data-table-card.d.ts.map +1 -1
  59. package/dist/ui/data-table-card.js +50 -43
  60. package/dist/ui/data-table-card.js.map +1 -1
  61. package/dist/ui/data-table-context.d.ts +0 -4
  62. package/dist/ui/data-table-context.d.ts.map +1 -1
  63. package/dist/ui/data-table-context.js +8 -12
  64. package/dist/ui/data-table-context.js.map +1 -1
  65. package/dist/ui/data-table-header.d.ts.map +1 -1
  66. package/dist/ui/data-table-header.js +2 -2
  67. package/dist/ui/data-table-header.js.map +1 -1
  68. package/dist/ui/data-table.d.ts.map +1 -1
  69. package/dist/ui/data-table.js +185 -182
  70. package/dist/ui/data-table.js.map +1 -1
  71. package/dist/ui/index.d.ts +3 -2
  72. package/dist/ui/index.d.ts.map +1 -1
  73. package/dist/ui/index.js +59 -58
  74. package/dist/ui/index.js.map +1 -1
  75. package/dist/ui/segmented-control.js +4 -4
  76. package/dist/ui/segmented-control.js.map +1 -1
  77. package/dist/ui/separator.d.ts +6 -5
  78. package/dist/ui/separator.d.ts.map +1 -1
  79. package/dist/ui/separator.js +7 -10
  80. package/dist/ui/separator.js.map +1 -1
  81. package/dist/ui/split-button.d.ts.map +1 -1
  82. package/dist/ui/split-button.js +62 -129
  83. package/dist/ui/split-button.js.map +1 -1
  84. package/dist/ui/stat-card.d.ts +7 -0
  85. package/dist/ui/stat-card.d.ts.map +1 -1
  86. package/dist/ui/stat-card.js +144 -126
  87. package/dist/ui/stat-card.js.map +1 -1
  88. package/dist/ui/table-row-link.d.ts +45 -0
  89. package/dist/ui/table-row-link.d.ts.map +1 -0
  90. package/dist/ui/table-row-link.js +16 -0
  91. package/dist/ui/table-row-link.js.map +1 -0
  92. package/dist/ui/table.d.ts +49 -5
  93. package/dist/ui/table.d.ts.map +1 -1
  94. package/dist/ui/table.js +39 -29
  95. package/dist/ui/table.js.map +1 -1
  96. package/dist/ui/toast-types.d.ts +10 -0
  97. package/dist/ui/toast-types.d.ts.map +1 -1
  98. package/dist/ui/toast.d.ts +6 -2
  99. package/dist/ui/toast.d.ts.map +1 -1
  100. package/dist/ui/toast.js +56 -54
  101. package/dist/ui/toast.js.map +1 -1
  102. package/docs/components/composed/content-card.md +2 -0
  103. package/docs/components/ui/button.md +3 -3
  104. package/docs/components/ui/card.md +27 -10
  105. package/docs/components/ui/color-input.md +2 -2
  106. package/docs/components/ui/data-table.md +8 -1
  107. package/docs/components/ui/segmented-control.md +2 -2
  108. package/docs/components/ui/separator.md +3 -1
  109. package/docs/components/ui/split-button.md +3 -0
  110. package/docs/components/ui/stat-card.md +10 -2
  111. package/docs/components/ui/table-row-link.md +41 -0
  112. package/docs/components/ui/table.md +69 -0
  113. package/docs/components/ui/toast.md +10 -6
  114. package/docs/recipes/install-next-app-router.md +1 -1
  115. package/docs/recipes/troubleshoot.md +1 -1
  116. package/llms.txt +159 -781
  117. package/make-kit/components/card.md +54 -16
  118. package/make-kit/components/table.md +45 -7
  119. package/make-kit/foundations/spacing.md +3 -1
  120. package/make-kit/foundations/surfaces.md +1 -1
  121. package/mcp-manifest.json +12349 -0
  122. package/mcp-manifest.schema.json +232 -0
  123. package/package.json +3 -3
  124. package/skill/README.md +0 -1
  125. package/skill/SKILL.md +9 -8
  126. package/skill/references/components.md +159 -781
  127. package/skill/references/setup-next-app-router.md +1 -1
  128. package/skill/references/troubleshoot.md +1 -1
  129. package/llms-full.txt +0 -7198
  130. package/llms-quick.txt +0 -251
  131. package/skill/references/components-full.md +0 -7200
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","names":[],"sources":["../../src/ui/data-table.tsx"],"sourcesContent":["'use client'\n\nimport { IconChevronRight, IconSearch } from '@tabler/icons-react'\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type ColumnPinningState,\n type ExpandedState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type Row,\n type RowData,\n type RowSelectionState,\n type SortingState,\n type TableState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { Checkbox } from './checkbox'\nimport { DataTableBody } from './data-table-body'\nimport { type BulkAction,DataTableBulkActions } from './data-table-bulk-actions'\nimport { DataTableCards } from './data-table-card'\nimport {\n DataTableProvider,\n densityPaddingMap,\n type EditingCell,\n} from './data-table-context'\nimport { DataTableHeader } from './data-table-header'\nimport { DataTablePagination } from './data-table-pagination'\nimport { DataTableToolbar, type Density } from './data-table-toolbar'\nimport { Icon } from './icon'\nimport { cn } from './lib/utils'\nimport { Table } from './table'\n\n// Re-export public types so consumers' imports don't break\nexport type { BulkAction } from './data-table-bulk-actions'\n\ndeclare module '@tanstack/react-table' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: 'left' | 'center' | 'right'\n hideBelow?: 'sm' | 'md' | 'lg'\n }\n}\n\n/**\n * Props for DataTable — a feature-rich TanStack Table wrapper supporting sorting, filtering,\n * pagination, row selection, inline editing, row expansion, column pinning, and virtualization.\n *\n * All features are opt-in via boolean flags. The component manages its own internal state for\n * sorting, filtering, pagination, and selection — just pass `columns` and `data`.\n *\n * **Feature flags:** `sortable` | `filterable` | `globalFilter` | `paginated` | `selectable` |\n * `toolbar` | `editable` | `expandable` | `virtualRows`\n *\n * **Columns:** Use TanStack Table's `ColumnDef<TData, TValue>` type. Set\n * `meta: { enableEditing: false }` on a column to disable cell editing for that column.\n *\n * @example\n * // Minimal read-only table:\n * const columns: ColumnDef<User, string>[] = [\n * { accessorKey: 'name', header: 'Name' },\n * { accessorKey: 'email', header: 'Email' },\n * ]\n * <DataTable columns={columns} data={users} />\n *\n * @example\n * // Full-featured admin table with sorting, pagination, and selection:\n * <DataTable\n * columns={projectColumns}\n * data={projects}\n * sortable\n * paginated\n * pageSize={20}\n * selectable\n * onSelectionChange={(rows) => setSelectedProjects(rows)}\n * toolbar\n * />\n *\n * @example\n * // Virtualized table for large datasets (10k+ rows):\n * <DataTable\n * columns={logColumns}\n * data={allLogs}\n * virtualRows\n * virtualRowHeight={40}\n * maxHeight={500}\n * />\n *\n * @example\n * // Table with expandable rows for nested detail:\n * <DataTable\n * columns={orderColumns}\n * data={orders}\n * expandable\n * renderExpanded={(order) => <OrderLineItems items={order.lineItems} />}\n * />\n * // These are just a few ways — feel free to combine props creatively!\n */\n/**\n * A full-featured data table built on TanStack Table with sorting, filtering,\n * pagination, row selection, inline cell editing, expandable rows, column pinning,\n * a toolbar with density/export controls, and optional row virtualization.\n */\nexport interface DataTableProps<TData, TValue> {\n /** Column definitions passed to TanStack Table. */\n columns: ColumnDef<TData, TValue>[]\n /** Row data */\n data: TData[]\n /** Additional class name for the wrapper div */\n className?: string\n /** Text shown when the table has no rows */\n noResultsText?: string\n /** Enable column sorting (click headers to sort) */\n sortable?: boolean\n /** Enable per-column filter inputs below headers */\n filterable?: boolean\n /** Enable a global search input above the table */\n globalFilter?: boolean\n /** Enable pagination controls below the table */\n paginated?: boolean\n /** Number of rows per page when paginated (default 10) */\n pageSize?: number\n /** Options for the page size selector dropdown (default [10, 20, 50, 100]) */\n pageSizeOptions?: number[]\n /** Enable row selection with checkboxes */\n selectable?: boolean\n /** Callback when row selection changes */\n onSelectionChange?: (selectedRows: TData[]) => void\n /** Show toolbar above the table with column visibility, density, and export controls */\n toolbar?: boolean\n /** Row density — controls cell vertical padding */\n density?: Density\n /** Initial column pinning configuration */\n columnPinning?: { left?: string[]; right?: string[] }\n\n // --- Cell Editing ---\n /** Enable inline cell editing (double-click to edit) */\n editable?: boolean\n /** Callback when a cell value is edited */\n onCellEdit?: (rowIndex: number, columnId: string, value: unknown) => void\n\n // --- Row Expansion ---\n /** Enable expandable rows with detail panels */\n expandable?: boolean\n /** Render function for expanded row content */\n renderExpanded?: (row: TData) => React.ReactNode\n\n // --- Virtualization ---\n /** Enable row virtualization for large datasets */\n virtualRows?: boolean\n /** Height of each virtual row in pixels (default 48) */\n virtualRowHeight?: number\n /** Maximum height of the scrollable container in pixels (default 600) */\n maxHeight?: number\n\n // --- Server-side sorting ---\n /** Callback for server-side sorting. When provided, sorting is manual (no client-side sort). */\n onSort?: (key: string, direction: 'asc' | 'desc' | false) => void\n\n // --- Empty state ---\n /** Custom ReactNode to render when data is empty (replaces noResultsText) */\n emptyState?: React.ReactNode\n\n // --- Loading ---\n /** Show shimmer skeleton rows instead of data */\n loading?: boolean\n\n // --- Controlled selection ---\n /** Controlled set of selected row IDs — syncs internal selection state */\n selectedIds?: Set<string>\n /** Per-row filter to determine if a row is selectable */\n selectableFilter?: (row: TData) => boolean\n /** Custom row ID getter */\n getRowId?: (row: TData) => string\n\n // --- Server-side pagination ---\n /** Server-side pagination config. When provided, pagination is manual. */\n pagination?: {\n page: number\n pageSize: number\n total: number\n onPageChange: (page: number) => void\n }\n\n // --- Single-expand mode ---\n /** When true, only one row can be expanded at a time */\n singleExpand?: boolean\n\n // --- Sticky header ---\n /** When true, the table header sticks to the top on scroll */\n stickyHeader?: boolean\n\n // --- Row click ---\n /** Callback when a row is clicked (not fired from interactive elements) */\n onRowClick?: (row: TData) => void\n\n // --- Bulk actions ---\n /** Actions shown in a floating bar when rows are selected */\n bulkActions?: BulkAction<TData>[]\n\n // --- Mobile view ---\n /** Render rows as stacked cards on small screens (below sm breakpoint). Default 'table'. */\n mobileView?: 'card' | 'table'\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n className,\n noResultsText,\n sortable = false,\n filterable = false,\n globalFilter = false,\n paginated = false,\n pageSize: initialPageSize,\n pageSizeOptions,\n selectable = false,\n onSelectionChange,\n toolbar = false,\n density: initialDensity = 'standard',\n columnPinning: initialColumnPinning,\n editable = false,\n onCellEdit,\n expandable = false,\n renderExpanded,\n virtualRows = false,\n virtualRowHeight = 48,\n maxHeight = 600,\n onSort,\n emptyState,\n loading = false,\n selectedIds,\n selectableFilter,\n getRowId: getRowIdProp,\n pagination: serverPagination,\n singleExpand = false,\n stickyHeader = false,\n onRowClick,\n bulkActions,\n mobileView = 'table',\n}: DataTableProps<TData, TValue>) {\n // Detect below-sm viewport (640px) for card mode — separate from useIsMobile (768px)\n const [isBelowSm, setIsBelowSm] = useState(false)\n useEffect(() => {\n const mql = window.matchMedia('(max-width: 639px)')\n const onChange = () => setIsBelowSm(mql.matches)\n mql.addEventListener('change', onChange)\n setIsBelowSm(mql.matches)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n const showCards = mobileView === 'card' && isBelowSm\n\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [globalFilterValue, setGlobalFilterValue] = useState('')\n const [paginationState, setPaginationState] = useState<PaginationState>({\n pageIndex: serverPagination ? serverPagination.page - 1 : 0,\n pageSize: serverPagination?.pageSize ?? initialPageSize ?? 10,\n })\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({})\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n const [columnPinningState, setColumnPinningState] =\n useState<ColumnPinningState>({\n left: initialColumnPinning?.left ?? [],\n right: initialColumnPinning?.right ?? [],\n })\n const [density, setDensity] = useState<Density>(initialDensity)\n const [editingCell, setEditingCell] = useState<EditingCell>(null)\n const [expanded, setExpanded] = useState<ExpandedState>({})\n\n // Ref for the virtual scroll container\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n // Guard to prevent onSelectionChange firing when syncing from selectedIds prop\n const isSyncingFromPropRef = useRef(false)\n\n // Sync controlled selectedIds to internal rowSelection\n useEffect(() => {\n if (selectedIds) {\n isSyncingFromPropRef.current = true\n const newSelection: RowSelectionState = {}\n selectedIds.forEach((id) => {\n newSelection[id] = true\n })\n setRowSelection(newSelection)\n }\n }, [selectedIds])\n\n // Sync server pagination page to internal state\n useEffect(() => {\n if (serverPagination) {\n setPaginationState((prev) => ({\n ...prev,\n pageIndex: serverPagination.page - 1,\n pageSize: serverPagination.pageSize,\n }))\n }\n }, [serverPagination?.page, serverPagination?.pageSize]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Server-side sorting handler\n const handleSortingChange = useCallback(\n (updater: Updater<SortingState>) => {\n setSorting((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater\n if (onSort) {\n if (next.length === 0 && prev.length > 0) {\n // Sorting cleared\n onSort(prev[0].id, false)\n } else if (next.length > 0) {\n onSort(next[0].id, next[0].desc ? 'desc' : 'asc')\n }\n }\n return next\n })\n },\n [onSort],\n )\n\n // Single-expand handler\n const handleExpandedChange = useCallback(\n (updater: Updater<ExpandedState>) => {\n setExpanded((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater\n if (!singleExpand) return next\n // If next is boolean true (expand all), just use it\n if (next === true) return next\n if (typeof next !== 'object') return next\n // Determine which row was just toggled on\n const prevKeys = typeof prev === 'object' ? Object.keys(prev).filter((k) => (prev as Record<string, boolean>)[k]) : []\n const nextKeys = Object.keys(next).filter((k) => (next as Record<string, boolean>)[k])\n // Find newly expanded row\n const newlyExpanded = nextKeys.filter((k) => !prevKeys.includes(k))\n if (newlyExpanded.length > 0) {\n // Keep only the most recently expanded row\n return { [newlyExpanded[newlyExpanded.length - 1]]: true } as ExpandedState\n }\n // If no new rows, means a row was collapsed — return as-is\n return next\n })\n },\n [singleExpand],\n )\n\n // Stable ref for server pagination callback to avoid useCallback invalidation\n const onPageChangeRef = useRef(serverPagination?.onPageChange)\n useEffect(() => {\n onPageChangeRef.current = serverPagination?.onPageChange\n }, [serverPagination?.onPageChange])\n\n // Server-side pagination handler\n const handlePaginationChange = useCallback(\n (updater: Updater<PaginationState>) => {\n setPaginationState((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater\n if (onPageChangeRef.current) {\n // Only call onPageChange if the page actually changed\n if (next.pageIndex !== prev.pageIndex) {\n onPageChangeRef.current(next.pageIndex + 1)\n }\n }\n return next\n })\n },\n [],\n )\n\n // Checkbox column prepended when selectable is enabled\n const selectColumn: ColumnDef<TData, unknown> = {\n id: '_select',\n header: ({ table: t }) => (\n <Checkbox\n size=\"sm\"\n checked={t.getIsAllPageRowsSelected()}\n indeterminate={t.getIsSomePageRowsSelected()}\n onCheckedChange={(v) => t.toggleAllPageRowsSelected(!!v)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n size=\"sm\"\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onCheckedChange={(v) => row.toggleSelected(!!v)}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableColumnFilter: false,\n enableHiding: false,\n }\n\n // Expand toggle column\n const expandColumn: ColumnDef<TData, unknown> = {\n id: '_expand',\n header: () => null,\n cell: ({ row }) => (\n <button\n type=\"button\"\n onClick={() => row.toggleExpanded()}\n aria-label={row.getIsExpanded() ? 'Collapse row' : 'Expand row'}\n className=\"flex items-center justify-center p-ds-01 rounded-control-inner hover:bg-surface-raised transition-colors\"\n >\n <Icon\n icon={IconChevronRight}\n size=\"sm\"\n className={cn(\n 'transition-transform duration-moderate-02',\n row.getIsExpanded() && 'rotate-90',\n )}\n />\n </button>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n enableHiding: false,\n }\n\n // Assemble all columns in order: select?, expand?, ...user columns\n const allColumns = [\n ...(selectable ? [selectColumn] : []),\n ...(expandable ? [expandColumn] : []),\n ...columns,\n ]\n\n // Determine if using server-side pagination\n const useServerPagination = !!serverPagination\n const showPagination = paginated || useServerPagination\n\n // Build state object once — sorting and filtering contribute independently\n const tableState: Partial<TableState> = {\n columnVisibility,\n columnPinning: columnPinningState,\n }\n if (sortable) tableState.sorting = sorting\n if (filterable || globalFilter) {\n tableState.columnFilters = columnFilters\n tableState.globalFilter = globalFilterValue\n }\n if (showPagination) tableState.pagination = paginationState\n if (selectable) tableState.rowSelection = rowSelection\n if (expandable) tableState.expanded = expanded\n\n // Determine server-side sort mode\n const isServerSort = sortable && !!onSort\n\n const table = useReactTable({\n data,\n columns: allColumns,\n state: tableState,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnPinningChange: setColumnPinningState,\n getCoreRowModel: getCoreRowModel(),\n ...(sortable && {\n onSortingChange: isServerSort ? handleSortingChange : setSorting,\n ...(isServerSort\n ? { manualSorting: true }\n : { getSortedRowModel: getSortedRowModel() }),\n }),\n ...((filterable || globalFilter) && {\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilterValue,\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(showPagination && {\n onPaginationChange: useServerPagination\n ? handlePaginationChange\n : setPaginationState,\n ...(useServerPagination\n ? {\n manualPagination: true,\n pageCount: Math.ceil(\n serverPagination!.total / serverPagination!.pageSize,\n ),\n }\n : { getPaginationRowModel: getPaginationRowModel() }),\n }),\n ...(selectable && {\n onRowSelectionChange: setRowSelection,\n enableRowSelection: selectableFilter\n ? (row: Row<TData>) => selectableFilter(row.original)\n : true,\n }),\n ...(expandable && {\n onExpandedChange: singleExpand ? handleExpandedChange : setExpanded,\n getExpandedRowModel: getExpandedRowModel(),\n }),\n ...(getRowIdProp && {\n getRowId: (row: TData) => getRowIdProp(row),\n }),\n })\n\n // Stable refs to avoid effect re-fires from inline callbacks\n const onSelectionChangeRef = useRef(onSelectionChange)\n const getRowIdRef = useRef(getRowIdProp)\n useEffect(() => {\n onSelectionChangeRef.current = onSelectionChange\n getRowIdRef.current = getRowIdProp\n }, [onSelectionChange, getRowIdProp])\n\n // Fire selection callback when row selection changes (skip when syncing from prop)\n useEffect(() => {\n if (isSyncingFromPropRef.current) {\n isSyncingFromPropRef.current = false\n return\n }\n if (!onSelectionChangeRef.current) return\n const selectedRowIds = Object.keys(rowSelection).filter((k) => rowSelection[k])\n const selected = data.filter((_, i) => {\n const id = getRowIdRef.current ? getRowIdRef.current(data[i]) : String(i)\n return selectedRowIds.includes(id)\n })\n onSelectionChangeRef.current(selected)\n }, [rowSelection, data])\n\n const cellPadding = densityPaddingMap[density]\n\n const rows = table.getRowModel().rows\n\n // Virtualizer — always called but only active when virtualRows is true\n const virtualizer = useVirtualizer({\n count: virtualRows ? rows.length : 0,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => virtualRowHeight,\n overscan: 10,\n })\n\n // Number of skeleton rows for loading state\n const skeletonRowCount = serverPagination?.pageSize ?? initialPageSize ?? 5\n\n // Get selected rows for bulk actions (derived from rowSelection + data, not table instance)\n const selectedRows = useMemo(() => {\n if (!bulkActions || !selectable) return []\n const selectedRowIds = Object.keys(rowSelection).filter((k) => rowSelection[k])\n return data.filter((_, i) => {\n const id = getRowIdProp ? getRowIdProp(data[i]) : String(i)\n return selectedRowIds.includes(id)\n })\n }, [bulkActions, selectable, rowSelection, data, getRowIdProp])\n\n const hasSelectedRows = selectedRows.length > 0\n\n // Total rows for pagination display\n const totalRowCount = useServerPagination\n ? serverPagination!.total\n : table.getFilteredRowModel().rows.length\n\n // Build context value for sub-components\n const contextValue = useMemo(\n () => ({\n table,\n allColumns: allColumns.map((col) => ({\n id: (col as { id?: string }).id,\n header: (col as { header?: unknown }).header,\n })),\n cellPadding,\n columnPinningState,\n sortable,\n filterable,\n editable,\n expandable,\n virtualRows,\n selectable,\n mobileView,\n editingCell,\n setEditingCell,\n onCellEdit,\n renderExpanded,\n onRowClick,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n table,\n allColumns.length,\n cellPadding,\n columnPinningState,\n sortable,\n filterable,\n editable,\n expandable,\n virtualRows,\n selectable,\n mobileView,\n editingCell,\n onCellEdit,\n renderExpanded,\n onRowClick,\n ],\n )\n\n // Virtual items for body\n const virtualItems = virtualRows ? virtualizer.getVirtualItems() : undefined\n const totalVirtualSize = virtualRows ? virtualizer.getTotalSize() : undefined\n\n // Determine if we need a scroll wrapper for virtualization\n const tableContent = (\n <Table aria-busy={loading || undefined}>\n <DataTableHeader stickyHeader={stickyHeader} />\n <DataTableBody\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n noResultsText={noResultsText}\n emptyState={emptyState}\n virtualItems={virtualItems}\n totalVirtualSize={totalVirtualSize}\n />\n </Table>\n )\n\n return (\n <DataTableProvider value={contextValue}>\n <div className={cn(className)}>\n {/* Toolbar */}\n {toolbar && (\n <DataTableToolbar\n table={table}\n globalFilter={globalFilter}\n globalFilterValue={globalFilterValue}\n onGlobalFilterChange={setGlobalFilterValue}\n density={density}\n onDensityChange={setDensity}\n />\n )}\n\n {/* Global search input — only show standalone when toolbar is disabled */}\n {globalFilter && !toolbar && (\n <div className=\"flex items-center gap-ds-03 pb-ds-04 border-b border-surface-border mb-ds-04\">\n <Icon icon={IconSearch} size=\"sm\" className=\"text-surface-fg-subtle\" />\n <input\n type=\"text\"\n value={globalFilterValue}\n onChange={(e) => setGlobalFilterValue(e.target.value)}\n placeholder=\"Search all columns...\"\n aria-label=\"Search all columns\"\n className={cn(\n 'flex-1 bg-transparent text-ds-md',\n 'text-surface-fg placeholder:text-surface-fg-subtle',\n 'outline-hidden',\n )}\n />\n </div>\n )}\n\n {/* Card view on small screens, or standard table */}\n {showCards ? (\n <DataTableCards\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n noResultsText={noResultsText}\n emptyState={emptyState}\n />\n ) : virtualRows ? (\n <div\n ref={scrollContainerRef}\n style={{ maxHeight: `${maxHeight}px`, overflowY: 'auto' }}\n >\n {tableContent}\n </div>\n ) : (\n tableContent\n )}\n\n {/* Pagination controls */}\n {showPagination && (\n <DataTablePagination\n table={table}\n totalRowCount={totalRowCount}\n useServerPagination={useServerPagination}\n pageSizeOptions={pageSizeOptions}\n />\n )}\n\n {/* Bulk action bar */}\n {bulkActions && selectable && hasSelectedRows && (\n <DataTableBulkActions\n table={table}\n selectedRows={selectedRows}\n bulkActions={bulkActions}\n />\n )}\n </div>\n </DataTableProvider>\n )\n}\nDataTable.displayName = 'DataTable'\n"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.js","names":[],"sources":["../../src/ui/data-table.tsx"],"sourcesContent":["'use client'\n\nimport { IconChevronRight, IconSearch } from '@tabler/icons-react'\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n type ColumnPinningState,\n type ExpandedState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type Row,\n type RowData,\n type RowSelectionState,\n type SortingState,\n type TableState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport { useVirtualizer } from '@tanstack/react-virtual'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { Checkbox } from './checkbox'\nimport { DataTableBody } from './data-table-body'\nimport { type BulkAction,DataTableBulkActions } from './data-table-bulk-actions'\nimport { DataTableCards } from './data-table-card'\nimport {\n DataTableProvider,\n type EditingCell,\n} from './data-table-context'\nimport { DataTableHeader } from './data-table-header'\nimport { DataTablePagination } from './data-table-pagination'\nimport { DataTableToolbar, type Density } from './data-table-toolbar'\nimport { Icon } from './icon'\nimport { cn } from './lib/utils'\nimport { Table } from './table'\n\n// Re-export public types so consumers' imports don't break\nexport type { BulkAction } from './data-table-bulk-actions'\n\ndeclare module '@tanstack/react-table' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: 'left' | 'center' | 'right'\n hideBelow?: 'sm' | 'md' | 'lg'\n }\n}\n\n/**\n * Props for DataTable — a feature-rich TanStack Table wrapper supporting sorting, filtering,\n * pagination, row selection, inline editing, row expansion, column pinning, and virtualization.\n *\n * All features are opt-in via boolean flags. The component manages its own internal state for\n * sorting, filtering, pagination, and selection — just pass `columns` and `data`.\n *\n * **Feature flags:** `sortable` | `filterable` | `globalFilter` | `paginated` | `selectable` |\n * `toolbar` | `editable` | `expandable` | `virtualRows`\n *\n * **Columns:** Use TanStack Table's `ColumnDef<TData, TValue>` type. Set\n * `meta: { enableEditing: false }` on a column to disable cell editing for that column.\n *\n * @example\n * // Minimal read-only table:\n * const columns: ColumnDef<User, string>[] = [\n * { accessorKey: 'name', header: 'Name' },\n * { accessorKey: 'email', header: 'Email' },\n * ]\n * <DataTable columns={columns} data={users} />\n *\n * @example\n * // Full-featured admin table with sorting, pagination, and selection:\n * <DataTable\n * columns={projectColumns}\n * data={projects}\n * sortable\n * paginated\n * pageSize={20}\n * selectable\n * onSelectionChange={(rows) => setSelectedProjects(rows)}\n * toolbar\n * />\n *\n * @example\n * // Virtualized table for large datasets (10k+ rows):\n * <DataTable\n * columns={logColumns}\n * data={allLogs}\n * virtualRows\n * virtualRowHeight={40}\n * maxHeight={500}\n * />\n *\n * @example\n * // Table with expandable rows for nested detail:\n * <DataTable\n * columns={orderColumns}\n * data={orders}\n * expandable\n * renderExpanded={(order) => <OrderLineItems items={order.lineItems} />}\n * />\n * // These are just a few ways — feel free to combine props creatively!\n */\n/**\n * A full-featured data table built on TanStack Table with sorting, filtering,\n * pagination, row selection, inline cell editing, expandable rows, column pinning,\n * a toolbar with density/export controls, and optional row virtualization.\n */\nexport interface DataTableProps<TData, TValue> {\n /** Column definitions passed to TanStack Table. */\n columns: ColumnDef<TData, TValue>[]\n /** Row data */\n data: TData[]\n /** Additional class name for the wrapper div */\n className?: string\n /** Text shown when the table has no rows */\n noResultsText?: string\n /** Enable column sorting (click headers to sort) */\n sortable?: boolean\n /** Enable per-column filter inputs below headers */\n filterable?: boolean\n /** Enable a global search input above the table */\n globalFilter?: boolean\n /** Enable pagination controls below the table */\n paginated?: boolean\n /** Number of rows per page when paginated (default 10) */\n pageSize?: number\n /** Options for the page size selector dropdown (default [10, 20, 50, 100]) */\n pageSizeOptions?: number[]\n /** Enable row selection with checkboxes */\n selectable?: boolean\n /** Callback when row selection changes */\n onSelectionChange?: (selectedRows: TData[]) => void\n /** Show toolbar above the table with column visibility, density, and export controls */\n toolbar?: boolean\n /** Row density — controls cell vertical padding */\n density?: Density\n /** Initial column pinning configuration */\n columnPinning?: { left?: string[]; right?: string[] }\n\n // --- Cell Editing ---\n /** Enable inline cell editing (double-click to edit) */\n editable?: boolean\n /** Callback when a cell value is edited */\n onCellEdit?: (rowIndex: number, columnId: string, value: unknown) => void\n\n // --- Row Expansion ---\n /** Enable expandable rows with detail panels */\n expandable?: boolean\n /** Render function for expanded row content */\n renderExpanded?: (row: TData) => React.ReactNode\n\n // --- Virtualization ---\n /** Enable row virtualization for large datasets */\n virtualRows?: boolean\n /** Height of each virtual row in pixels (default 48) */\n virtualRowHeight?: number\n /** Maximum height of the scrollable container in pixels (default 600) */\n maxHeight?: number\n\n // --- Server-side sorting ---\n /** Callback for server-side sorting. When provided, sorting is manual (no client-side sort). */\n onSort?: (key: string, direction: 'asc' | 'desc' | false) => void\n\n // --- Empty state ---\n /** Custom ReactNode to render when data is empty (replaces noResultsText) */\n emptyState?: React.ReactNode\n\n // --- Loading ---\n /** Show shimmer skeleton rows instead of data */\n loading?: boolean\n\n // --- Controlled selection ---\n /** Controlled set of selected row IDs — syncs internal selection state */\n selectedIds?: Set<string>\n /** Per-row filter to determine if a row is selectable */\n selectableFilter?: (row: TData) => boolean\n /** Custom row ID getter */\n getRowId?: (row: TData) => string\n\n // --- Server-side pagination ---\n /** Server-side pagination config. When provided, pagination is manual. */\n pagination?: {\n page: number\n pageSize: number\n total: number\n onPageChange: (page: number) => void\n }\n\n // --- Single-expand mode ---\n /** When true, only one row can be expanded at a time */\n singleExpand?: boolean\n\n // --- Sticky header ---\n /** When true, the table header sticks to the top on scroll */\n stickyHeader?: boolean\n\n // --- Row click ---\n /** Callback when a row is clicked (not fired from interactive elements) */\n onRowClick?: (row: TData) => void\n\n // --- Bulk actions ---\n /** Actions shown in a floating bar when rows are selected */\n bulkActions?: BulkAction<TData>[]\n\n // --- Mobile view ---\n /** Render rows as stacked cards on small screens (below sm breakpoint). Default 'table'. */\n mobileView?: 'card' | 'table'\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n className,\n noResultsText,\n sortable = false,\n filterable = false,\n globalFilter = false,\n paginated = false,\n pageSize: initialPageSize,\n pageSizeOptions,\n selectable = false,\n onSelectionChange,\n toolbar = false,\n density: initialDensity = 'standard',\n columnPinning: initialColumnPinning,\n editable = false,\n onCellEdit,\n expandable = false,\n renderExpanded,\n virtualRows = false,\n virtualRowHeight = 48,\n maxHeight = 600,\n onSort,\n emptyState,\n loading = false,\n selectedIds,\n selectableFilter,\n getRowId: getRowIdProp,\n pagination: serverPagination,\n singleExpand = false,\n stickyHeader = false,\n onRowClick,\n bulkActions,\n mobileView = 'table',\n}: DataTableProps<TData, TValue>) {\n // Detect below-sm viewport (640px) for card mode — separate from useIsMobile (768px)\n const [isBelowSm, setIsBelowSm] = useState(false)\n useEffect(() => {\n const mql = window.matchMedia('(max-width: 639px)')\n const onChange = () => setIsBelowSm(mql.matches)\n mql.addEventListener('change', onChange)\n setIsBelowSm(mql.matches)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n const showCards = mobileView === 'card' && isBelowSm\n\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [globalFilterValue, setGlobalFilterValue] = useState('')\n const [paginationState, setPaginationState] = useState<PaginationState>({\n pageIndex: serverPagination ? serverPagination.page - 1 : 0,\n pageSize: serverPagination?.pageSize ?? initialPageSize ?? 10,\n })\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({})\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n const [columnPinningState, setColumnPinningState] =\n useState<ColumnPinningState>({\n left: initialColumnPinning?.left ?? [],\n right: initialColumnPinning?.right ?? [],\n })\n const [density, setDensity] = useState<Density>(initialDensity)\n const [editingCell, setEditingCell] = useState<EditingCell>(null)\n const [expanded, setExpanded] = useState<ExpandedState>({})\n\n // Ref for the virtual scroll container\n const scrollContainerRef = useRef<HTMLDivElement>(null)\n\n // Guard to prevent onSelectionChange firing when syncing from selectedIds prop\n const isSyncingFromPropRef = useRef(false)\n\n // Sync controlled selectedIds to internal rowSelection\n useEffect(() => {\n if (selectedIds) {\n isSyncingFromPropRef.current = true\n const newSelection: RowSelectionState = {}\n selectedIds.forEach((id) => {\n newSelection[id] = true\n })\n setRowSelection(newSelection)\n }\n }, [selectedIds])\n\n // Sync server pagination page to internal state\n useEffect(() => {\n if (serverPagination) {\n setPaginationState((prev) => ({\n ...prev,\n pageIndex: serverPagination.page - 1,\n pageSize: serverPagination.pageSize,\n }))\n }\n }, [serverPagination?.page, serverPagination?.pageSize]) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Server-side sorting handler\n const handleSortingChange = useCallback(\n (updater: Updater<SortingState>) => {\n setSorting((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater\n if (onSort) {\n if (next.length === 0 && prev.length > 0) {\n // Sorting cleared\n onSort(prev[0].id, false)\n } else if (next.length > 0) {\n onSort(next[0].id, next[0].desc ? 'desc' : 'asc')\n }\n }\n return next\n })\n },\n [onSort],\n )\n\n // Single-expand handler\n const handleExpandedChange = useCallback(\n (updater: Updater<ExpandedState>) => {\n setExpanded((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater\n if (!singleExpand) return next\n // If next is boolean true (expand all), just use it\n if (next === true) return next\n if (typeof next !== 'object') return next\n // Determine which row was just toggled on\n const prevKeys = typeof prev === 'object' ? Object.keys(prev).filter((k) => (prev as Record<string, boolean>)[k]) : []\n const nextKeys = Object.keys(next).filter((k) => (next as Record<string, boolean>)[k])\n // Find newly expanded row\n const newlyExpanded = nextKeys.filter((k) => !prevKeys.includes(k))\n if (newlyExpanded.length > 0) {\n // Keep only the most recently expanded row\n return { [newlyExpanded[newlyExpanded.length - 1]]: true } as ExpandedState\n }\n // If no new rows, means a row was collapsed — return as-is\n return next\n })\n },\n [singleExpand],\n )\n\n // Stable ref for server pagination callback to avoid useCallback invalidation\n const onPageChangeRef = useRef(serverPagination?.onPageChange)\n useEffect(() => {\n onPageChangeRef.current = serverPagination?.onPageChange\n }, [serverPagination?.onPageChange])\n\n // Server-side pagination handler\n const handlePaginationChange = useCallback(\n (updater: Updater<PaginationState>) => {\n setPaginationState((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater\n if (onPageChangeRef.current) {\n // Only call onPageChange if the page actually changed\n if (next.pageIndex !== prev.pageIndex) {\n onPageChangeRef.current(next.pageIndex + 1)\n }\n }\n return next\n })\n },\n [],\n )\n\n // Checkbox column prepended when selectable is enabled\n const selectColumn: ColumnDef<TData, unknown> = {\n id: '_select',\n header: ({ table: t }) => (\n <Checkbox\n size=\"sm\"\n checked={t.getIsAllPageRowsSelected()}\n indeterminate={t.getIsSomePageRowsSelected()}\n onCheckedChange={(v) => t.toggleAllPageRowsSelected(!!v)}\n aria-label=\"Select all rows\"\n />\n ),\n cell: ({ row }) => (\n <Checkbox\n size=\"sm\"\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onCheckedChange={(v) => row.toggleSelected(!!v)}\n aria-label=\"Select row\"\n />\n ),\n enableSorting: false,\n enableColumnFilter: false,\n enableHiding: false,\n }\n\n // Expand toggle column — aria-expanded lives on the BUTTON (not the row),\n // in a dedicated column with a visually-hidden header (Roselli expando spec).\n const expandColumn: ColumnDef<TData, unknown> = {\n id: '_expand',\n header: () => <span className=\"sr-only\">Expand rows</span>,\n cell: ({ row }) => (\n <button\n type=\"button\"\n onClick={() => row.toggleExpanded()}\n aria-expanded={row.getIsExpanded()}\n aria-label={row.getIsExpanded() ? 'Collapse row' : 'Expand row'}\n className=\"flex items-center justify-center p-ds-01 rounded-control-inner hover:bg-surface-raised-hover transition-colors\"\n >\n <Icon\n icon={IconChevronRight}\n size=\"sm\"\n className={cn(\n 'transition-transform duration-fast-02 ease-productive-standard',\n row.getIsExpanded() && 'rotate-90',\n )}\n />\n </button>\n ),\n enableSorting: false,\n enableColumnFilter: false,\n enableHiding: false,\n }\n\n // Assemble all columns in order: select?, expand?, ...user columns\n const allColumns = [\n ...(selectable ? [selectColumn] : []),\n ...(expandable ? [expandColumn] : []),\n ...columns,\n ]\n\n // Determine if using server-side pagination\n const useServerPagination = !!serverPagination\n const showPagination = paginated || useServerPagination\n\n // Build state object once — sorting and filtering contribute independently\n const tableState: Partial<TableState> = {\n columnVisibility,\n columnPinning: columnPinningState,\n }\n if (sortable) tableState.sorting = sorting\n if (filterable || globalFilter) {\n tableState.columnFilters = columnFilters\n tableState.globalFilter = globalFilterValue\n }\n if (showPagination) tableState.pagination = paginationState\n if (selectable) tableState.rowSelection = rowSelection\n if (expandable) tableState.expanded = expanded\n\n // Determine server-side sort mode\n const isServerSort = sortable && !!onSort\n\n const table = useReactTable({\n data,\n columns: allColumns,\n state: tableState,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnPinningChange: setColumnPinningState,\n getCoreRowModel: getCoreRowModel(),\n ...(sortable && {\n onSortingChange: isServerSort ? handleSortingChange : setSorting,\n ...(isServerSort\n ? { manualSorting: true }\n : { getSortedRowModel: getSortedRowModel() }),\n }),\n ...((filterable || globalFilter) && {\n onColumnFiltersChange: setColumnFilters,\n onGlobalFilterChange: setGlobalFilterValue,\n getFilteredRowModel: getFilteredRowModel(),\n }),\n ...(showPagination && {\n onPaginationChange: useServerPagination\n ? handlePaginationChange\n : setPaginationState,\n ...(useServerPagination\n ? {\n manualPagination: true,\n pageCount: Math.ceil(\n serverPagination!.total / serverPagination!.pageSize,\n ),\n }\n : { getPaginationRowModel: getPaginationRowModel() }),\n }),\n ...(selectable && {\n onRowSelectionChange: setRowSelection,\n enableRowSelection: selectableFilter\n ? (row: Row<TData>) => selectableFilter(row.original)\n : true,\n }),\n ...(expandable && {\n onExpandedChange: singleExpand ? handleExpandedChange : setExpanded,\n getExpandedRowModel: getExpandedRowModel(),\n }),\n ...(getRowIdProp && {\n getRowId: (row: TData) => getRowIdProp(row),\n }),\n })\n\n // Stable refs to avoid effect re-fires from inline callbacks\n const onSelectionChangeRef = useRef(onSelectionChange)\n const getRowIdRef = useRef(getRowIdProp)\n useEffect(() => {\n onSelectionChangeRef.current = onSelectionChange\n getRowIdRef.current = getRowIdProp\n }, [onSelectionChange, getRowIdProp])\n\n // Fire selection callback when row selection changes (skip when syncing from prop)\n useEffect(() => {\n if (isSyncingFromPropRef.current) {\n isSyncingFromPropRef.current = false\n return\n }\n if (!onSelectionChangeRef.current) return\n const selectedRowIds = Object.keys(rowSelection).filter((k) => rowSelection[k])\n const selected = data.filter((_, i) => {\n const id = getRowIdRef.current ? getRowIdRef.current(data[i]) : String(i)\n return selectedRowIds.includes(id)\n })\n onSelectionChangeRef.current(selected)\n }, [rowSelection, data])\n\n const rows = table.getRowModel().rows\n\n // Virtualizer — always called but only active when virtualRows is true\n const virtualizer = useVirtualizer({\n count: virtualRows ? rows.length : 0,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => virtualRowHeight,\n overscan: 10,\n })\n\n // Number of skeleton rows for loading state\n const skeletonRowCount = serverPagination?.pageSize ?? initialPageSize ?? 5\n\n // Get selected rows for bulk actions (derived from rowSelection + data, not table instance)\n const selectedRows = useMemo(() => {\n if (!bulkActions || !selectable) return []\n const selectedRowIds = Object.keys(rowSelection).filter((k) => rowSelection[k])\n return data.filter((_, i) => {\n const id = getRowIdProp ? getRowIdProp(data[i]) : String(i)\n return selectedRowIds.includes(id)\n })\n }, [bulkActions, selectable, rowSelection, data, getRowIdProp])\n\n const hasSelectedRows = selectedRows.length > 0\n\n // Total rows for pagination display\n const totalRowCount = useServerPagination\n ? serverPagination!.total\n : table.getFilteredRowModel().rows.length\n\n // Build context value for sub-components\n const contextValue = useMemo(\n () => ({\n table,\n allColumns: allColumns.map((col) => ({\n id: (col as { id?: string }).id,\n header: (col as { header?: unknown }).header,\n })),\n columnPinningState,\n sortable,\n filterable,\n editable,\n expandable,\n virtualRows,\n selectable,\n mobileView,\n editingCell,\n setEditingCell,\n onCellEdit,\n renderExpanded,\n onRowClick,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n table,\n allColumns.length,\n columnPinningState,\n sortable,\n filterable,\n editable,\n expandable,\n virtualRows,\n selectable,\n mobileView,\n editingCell,\n onCellEdit,\n renderExpanded,\n onRowClick,\n ],\n )\n\n // Virtual items for body\n const virtualItems = virtualRows ? virtualizer.getVirtualItems() : undefined\n const totalVirtualSize = virtualRows ? virtualizer.getTotalSize() : undefined\n\n // Determine if we need a scroll wrapper for virtualization\n const tableContent = (\n <Table density={density} aria-busy={loading || undefined}>\n <DataTableHeader stickyHeader={stickyHeader} />\n <DataTableBody\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n noResultsText={noResultsText}\n emptyState={emptyState}\n virtualItems={virtualItems}\n totalVirtualSize={totalVirtualSize}\n />\n </Table>\n )\n\n return (\n <DataTableProvider value={contextValue}>\n <div className={cn(className)}>\n {/* Toolbar */}\n {toolbar && (\n <DataTableToolbar\n table={table}\n globalFilter={globalFilter}\n globalFilterValue={globalFilterValue}\n onGlobalFilterChange={setGlobalFilterValue}\n density={density}\n onDensityChange={setDensity}\n />\n )}\n\n {/* Global search input — only show standalone when toolbar is disabled */}\n {globalFilter && !toolbar && (\n <div className=\"flex items-center gap-ds-03 pb-ds-04 border-b border-surface-border mb-ds-04\">\n <Icon icon={IconSearch} size=\"sm\" className=\"text-surface-fg-subtle\" />\n <input\n type=\"text\"\n value={globalFilterValue}\n onChange={(e) => setGlobalFilterValue(e.target.value)}\n placeholder=\"Search all columns...\"\n aria-label=\"Search all columns\"\n className={cn(\n 'flex-1 bg-transparent text-ds-md',\n 'text-surface-fg placeholder:text-surface-fg-subtle',\n 'outline-hidden',\n )}\n />\n </div>\n )}\n\n {/* Card view on small screens, or standard table */}\n {showCards ? (\n <DataTableCards\n loading={loading}\n skeletonRowCount={skeletonRowCount}\n noResultsText={noResultsText}\n emptyState={emptyState}\n />\n ) : virtualRows ? (\n <div\n ref={scrollContainerRef}\n style={{ maxHeight: `${maxHeight}px`, overflowY: 'auto' }}\n >\n {tableContent}\n </div>\n ) : (\n tableContent\n )}\n\n {/* Pagination controls */}\n {showPagination && (\n <DataTablePagination\n table={table}\n totalRowCount={totalRowCount}\n useServerPagination={useServerPagination}\n pageSizeOptions={pageSizeOptions}\n />\n )}\n\n {/* Bulk action bar */}\n {bulkActions && selectable && hasSelectedRows && (\n <DataTableBulkActions\n table={table}\n selectedRows={selectedRows}\n bulkActions={bulkActions}\n />\n )}\n </div>\n </DataTableProvider>\n )\n}\nDataTable.displayName = 'DataTable'\n"],"mappings":"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"}
@@ -58,7 +58,7 @@ export { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type Ava
58
58
  export { Badge, type BadgeProps, badgeVariants } from './badge';
59
59
  export { BadgeGroup, type BadgeGroupProps } from './badge-group';
60
60
  export { BadgeIndicator, type BadgeIndicatorProps } from './badge-indicator';
61
- export { Card, CardAction, type CardActionPlacement, type CardActionProps, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, cardVariants } from './card';
61
+ export { Card, CardAction, type CardActionPlacement, type CardActionProps, CardBleed, type CardBleedProps, type CardBleedSide, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardSection, CardTitle, cardVariants } from './card';
62
62
  export { Code, type CodeProps } from './code';
63
63
  export { ColorSwatch, type ColorSwatchProps } from './color-swatch';
64
64
  export { Progress, progressIndicatorVariants, type ProgressProps, progressTrackVariants } from './progress';
@@ -67,7 +67,8 @@ export { Skeleton, SkeletonAvatar, type SkeletonAvatarProps, SkeletonButton, typ
67
67
  export { StatCard, type StatCardProps } from './stat-card';
68
68
  export { type FlashPreset, type FlashSpec, type FlashSpeed, type FlashTone, StatFlash, type StatFlashProps, } from './stat-flash';
69
69
  export { StatusDot, type StatusDotProps, type StatusDotStatus } from './status-dot';
70
- export { Table, TableBody, TableCaption, TableCell, type TableCellProps, TableFooter, TableHead, TableHeader, type TableProps, TableRow, type TableRowProps } from './table';
70
+ export { Table, TableBody, TableCaption, TableCell, type TableCellBaseProps, type TableCellProps, type TableDensity, TableFooter, TableHead, TableHeader, type TableProps, TableRow, TableRowActions, type TableRowActionsProps, type TableRowProps } from './table';
71
+ export { TableRowLink, type TableRowLinkProps } from './table-row-link';
71
72
  export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, AccordionTrigger, type AccordionTriggerProps } from './accordion';
72
73
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, BreadcrumbPage, type BreadcrumbProps, BreadcrumbSeparator, } from './breadcrumb';
73
74
  export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, type ContextMenuContentProps, ContextMenuGroup, ContextMenuItem, type ContextMenuItemProps, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from './context-menu';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
package/dist/ui/index.js CHANGED
@@ -17,64 +17,65 @@ import { Banner as L, bannerVariants as R } from "./banner.js";
17
17
  import { Breadcrumb as z, BreadcrumbEllipsis as B, BreadcrumbItem as V, BreadcrumbLink as H, BreadcrumbList as U, BreadcrumbPage as W, BreadcrumbSeparator as G } from "./breadcrumb.js";
18
18
  import { ButtonGroup as K, useButtonGroup as q } from "./button-group.js";
19
19
  import { Button as J, buttonVariants as Y } from "./button.js";
20
- import { Card as X, CardAction as Z, CardContent as re, CardDescription as ie, CardFooter as ae, CardHeader as oe, CardTitle as se, cardVariants as ce } from "./card.js";
21
- import { Checkbox as le } from "./checkbox.js";
22
- import { Code as ue } from "./code.js";
23
- import { Collapsible as de, CollapsibleContent as fe, CollapsibleTrigger as pe } from "./collapsible.js";
24
- import { i as me, n as he, r as ge, t as _e } from "../_chunks/popover.js";
25
- import { ColorInput as ve } from "./color-input.js";
26
- import { ColorSwatch as ye } from "./color-swatch.js";
27
- import { Combobox as be, comboboxTriggerVariants as xe } from "./combobox.js";
28
- import { Container as Se } from "./container.js";
29
- import { ContextMenu as Ce, ContextMenuCheckboxItem as we, ContextMenuContent as Te, ContextMenuGroup as Ee, ContextMenuItem as De, ContextMenuLabel as Oe, ContextMenuPortal as ke, ContextMenuRadioGroup as Ae, ContextMenuRadioItem as je, ContextMenuSeparator as Me, ContextMenuShortcut as Ne, ContextMenuSub as Pe, ContextMenuSubContent as Fe, ContextMenuSubTrigger as Ie, ContextMenuTrigger as Le } from "./context-menu.js";
30
- import { Skeleton as Re, SkeletonAvatar as ze, SkeletonButton as Be, SkeletonChart as Ve, SkeletonGroup as He, SkeletonImage as Ue, SkeletonInput as We, SkeletonText as Ge, skeletonVariants as Ke } from "./skeleton.js";
31
- import { Table as qe, TableBody as Je, TableCaption as Ye, TableCell as Xe, TableFooter as Ze, TableHead as Qe, TableHeader as $e, TableRow as et } from "./table.js";
32
- import { DropdownMenu as tt, DropdownMenuCheckboxItem as nt, DropdownMenuContent as rt, DropdownMenuGroup as it, DropdownMenuItem as at, DropdownMenuLabel as ot, DropdownMenuPortal as st, DropdownMenuRadioGroup as ct, DropdownMenuRadioItem as lt, DropdownMenuSeparator as ut, DropdownMenuShortcut as dt, DropdownMenuSub as ft, DropdownMenuSubContent as pt, DropdownMenuSubTrigger as mt, DropdownMenuTrigger as ht } from "./dropdown-menu.js";
33
- import { DevalokGrain as gt } from "./devalok-grain.js";
34
- import { Dialog as _t, DialogClose as vt, DialogContent as yt, DialogContentRaw as bt, DialogDescription as xt, DialogFooter as St, DialogHeader as Ct, DialogOverlay as wt, DialogPortal as Tt, DialogTitle as Et, DialogTrigger as Dt } from "./dialog.js";
35
- import { FileUpload as Ot } from "./file-upload.js";
36
- import { HoverCard as kt, HoverCardContent as At, HoverCardTrigger as jt } from "./hover-card.js";
37
- import { IconButton as Mt } from "./icon-button.js";
38
- import { IconGroup as Nt } from "./icon-group.js";
39
- import { Input as Pt, inputWrapperVariants as Ft } from "./input.js";
40
- import { Label as It } from "./label.js";
41
- import { Separator as Lt } from "./separator.js";
42
- import { SplitButton as Rt } from "./split-button.js";
43
- import { VisuallyHidden as zt } from "./visually-hidden.js";
44
- import { NumberInput as Bt, numberInputWrapperVariants as Vt } from "./number-input.js";
45
- import { RadioGroup as Ht, RadioGroupItem as Ut } from "./radio.js";
46
- import { SearchInput as Wt } from "./search-input.js";
47
- import { Select as Gt, SelectContent as Kt, SelectGroup as qt, SelectItem as Jt, SelectLabel as Yt, SelectScrollDownButton as Q, SelectScrollUpButton as Xt, SelectSeparator as Zt, SelectTrigger as Qt, SelectValue as $t, selectTriggerVariants as en } from "./select.js";
48
- import { Slider as tn, sliderThumbVariants as nn, sliderTrackVariants as rn } from "./slider.js";
49
- import { Switch as an } from "./switch.js";
50
- import { Textarea as on, textareaVariants as sn } from "./textarea.js";
51
- import { Toggle as cn, toggleVariants as ln } from "./toggle.js";
52
- import { ToggleGroup as un, ToggleGroupItem as dn } from "./toggle-group.js";
53
- import { Tooltip as fn, TooltipContent as pn, TooltipProvider as mn, TooltipTrigger as hn } from "./tooltip.js";
54
- import { TruncatedText as gn } from "./truncated-text.js";
55
- import { Sheet as _n, SheetClose as vn, SheetContent as yn, SheetDescription as bn, SheetFooter as xn, SheetHeader as Sn, SheetOverlay as Cn, SheetPortal as wn, SheetTitle as Tn, SheetTrigger as En } from "./sheet.js";
56
- import { Progress as Dn, progressIndicatorVariants as On, progressTrackVariants as kn } from "./progress.js";
57
- import { MultiProgressRing as An, ProgressRing as jn } from "./progress-ring.js";
58
- import { StatFlash as Mn } from "./stat-flash.js";
59
- import { StatCard as Nn } from "./stat-card.js";
60
- import { StatusDot as Pn } from "./status-dot.js";
61
- import { Menubar as Fn, MenubarCheckboxItem as In, MenubarContent as Ln, MenubarGroup as Rn, MenubarItem as zn, MenubarLabel as Bn, MenubarMenu as Vn, MenubarPortal as Hn, MenubarRadioGroup as Un, MenubarRadioItem as Wn, MenubarSeparator as Gn, MenubarShortcut as Kn, MenubarSub as qn, MenubarSubContent as Jn, MenubarSubTrigger as Yn, MenubarTrigger as Xn } from "./menubar.js";
62
- import { NavigationMenu as Zn, NavigationMenuContent as Qn, NavigationMenuIndicator as $n, NavigationMenuItem as er, NavigationMenuLink as tr, NavigationMenuList as nr, NavigationMenuTrigger as rr, NavigationMenuViewport as ir } from "./navigation-menu.js";
63
- import { PaginationContent as ar, PaginationEllipsis as or, PaginationItem as sr, PaginationLink as cr, PaginationNav as lr, PaginationNext as ur, PaginationPrevious as dr, PaginationRoot as fr, generatePagination as pr } from "./pagination.js";
64
- import { Sidebar as mr, SidebarContent as hr, SidebarFooter as gr, SidebarGroup as _r, SidebarGroupAction as vr, SidebarGroupContent as yr, SidebarGroupLabel as br, SidebarHeader as xr, SidebarInput as Sr, SidebarInset as Cr, SidebarMenu as wr, SidebarMenuAction as Tr, SidebarMenuBadge as Er, SidebarMenuButton as Dr, SidebarMenuItem as Or, SidebarMenuSkeleton as kr, SidebarMenuSub as Ar, SidebarMenuSubButton as jr, SidebarMenuSubItem as Mr, SidebarProvider as Nr, SidebarRail as Pr, SidebarSeparator as Fr, SidebarTrigger as Ir, useSidebar as Lr } from "./sidebar.js";
65
- import { Tabs as Rr, TabsContent as zr, TabsList as Br, TabsTrigger as Vr } from "./tabs.js";
66
- import { Step as Hr, Stepper as Ur } from "./stepper.js";
67
- import { Text as Wr, textVariants as Gr } from "./text.js";
68
- import { Stack as Kr } from "./stack.js";
69
- import { n as qr, r as Jr, t as Yr } from "../_chunks/tree-view.js";
70
- import { SegmentedControl as Xr } from "./segmented-control.js";
71
- import { a as Zr, c as Qr, i as $r, n as ei, o as ti, r as ni, s as ri, t as ii } from "../_chunks/chat.js";
72
- import { Link as ai } from "./link.js";
73
- import { a as oi, c as si, i as ci, n as li, o as ui, r as di, s as fi, t as pi } from "../_chunks/oauth-button.js";
74
- import { formatRelativeTime as mi } from "./lib/date-utils.js";
20
+ import { Card as X, CardAction as Z, CardBleed as re, CardContent as ie, CardDescription as ae, CardFooter as oe, CardHeader as se, CardSection as ce, CardTitle as le, cardVariants as ue } from "./card.js";
21
+ import { Checkbox as de } from "./checkbox.js";
22
+ import { Code as fe } from "./code.js";
23
+ import { Collapsible as pe, CollapsibleContent as me, CollapsibleTrigger as he } from "./collapsible.js";
24
+ import { i as ge, n as _e, r as ve, t as ye } from "../_chunks/popover.js";
25
+ import { ColorInput as be } from "./color-input.js";
26
+ import { ColorSwatch as xe } from "./color-swatch.js";
27
+ import { Combobox as Se, comboboxTriggerVariants as Ce } from "./combobox.js";
28
+ import { Container as we } from "./container.js";
29
+ import { ContextMenu as Te, ContextMenuCheckboxItem as Ee, ContextMenuContent as De, ContextMenuGroup as Oe, ContextMenuItem as ke, ContextMenuLabel as Ae, ContextMenuPortal as je, ContextMenuRadioGroup as Me, ContextMenuRadioItem as Ne, ContextMenuSeparator as Pe, ContextMenuShortcut as Fe, ContextMenuSub as Ie, ContextMenuSubContent as Le, ContextMenuSubTrigger as Re, ContextMenuTrigger as ze } from "./context-menu.js";
30
+ import { Skeleton as Be, SkeletonAvatar as Ve, SkeletonButton as He, SkeletonChart as Ue, SkeletonGroup as We, SkeletonImage as Ge, SkeletonInput as Ke, SkeletonText as qe, skeletonVariants as Je } from "./skeleton.js";
31
+ import { Table as Ye, TableBody as Xe, TableCaption as Ze, TableCell as Qe, TableFooter as $e, TableHead as et, TableHeader as tt, TableRow as nt, TableRowActions as rt } from "./table.js";
32
+ import { DropdownMenu as it, DropdownMenuCheckboxItem as at, DropdownMenuContent as ot, DropdownMenuGroup as st, DropdownMenuItem as ct, DropdownMenuLabel as lt, DropdownMenuPortal as ut, DropdownMenuRadioGroup as dt, DropdownMenuRadioItem as ft, DropdownMenuSeparator as pt, DropdownMenuShortcut as mt, DropdownMenuSub as ht, DropdownMenuSubContent as gt, DropdownMenuSubTrigger as _t, DropdownMenuTrigger as vt } from "./dropdown-menu.js";
33
+ import { DevalokGrain as yt } from "./devalok-grain.js";
34
+ import { Dialog as bt, DialogClose as xt, DialogContent as St, DialogContentRaw as Ct, DialogDescription as wt, DialogFooter as Tt, DialogHeader as Et, DialogOverlay as Dt, DialogPortal as Ot, DialogTitle as kt, DialogTrigger as At } from "./dialog.js";
35
+ import { FileUpload as jt } from "./file-upload.js";
36
+ import { HoverCard as Mt, HoverCardContent as Nt, HoverCardTrigger as Pt } from "./hover-card.js";
37
+ import { IconButton as Ft } from "./icon-button.js";
38
+ import { IconGroup as It } from "./icon-group.js";
39
+ import { Input as Lt, inputWrapperVariants as Rt } from "./input.js";
40
+ import { Label as zt } from "./label.js";
41
+ import { Separator as Bt } from "./separator.js";
42
+ import { SplitButton as Vt } from "./split-button.js";
43
+ import { VisuallyHidden as Ht } from "./visually-hidden.js";
44
+ import { NumberInput as Ut, numberInputWrapperVariants as Wt } from "./number-input.js";
45
+ import { RadioGroup as Gt, RadioGroupItem as Kt } from "./radio.js";
46
+ import { SearchInput as qt } from "./search-input.js";
47
+ import { Select as Jt, SelectContent as Yt, SelectGroup as Xt, SelectItem as Zt, SelectLabel as Qt, SelectScrollDownButton as $t, SelectScrollUpButton as Q, SelectSeparator as en, SelectTrigger as tn, SelectValue as nn, selectTriggerVariants as rn } from "./select.js";
48
+ import { Slider as an, sliderThumbVariants as on, sliderTrackVariants as sn } from "./slider.js";
49
+ import { Switch as cn } from "./switch.js";
50
+ import { Textarea as ln, textareaVariants as un } from "./textarea.js";
51
+ import { Toggle as dn, toggleVariants as fn } from "./toggle.js";
52
+ import { ToggleGroup as pn, ToggleGroupItem as mn } from "./toggle-group.js";
53
+ import { Tooltip as hn, TooltipContent as gn, TooltipProvider as _n, TooltipTrigger as vn } from "./tooltip.js";
54
+ import { TruncatedText as yn } from "./truncated-text.js";
55
+ import { Sheet as bn, SheetClose as xn, SheetContent as Sn, SheetDescription as Cn, SheetFooter as wn, SheetHeader as Tn, SheetOverlay as En, SheetPortal as Dn, SheetTitle as On, SheetTrigger as kn } from "./sheet.js";
56
+ import { Progress as An, progressIndicatorVariants as jn, progressTrackVariants as Mn } from "./progress.js";
57
+ import { MultiProgressRing as Nn, ProgressRing as Pn } from "./progress-ring.js";
58
+ import { StatFlash as Fn } from "./stat-flash.js";
59
+ import { StatCard as In } from "./stat-card.js";
60
+ import { StatusDot as Ln } from "./status-dot.js";
61
+ import { TableRowLink as Rn } from "./table-row-link.js";
62
+ import { Menubar as zn, MenubarCheckboxItem as Bn, MenubarContent as Vn, MenubarGroup as Hn, MenubarItem as Un, MenubarLabel as Wn, MenubarMenu as Gn, MenubarPortal as Kn, MenubarRadioGroup as qn, MenubarRadioItem as Jn, MenubarSeparator as Yn, MenubarShortcut as Xn, MenubarSub as Zn, MenubarSubContent as Qn, MenubarSubTrigger as $n, MenubarTrigger as er } from "./menubar.js";
63
+ import { NavigationMenu as tr, NavigationMenuContent as nr, NavigationMenuIndicator as rr, NavigationMenuItem as ir, NavigationMenuLink as ar, NavigationMenuList as or, NavigationMenuTrigger as sr, NavigationMenuViewport as cr } from "./navigation-menu.js";
64
+ import { PaginationContent as lr, PaginationEllipsis as ur, PaginationItem as dr, PaginationLink as fr, PaginationNav as pr, PaginationNext as mr, PaginationPrevious as hr, PaginationRoot as gr, generatePagination as _r } from "./pagination.js";
65
+ import { Sidebar as vr, SidebarContent as yr, SidebarFooter as br, SidebarGroup as xr, SidebarGroupAction as Sr, SidebarGroupContent as Cr, SidebarGroupLabel as wr, SidebarHeader as Tr, SidebarInput as Er, SidebarInset as Dr, SidebarMenu as Or, SidebarMenuAction as kr, SidebarMenuBadge as Ar, SidebarMenuButton as jr, SidebarMenuItem as Mr, SidebarMenuSkeleton as Nr, SidebarMenuSub as Pr, SidebarMenuSubButton as Fr, SidebarMenuSubItem as Ir, SidebarProvider as Lr, SidebarRail as Rr, SidebarSeparator as zr, SidebarTrigger as Br, useSidebar as Vr } from "./sidebar.js";
66
+ import { Tabs as Hr, TabsContent as Ur, TabsList as Wr, TabsTrigger as Gr } from "./tabs.js";
67
+ import { Step as Kr, Stepper as qr } from "./stepper.js";
68
+ import { Text as Jr, textVariants as Yr } from "./text.js";
69
+ import { Stack as Xr } from "./stack.js";
70
+ import { n as Zr, r as Qr, t as $r } from "../_chunks/tree-view.js";
71
+ import { SegmentedControl as ei } from "./segmented-control.js";
72
+ import { a as ti, c as ni, i as ri, n as ii, o as ai, r as oi, s as si, t as ci } from "../_chunks/chat.js";
73
+ import { Link as li } from "./link.js";
74
+ import { a as ui, c as di, i as fi, n as pi, o as mi, r as hi, s as gi, t as _i } from "../_chunks/oauth-button.js";
75
+ import { formatRelativeTime as vi } from "./lib/date-utils.js";
75
76
  //#region src/ui/lib/check-tokens.ts
76
77
  var $ = !1;
77
- function hi() {
78
+ function yi() {
78
79
  if (!$ && !(typeof window > "u")) {
79
80
  try {
80
81
  return;
@@ -86,6 +87,6 @@ function hi() {
86
87
  }
87
88
  //#endregion
88
89
  //#region src/ui/index.ts
89
- hi();
90
+ yi();
90
91
  //#endregion
91
- export { s as Accordion, c as AccordionContent, l as AccordionItem, u as AccordionTrigger, S as Alert, d as AlertDialog, f as AlertDialogAction, p as AlertDialogCancel, m as AlertDialogContent, h as AlertDialogDescription, g as AlertDialogFooter, _ as AlertDialogHeader, v as AlertDialogOverlay, y as AlertDialogPortal, b as AlertDialogTitle, x as AlertDialogTrigger, w as AspectRatio, O as Autocomplete, k as Avatar, A as AvatarFallback, j as AvatarImage, P as Badge, I as BadgeGroup, N as BadgeIndicator, L as Banner, z as Breadcrumb, B as BreadcrumbEllipsis, V as BreadcrumbItem, H as BreadcrumbLink, U as BreadcrumbList, W as BreadcrumbPage, G as BreadcrumbSeparator, J as Button, K as ButtonGroup, X as Card, Z as CardAction, re as CardContent, ie as CardDescription, ae as CardFooter, oe as CardHeader, se as CardTitle, le as Checkbox, ue as Code, de as Collapsible, fe as CollapsibleContent, pe as CollapsibleTrigger, ve as ColorInput, ye as ColorSwatch, be as Combobox, Se as Container, Ce as ContextMenu, we as ContextMenuCheckboxItem, Te as ContextMenuContent, Ee as ContextMenuGroup, De as ContextMenuItem, Oe as ContextMenuLabel, ke as ContextMenuPortal, Ae as ContextMenuRadioGroup, je as ContextMenuRadioItem, Me as ContextMenuSeparator, Ne as ContextMenuShortcut, Pe as ContextMenuSub, Fe as ContextMenuSubContent, Ie as ContextMenuSubTrigger, Le as ContextMenuTrigger, Qr as DateSeparator, gt as DevalokGrain, _t as Dialog, vt as DialogClose, yt as DialogContent, bt as DialogContentRaw, xt as DialogDescription, St as DialogFooter, Ct as DialogHeader, wt as DialogOverlay, Tt as DialogPortal, Et as DialogTitle, Dt as DialogTrigger, tt as DropdownMenu, nt as DropdownMenuCheckboxItem, rt as DropdownMenuContent, it as DropdownMenuGroup, at as DropdownMenuItem, ot as DropdownMenuLabel, st as DropdownMenuPortal, ct as DropdownMenuRadioGroup, lt as DropdownMenuRadioItem, ut as DropdownMenuSeparator, dt as DropdownMenuShortcut, ft as DropdownMenuSub, pt as DropdownMenuSubContent, mt as DropdownMenuSubTrigger, ht as DropdownMenuTrigger, Ot as FileUpload, T as FormField, E as FormHelperText, kt as HoverCard, At as HoverCardContent, jt as HoverCardTrigger, o as Icon, Mt as IconButton, ee as IconContext, Nt as IconGroup, te as IconProvider, Pt as Input, It as Label, ai as Link, Fn as Menubar, In as MenubarCheckboxItem, Ln as MenubarContent, Rn as MenubarGroup, zn as MenubarItem, Bn as MenubarLabel, Vn as MenubarMenu, Hn as MenubarPortal, Un as MenubarRadioGroup, Wn as MenubarRadioItem, Gn as MenubarSeparator, Kn as MenubarShortcut, qn as MenubarSub, Jn as MenubarSubContent, Yn as MenubarSubTrigger, Xn as MenubarTrigger, ti as Message, Zr as MessageInput, $r as MessageList, An as MultiProgressRing, Zn as NavigationMenu, Qn as NavigationMenuContent, $n as NavigationMenuIndicator, er as NavigationMenuItem, tr as NavigationMenuLink, nr as NavigationMenuList, rr as NavigationMenuTrigger, ir as NavigationMenuViewport, Bt as NumberInput, pi as OAuth, li as OAuthButton, di as OAuthConnectionRow, ci as OAuthDivider, oi as OAuthGlyph, ui as OAuthGroup, ar as PaginationContent, or as PaginationEllipsis, sr as PaginationItem, cr as PaginationLink, lr as PaginationNav, ur as PaginationNext, dr as PaginationPrevious, fr as PaginationRoot, _e as Popover, he as PopoverAnchor, ge as PopoverContent, me as PopoverTrigger, Dn as Progress, jn as ProgressRing, Ht as RadioGroup, Ut as RadioGroupItem, Wt as SearchInput, Xr as SegmentedControl, Gt as Select, Kt as SelectContent, qt as SelectGroup, Jt as SelectItem, Yt as SelectLabel, Q as SelectScrollDownButton, Xt as SelectScrollUpButton, Zt as SelectSeparator, Qt as SelectTrigger, $t as SelectValue, Lt as Separator, _n as Sheet, vn as SheetClose, yn as SheetContent, bn as SheetDescription, xn as SheetFooter, Sn as SheetHeader, Cn as SheetOverlay, wn as SheetPortal, Tn as SheetTitle, En as SheetTrigger, mr as Sidebar, hr as SidebarContent, gr as SidebarFooter, _r as SidebarGroup, vr as SidebarGroupAction, yr as SidebarGroupContent, br as SidebarGroupLabel, xr as SidebarHeader, Sr as SidebarInput, Cr as SidebarInset, wr as SidebarMenu, Tr as SidebarMenuAction, Er as SidebarMenuBadge, Dr as SidebarMenuButton, Or as SidebarMenuItem, kr as SidebarMenuSkeleton, Ar as SidebarMenuSub, jr as SidebarMenuSubButton, Mr as SidebarMenuSubItem, Nr as SidebarProvider, Pr as SidebarRail, Fr as SidebarSeparator, Ir as SidebarTrigger, Re as Skeleton, ze as SkeletonAvatar, Be as SkeletonButton, Ve as SkeletonChart, He as SkeletonGroup, Ue as SkeletonImage, We as SkeletonInput, Ge as SkeletonText, tn as Slider, a as Spinner, Rt as SplitButton, Kr as Stack, Nn as StatCard, Mn as StatFlash, Pn as StatusDot, Hr as Step, Ur as Stepper, an as Switch, ni as SystemMessage, qe as Table, Je as TableBody, Ye as TableCaption, Xe as TableCell, Ze as TableFooter, Qe as TableHead, $e as TableHeader, et as TableRow, Rr as Tabs, zr as TabsContent, Br as TabsList, Vr as TabsTrigger, Wr as Text, on as Textarea, cn as Toggle, un as ToggleGroup, dn as ToggleGroupItem, fn as Tooltip, pn as TooltipContent, mn as TooltipProvider, hn as TooltipTrigger, Yr as TreeItem, qr as TreeView, gn as TruncatedText, ei as TypingIndicator, ii as UnreadSeparator, zt as VisuallyHidden, C as alertVariants, M as avatarVariants, F as badgeVariants, R as bannerVariants, Y as buttonVariants, ce as cardVariants, i as cn, xe as comboboxTriggerVariants, mi as formatRelativeTime, pr as generatePagination, fi as getOAuthLabel, si as getOAuthName, Ft as inputWrapperVariants, Vt as numberInputWrapperVariants, On as progressIndicatorVariants, kn as progressTrackVariants, en as selectTriggerVariants, Ke as skeletonVariants, nn as sliderThumbVariants, rn as sliderTrackVariants, e as springs, t as stagger, Gr as textVariants, sn as textareaVariants, ln as toggleVariants, n as tweens, q as useButtonGroup, D as useFormField, ne as useIconContext, ri as useMessageContext, Lr as useSidebar, Jr as useTree, r as withReducedMotion };
92
+ export { s as Accordion, c as AccordionContent, l as AccordionItem, u as AccordionTrigger, S as Alert, d as AlertDialog, f as AlertDialogAction, p as AlertDialogCancel, m as AlertDialogContent, h as AlertDialogDescription, g as AlertDialogFooter, _ as AlertDialogHeader, v as AlertDialogOverlay, y as AlertDialogPortal, b as AlertDialogTitle, x as AlertDialogTrigger, w as AspectRatio, O as Autocomplete, k as Avatar, A as AvatarFallback, j as AvatarImage, P as Badge, I as BadgeGroup, N as BadgeIndicator, L as Banner, z as Breadcrumb, B as BreadcrumbEllipsis, V as BreadcrumbItem, H as BreadcrumbLink, U as BreadcrumbList, W as BreadcrumbPage, G as BreadcrumbSeparator, J as Button, K as ButtonGroup, X as Card, Z as CardAction, re as CardBleed, ie as CardContent, ae as CardDescription, oe as CardFooter, se as CardHeader, ce as CardSection, le as CardTitle, de as Checkbox, fe as Code, pe as Collapsible, me as CollapsibleContent, he as CollapsibleTrigger, be as ColorInput, xe as ColorSwatch, Se as Combobox, we as Container, Te as ContextMenu, Ee as ContextMenuCheckboxItem, De as ContextMenuContent, Oe as ContextMenuGroup, ke as ContextMenuItem, Ae as ContextMenuLabel, je as ContextMenuPortal, Me as ContextMenuRadioGroup, Ne as ContextMenuRadioItem, Pe as ContextMenuSeparator, Fe as ContextMenuShortcut, Ie as ContextMenuSub, Le as ContextMenuSubContent, Re as ContextMenuSubTrigger, ze as ContextMenuTrigger, ni as DateSeparator, yt as DevalokGrain, bt as Dialog, xt as DialogClose, St as DialogContent, Ct as DialogContentRaw, wt as DialogDescription, Tt as DialogFooter, Et as DialogHeader, Dt as DialogOverlay, Ot as DialogPortal, kt as DialogTitle, At as DialogTrigger, it as DropdownMenu, at as DropdownMenuCheckboxItem, ot as DropdownMenuContent, st as DropdownMenuGroup, ct as DropdownMenuItem, lt as DropdownMenuLabel, ut as DropdownMenuPortal, dt as DropdownMenuRadioGroup, ft as DropdownMenuRadioItem, pt as DropdownMenuSeparator, mt as DropdownMenuShortcut, ht as DropdownMenuSub, gt as DropdownMenuSubContent, _t as DropdownMenuSubTrigger, vt as DropdownMenuTrigger, jt as FileUpload, T as FormField, E as FormHelperText, Mt as HoverCard, Nt as HoverCardContent, Pt as HoverCardTrigger, o as Icon, Ft as IconButton, ee as IconContext, It as IconGroup, te as IconProvider, Lt as Input, zt as Label, li as Link, zn as Menubar, Bn as MenubarCheckboxItem, Vn as MenubarContent, Hn as MenubarGroup, Un as MenubarItem, Wn as MenubarLabel, Gn as MenubarMenu, Kn as MenubarPortal, qn as MenubarRadioGroup, Jn as MenubarRadioItem, Yn as MenubarSeparator, Xn as MenubarShortcut, Zn as MenubarSub, Qn as MenubarSubContent, $n as MenubarSubTrigger, er as MenubarTrigger, ai as Message, ti as MessageInput, ri as MessageList, Nn as MultiProgressRing, tr as NavigationMenu, nr as NavigationMenuContent, rr as NavigationMenuIndicator, ir as NavigationMenuItem, ar as NavigationMenuLink, or as NavigationMenuList, sr as NavigationMenuTrigger, cr as NavigationMenuViewport, Ut as NumberInput, _i as OAuth, pi as OAuthButton, hi as OAuthConnectionRow, fi as OAuthDivider, ui as OAuthGlyph, mi as OAuthGroup, lr as PaginationContent, ur as PaginationEllipsis, dr as PaginationItem, fr as PaginationLink, pr as PaginationNav, mr as PaginationNext, hr as PaginationPrevious, gr as PaginationRoot, ye as Popover, _e as PopoverAnchor, ve as PopoverContent, ge as PopoverTrigger, An as Progress, Pn as ProgressRing, Gt as RadioGroup, Kt as RadioGroupItem, qt as SearchInput, ei as SegmentedControl, Jt as Select, Yt as SelectContent, Xt as SelectGroup, Zt as SelectItem, Qt as SelectLabel, $t as SelectScrollDownButton, Q as SelectScrollUpButton, en as SelectSeparator, tn as SelectTrigger, nn as SelectValue, Bt as Separator, bn as Sheet, xn as SheetClose, Sn as SheetContent, Cn as SheetDescription, wn as SheetFooter, Tn as SheetHeader, En as SheetOverlay, Dn as SheetPortal, On as SheetTitle, kn as SheetTrigger, vr as Sidebar, yr as SidebarContent, br as SidebarFooter, xr as SidebarGroup, Sr as SidebarGroupAction, Cr as SidebarGroupContent, wr as SidebarGroupLabel, Tr as SidebarHeader, Er as SidebarInput, Dr as SidebarInset, Or as SidebarMenu, kr as SidebarMenuAction, Ar as SidebarMenuBadge, jr as SidebarMenuButton, Mr as SidebarMenuItem, Nr as SidebarMenuSkeleton, Pr as SidebarMenuSub, Fr as SidebarMenuSubButton, Ir as SidebarMenuSubItem, Lr as SidebarProvider, Rr as SidebarRail, zr as SidebarSeparator, Br as SidebarTrigger, Be as Skeleton, Ve as SkeletonAvatar, He as SkeletonButton, Ue as SkeletonChart, We as SkeletonGroup, Ge as SkeletonImage, Ke as SkeletonInput, qe as SkeletonText, an as Slider, a as Spinner, Vt as SplitButton, Xr as Stack, In as StatCard, Fn as StatFlash, Ln as StatusDot, Kr as Step, qr as Stepper, cn as Switch, oi as SystemMessage, Ye as Table, Xe as TableBody, Ze as TableCaption, Qe as TableCell, $e as TableFooter, et as TableHead, tt as TableHeader, nt as TableRow, rt as TableRowActions, Rn as TableRowLink, Hr as Tabs, Ur as TabsContent, Wr as TabsList, Gr as TabsTrigger, Jr as Text, ln as Textarea, dn as Toggle, pn as ToggleGroup, mn as ToggleGroupItem, hn as Tooltip, gn as TooltipContent, _n as TooltipProvider, vn as TooltipTrigger, $r as TreeItem, Zr as TreeView, yn as TruncatedText, ii as TypingIndicator, ci as UnreadSeparator, Ht as VisuallyHidden, C as alertVariants, M as avatarVariants, F as badgeVariants, R as bannerVariants, Y as buttonVariants, ue as cardVariants, i as cn, Ce as comboboxTriggerVariants, vi as formatRelativeTime, _r as generatePagination, gi as getOAuthLabel, di as getOAuthName, Rt as inputWrapperVariants, Wt as numberInputWrapperVariants, jn as progressIndicatorVariants, Mn as progressTrackVariants, rn as selectTriggerVariants, Je as skeletonVariants, on as sliderThumbVariants, sn as sliderTrackVariants, e as springs, t as stagger, Yr as textVariants, un as textareaVariants, fn as toggleVariants, n as tweens, q as useButtonGroup, D as useFormField, ne as useIconContext, si as useMessageContext, Vr as useSidebar, Qr as useTree, r as withReducedMotion };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/ui/lib/check-tokens.ts","../../src/ui/index.ts"],"sourcesContent":["/**\n * Dev-mode check for missing token CSS.\n *\n * If the consumer forgets `import '@devalok/shilp-sutra/tokens'`, all CSS\n * custom properties resolve to empty strings and components render with\n * transparent/broken backgrounds. This check detects that condition and\n * warns in the console.\n *\n * Only runs once, only in development, only in the browser.\n */\nlet checked = false\n\nexport function checkTokensLoaded(): void {\n if (checked) return\n if (typeof window === 'undefined') return\n\n // Skip in production — bundlers (Vite, Next.js, webpack) define import.meta.env or process.env\n try {\n // @ts-expect-error -- import.meta.env is Vite-specific, not in base TS lib\n if (import.meta.env?.PROD) return\n } catch { /* not in Vite */ }\n\n checked = true\n\n // Wait for stylesheets to load\n requestAnimationFrame(() => {\n const value = getComputedStyle(document.documentElement).getPropertyValue('--color-accent-9').trim()\n if (!value) {\n console.warn(\n '[shilp-sutra] Design system tokens CSS not loaded. ' +\n 'Add `import \\'@devalok/shilp-sutra/tokens\\'` to your root layout. ' +\n 'Without it, components will render with missing colors, spacing, and typography.'\n )\n }\n })\n}\n","/**\n * @module @devalok/shilp-sutra/ui\n *\n * Core UI primitives: buttons, inputs, dialogs, cards, tables, badges, navigation, and more.\n * Most components require client-side React (\"use client\").\n *\n * **Server-safe components** (import individually for Server Components):\n * `Text`, `Skeleton`, `Stack`, `Container`, `Table`, `Code`, `VisuallyHidden`\n *\n * @example\n * // Server Component — import individually:\n * import { Text } from '@devalok/shilp-sutra/ui/text'\n * import { Stack } from '@devalok/shilp-sutra/ui/stack'\n *\n * // Client Component — barrel import:\n * import { Button, Dialog } from '@devalok/shilp-sutra/ui'\n */\n\n// Dev-mode token presence check — runs once on first import\nimport { checkTokensLoaded } from './lib/check-tokens'\ncheckTokensLoaded()\n\n// Core\nexport { Button, type ButtonProps,buttonVariants } from './button'\nexport { ButtonGroup, type ButtonGroupProps,useButtonGroup } from './button-group'\nexport { ColorInput, type ColorInputProps } from './color-input'\nexport { Icon, type IconProps } from './icon'\nexport { IconButton, type IconButtonProps } from './icon-button'\nexport { IconContext, type IconContextValue, IconProvider, type IconSize, type IconStroke,useIconContext } from './icon-context'\nexport { IconGroup, type IconGroupProps } from './icon-group'\nexport { Input, type InputProps, type InputState, inputWrapperVariants } from './input'\nexport { Label, type LabelProps } from './label'\nexport { Separator, type SeparatorProps } from './separator'\nexport { SplitButton, type SplitButtonProps } from './split-button'\nexport { VisuallyHidden, type VisuallyHiddenProps } from './visually-hidden'\n\n// Autocomplete\nexport { Autocomplete, type AutocompleteOption,type AutocompleteProps } from './autocomplete'\n\n// Combobox\nexport { Combobox, type ComboboxOption, type ComboboxProps, type ComboboxSize,comboboxTriggerVariants } from './combobox'\n\n// FileUpload\nexport { FileUpload, type FileUploadProps } from './file-upload'\n\n// Form Controls\nexport { Checkbox, type CheckboxProps } from './checkbox'\nexport { FormField, type FormFieldProps, type FormHelperState, FormHelperText, type FormHelperTextProps,useFormField } from './form'\n// InputOTP removed from barrel in 0.40.0 — hard peer `input-otp` was breaking\n// fresh-consumer builds. Import per-component instead:\n// import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from '@devalok/shilp-sutra/ui/input-otp'\nexport { NumberInput, type NumberInputProps, type NumberInputSize, type NumberInputState,numberInputWrapperVariants } from './number-input'\nexport { RadioGroup, RadioGroupItem, type RadioGroupItemProps,type RadioGroupProps } from './radio'\nexport { SearchInput, type SearchInputProps } from './search-input'\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n type SelectTriggerProps,\n selectTriggerVariants,\n SelectValue,\n} from './select'\nexport { Slider, type SliderColor,type SliderProps, type SliderSize, sliderThumbVariants, sliderTrackVariants } from './slider'\nexport { Switch, type SwitchProps } from './switch'\nexport { Textarea, type TextareaProps,textareaVariants } from './textarea'\nexport { Toggle, type ToggleProps,toggleVariants } from './toggle'\nexport { ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps,type ToggleGroupProps } from './toggle-group'\nexport { TruncatedText, type TruncatedTextProps } from './truncated-text'\n\n// Feedback & Overlays\nexport {\n AlertDialog,\n AlertDialogAction,\n type AlertDialogActionProps,\n AlertDialogCancel,\n type AlertDialogCancelProps,\n AlertDialogContent,\n type AlertDialogContentProps,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from './alert-dialog'\nexport { Collapsible, CollapsibleContent, type CollapsibleProps,CollapsibleTrigger } from './collapsible'\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n type DialogContentProps,\n DialogContentRaw,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n type DialogTitleProps,\n DialogTrigger,\n} from './dialog'\nexport { HoverCard, HoverCardContent, type HoverCardContentProps,HoverCardTrigger } from './hover-card'\nexport { Popover, PopoverAnchor, PopoverContent, type PopoverContentProps,PopoverTrigger } from './popover'\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n type SheetContentProps,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n} from './sheet'\n// toast + Toaster removed from barrel in 0.40.0 — hard peer `sonner` was\n// breaking fresh-consumer builds when consumers imported other UI symbols\n// from the barrel without sonner installed. Import per-component instead:\n// import { toast, formatFileSize, type ToastOptions } from '@devalok/shilp-sutra/ui/toast'\n// import { Toaster } from '@devalok/shilp-sutra/ui/toaster'\nexport { Tooltip, TooltipContent, type TooltipContentProps,TooltipProvider, TooltipTrigger } from './tooltip'\n// ---------------------------------------------------------------------------\n// Notifications — pick the right one:\n// Alert — inline, static feedback within a form or page section (no user action needed to show)\n// Banner — persistent, page-level notice shown above main content (survives navigation)\n// Toast — imperative, transient, action-triggered (fires on user action, auto-dismisses)\n// Requires <Toaster /> mounted once at layout root. Use toast.success() etc. from anywhere.\n// ---------------------------------------------------------------------------\nexport { Alert, type AlertProps,alertVariants } from './alert'\nexport { Banner, type BannerProps,bannerVariants } from './banner'\nexport { Spinner, type SpinnerProps } from './spinner'\n\n// Data Display\nexport { AspectRatio } from './aspect-ratio'\nexport { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarProps, type AvatarRing,type AvatarStatus, avatarVariants } from './avatar'\nexport { Badge, type BadgeProps,badgeVariants } from './badge'\nexport { BadgeGroup, type BadgeGroupProps } from './badge-group'\nexport { BadgeIndicator, type BadgeIndicatorProps } from './badge-indicator'\nexport { Card, CardAction, type CardActionPlacement, type CardActionProps, CardContent, CardDescription, CardFooter, CardHeader, type CardProps,CardTitle, cardVariants } from './card'\nexport { Code, type CodeProps } from './code'\nexport { ColorSwatch, type ColorSwatchProps } from './color-swatch'\nexport { Progress, progressIndicatorVariants, type ProgressProps,progressTrackVariants } from './progress'\nexport { MultiProgressRing, type MultiProgressRingProps,ProgressRing, type ProgressRingProps } from './progress-ring'\nexport {\n Skeleton,\n SkeletonAvatar,\n type SkeletonAvatarProps,\n SkeletonButton,\n type SkeletonButtonProps,\n SkeletonChart,\n type SkeletonChartProps,\n SkeletonGroup,\n type SkeletonGroupProps,\n SkeletonImage,\n type SkeletonImageProps,\n SkeletonInput,\n type SkeletonInputProps,\n type SkeletonProps,\n SkeletonText,\n type SkeletonTextProps,\n skeletonVariants,\n} from './skeleton'\nexport { StatCard, type StatCardProps } from './stat-card'\nexport {\n type FlashPreset,\n type FlashSpec,\n type FlashSpeed,\n type FlashTone,\n StatFlash,\n type StatFlashProps,\n} from './stat-flash'\nexport { StatusDot, type StatusDotProps, type StatusDotStatus } from './status-dot'\nexport { Table, TableBody, TableCaption, TableCell, type TableCellProps,TableFooter, TableHead, TableHeader, type TableProps, TableRow, type TableRowProps } from './table'\n\n// Navigation\nexport { Accordion, AccordionContent, type AccordionContentProps,AccordionItem, type AccordionItemProps, AccordionTrigger, type AccordionTriggerProps } from './accordion'\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n type BreadcrumbLinkProps,\n BreadcrumbList,\n BreadcrumbPage,\n type BreadcrumbProps,\n BreadcrumbSeparator,\n} from './breadcrumb'\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n type ContextMenuContentProps,\n ContextMenuGroup,\n ContextMenuItem,\n type ContextMenuItemProps,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n} from './context-menu'\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n type DropdownMenuContentProps,\n DropdownMenuGroup,\n DropdownMenuItem,\n type DropdownMenuItemProps,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from './dropdown-menu'\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n type MenubarContentProps,\n MenubarGroup,\n MenubarItem,\n type MenubarItemProps,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n} from './menubar'\nexport {\n NavigationMenu,\n NavigationMenuContent,\n type NavigationMenuContentProps,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n type NavigationMenuProps,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n} from './navigation-menu'\nexport {\n generatePagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n type PaginationLinkProps,\n PaginationNav,\n type PaginationNavProps,\n PaginationNext,\n PaginationPrevious,\n PaginationRoot,\n} from './pagination'\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n type SidebarProps,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n} from './sidebar'\nexport { Tabs, type TabsColor, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsOrientation,type TabsProps, type TabsSize, TabsTrigger, type TabsTriggerProps } from './tabs'\n\n// Workflow\nexport { Step, Stepper, type StepperProps, type StepProps } from './stepper'\n\n\n// Typography\nexport { Text, type TextProps, type TextVariant,textVariants } from './text'\n\n// Layout\nexport { Container, type ContainerProps } from './container'\nexport { type SpacingToken,Stack, type StackProps } from './stack'\n\n// Tree View\nexport { TreeItem, type TreeItemProps, type TreeNode,TreeView, type TreeViewProps, useTree } from './tree-view'\n\n// Segmented Control\nexport {\n SegmentedControl,\n type SegmentedControlOption,\n type SegmentedControlProps,\n type SegmentedControlSize,\n type SegmentedControlVariant,\n} from './segmented-control'\n\n// Brand Texture\nexport { DevalokGrain, type DevalokGrainProps, type GrainIntensity } from './devalok-grain'\n\n// Chat primitives\nexport {\n DateSeparator,\n type DateSeparatorProps,\n Message,\n type MessageActionProps,\n type MessageActionsProps,\n type MessageAuthorProps,\n type MessageAvatarProps,\n type MessageBodyProps,\n type MessageContentProps,\n type MessageContextValue,\n type MessageEditableBodyProps,\n MessageInput,\n type MessageInputProps,\n MessageList,\n type MessageListProps,\n type MessageProps,\n type MessageReactionsProps,\n SystemMessage,\n type SystemMessageProps,\n TypingIndicator,\n type TypingIndicatorProps,\n UnreadSeparator,\n type UnreadSeparatorProps,\n useMessageContext,\n} from './chat'\n\n// Other\nexport { Link, type LinkProps } from './link'\n\n// OAuth / Social sign-in\nexport {\n getOAuthLabel,\n getOAuthName,\n OAuth,\n type OAuthAppearance,\n OAuthButton,\n type OAuthButtonProps,\n OAuthConnectionRow,\n type OAuthConnectionRowProps,\n OAuthDivider,\n type OAuthDividerProps,\n OAuthGlyph,\n type OAuthGlyphProps,\n OAuthGroup,\n type OAuthGroupProps,\n type OAuthIntent,\n type OAuthProvider,\n type OAuthVariant,\n} from './oauth-button'\n\n// Utilities\nexport { formatRelativeTime } from './lib/date-utils'\nexport type { SpringPreset, TweenPreset } from './lib/motion'\nexport { springs, stagger, tweens, withReducedMotion } from './lib/motion'\nexport { cn } from './lib/utils'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAI,IAAU;AAEd,SAAgB,KAA0B;AACpC,WACA,SAAO,SAAW,MAGtB;MAAI;AAEyB;UACrB;AAKR,EAHA,IAAU,IAGV,4BAA4B;AAE1B,GADc,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,mBAAmB,CAAC,MAAM,IAElG,QAAQ,KACN,sMAGD;IAEH;;;;;ACdJ,IAAmB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/ui/lib/check-tokens.ts","../../src/ui/index.ts"],"sourcesContent":["/**\n * Dev-mode check for missing token CSS.\n *\n * If the consumer forgets `import '@devalok/shilp-sutra/tokens'`, all CSS\n * custom properties resolve to empty strings and components render with\n * transparent/broken backgrounds. This check detects that condition and\n * warns in the console.\n *\n * Only runs once, only in development, only in the browser.\n */\nlet checked = false\n\nexport function checkTokensLoaded(): void {\n if (checked) return\n if (typeof window === 'undefined') return\n\n // Skip in production — bundlers (Vite, Next.js, webpack) define import.meta.env or process.env\n try {\n // @ts-expect-error -- import.meta.env is Vite-specific, not in base TS lib\n if (import.meta.env?.PROD) return\n } catch { /* not in Vite */ }\n\n checked = true\n\n // Wait for stylesheets to load\n requestAnimationFrame(() => {\n const value = getComputedStyle(document.documentElement).getPropertyValue('--color-accent-9').trim()\n if (!value) {\n console.warn(\n '[shilp-sutra] Design system tokens CSS not loaded. ' +\n 'Add `import \\'@devalok/shilp-sutra/tokens\\'` to your root layout. ' +\n 'Without it, components will render with missing colors, spacing, and typography.'\n )\n }\n })\n}\n","/**\n * @module @devalok/shilp-sutra/ui\n *\n * Core UI primitives: buttons, inputs, dialogs, cards, tables, badges, navigation, and more.\n * Most components require client-side React (\"use client\").\n *\n * **Server-safe components** (import individually for Server Components):\n * `Text`, `Skeleton`, `Stack`, `Container`, `Table`, `Code`, `VisuallyHidden`\n *\n * @example\n * // Server Component — import individually:\n * import { Text } from '@devalok/shilp-sutra/ui/text'\n * import { Stack } from '@devalok/shilp-sutra/ui/stack'\n *\n * // Client Component — barrel import:\n * import { Button, Dialog } from '@devalok/shilp-sutra/ui'\n */\n\n// Dev-mode token presence check — runs once on first import\nimport { checkTokensLoaded } from './lib/check-tokens'\ncheckTokensLoaded()\n\n// Core\nexport { Button, type ButtonProps,buttonVariants } from './button'\nexport { ButtonGroup, type ButtonGroupProps,useButtonGroup } from './button-group'\nexport { ColorInput, type ColorInputProps } from './color-input'\nexport { Icon, type IconProps } from './icon'\nexport { IconButton, type IconButtonProps } from './icon-button'\nexport { IconContext, type IconContextValue, IconProvider, type IconSize, type IconStroke,useIconContext } from './icon-context'\nexport { IconGroup, type IconGroupProps } from './icon-group'\nexport { Input, type InputProps, type InputState, inputWrapperVariants } from './input'\nexport { Label, type LabelProps } from './label'\nexport { Separator, type SeparatorProps } from './separator'\nexport { SplitButton, type SplitButtonProps } from './split-button'\nexport { VisuallyHidden, type VisuallyHiddenProps } from './visually-hidden'\n\n// Autocomplete\nexport { Autocomplete, type AutocompleteOption,type AutocompleteProps } from './autocomplete'\n\n// Combobox\nexport { Combobox, type ComboboxOption, type ComboboxProps, type ComboboxSize,comboboxTriggerVariants } from './combobox'\n\n// FileUpload\nexport { FileUpload, type FileUploadProps } from './file-upload'\n\n// Form Controls\nexport { Checkbox, type CheckboxProps } from './checkbox'\nexport { FormField, type FormFieldProps, type FormHelperState, FormHelperText, type FormHelperTextProps,useFormField } from './form'\n// InputOTP removed from barrel in 0.40.0 — hard peer `input-otp` was breaking\n// fresh-consumer builds. Import per-component instead:\n// import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from '@devalok/shilp-sutra/ui/input-otp'\nexport { NumberInput, type NumberInputProps, type NumberInputSize, type NumberInputState,numberInputWrapperVariants } from './number-input'\nexport { RadioGroup, RadioGroupItem, type RadioGroupItemProps,type RadioGroupProps } from './radio'\nexport { SearchInput, type SearchInputProps } from './search-input'\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n type SelectTriggerProps,\n selectTriggerVariants,\n SelectValue,\n} from './select'\nexport { Slider, type SliderColor,type SliderProps, type SliderSize, sliderThumbVariants, sliderTrackVariants } from './slider'\nexport { Switch, type SwitchProps } from './switch'\nexport { Textarea, type TextareaProps,textareaVariants } from './textarea'\nexport { Toggle, type ToggleProps,toggleVariants } from './toggle'\nexport { ToggleGroup, ToggleGroupItem, type ToggleGroupItemProps,type ToggleGroupProps } from './toggle-group'\nexport { TruncatedText, type TruncatedTextProps } from './truncated-text'\n\n// Feedback & Overlays\nexport {\n AlertDialog,\n AlertDialogAction,\n type AlertDialogActionProps,\n AlertDialogCancel,\n type AlertDialogCancelProps,\n AlertDialogContent,\n type AlertDialogContentProps,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from './alert-dialog'\nexport { Collapsible, CollapsibleContent, type CollapsibleProps,CollapsibleTrigger } from './collapsible'\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n type DialogContentProps,\n DialogContentRaw,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n type DialogTitleProps,\n DialogTrigger,\n} from './dialog'\nexport { HoverCard, HoverCardContent, type HoverCardContentProps,HoverCardTrigger } from './hover-card'\nexport { Popover, PopoverAnchor, PopoverContent, type PopoverContentProps,PopoverTrigger } from './popover'\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n type SheetContentProps,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetOverlay,\n SheetPortal,\n SheetTitle,\n SheetTrigger,\n} from './sheet'\n// toast + Toaster removed from barrel in 0.40.0 — hard peer `sonner` was\n// breaking fresh-consumer builds when consumers imported other UI symbols\n// from the barrel without sonner installed. Import per-component instead:\n// import { toast, formatFileSize, type ToastOptions } from '@devalok/shilp-sutra/ui/toast'\n// import { Toaster } from '@devalok/shilp-sutra/ui/toaster'\nexport { Tooltip, TooltipContent, type TooltipContentProps,TooltipProvider, TooltipTrigger } from './tooltip'\n// ---------------------------------------------------------------------------\n// Notifications — pick the right one:\n// Alert — inline, static feedback within a form or page section (no user action needed to show)\n// Banner — persistent, page-level notice shown above main content (survives navigation)\n// Toast — imperative, transient, action-triggered (fires on user action, auto-dismisses)\n// Requires <Toaster /> mounted once at layout root. Use toast.success() etc. from anywhere.\n// ---------------------------------------------------------------------------\nexport { Alert, type AlertProps,alertVariants } from './alert'\nexport { Banner, type BannerProps,bannerVariants } from './banner'\nexport { Spinner, type SpinnerProps } from './spinner'\n\n// Data Display\nexport { AspectRatio } from './aspect-ratio'\nexport { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarProps, type AvatarRing,type AvatarStatus, avatarVariants } from './avatar'\nexport { Badge, type BadgeProps,badgeVariants } from './badge'\nexport { BadgeGroup, type BadgeGroupProps } from './badge-group'\nexport { BadgeIndicator, type BadgeIndicatorProps } from './badge-indicator'\nexport { Card, CardAction, type CardActionPlacement, type CardActionProps, CardBleed, type CardBleedProps, type CardBleedSide, CardContent, CardDescription, CardFooter, CardHeader, type CardProps,CardSection, CardTitle, cardVariants } from './card'\nexport { Code, type CodeProps } from './code'\nexport { ColorSwatch, type ColorSwatchProps } from './color-swatch'\nexport { Progress, progressIndicatorVariants, type ProgressProps,progressTrackVariants } from './progress'\nexport { MultiProgressRing, type MultiProgressRingProps,ProgressRing, type ProgressRingProps } from './progress-ring'\nexport {\n Skeleton,\n SkeletonAvatar,\n type SkeletonAvatarProps,\n SkeletonButton,\n type SkeletonButtonProps,\n SkeletonChart,\n type SkeletonChartProps,\n SkeletonGroup,\n type SkeletonGroupProps,\n SkeletonImage,\n type SkeletonImageProps,\n SkeletonInput,\n type SkeletonInputProps,\n type SkeletonProps,\n SkeletonText,\n type SkeletonTextProps,\n skeletonVariants,\n} from './skeleton'\nexport { StatCard, type StatCardProps } from './stat-card'\nexport {\n type FlashPreset,\n type FlashSpec,\n type FlashSpeed,\n type FlashTone,\n StatFlash,\n type StatFlashProps,\n} from './stat-flash'\nexport { StatusDot, type StatusDotProps, type StatusDotStatus } from './status-dot'\nexport { Table, TableBody, TableCaption, TableCell, type TableCellBaseProps,type TableCellProps,type TableDensity, TableFooter, TableHead, TableHeader, type TableProps, TableRow, TableRowActions, type TableRowActionsProps,type TableRowProps } from './table'\nexport { TableRowLink, type TableRowLinkProps } from './table-row-link'\n\n// Navigation\nexport { Accordion, AccordionContent, type AccordionContentProps,AccordionItem, type AccordionItemProps, AccordionTrigger, type AccordionTriggerProps } from './accordion'\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n type BreadcrumbLinkProps,\n BreadcrumbList,\n BreadcrumbPage,\n type BreadcrumbProps,\n BreadcrumbSeparator,\n} from './breadcrumb'\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n type ContextMenuContentProps,\n ContextMenuGroup,\n ContextMenuItem,\n type ContextMenuItemProps,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n} from './context-menu'\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n type DropdownMenuContentProps,\n DropdownMenuGroup,\n DropdownMenuItem,\n type DropdownMenuItemProps,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from './dropdown-menu'\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n type MenubarContentProps,\n MenubarGroup,\n MenubarItem,\n type MenubarItemProps,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n} from './menubar'\nexport {\n NavigationMenu,\n NavigationMenuContent,\n type NavigationMenuContentProps,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n type NavigationMenuProps,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n} from './navigation-menu'\nexport {\n generatePagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n type PaginationLinkProps,\n PaginationNav,\n type PaginationNavProps,\n PaginationNext,\n PaginationPrevious,\n PaginationRoot,\n} from './pagination'\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n type SidebarProps,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n} from './sidebar'\nexport { Tabs, type TabsColor, TabsContent, type TabsContentProps, TabsList, type TabsListProps, type TabsOrientation,type TabsProps, type TabsSize, TabsTrigger, type TabsTriggerProps } from './tabs'\n\n// Workflow\nexport { Step, Stepper, type StepperProps, type StepProps } from './stepper'\n\n\n// Typography\nexport { Text, type TextProps, type TextVariant,textVariants } from './text'\n\n// Layout\nexport { Container, type ContainerProps } from './container'\nexport { type SpacingToken,Stack, type StackProps } from './stack'\n\n// Tree View\nexport { TreeItem, type TreeItemProps, type TreeNode,TreeView, type TreeViewProps, useTree } from './tree-view'\n\n// Segmented Control\nexport {\n SegmentedControl,\n type SegmentedControlOption,\n type SegmentedControlProps,\n type SegmentedControlSize,\n type SegmentedControlVariant,\n} from './segmented-control'\n\n// Brand Texture\nexport { DevalokGrain, type DevalokGrainProps, type GrainIntensity } from './devalok-grain'\n\n// Chat primitives\nexport {\n DateSeparator,\n type DateSeparatorProps,\n Message,\n type MessageActionProps,\n type MessageActionsProps,\n type MessageAuthorProps,\n type MessageAvatarProps,\n type MessageBodyProps,\n type MessageContentProps,\n type MessageContextValue,\n type MessageEditableBodyProps,\n MessageInput,\n type MessageInputProps,\n MessageList,\n type MessageListProps,\n type MessageProps,\n type MessageReactionsProps,\n SystemMessage,\n type SystemMessageProps,\n TypingIndicator,\n type TypingIndicatorProps,\n UnreadSeparator,\n type UnreadSeparatorProps,\n useMessageContext,\n} from './chat'\n\n// Other\nexport { Link, type LinkProps } from './link'\n\n// OAuth / Social sign-in\nexport {\n getOAuthLabel,\n getOAuthName,\n OAuth,\n type OAuthAppearance,\n OAuthButton,\n type OAuthButtonProps,\n OAuthConnectionRow,\n type OAuthConnectionRowProps,\n OAuthDivider,\n type OAuthDividerProps,\n OAuthGlyph,\n type OAuthGlyphProps,\n OAuthGroup,\n type OAuthGroupProps,\n type OAuthIntent,\n type OAuthProvider,\n type OAuthVariant,\n} from './oauth-button'\n\n// Utilities\nexport { formatRelativeTime } from './lib/date-utils'\nexport type { SpringPreset, TweenPreset } from './lib/motion'\nexport { springs, stagger, tweens, withReducedMotion } from './lib/motion'\nexport { cn } from './lib/utils'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAI,IAAU;AAEd,SAAgB,KAA0B;AACpC,WACA,SAAO,SAAW,MAGtB;MAAI;AAEyB;UACrB;AAKR,EAHA,IAAU,IAGV,4BAA4B;AAE1B,GADc,iBAAiB,SAAS,gBAAgB,CAAC,iBAAiB,mBAAmB,CAAC,MAAM,IAElG,QAAQ,KACN,sMAGD;IAEH;;;;;ACdJ,IAAmB"}
@@ -51,12 +51,12 @@ var c = {
51
51
  default: return;
52
52
  }
53
53
  g(m[n].id), requestAnimationFrame(() => {
54
- (S.current?.querySelectorAll("[role=\"tab\"]"))?.[n]?.focus();
54
+ (S.current?.querySelectorAll("[role=\"radio\"]"))?.[n]?.focus();
55
55
  });
56
56
  }, { button: T, icon: E } = c[f];
57
57
  return /* @__PURE__ */ i("div", {
58
58
  ref: C,
59
- role: "tablist",
59
+ role: "radiogroup",
60
60
  tabIndex: -1,
61
61
  "aria-label": y["aria-label"] ?? "Segmented control",
62
62
  onKeyDown: w,
@@ -68,8 +68,8 @@ var c = {
68
68
  let o = r.id === h;
69
69
  return /* @__PURE__ */ a("button", {
70
70
  type: "button",
71
- role: "tab",
72
- "aria-selected": o,
71
+ role: "radio",
72
+ "aria-checked": o,
73
73
  tabIndex: o ? 0 : -1,
74
74
  disabled: _,
75
75
  onClick: () => g(r.id),
@@ -1 +1 @@
1
- {"version":3,"file":"segmented-control.js","names":[],"sources":["../../src/ui/segmented-control.tsx"],"sourcesContent":["'use client'\n\nimport { LayoutGroup,motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { IconProvider } from './icon-context'\nimport type { IconInput } from './lib/icon-input'\nimport { normalizeIcon } from './lib/normalize-icon'\nimport { cn } from './lib/utils'\n\n/* ── Types ─────────────────────────────────────────────────── */\n\nexport type SegmentedControlSize = 'sm' | 'md' | 'lg'\nexport type SegmentedControlVariant = 'default' | 'solid'\n\nexport interface SegmentedControlOption {\n id: string\n text: string\n /** Optional icon rendered before the text label. Accepts any `IconInput`. */\n icon?: IconInput\n}\n\nexport interface SegmentedControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n size?: SegmentedControlSize\n variant?: SegmentedControlVariant\n options: SegmentedControlOption[]\n selectedId: string\n onSelect: (id: string) => void\n disabled?: boolean\n}\n\n/* ── Size config ───────────────────────────────────────────── */\n\nconst sizeConfig = {\n sm: { button: 'h-7 px-ds-04 text-ds-sm', icon: 'h-3.5 w-3.5' },\n md: { button: 'h-8 px-ds-05 text-ds-md', icon: 'h-4 w-4' },\n lg: { button: 'h-10 px-ds-06 text-ds-md', icon: 'h-4 w-4' },\n} as const\n\n/* ── Pill styles per variant ───────────────────────────────── */\n\nconst pillStyles = {\n default: 'bg-surface-overlay shadow-raised',\n solid: 'bg-accent-9',\n} as const\n\nconst selectedTextStyles = {\n default: 'text-surface-fg',\n solid: 'text-accent-fg',\n} as const\n\n/* ── Spring config (snappy, minimal overshoot) ─────────────── */\n/* Intentionally softer than springs.snappy (500/30/0.5) for pill slide feel */\n\nconst pillSpring = { type: 'spring' as const, stiffness: 400, damping: 30 }\n\n/* ── SegmentedControl ──────────────────────────────────────── */\n\nconst SegmentedControl = React.forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl(\n {\n size = 'md',\n variant = 'default',\n options,\n selectedId,\n onSelect,\n disabled = false,\n className,\n ...props\n },\n ref,\n ) {\n const instanceId = React.useId()\n const tablistRef = React.useRef<HTMLDivElement | null>(null)\n\n // Compose refs\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n tablistRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n },\n [ref],\n )\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return\n\n const currentIndex = options.findIndex((o) => o.id === selectedId)\n let nextIndex = currentIndex\n\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault()\n nextIndex = currentIndex > 0 ? currentIndex - 1 : options.length - 1\n break\n case 'ArrowRight':\n e.preventDefault()\n nextIndex = currentIndex < options.length - 1 ? currentIndex + 1 : 0\n break\n case 'Home':\n e.preventDefault()\n nextIndex = 0\n break\n case 'End':\n e.preventDefault()\n nextIndex = options.length - 1\n break\n default:\n return\n }\n\n onSelect(options[nextIndex].id)\n requestAnimationFrame(() => {\n const buttons = tablistRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')\n buttons?.[nextIndex]?.focus()\n })\n }\n\n const { button: buttonSize, icon: iconSize } = sizeConfig[size]\n\n return (\n <div\n ref={mergedRef}\n role=\"tablist\"\n tabIndex={-1}\n aria-label={props['aria-label'] ?? 'Segmented control'}\n onKeyDown={handleKeyDown}\n className={cn(\n 'inline-flex p-[3px] rounded-pill',\n 'bg-surface-raised-hover border border-surface-border-subtle shadow-inset',\n disabled && 'opacity-action-disabled pointer-events-none',\n className,\n )}\n {...props}\n >\n <LayoutGroup id={instanceId}>\n {options.map((option) => {\n const isSelected = option.id === selectedId\n\n return (\n <button\n key={option.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n tabIndex={isSelected ? 0 : -1}\n disabled={disabled}\n onClick={() => onSelect(option.id)}\n className={cn(\n 'relative inline-flex items-center justify-center gap-ds-02 rounded-pill',\n 'font-medium transition-colors duration-fast-02 ease-productive-standard',\n 'outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2',\n buttonSize,\n isSelected\n ? selectedTextStyles[variant]\n : 'text-surface-fg-muted hover:text-surface-fg',\n )}\n >\n {/* Sliding pill indicator */}\n {isSelected && (\n <motion.span\n layoutId=\"segment-pill\"\n className={cn(\n 'absolute inset-0 rounded-pill pointer-events-none',\n pillStyles[variant],\n )}\n transition={pillSpring}\n />\n )}\n\n {/* Content (above pill via z-index) */}\n {option.icon && (\n <span className={cn('relative z-[1] shrink-0 inline-flex items-center justify-center', iconSize)}>\n <IconProvider size={size === 'lg' ? 'sm' : 'xs'}>\n {normalizeIcon(option.icon)}\n </IconProvider>\n </span>\n )}\n <span className=\"relative z-[1]\">{option.text}</span>\n </button>\n )\n })}\n </LayoutGroup>\n </div>\n )\n },\n)\nSegmentedControl.displayName = 'SegmentedControl'\n\n/* ── Exports ───────────────────────────────────────────────── */\n\nexport { SegmentedControl }\n"],"mappings":";;;;;;;;AAiCA,IAAM,IAAa;CACjB,IAAI;EAAE,QAAQ;EAA2B,MAAM;EAAe;CAC9D,IAAI;EAAE,QAAQ;EAA2B,MAAM;EAAW;CAC1D,IAAI;EAAE,QAAQ;EAA4B,MAAM;EAAW;CAC5D,EAIK,IAAa;CACjB,SAAS;CACT,OAAO;CACR,EAEK,IAAqB;CACzB,SAAS;CACT,OAAO;CACR,EAKK,IAAa;CAAE,MAAM;CAAmB,WAAW;CAAK,SAAS;CAAI,EAIrE,IAAmB,EAAM,WAC7B,SACE,EACE,UAAO,MACP,aAAU,WACV,YACA,eACA,aACA,cAAW,IACX,cACA,GAAG,KAEL,GACA;CACA,IAAM,IAAa,EAAM,OAAO,EAC1B,IAAa,EAAM,OAA8B,KAAK,EAGtD,IAAY,EAAM,aACrB,MAAgC;AAE/B,EADA,EAAW,UAAU,GACjB,OAAO,KAAQ,aAAY,EAAI,EAAK,GAC/B,MAAM,EAAsD,UAAU;IAEjF,CAAC,EAAI,CACN,EAGK,KAAiB,MAA2C;AAChE,MAAI,EAAU;EAEd,IAAM,IAAe,EAAQ,WAAW,MAAM,EAAE,OAAO,EAAW,EAC9D,IAAY;AAEhB,UAAQ,EAAE,KAAV;GACE,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY,IAAe,IAAI,IAAe,IAAI,EAAQ,SAAS;AACnE;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY,IAAe,EAAQ,SAAS,IAAI,IAAe,IAAI;AACnE;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY;AACZ;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY,EAAQ,SAAS;AAC7B;GACF,QACE;;AAIJ,EADA,EAAS,EAAQ,GAAW,GAAG,EAC/B,4BAA4B;AAE1B,IADgB,EAAW,SAAS,iBAAoC,iBAAe,IAC7E,IAAY,OAAO;IAC7B;IAGE,EAAE,QAAQ,GAAY,MAAM,MAAa,EAAW;AAE1D,QACE,kBAAC,OAAD;EACE,KAAK;EACL,MAAK;EACL,UAAU;EACV,cAAY,EAAM,iBAAiB;EACnC,WAAW;EACX,WAAW,EACT,oCACA,4EACA,KAAY,+CACZ,EACD;EACD,GAAI;YAEJ,kBAAC,GAAD;GAAa,IAAI;aACd,EAAQ,KAAK,MAAW;IACvB,IAAM,IAAa,EAAO,OAAO;AAEjC,WACE,kBAAC,UAAD;KAEE,MAAK;KACL,MAAK;KACL,iBAAe;KACf,UAAU,IAAa,IAAI;KACjB;KACV,eAAe,EAAS,EAAO,GAAG;KAClC,WAAW,EACT,2EACA,2EACA,+FACA,GACA,IACI,EAAmB,KACnB,8CACL;eAhBH;MAmBG,KACC,kBAAC,EAAO,MAAR;OACE,UAAS;OACT,WAAW,EACT,qDACA,EAAW,GACZ;OACD,YAAY;OACZ,CAAA;MAIH,EAAO,QACN,kBAAC,QAAD;OAAM,WAAW,EAAG,mEAAmE,EAAS;iBAC9F,kBAAC,GAAD;QAAc,MAAM,MAAS,OAAO,OAAO;kBACxC,EAAc,EAAO,KAAK;QACd,CAAA;OACV,CAAA;MAET,kBAAC,QAAD;OAAM,WAAU;iBAAkB,EAAO;OAAY,CAAA;MAC9C;OAtCF,EAAO,GAsCL;KAEX;GACU,CAAA;EACV,CAAA;EAGX;AACD,EAAiB,cAAc"}
1
+ {"version":3,"file":"segmented-control.js","names":[],"sources":["../../src/ui/segmented-control.tsx"],"sourcesContent":["'use client'\n\nimport { LayoutGroup,motion } from 'framer-motion'\nimport * as React from 'react'\n\nimport { IconProvider } from './icon-context'\nimport type { IconInput } from './lib/icon-input'\nimport { normalizeIcon } from './lib/normalize-icon'\nimport { cn } from './lib/utils'\n\n/* ── Types ─────────────────────────────────────────────────── */\n\nexport type SegmentedControlSize = 'sm' | 'md' | 'lg'\nexport type SegmentedControlVariant = 'default' | 'solid'\n\nexport interface SegmentedControlOption {\n id: string\n text: string\n /** Optional icon rendered before the text label. Accepts any `IconInput`. */\n icon?: IconInput\n}\n\nexport interface SegmentedControlProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n size?: SegmentedControlSize\n variant?: SegmentedControlVariant\n options: SegmentedControlOption[]\n selectedId: string\n onSelect: (id: string) => void\n disabled?: boolean\n}\n\n/* ── Size config ───────────────────────────────────────────── */\n\nconst sizeConfig = {\n sm: { button: 'h-7 px-ds-04 text-ds-sm', icon: 'h-3.5 w-3.5' },\n md: { button: 'h-8 px-ds-05 text-ds-md', icon: 'h-4 w-4' },\n lg: { button: 'h-10 px-ds-06 text-ds-md', icon: 'h-4 w-4' },\n} as const\n\n/* ── Pill styles per variant ───────────────────────────────── */\n\nconst pillStyles = {\n default: 'bg-surface-overlay shadow-raised',\n solid: 'bg-accent-9',\n} as const\n\nconst selectedTextStyles = {\n default: 'text-surface-fg',\n solid: 'text-accent-fg',\n} as const\n\n/* ── Spring config (snappy, minimal overshoot) ─────────────── */\n/* Intentionally softer than springs.snappy (500/30/0.5) for pill slide feel */\n\nconst pillSpring = { type: 'spring' as const, stiffness: 400, damping: 30 }\n\n/* ── SegmentedControl ──────────────────────────────────────── */\n\nconst SegmentedControl = React.forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl(\n {\n size = 'md',\n variant = 'default',\n options,\n selectedId,\n onSelect,\n disabled = false,\n className,\n ...props\n },\n ref,\n ) {\n const instanceId = React.useId()\n const tablistRef = React.useRef<HTMLDivElement | null>(null)\n\n // Compose refs\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n tablistRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n },\n [ref],\n )\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return\n\n const currentIndex = options.findIndex((o) => o.id === selectedId)\n let nextIndex = currentIndex\n\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault()\n nextIndex = currentIndex > 0 ? currentIndex - 1 : options.length - 1\n break\n case 'ArrowRight':\n e.preventDefault()\n nextIndex = currentIndex < options.length - 1 ? currentIndex + 1 : 0\n break\n case 'Home':\n e.preventDefault()\n nextIndex = 0\n break\n case 'End':\n e.preventDefault()\n nextIndex = options.length - 1\n break\n default:\n return\n }\n\n onSelect(options[nextIndex].id)\n requestAnimationFrame(() => {\n const buttons = tablistRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]')\n buttons?.[nextIndex]?.focus()\n })\n }\n\n const { button: buttonSize, icon: iconSize } = sizeConfig[size]\n\n return (\n <div\n ref={mergedRef}\n role=\"radiogroup\"\n tabIndex={-1}\n aria-label={props['aria-label'] ?? 'Segmented control'}\n onKeyDown={handleKeyDown}\n className={cn(\n 'inline-flex p-[3px] rounded-pill',\n 'bg-surface-raised-hover border border-surface-border-subtle shadow-inset',\n disabled && 'opacity-action-disabled pointer-events-none',\n className,\n )}\n {...props}\n >\n <LayoutGroup id={instanceId}>\n {options.map((option) => {\n const isSelected = option.id === selectedId\n\n return (\n <button\n key={option.id}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n tabIndex={isSelected ? 0 : -1}\n disabled={disabled}\n onClick={() => onSelect(option.id)}\n className={cn(\n 'relative inline-flex items-center justify-center gap-ds-02 rounded-pill',\n 'font-medium transition-colors duration-fast-02 ease-productive-standard',\n 'outline-hidden focus-visible:ring-2 focus-visible:ring-accent-9 focus-visible:ring-offset-2',\n buttonSize,\n isSelected\n ? selectedTextStyles[variant]\n : 'text-surface-fg-muted hover:text-surface-fg',\n )}\n >\n {/* Sliding pill indicator */}\n {isSelected && (\n <motion.span\n layoutId=\"segment-pill\"\n className={cn(\n 'absolute inset-0 rounded-pill pointer-events-none',\n pillStyles[variant],\n )}\n transition={pillSpring}\n />\n )}\n\n {/* Content (above pill via z-index) */}\n {option.icon && (\n <span className={cn('relative z-[1] shrink-0 inline-flex items-center justify-center', iconSize)}>\n <IconProvider size={size === 'lg' ? 'sm' : 'xs'}>\n {normalizeIcon(option.icon)}\n </IconProvider>\n </span>\n )}\n <span className=\"relative z-[1]\">{option.text}</span>\n </button>\n )\n })}\n </LayoutGroup>\n </div>\n )\n },\n)\nSegmentedControl.displayName = 'SegmentedControl'\n\n/* ── Exports ───────────────────────────────────────────────── */\n\nexport { SegmentedControl }\n"],"mappings":";;;;;;;;AAiCA,IAAM,IAAa;CACjB,IAAI;EAAE,QAAQ;EAA2B,MAAM;EAAe;CAC9D,IAAI;EAAE,QAAQ;EAA2B,MAAM;EAAW;CAC1D,IAAI;EAAE,QAAQ;EAA4B,MAAM;EAAW;CAC5D,EAIK,IAAa;CACjB,SAAS;CACT,OAAO;CACR,EAEK,IAAqB;CACzB,SAAS;CACT,OAAO;CACR,EAKK,IAAa;CAAE,MAAM;CAAmB,WAAW;CAAK,SAAS;CAAI,EAIrE,IAAmB,EAAM,WAC7B,SACE,EACE,UAAO,MACP,aAAU,WACV,YACA,eACA,aACA,cAAW,IACX,cACA,GAAG,KAEL,GACA;CACA,IAAM,IAAa,EAAM,OAAO,EAC1B,IAAa,EAAM,OAA8B,KAAK,EAGtD,IAAY,EAAM,aACrB,MAAgC;AAE/B,EADA,EAAW,UAAU,GACjB,OAAO,KAAQ,aAAY,EAAI,EAAK,GAC/B,MAAM,EAAsD,UAAU;IAEjF,CAAC,EAAI,CACN,EAGK,KAAiB,MAA2C;AAChE,MAAI,EAAU;EAEd,IAAM,IAAe,EAAQ,WAAW,MAAM,EAAE,OAAO,EAAW,EAC9D,IAAY;AAEhB,UAAQ,EAAE,KAAV;GACE,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY,IAAe,IAAI,IAAe,IAAI,EAAQ,SAAS;AACnE;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY,IAAe,EAAQ,SAAS,IAAI,IAAe,IAAI;AACnE;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY;AACZ;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,IAAY,EAAQ,SAAS;AAC7B;GACF,QACE;;AAIJ,EADA,EAAS,EAAQ,GAAW,GAAG,EAC/B,4BAA4B;AAE1B,IADgB,EAAW,SAAS,iBAAoC,mBAAiB,IAC/E,IAAY,OAAO;IAC7B;IAGE,EAAE,QAAQ,GAAY,MAAM,MAAa,EAAW;AAE1D,QACE,kBAAC,OAAD;EACE,KAAK;EACL,MAAK;EACL,UAAU;EACV,cAAY,EAAM,iBAAiB;EACnC,WAAW;EACX,WAAW,EACT,oCACA,4EACA,KAAY,+CACZ,EACD;EACD,GAAI;YAEJ,kBAAC,GAAD;GAAa,IAAI;aACd,EAAQ,KAAK,MAAW;IACvB,IAAM,IAAa,EAAO,OAAO;AAEjC,WACE,kBAAC,UAAD;KAEE,MAAK;KACL,MAAK;KACL,gBAAc;KACd,UAAU,IAAa,IAAI;KACjB;KACV,eAAe,EAAS,EAAO,GAAG;KAClC,WAAW,EACT,2EACA,2EACA,+FACA,GACA,IACI,EAAmB,KACnB,8CACL;eAhBH;MAmBG,KACC,kBAAC,EAAO,MAAR;OACE,UAAS;OACT,WAAW,EACT,qDACA,EAAW,GACZ;OACD,YAAY;OACZ,CAAA;MAIH,EAAO,QACN,kBAAC,QAAD;OAAM,WAAW,EAAG,mEAAmE,EAAS;iBAC9F,kBAAC,GAAD;QAAc,MAAM,MAAS,OAAO,OAAO;kBACxC,EAAc,EAAO,KAAK;QACd,CAAA;OACV,CAAA;MAET,kBAAC,QAAD;OAAM,WAAU;iBAAkB,EAAO;OAAY,CAAA;MAC9C;OAtCF,EAAO,GAsCL;KAEX;GACU,CAAA;EACV,CAAA;EAGX;AACD,EAAiB,cAAc"}
@@ -2,11 +2,12 @@
2
2
  import * as SeparatorPrimitive from '../primitives/react-separator';
3
3
  import * as React from 'react';
4
4
  export interface SeparatorProps extends React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {
5
- /** Visual variant:
6
- * - `default` solid line
7
- * - `gradient` fades at both edges
8
- * - `gradient-left`fades on the left, solid on the right
9
- * - `gradient-right` fades on the right, solid on the left
5
+ /**
6
+ * @deprecated Separator is always a solid hairline. The `gradient` /
7
+ * `gradient-left` / `gradient-right` variants were decorative (and never
8
+ * rendered in production the interpolated class couldn't be emitted by the
9
+ * Tailwind 4 scanner). They now render solid; the `variant` prop is removed in
10
+ * 0.45.0.
10
11
  */
11
12
  variant?: 'default' | 'gradient' | 'gradient-left' | 'gradient-right';
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../src/ui/separator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,cACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACtE;;;;;OAKG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAA;CACtE;AAED,QAAA,MAAM,SAAS,uFAgCd,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../src/ui/separator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,cACf,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC;IACtE;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAA;CACtE;AAED,QAAA,MAAM,SAAS,uFAuBd,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}