@optimum-intelligence/opti-ui 0.2.0 → 0.4.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 (136) hide show
  1. package/README.md +105 -3
  2. package/dist/components/accordion/Accordion.d.ts +12 -0
  3. package/dist/components/accordion/Accordion.js +12 -0
  4. package/dist/components/accordion/Accordion.js.map +1 -1
  5. package/dist/components/alert/Alert.d.ts +4 -0
  6. package/dist/components/alert/Alert.js.map +1 -1
  7. package/dist/components/app-shell/AppShell.d.ts +22 -0
  8. package/dist/components/app-shell/AppShell.js +6 -0
  9. package/dist/components/app-shell/AppShell.js.map +1 -1
  10. package/dist/components/avatar/Avatar.d.ts +8 -0
  11. package/dist/components/avatar/Avatar.js +2 -0
  12. package/dist/components/avatar/Avatar.js.map +1 -1
  13. package/dist/components/badge/Badge.d.ts +9 -0
  14. package/dist/components/badge/Badge.js +6 -0
  15. package/dist/components/badge/Badge.js.map +1 -1
  16. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -0
  17. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
  18. package/dist/components/button/Button.d.ts +8 -0
  19. package/dist/components/button/Button.js +6 -0
  20. package/dist/components/button/Button.js.map +1 -1
  21. package/dist/components/calendar/Calendar.d.ts +3 -0
  22. package/dist/components/calendar/Calendar.js.map +1 -1
  23. package/dist/components/card/Card.d.ts +14 -1
  24. package/dist/components/card/Card.js +13 -0
  25. package/dist/components/card/Card.js.map +1 -1
  26. package/dist/components/choice/Choice.d.ts +13 -0
  27. package/dist/components/choice/Choice.js +10 -0
  28. package/dist/components/choice/Choice.js.map +1 -1
  29. package/dist/components/combobox/Combobox.d.ts +12 -0
  30. package/dist/components/combobox/Combobox.js.map +1 -1
  31. package/dist/components/command-palette/CommandPalette.d.ts +10 -0
  32. package/dist/components/command-palette/CommandPalette.js.map +1 -1
  33. package/dist/components/data-table/DataTable.d.ts +62 -96
  34. package/dist/components/data-table/DataTable.js +452 -418
  35. package/dist/components/data-table/DataTable.js.map +1 -1
  36. package/dist/components/data-table/DataTableContent.d.ts +36 -0
  37. package/dist/components/data-table/DataTableContent.js +550 -0
  38. package/dist/components/data-table/DataTableContent.js.map +1 -0
  39. package/dist/components/data-table/DataTableFilters.d.ts +18 -0
  40. package/dist/components/data-table/DataTableFilters.js +284 -0
  41. package/dist/components/data-table/DataTableFilters.js.map +1 -0
  42. package/dist/components/data-table/DataTableRow.d.ts +33 -0
  43. package/dist/components/data-table/DataTableRow.js +552 -0
  44. package/dist/components/data-table/DataTableRow.js.map +1 -0
  45. package/dist/components/data-table/context.d.ts +5 -0
  46. package/dist/components/data-table/context.js +14 -0
  47. package/dist/components/data-table/context.js.map +1 -0
  48. package/dist/components/data-table/layout.d.ts +60 -0
  49. package/dist/components/data-table/layout.js +272 -0
  50. package/dist/components/data-table/layout.js.map +1 -0
  51. package/dist/components/data-table/types.d.ts +335 -0
  52. package/dist/components/data-table/useDataTable.d.ts +9 -0
  53. package/dist/components/data-table/useDataTable.js +666 -0
  54. package/dist/components/data-table/useDataTable.js.map +1 -0
  55. package/dist/components/date-picker/DateRangePicker.d.ts +1 -0
  56. package/dist/components/date-picker/DateRangePicker.js.map +1 -1
  57. package/dist/components/date-picker/PickerField.d.ts +13 -0
  58. package/dist/components/date-picker/PickerField.js.map +1 -1
  59. package/dist/components/dialog/Dialog.d.ts +5 -0
  60. package/dist/components/dialog/Dialog.js.map +1 -1
  61. package/dist/components/drawer/Drawer.d.ts +10 -0
  62. package/dist/components/drawer/Drawer.js.map +1 -1
  63. package/dist/components/empty-state/EmptyState.d.ts +5 -0
  64. package/dist/components/empty-state/EmptyState.js.map +1 -1
  65. package/dist/components/file-upload/FileUpload.d.ts +21 -0
  66. package/dist/components/file-upload/FileUpload.js.map +1 -1
  67. package/dist/components/input/Input.d.ts +7 -0
  68. package/dist/components/input/Input.js +3 -0
  69. package/dist/components/input/Input.js.map +1 -1
  70. package/dist/components/link/Link.d.ts +1 -0
  71. package/dist/components/link/Link.js.map +1 -1
  72. package/dist/components/menu/Menu.d.ts +6 -0
  73. package/dist/components/menu/Menu.js.map +1 -1
  74. package/dist/components/number-field/NumberField.d.ts +7 -0
  75. package/dist/components/number-field/NumberField.js.map +1 -1
  76. package/dist/components/pagination/Pagination.d.ts +4 -0
  77. package/dist/components/pagination/Pagination.js.map +1 -1
  78. package/dist/components/popover/Popover.d.ts +4 -0
  79. package/dist/components/popover/Popover.js.map +1 -1
  80. package/dist/components/preview-card/PreviewCard.d.ts +4 -0
  81. package/dist/components/preview-card/PreviewCard.js.map +1 -1
  82. package/dist/components/progress/Progress.d.ts +8 -0
  83. package/dist/components/progress/Progress.js.map +1 -1
  84. package/dist/components/scroll-area/ScrollArea.d.ts +1 -0
  85. package/dist/components/scroll-area/ScrollArea.js.map +1 -1
  86. package/dist/components/search-input/SearchInput.d.ts +2 -0
  87. package/dist/components/search-input/SearchInput.js.map +1 -1
  88. package/dist/components/select/Select.d.ts +11 -0
  89. package/dist/components/select/Select.js.map +1 -1
  90. package/dist/components/separator/Separator.d.ts +1 -0
  91. package/dist/components/separator/Separator.js +1 -0
  92. package/dist/components/separator/Separator.js.map +1 -1
  93. package/dist/components/skeleton/Skeleton.d.ts +7 -0
  94. package/dist/components/skeleton/Skeleton.js +1 -0
  95. package/dist/components/skeleton/Skeleton.js.map +1 -1
  96. package/dist/components/slider/Slider.d.ts +1 -0
  97. package/dist/components/slider/Slider.js.map +1 -1
  98. package/dist/components/spinner/Spinner.d.ts +2 -0
  99. package/dist/components/spinner/Spinner.js +1 -0
  100. package/dist/components/spinner/Spinner.js.map +1 -1
  101. package/dist/components/stat-card/StatCard.d.ts +5 -1
  102. package/dist/components/stat-card/StatCard.js.map +1 -1
  103. package/dist/components/stepper/Stepper.d.ts +4 -0
  104. package/dist/components/stepper/Stepper.js.map +1 -1
  105. package/dist/components/table/Table.d.ts +23 -0
  106. package/dist/components/table/Table.js +17 -0
  107. package/dist/components/table/Table.js.map +1 -1
  108. package/dist/components/tabs/Tabs.d.ts +1 -0
  109. package/dist/components/tabs/Tabs.js.map +1 -1
  110. package/dist/components/tag/Tag.d.ts +3 -0
  111. package/dist/components/tag/Tag.js.map +1 -1
  112. package/dist/components/toast/Toast.d.ts +2 -0
  113. package/dist/components/toast/Toast.js.map +1 -1
  114. package/dist/components/toggle/Toggle.d.ts +7 -0
  115. package/dist/components/toggle/Toggle.js +1 -0
  116. package/dist/components/toggle/Toggle.js.map +1 -1
  117. package/dist/components/tooltip/Tooltip.d.ts +8 -0
  118. package/dist/components/tooltip/Tooltip.js.map +1 -1
  119. package/dist/components/typography/Typography.d.ts +5 -0
  120. package/dist/components/typography/Typography.js +2 -0
  121. package/dist/components/typography/Typography.js.map +1 -1
  122. package/dist/components.json +5375 -0
  123. package/dist/icons/index.d.ts +8 -0
  124. package/dist/icons/index.js +9 -1
  125. package/dist/icons/index.js.map +1 -1
  126. package/dist/index.d.ts +2 -0
  127. package/dist/index.js +4 -2
  128. package/dist/llms-full.txt +2590 -0
  129. package/dist/llms.txt +175 -0
  130. package/dist/opti-ui.css +494 -167
  131. package/dist/theme/ThemeProvider.d.ts +1 -0
  132. package/dist/theme/ThemeProvider.js.map +1 -1
  133. package/dist/utils/portal.d.ts +4 -0
  134. package/dist/utils/portal.js +4 -0
  135. package/dist/utils/portal.js.map +1 -1
  136. package/package.json +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","names":["React","cx","matchesQuery","Button","Checkbox","EmptyState","Pagination","PaginationLabels","SearchInput","Skeleton","Spinner","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","TableProps","DataTableColumn","id","header","ReactNode","accessor","row","T","cell","sortable","searchable","compare","a","b","align","numeric","width","DataTableSort","direction","DataTableLabels","search","clearSearch","selectAll","selectRow","label","count","selected","emptyTitle","emptyDescription","noMatchTitle","noMatchDescription","loading","errorTitle","retry","defaultLabels","Omit","DataTableToolbarContext","rows","selection","DataTableProps","Pick","data","columns","mode","total","error","onRetry","getRowId","index","defaultSearch","onSearchChange","filter","sort","defaultSort","onSortChange","paginated","page","onPageChange","pageSize","defaultPageSize","onPageSizeChange","pageSizeOptions","onSelectionChange","onRowClick","rowLabel","toolbar","context","empty","labels","Partial","className","tableProps","useControlled","value","initial","onChange","$","_c","inner","setInner","useState","t0","next","set","t1","undefined","t2","const","valueOf","column","Record","isEmpty","compareValues","Date","getTime","Number","String","localeCompare","sensitivity","INTERACTIVE","DataTable","searchProp","t3","sortProp","t4","t5","pageProp","pageSizeProp","t6","density","striped","stickyHeader","text","setSearch","setSort","setPage","setPageSize","server","selectable","Boolean","t7","Set","_temp","t8","idOf","t9","row_0","index_0","map","trim","searchColumns","_temp2","t10","row_1","column_1","join","find","candidate","sortColumn","t11","av","bv","length","pageCount","Math","max","ceil","currentPage","min","visible","slice","filtered","placeholders","t12","t13","has","selectedInView","allSelected","toggleAll","checked","ids","_temp3","kept","id_1","id_2","toggleSort","t14","changeSearch","extra","_temp4","t15","T0","t16","t17","checked_0","t18","t19","column_2","T1","t20","t21","_","index_1","column_3","position","Array","from","t22","row_3","id_3","isSelected","event","ctrlKey","metaKey","target","HTMLElement","closest","event_0","currentTarget","key","checked_1","item","column_4","isValidElement","t23","t24","t25","size","row_2","id_0","column_0","_c"],"sources":["../../../src/components/data-table/DataTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { matchesQuery } from '../../utils/search';\nimport { Button } from '../button/Button';\nimport { Checkbox } from '../choice/Choice';\nimport { EmptyState } from '../empty-state/EmptyState';\nimport { Pagination, type PaginationLabels } from '../pagination/Pagination';\nimport { SearchInput } from '../search-input/SearchInput';\nimport { Skeleton } from '../skeleton/Skeleton';\nimport { Spinner } from '../spinner/Spinner';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, type TableProps } from '../table/Table';\n\nexport interface DataTableColumn<T> {\n /** Unique key. Also the property read from the row when there is no `accessor`. */\n id: string;\n header: React.ReactNode;\n /** Value used for sorting, searching and the default cell. Defaults to `row[id]`. */\n accessor?: (row: T) => unknown;\n /** Custom cell content. */\n cell?: (row: T) => React.ReactNode;\n /** Defaults to `true`, or `false` for columns that only define `cell` (actions, icons). */\n sortable?: boolean;\n /** Include this column in the built-in search. Same default as `sortable`. */\n searchable?: boolean;\n /** Custom ascending comparison. */\n compare?: (a: T, b: T) => number;\n align?: 'start' | 'center' | 'end';\n /** Right-align with tabular figures. */\n numeric?: boolean;\n width?: number | string;\n}\n\nexport interface DataTableSort {\n id: string;\n direction: 'asc' | 'desc';\n}\n\nexport interface DataTableLabels extends PaginationLabels {\n search: string;\n clearSearch: string;\n selectAll: string;\n selectRow: (label: string) => string;\n count: (count: number) => React.ReactNode;\n selected: (count: number) => React.ReactNode;\n emptyTitle: React.ReactNode;\n emptyDescription: React.ReactNode;\n noMatchTitle: React.ReactNode;\n noMatchDescription: React.ReactNode;\n loading: string;\n errorTitle: React.ReactNode;\n retry: string;\n}\n\nconst defaultLabels: Omit<DataTableLabels, keyof PaginationLabels> = {\n search: 'Search…',\n clearSearch: 'Clear search',\n selectAll: 'Select all',\n selectRow: (label) => `Select ${label}`,\n count: (count) => `${count} ${count === 1 ? 'record' : 'records'}`,\n selected: (count) => `${count} selected`,\n emptyTitle: 'No records yet',\n emptyDescription: 'Records will appear here once added.',\n noMatchTitle: 'No matching records',\n noMatchDescription: 'Try a different search.',\n loading: 'Loading',\n errorTitle: 'Could not load records',\n retry: 'Try again',\n};\n\nexport interface DataTableToolbarContext<T> {\n /** Rows after search and sorting, across all pages. In server mode: the current page. */\n rows: T[];\n /** Ids of the selected rows. */\n selection: string[];\n}\n\nexport interface DataTableProps<T> extends Pick<TableProps, 'density' | 'striped' | 'stickyHeader'> {\n /** All rows, or in server mode the rows of the current page. */\n data: T[];\n columns: DataTableColumn<T>[];\n /**\n * `server` renders `data` as it is: search, sorting and pagination are left to\n * the API, driven by the `search` / `sort` / `page` / `pageSize` callbacks.\n */\n mode?: 'client' | 'server';\n /** Server mode: number of rows across all pages. */\n total?: number;\n /** Shows placeholder rows when there is no data yet, and dims the rows during a refetch. */\n loading?: boolean;\n /** Error message shown in place of the rows. */\n error?: React.ReactNode;\n /** Adds a retry button to the error message. */\n onRetry?: () => void;\n /** Stable id per row, needed for selection. Defaults to `row.id`, then the index. */\n getRowId?: (row: T, index: number) => string;\n\n /** Show the search box (default `true`). */\n searchable?: boolean;\n search?: string;\n defaultSearch?: string;\n onSearchChange?: (search: string) => void;\n /** Replaces the built-in search, which matches every term against the searchable columns. */\n filter?: (row: T, search: string) => boolean;\n\n sort?: DataTableSort | null;\n defaultSort?: DataTableSort | null;\n onSortChange?: (sort: DataTableSort | null) => void;\n\n /** Paginate rows (default `true`). */\n paginated?: boolean;\n page?: number;\n onPageChange?: (page: number) => void;\n pageSize?: number;\n defaultPageSize?: number;\n onPageSizeChange?: (pageSize: number) => void;\n pageSizeOptions?: number[];\n\n /**\n * Selected row ids. Passing `onSelectionChange` adds the checkbox column.\n * Select-all covers every filtered row, or in server mode the current page.\n */\n selection?: string[];\n onSelectionChange?: (selection: string[]) => void;\n\n /** Makes rows clickable and keyboard-activatable (Enter). */\n onRowClick?: (row: T) => void;\n /** Accessible name of a row, used by row selection and clickable rows. */\n rowLabel?: (row: T) => string;\n\n /** Extra toolbar content (filters, export…). A function receives the processed rows. */\n toolbar?: React.ReactNode | ((context: DataTableToolbarContext<T>) => React.ReactNode);\n /** Replaces the default empty state. */\n empty?: React.ReactNode;\n /** Override texts for localisation. */\n labels?: Partial<DataTableLabels>;\n className?: string;\n tableProps?: Omit<TableProps, 'children'>;\n}\n\nfunction useControlled<V>(value: V | undefined, initial: V, onChange?: (value: V) => void) {\n const [inner, setInner] = React.useState(initial);\n const set = (next: V) => {\n setInner(next);\n onChange?.(next);\n };\n return [value === undefined ? inner : value, set] as const;\n}\n\nfunction valueOf<T>(column: DataTableColumn<T>, row: T): unknown {\n return column.accessor ? column.accessor(row) : (row as Record<string, unknown>)[column.id];\n}\n\n// Empty values sort last in both directions.\nfunction isEmpty(value: unknown) {\n return value === null || value === undefined || value === '';\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n if (typeof a === 'number' && typeof b === 'number') return a - b;\n if (a instanceof Date && b instanceof Date) return a.getTime() - b.getTime();\n if (typeof a === 'boolean' && typeof b === 'boolean') return Number(a) - Number(b);\n return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: 'base' });\n}\n\nconst INTERACTIVE = 'a, button, input, select, textarea, label, [role=\"checkbox\"], [role=\"button\"]';\n\n/**\n * Table with built-in search, sorting, pagination and row selection. Every\n * piece of state works uncontrolled or controlled (`search` / `sort` / `page` /\n * `selection`), e.g. to persist it in the URL. With `mode=\"server\"` the same\n * state drives an API instead: pass the fetched page as `data`, plus `total`\n * and `loading`. For custom layouts compose `Table` and `Pagination`.\n */\nexport function DataTable<T>({\n data,\n columns,\n mode = 'client',\n total,\n loading,\n error,\n onRetry,\n getRowId,\n searchable = true,\n search: searchProp,\n defaultSearch = '',\n onSearchChange,\n filter,\n sort: sortProp,\n defaultSort = null,\n onSortChange,\n paginated = true,\n page: pageProp,\n onPageChange,\n pageSize: pageSizeProp,\n defaultPageSize = 10,\n onPageSizeChange,\n pageSizeOptions,\n selection,\n onSelectionChange,\n onRowClick,\n rowLabel,\n toolbar,\n empty,\n labels,\n density,\n striped,\n stickyHeader,\n className,\n tableProps,\n}: DataTableProps<T>) {\n const text = { ...defaultLabels, ...labels };\n const [search, setSearch] = useControlled(searchProp, defaultSearch, onSearchChange);\n const [sort, setSort] = useControlled(sortProp, defaultSort, onSortChange);\n const [page, setPage] = useControlled(pageProp, 1, onPageChange);\n const [pageSize, setPageSize] = useControlled(pageSizeProp, defaultPageSize, onPageSizeChange);\n const server = mode === 'server';\n const selectable = Boolean(onSelectionChange);\n const selected = new Set(selection);\n\n const sortable = (column: DataTableColumn<T>) => column.sortable ?? (column.accessor !== undefined || column.cell === undefined);\n\n const idOf = (row: T, index: number) => getRowId?.(row, index) ?? String((row as { id?: unknown }).id ?? index);\n let rows = data.map((row, index) => ({ row, id: idOf(row, index) }));\n\n if (!server && search.trim()) {\n const searchColumns = columns.filter(\n (column) => column.searchable ?? (column.accessor !== undefined || column.cell === undefined),\n );\n rows = rows.filter(({ row }) =>\n filter\n ? filter(row, search)\n : matchesQuery(searchColumns.map((column) => valueOf(column, row) ?? '').join(' '), search),\n );\n }\n\n const sortColumn = sort && columns.find((candidate) => candidate.id === sort.id);\n if (!server && sort && sortColumn) {\n const direction = sort.direction === 'asc' ? 1 : -1;\n rows = [...rows].sort((a, b) => {\n if (sortColumn.compare) return direction * sortColumn.compare(a.row, b.row);\n const [av, bv] = [valueOf(sortColumn, a.row), valueOf(sortColumn, b.row)];\n if (isEmpty(av) || isEmpty(bv)) return Number(isEmpty(av)) - Number(isEmpty(bv));\n return direction * compareValues(av, bv);\n });\n }\n\n const count = server ? (total ?? rows.length) : rows.length;\n const pageCount = Math.max(1, Math.ceil(count / pageSize));\n const currentPage = Math.min(Math.max(1, page), pageCount);\n const visible = paginated && !server ? rows.slice((currentPage - 1) * pageSize, currentPage * pageSize) : rows;\n const filtered = server ? Boolean(search.trim()) : data.length > 0;\n const placeholders = loading && !rows.length && !error ? Math.min(paginated ? pageSize : 5, 10) : 0;\n\n const selectedInView = rows.filter(({ id }) => selected.has(id)).length;\n const allSelected = rows.length > 0 && selectedInView === rows.length;\n\n const toggleAll = (checked: boolean) => {\n const ids = new Set(rows.map(({ id }) => id));\n const kept = (selection ?? []).filter((id) => !ids.has(id));\n onSelectionChange?.(checked ? [...kept, ...ids] : kept);\n };\n\n const toggleSort = (id: string) =>\n setSort(sort?.id !== id ? { id, direction: 'asc' } : sort.direction === 'asc' ? { id, direction: 'desc' } : null);\n\n const changeSearch = (next: string) => {\n setSearch(next);\n setPage(1);\n };\n\n const extra =\n typeof toolbar === 'function'\n ? toolbar({ rows: rows.map(({ row }) => row), selection: selection ?? [] })\n : toolbar;\n\n return (\n <div\n className={cx('oui-data-table', className)}\n data-loading={loading ? (rows.length ? 'refresh' : 'initial') : undefined}\n >\n <div className=\"oui-data-table__toolbar\">\n {searchable && (\n <SearchInput\n className=\"oui-data-table__search\"\n aria-label={text.search}\n placeholder={text.search}\n clearLabel={text.clearSearch}\n value={search}\n onValueChange={changeSearch}\n />\n )}\n <div className=\"oui-data-table__actions\">\n {loading && <Spinner className=\"oui-data-table__spinner\" label={text.loading} />}\n <span className=\"oui-data-table__summary\" aria-live=\"polite\">\n {/* No count before the first rows arrive: \"0 records\" would be wrong. */}\n {selectable && selected.size ? text.selected(selected.size) : placeholders ? null : text.count(count)}\n </span>\n {extra}\n </div>\n </div>\n\n <Table density={density} striped={striped} stickyHeader={stickyHeader} aria-busy={loading || undefined} {...tableProps}>\n <TableHeader>\n <TableRow>\n {selectable && (\n <TableHead className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={text.selectAll}\n checked={allSelected}\n indeterminate={selectedInView > 0 && !allSelected}\n disabled={!rows.length}\n onCheckedChange={(checked) => toggleAll(checked)}\n />\n </TableHead>\n )}\n {columns.map((column) => (\n <TableHead\n key={column.id}\n align={column.align ?? (column.numeric ? 'end' : 'start')}\n style={column.width !== undefined ? { width: column.width } : undefined}\n sort={sortable(column) ? (sort?.id === column.id ? sort.direction : false) : undefined}\n onSort={() => toggleSort(column.id)}\n >\n {column.header}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {Array.from({ length: placeholders }, (_, index) => (\n <TableRow key={index} aria-hidden>\n {selectable && <TableCell className=\"oui-data-table__check\" />}\n {columns.map((column, position) => (\n <TableCell key={column.id} align={column.align} numeric={column.numeric}>\n <Skeleton className=\"oui-data-table__skeleton\" width={`${45 + ((index * 3 + position * 5) % 7) * 8}%`} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n {!error && visible.map(({ row, id }) => {\n const isSelected = selected.has(id);\n return (\n <TableRow\n key={id}\n data-selected={isSelected || undefined}\n data-clickable={onRowClick ? '' : undefined}\n tabIndex={onRowClick ? 0 : undefined}\n aria-label={onRowClick ? rowLabel?.(row) : undefined}\n onClick={(event) => {\n if (!onRowClick || event.ctrlKey || event.metaKey) return;\n if ((event.target as HTMLElement).closest(INTERACTIVE)) return;\n onRowClick(row);\n }}\n onKeyDown={(event) => {\n if (onRowClick && event.target === event.currentTarget && event.key === 'Enter') onRowClick(row);\n }}\n >\n {selectable && (\n <TableCell className=\"oui-data-table__check\">\n <Checkbox\n size=\"sm\"\n aria-label={text.selectRow(rowLabel?.(row) ?? id)}\n checked={isSelected}\n onCheckedChange={(checked) =>\n onSelectionChange?.(\n checked ? [...(selection ?? []), id] : (selection ?? []).filter((item) => item !== id),\n )\n }\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const value = column.cell ? column.cell(row) : valueOf(column, row);\n return (\n <TableCell key={column.id} align={column.align} numeric={column.numeric}>\n {column.cell || React.isValidElement(value) ? (value as React.ReactNode) : isEmpty(value) ? '—' : String(value)}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n\n {error ? (\n <EmptyState\n role=\"alert\"\n title={text.errorTitle}\n description={error}\n actions={\n onRetry ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={onRetry}>\n {text.retry}\n </Button>\n ) : undefined\n }\n />\n ) : (\n !rows.length &&\n !loading &&\n (empty ?? (\n <EmptyState\n title={filtered ? text.noMatchTitle : text.emptyTitle}\n description={filtered ? text.noMatchDescription : text.emptyDescription}\n actions={\n search ? (\n <Button size=\"sm\" variant=\"secondary\" onClick={() => changeSearch('')}>\n {text.clearSearch}\n </Button>\n ) : undefined\n }\n />\n ))\n )}\n\n {paginated && count > 0 && !error && (\n <Pagination\n className=\"oui-data-table__pagination\"\n variant=\"simple\"\n page={currentPage}\n pageSize={pageSize}\n total={count}\n onPageChange={setPage}\n onPageSizeChange={(size) => {\n setPageSize(size);\n setPage(1);\n }}\n pageSizeOptions={pageSizeOptions}\n labels={labels}\n />\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","names":["React","cx","createPrimitive","Pagination","PaginationProps","SearchInput","SearchInputProps","Spinner","DataTableContext","useDataTableContext","DataTableContent","DataTableContentProps","DataTableFilter","DataTableFilters","DataTableControlSize","useDataTable","DataTableInstance","UseDataTableOptions","DataTableVirtualOptions","DataTableFilterProps","DataTableFiltersProps","DataTableRootProps","HTMLAttributes","HTMLDivElement","ref","Ref","table","T","DataTableRoot","t0","$","_c","className","props","t1","t2","loading","rows","length","undefined","t3","t4","DataTableToolbar","DataTableActions","DataTableSearchProps","Omit","DataTableSearch","search","searchDebounce","labels","text","draft","setDraft","useState","seen","setSeen","sent","setSent","next","setSearch","commit","timer","window","setTimeout","clearTimeout","useEffect","next_0","change","t5","t6","clearSearch","DataTableSummary","selection","Set","selected","size","count","pending","selectable","totalCount","filteredCount","DataTablePaginationProps","DataTablePagination","paginated","error","page","pageSize","setPage","setPageSize","DataTableToolbarContext","DataTableProps","pageSizeOptions","controlSize","toolbar","ReactNode","context","DataTableComponent","density","empty","layout","maxHeight","onEndReached","options","stickyHeader","striped","tableProps","virtualized","map","_temp","extra","searchable","Symbol","for","t7","t8","t9","t10","t11","row","DataTable","Object","assign","Root","Toolbar","Search","Filters","Filter","Actions","Summary","Content","_c","_Fragment"],"sources":["../../../src/components/data-table/DataTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cx } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { Pagination, type PaginationProps } from '../pagination/Pagination';\nimport { SearchInput, type SearchInputProps } from '../search-input/SearchInput';\nimport { Spinner } from '../spinner/Spinner';\nimport { DataTableContext, useDataTableContext } from './context';\nimport { DataTableContent, type DataTableContentProps } from './DataTableContent';\nimport { DataTableFilter, DataTableFilters, type DataTableControlSize } from './DataTableFilters';\nimport { useDataTable } from './useDataTable';\nimport type { DataTableInstance, UseDataTableOptions } from './types';\n\nexport { useDataTableContext } from './context';\nexport type { DataTableContentProps, DataTableVirtualOptions } from './DataTableContent';\nexport type { DataTableControlSize, DataTableFilterProps, DataTableFiltersProps } from './DataTableFilters';\n\n// ─── Parts ───────────────────────────────────────────────────────────────────\n\nexport interface DataTableRootProps<T> extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the table's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** The table from `useDataTable`. */\n table: DataTableInstance<T>;\n}\n\n/** Provides a table to the parts inside it. */\nfunction DataTableRoot<T>({ table, className, ref, ...props }: DataTableRootProps<T>) {\n return (\n <DataTableContext.Provider value={table}>\n <div\n ref={ref}\n className={cx('oui-data-table', className)}\n data-loading={table.loading ? (table.rows.length ? 'refresh' : 'initial') : undefined}\n {...props}\n />\n </DataTableContext.Provider>\n );\n}\n\nconst DataTableToolbar = createPrimitive('div', 'oui-data-table__toolbar', 'DataTableToolbar');\nconst DataTableActions = createPrimitive('div', 'oui-data-table__actions', 'DataTableActions');\n\nexport interface DataTableSearchProps extends Omit<SearchInputProps, 'value' | 'defaultValue' | 'onValueChange' | 'className'> {\n /** Class name for the search box. */\n className?: string;\n}\n\n/** Search box of the table. Typing applies after the table's `searchDebounce`; clearing applies at once. */\nfunction DataTableSearch({ className, ...props }: DataTableSearchProps) {\n const table = useDataTableContext();\n const { search, searchDebounce, labels: text } = table;\n const [draft, setDraft] = React.useState(search);\n const [seen, setSeen] = React.useState(search);\n const [sent, setSent] = React.useState(search);\n\n // Follow a search set from outside (reset, controlled state), but not the echo\n // of our own change: it can arrive after the user has typed further.\n if (seen !== search) {\n setSeen(search);\n if (search !== sent) {\n setSent(search);\n setDraft(search);\n }\n }\n\n const commit = (next: string) => {\n setSent(next);\n table.setSearch(next);\n };\n\n // Typed text that has not been applied yet goes out once the typing pauses.\n React.useEffect(() => {\n if (draft === sent) return;\n const timer = window.setTimeout(() => commit(draft), searchDebounce);\n return () => window.clearTimeout(timer);\n // `commit` is new on every render; only a change of the text restarts the wait.\n }, [draft, sent, searchDebounce]);\n\n const change = (next: string) => {\n setDraft(next);\n if (!searchDebounce || !next) commit(next);\n };\n\n return (\n <SearchInput\n className={cx('oui-data-table__search', className)}\n aria-label={text.search}\n placeholder={text.search}\n clearLabel={text.clearSearch}\n {...props}\n value={draft}\n onValueChange={change}\n />\n );\n}\n\n/** Row count, or the number of selected rows, with a spinner while loading. */\nfunction DataTableSummary({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n const table = useDataTableContext();\n const text = table.labels;\n const selected = new Set(table.selection).size;\n return (\n <>\n {table.loading && <Spinner className=\"oui-data-table__spinner\" label={text.loading} />}\n <span className={cx('oui-data-table__summary', className)} aria-live=\"polite\" {...props}>\n {/* No count before the first rows arrive: \"0 records\" would be wrong. */}\n {table.selectable && selected\n ? text.selected(selected)\n : table.pending\n ? null\n : table.count !== table.totalCount\n ? text.filteredCount(table.count, table.totalCount)\n : text.count(table.count)}\n </span>\n </>\n );\n}\n\nexport interface DataTablePaginationProps\n extends Omit<PaginationProps, 'page' | 'pageSize' | 'total' | 'onPageChange' | 'onPageSizeChange'> {}\n\n/** Page navigation of the table. Renders nothing when there are no rows, or the table is not paginated. */\nfunction DataTablePagination({ className, ...props }: DataTablePaginationProps) {\n const table = useDataTableContext();\n if (!table.paginated || table.count <= 0 || table.error) return null;\n return (\n <Pagination\n className={cx('oui-data-table__pagination', className)}\n variant=\"simple\"\n labels={table.labels}\n {...props}\n page={table.page}\n pageSize={table.pageSize}\n total={table.count}\n onPageChange={table.setPage}\n onPageSizeChange={table.setPageSize}\n />\n );\n}\n\n// ─── Convenience component ───────────────────────────────────────────────────\n\nexport interface DataTableToolbarContext<T> {\n /** Rows after filters, search and sorting, across all pages. In server mode: the current page. */\n rows: T[];\n /** Ids of the selected rows. */\n selection: string[];\n /** The whole table: filter values, sort, setters. */\n table: DataTableInstance<T>;\n}\n\nexport interface DataTableProps<T> extends UseDataTableOptions<T>, DataTableContentProps {\n /** Choices in the rows-per-page select. */\n pageSizeOptions?: number[];\n /** Size of the search box and the filters. */\n controlSize?: DataTableControlSize;\n /** Extra toolbar content (export, add…). A function receives the processed rows. */\n toolbar?: React.ReactNode | ((context: DataTableToolbarContext<T>) => React.ReactNode);\n /** Class name for the table's root element. */\n className?: string;\n}\n\nfunction DataTableComponent<T>({\n density,\n striped,\n stickyHeader,\n layout,\n maxHeight,\n virtualized,\n onEndReached,\n empty,\n tableProps,\n pageSizeOptions,\n controlSize,\n toolbar,\n className,\n ...options\n}: DataTableProps<T>) {\n // A virtualized table shows all its rows in one scrolling list, unless pages are asked for.\n const table = useDataTable({ ...options, paginated: options.paginated ?? !virtualized });\n const extra =\n typeof toolbar === 'function'\n ? toolbar({ rows: table.rows.map(({ row }) => row), selection: table.selection, table })\n : toolbar;\n\n return (\n <DataTableRoot table={table} className={className}>\n <DataTableToolbar>\n {table.searchable && <DataTableSearch size={controlSize} />}\n <DataTableFilters size={controlSize} />\n <DataTableActions>\n <DataTableSummary />\n {extra}\n </DataTableActions>\n </DataTableToolbar>\n <DataTableContent\n density={density}\n striped={striped}\n stickyHeader={stickyHeader}\n layout={layout}\n maxHeight={maxHeight}\n virtualized={virtualized}\n onEndReached={onEndReached}\n empty={empty}\n tableProps={tableProps}\n />\n <DataTablePagination pageSizeOptions={pageSizeOptions} />\n </DataTableRoot>\n );\n}\n\n/**\n * `<DataTable data={…} columns={…} />` renders a complete table with search,\n * filters, sorting, pagination, row selection, row actions and inline editing;\n * columns declare what they take part in. Every piece of state works\n * uncontrolled or controlled (`search` / `filterValues` / `sort` / `page` /\n * `selection`), and with `mode=\"server\"` the same state drives an API.\n *\n * For another layout, create the table with `useDataTable` and compose the\n * parts: `DataTable.Root`, `DataTable.Toolbar`, `DataTable.Search`,\n * `DataTable.Filters`, `DataTable.Filter`, `DataTable.Actions`,\n * `DataTable.Summary`, `DataTable.Content`, `DataTable.Pagination`.\n */\nexport const DataTable = Object.assign(DataTableComponent, {\n Root: DataTableRoot,\n Toolbar: DataTableToolbar,\n Search: DataTableSearch,\n Filters: DataTableFilters,\n Filter: DataTableFilter,\n Actions: DataTableActions,\n Summary: DataTableSummary,\n Content: DataTableContent,\n Pagination: DataTablePagination,\n});\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import { type TableProps } from '../table/Table';
3
+ export interface DataTableVirtualOptions {
4
+ /** Height of every row in pixels. Left out, the rows are measured. */
5
+ rowHeight?: number;
6
+ /** Rows rendered beyond each edge of the view (default 8). */
7
+ overscan?: number;
8
+ }
9
+ export interface DataTableContentProps extends Pick<TableProps, 'density' | 'striped' | 'stickyHeader'> {
10
+ /**
11
+ * `stable` (default) measures the columns once and holds their widths, keeps a
12
+ * short last page as tall as a full one, and keeps a row's height while it is
13
+ * edited: nothing moves while the table is used. `auto` leaves the layout to
14
+ * the browser, which fits the columns to the rows on screen.
15
+ */
16
+ layout?: 'stable' | 'auto';
17
+ /** Scrolls the rows inside this height and keeps the header in view. */
18
+ maxHeight?: number | string;
19
+ /**
20
+ * Renders only the rows in view, for thousands of rows without pagination.
21
+ * Rows are one line high: columns fit their longest value, so mark those with
22
+ * long text `truncate`. Scrolls inside `maxHeight` (default `32rem`).
23
+ */
24
+ virtualized?: boolean | DataTableVirtualOptions;
25
+ /**
26
+ * Called when the rows are scrolled near their end, once per row count: load
27
+ * and append the next rows. Needs `maxHeight` or `virtualized`.
28
+ */
29
+ onEndReached?: () => void;
30
+ /** Replaces the default empty state. */
31
+ empty?: React.ReactNode;
32
+ /** Props for the underlying `Table` (className, wrapperProps, aria-*). */
33
+ tableProps?: Omit<TableProps, 'children'>;
34
+ }
35
+ /** The table itself, with its loading, empty and error states. */
36
+ export declare function DataTableContent({ density, striped, stickyHeader, layout, maxHeight, virtualized, onEndReached, empty, tableProps, }: DataTableContentProps): React.JSX.Element;