@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
@@ -0,0 +1,335 @@
1
+ import type * as React from 'react';
2
+ import type { DateRange } from '../calendar/date-utils';
3
+ import type { DateRangePreset } from '../date-picker/DateRangePicker';
4
+ import type { InputProps } from '../input/Input';
5
+ import type { PaginationLabels } from '../pagination/Pagination';
6
+ export interface DataTableFilterOption {
7
+ value: string;
8
+ label: React.ReactNode;
9
+ }
10
+ interface FilterBase {
11
+ /** Key of this filter in `filterValues`. */
12
+ id: string;
13
+ /** Text on the control. */
14
+ label: string;
15
+ }
16
+ /** Dropdown that keeps the rows with one chosen value. */
17
+ export interface DataTableSelectFilter<T> extends FilterBase {
18
+ type: 'select';
19
+ /** Value compared with the chosen option; an array matches on any of its items. Defaults to `row[id]`. */
20
+ value?: (row: T) => unknown;
21
+ /** Options to offer. Left out, they are collected from the rows. */
22
+ options?: DataTableFilterOption[];
23
+ }
24
+ /** On/off chip that keeps the matching rows while it is on. */
25
+ export interface DataTableToggleFilter<T> extends FilterBase {
26
+ type: 'toggle';
27
+ /** Rows kept while the toggle is on. Defaults to rows where `row[id]` is truthy. */
28
+ match?: (row: T) => boolean;
29
+ }
30
+ /** Date range picker that keeps the rows dated inside the range, both days included. */
31
+ export interface DataTableDateRangeFilter<T> extends FilterBase {
32
+ type: 'dateRange';
33
+ /** Date of the row: an ISO string, a `Date` or a timestamp. Defaults to `row[id]`. */
34
+ value?: (row: T) => string | number | Date | null | undefined;
35
+ presets?: DateRangePreset[];
36
+ min?: string;
37
+ max?: string;
38
+ }
39
+ export type DataTableFilter<T> = DataTableSelectFilter<T> | DataTableToggleFilter<T> | DataTableDateRangeFilter<T>;
40
+ type ColumnFilterConfig<F> = F extends FilterBase ? Omit<F, 'id' | 'label'> & {
41
+ label?: string;
42
+ } : never;
43
+ /** A filter declared on a column: its type, or its definition without the `id` (the column's). */
44
+ export type DataTableColumnFilter<T> = DataTableFilter<T>['type'] | ColumnFilterConfig<DataTableFilter<T>>;
45
+ /** A select filter holds the option value, a toggle `true`, a date range `{ start, end }`. */
46
+ export type DataTableFilterValue = string | true | DateRange;
47
+ /** Values of the active filters by filter id. An inactive filter has no key. */
48
+ export type DataTableFilterValues = Record<string, DataTableFilterValue>;
49
+ /** A filter as the table uses it: column shorthand expanded, options collected. */
50
+ export interface DataTableResolvedFilter<T> {
51
+ id: string;
52
+ type: DataTableFilter<T>['type'];
53
+ label: string;
54
+ /** Select filters only; empty for the other types. */
55
+ options: DataTableFilterOption[];
56
+ presets?: DateRangePreset[];
57
+ min?: string;
58
+ max?: string;
59
+ /** Whether `row` passes the filter at `value`. */
60
+ test: (row: T, value: DataTableFilterValue) => boolean;
61
+ }
62
+ export interface DataTableEditorContext<T> {
63
+ row: T;
64
+ /** Current value of the edited field. */
65
+ value: unknown;
66
+ setValue: (value: unknown) => void;
67
+ /** True while the row is being saved. */
68
+ disabled: boolean;
69
+ }
70
+ export interface DataTableColumnEdit<T> {
71
+ /** Built-in editor (default `text`). */
72
+ type?: 'text' | 'checkbox' | 'select';
73
+ /** Row property the editor writes. Defaults to the column id. */
74
+ field?: Extract<keyof T, string>;
75
+ /** Options of a `select` editor. */
76
+ options?: DataTableFilterOption[];
77
+ /** Props for the `text` editor's input (`inputMode`, `placeholder`, `type`…). */
78
+ inputProps?: Omit<InputProps, 'value' | 'defaultValue' | 'onValueChange' | 'size'>;
79
+ /** Replaces the built-in editor. */
80
+ render?: (context: DataTableEditorContext<T>) => React.ReactNode;
81
+ }
82
+ export interface DataTableColumn<T> {
83
+ /** Unique key. Also the property read from the row when there is no `accessor`. */
84
+ id: string;
85
+ header: React.ReactNode;
86
+ /** Plain-text name, used for the column's filter when `header` is not a string. */
87
+ label?: string;
88
+ /** Value used for sorting, searching, filtering and the default cell. Defaults to `row[id]`. */
89
+ accessor?: (row: T) => unknown;
90
+ /** Custom cell content. */
91
+ cell?: (row: T) => React.ReactNode;
92
+ /** Defaults to `true`, or `false` for columns that only define `cell` (actions, icons). */
93
+ sortable?: boolean;
94
+ /** Include this column in the built-in search. Same default as `sortable`. */
95
+ searchable?: boolean;
96
+ /** `contains` (default) matches anywhere in the value; `exact` only whole words, for ids and codes. */
97
+ searchMode?: 'contains' | 'exact';
98
+ /** Custom ascending comparison. */
99
+ compare?: (a: T, b: T) => number;
100
+ /** Adds a filter on this column to the toolbar. */
101
+ filter?: DataTableColumnFilter<T>;
102
+ /** Makes the cell editable once `onRowSave` is set. */
103
+ edit?: NonNullable<DataTableColumnEdit<T>['type']> | DataTableColumnEdit<T>;
104
+ /** Leaves the column out of the grid; it still takes part in search, filters and sorting. */
105
+ hidden?: boolean;
106
+ align?: 'start' | 'center' | 'end';
107
+ /** Right-align with tabular figures. */
108
+ numeric?: boolean;
109
+ /** Monospace text, for ids, codes and timestamps. */
110
+ mono?: boolean;
111
+ /** Quieter text colour, for secondary values. */
112
+ muted?: boolean;
113
+ /** Cuts long text with an ellipsis instead of wrapping it. The column takes its `width`, not the text's. */
114
+ truncate?: boolean;
115
+ /** Preferred width. The table measures its columns once and then holds them, so this is a starting point. */
116
+ width?: number | string;
117
+ /** Floor for the measured width, for columns whose content gets longer on later pages. */
118
+ minWidth?: number | string;
119
+ /** Extra class on the column's body cells. */
120
+ cellClassName?: string | ((row: T) => string | undefined);
121
+ }
122
+ export interface DataTableSort {
123
+ id: string;
124
+ direction: 'asc' | 'desc';
125
+ }
126
+ export interface DataTableRowAction {
127
+ /** Tooltip and accessible name. */
128
+ label: string;
129
+ icon: React.ReactNode;
130
+ onClick: () => void;
131
+ disabled?: boolean;
132
+ /** Colours the button red on hover. */
133
+ danger?: boolean;
134
+ }
135
+ export type DataTableRowTone = 'accent' | 'info' | 'success' | 'warning' | 'danger';
136
+ export interface DataTableEntry<T> {
137
+ id: string;
138
+ row: T;
139
+ }
140
+ export interface DataTableLabels extends PaginationLabels {
141
+ search: string;
142
+ clearSearch: string;
143
+ selectAll: string;
144
+ selectRow: (label: string) => string;
145
+ count: (count: number) => React.ReactNode;
146
+ /** Summary while a search or filter narrows the rows. Defaults to `count` of the total, prefixed with the match count. */
147
+ filteredCount: (count: number, total: number) => React.ReactNode;
148
+ selected: (count: number) => React.ReactNode;
149
+ emptyTitle: React.ReactNode;
150
+ emptyDescription: React.ReactNode;
151
+ noMatchTitle: React.ReactNode;
152
+ noMatchDescription: React.ReactNode;
153
+ /** Shown instead of `noMatchDescription` when filters leave no rows. Defaults to it. */
154
+ noFilterMatchDescription: React.ReactNode;
155
+ loading: string;
156
+ errorTitle: React.ReactNode;
157
+ retry: string;
158
+ /** Accessible name of the filter group. */
159
+ filters: string;
160
+ /** The "no filter" option of a select filter. */
161
+ filterAll: string;
162
+ clearFilters: string;
163
+ /** Accessible name of the row actions column. */
164
+ actions: string;
165
+ edit: string;
166
+ save: string;
167
+ cancel: string;
168
+ delete: string;
169
+ }
170
+ /** Labels with the defaults filled in. Pagination texts stay partial: `Pagination` has its own defaults. */
171
+ export type DataTableResolvedLabels = Omit<DataTableLabels, keyof PaginationLabels> & Partial<PaginationLabels>;
172
+ export interface UseDataTableOptions<T> {
173
+ /** All rows, or in server mode the rows of the current page. */
174
+ data: T[];
175
+ /** Column definitions: id, header, cell renderer, sorting, filter and layout options. */
176
+ columns: DataTableColumn<T>[];
177
+ /**
178
+ * `server` renders `data` as it is: search, filtering, sorting and pagination are
179
+ * left to the API, driven by the `search` / `filterValues` / `sort` / `page` callbacks.
180
+ */
181
+ mode?: 'client' | 'server';
182
+ /** Server mode: number of rows across all pages. */
183
+ total?: number;
184
+ /** Shows placeholder rows when there is no data yet, and dims the rows during a refetch. */
185
+ loading?: boolean;
186
+ /** Error message shown in place of the rows. */
187
+ error?: React.ReactNode;
188
+ /** Adds a retry button to the error message. */
189
+ onRetry?: () => void;
190
+ /** Stable id per row, needed for selection and editing. Defaults to `row.id`, then the index. */
191
+ getRowId?: (row: T, index: number) => string;
192
+ /** Language whose alphabet orders sorted text and filter options (`"hu"`). Defaults to the browser's. */
193
+ locale?: string;
194
+ /** Show the search box (default `true`). */
195
+ searchable?: boolean;
196
+ /** Search text (controlled). */
197
+ search?: string;
198
+ /** Initial search text when uncontrolled. */
199
+ defaultSearch?: string;
200
+ /** Called when the search text changes (after `searchDebounce`). */
201
+ onSearchChange?: (search: string) => void;
202
+ /** Milliseconds of typing pause before the search applies. Defaults to 300 in server mode, 0 otherwise. */
203
+ searchDebounce?: number;
204
+ /** Replaces the built-in search, which matches every term against the searchable columns. */
205
+ filter?: (row: T, search: string) => boolean;
206
+ /** Toolbar filters that are not tied to a column. Columns add theirs with `filter`. */
207
+ filters?: DataTableFilter<T>[];
208
+ /** Filter values by filter id (controlled). */
209
+ filterValues?: DataTableFilterValues;
210
+ /** Initial filter values when uncontrolled. */
211
+ defaultFilterValues?: DataTableFilterValues;
212
+ /** Called with all filter values when one changes or they are cleared. */
213
+ onFilterValuesChange?: (values: DataTableFilterValues) => void;
214
+ /** Column sort (controlled); `null` for none. */
215
+ sort?: DataTableSort | null;
216
+ /** Initial sort when uncontrolled. */
217
+ defaultSort?: DataTableSort | null;
218
+ /** Called when the user sorts a column. */
219
+ onSortChange?: (sort: DataTableSort | null) => void;
220
+ /** Paginate rows (default `true`). */
221
+ paginated?: boolean;
222
+ /** Current page, starting at 1 (controlled). */
223
+ page?: number;
224
+ /** Called when the page changes. */
225
+ onPageChange?: (page: number) => void;
226
+ /** Rows per page (controlled). */
227
+ pageSize?: number;
228
+ /** Initial rows per page when uncontrolled. */
229
+ defaultPageSize?: number;
230
+ /** Called when the rows per page change. */
231
+ onPageSizeChange?: (pageSize: number) => void;
232
+ /**
233
+ * Selected row ids. Passing `onSelectionChange` adds the checkbox column.
234
+ * Select-all covers every filtered row, or in server mode the current page.
235
+ */
236
+ selection?: string[];
237
+ /** Called with the selected row ids. */
238
+ onSelectionChange?: (selection: string[]) => void;
239
+ /** Makes rows clickable and keyboard-activatable (Enter). */
240
+ onRowClick?: (row: T) => void;
241
+ /** Accessible name of a row, used by row selection and clickable rows. */
242
+ rowLabel?: (row: T) => string;
243
+ /** Trailing cell of each row: icon buttons, or any content (a menu, a link). */
244
+ rowActions?: (row: T) => DataTableRowAction[] | React.ReactNode;
245
+ /** Tints a row to flag its state. */
246
+ rowTone?: (row: T) => DataTableRowTone | null | undefined;
247
+ /** Extra props for a row's `<tr>` (`className`, `style`, `data-*`). */
248
+ rowProps?: (row: T) => React.HTMLAttributes<HTMLTableRowElement> & Record<`data-${string}`, unknown>;
249
+ /**
250
+ * Adds an edit action to each row; columns with `edit` turn into inputs. Called
251
+ * with the edited row. Return a promise to keep the row open while it saves; a
252
+ * rejected one leaves it open for another try.
253
+ */
254
+ onRowSave?: (row: T, original: T) => void | Promise<void>;
255
+ /** Adds a delete action, shown while a row is edited, or on every row without `onRowSave`. */
256
+ onRowDelete?: (row: T) => void;
257
+ /** Override texts for localisation. */
258
+ labels?: Partial<DataTableLabels>;
259
+ }
260
+ /** State and derived rows of a table, returned by `useDataTable` and read by the `DataTable` parts. */
261
+ export interface DataTableInstance<T> {
262
+ mode: 'client' | 'server';
263
+ /** Every column, hidden ones included. */
264
+ columns: DataTableColumn<T>[];
265
+ visibleColumns: DataTableColumn<T>[];
266
+ labels: DataTableResolvedLabels;
267
+ locale?: string;
268
+ /** Every row of `data`, before search and filters. */
269
+ allRows: DataTableEntry<T>[];
270
+ /** Rows after filters, search and sorting, across all pages. In server mode: the current page. */
271
+ rows: DataTableEntry<T>[];
272
+ /** Rows of the current page. */
273
+ pageRows: DataTableEntry<T>[];
274
+ /** Number of matching rows across all pages. */
275
+ count: number;
276
+ /** Number of rows before search and filters; in server mode the same as `count`. */
277
+ totalCount: number;
278
+ /** A search or filter is narrowing the rows. */
279
+ filtered: boolean;
280
+ /** Clears the search and every filter. */
281
+ reset: () => void;
282
+ loading: boolean;
283
+ /** Loading with no rows to show yet. */
284
+ pending: boolean;
285
+ error?: React.ReactNode;
286
+ onRetry?: () => void;
287
+ searchable: boolean;
288
+ search: string;
289
+ setSearch: (search: string) => void;
290
+ searchDebounce: number;
291
+ filters: DataTableResolvedFilter<T>[];
292
+ filterValues: DataTableFilterValues;
293
+ /** Sets one filter; `undefined` clears it. */
294
+ setFilterValue: (id: string, value: DataTableFilterValue | undefined) => void;
295
+ clearFilters: () => void;
296
+ activeFilterCount: number;
297
+ sort: DataTableSort | null;
298
+ setSort: (sort: DataTableSort | null) => void;
299
+ /** Cycles a column through ascending, descending and unsorted. */
300
+ toggleSort: (id: string) => void;
301
+ isSortable: (column: DataTableColumn<T>) => boolean;
302
+ paginated: boolean;
303
+ page: number;
304
+ pageCount: number;
305
+ pageSize: number;
306
+ setPage: (page: number) => void;
307
+ setPageSize: (pageSize: number) => void;
308
+ selectable: boolean;
309
+ /** Ids of the selected rows. */
310
+ selection: string[];
311
+ isSelected: (id: string) => boolean;
312
+ toggleRow: (id: string, selected: boolean) => void;
313
+ toggleAll: (selected: boolean) => void;
314
+ allSelected: boolean;
315
+ someSelected: boolean;
316
+ editable: boolean;
317
+ deletable: boolean;
318
+ /** Id of the row being edited. */
319
+ editingId: string | null;
320
+ /** True while `onRowSave` is pending. */
321
+ saving: boolean;
322
+ startEdit: (id: string) => void;
323
+ cancelEdit: () => void;
324
+ /** Value of a field of the row being edited, with its unsaved changes. */
325
+ editValue: (row: T, field: string) => unknown;
326
+ setEditValue: (field: string, value: unknown) => void;
327
+ saveEdit: () => void;
328
+ deleteRow: (row: T) => void;
329
+ onRowClick?: (row: T) => void;
330
+ rowLabel?: (row: T) => string;
331
+ rowActions?: (row: T) => DataTableRowAction[] | React.ReactNode;
332
+ rowTone?: (row: T) => DataTableRowTone | null | undefined;
333
+ rowProps?: (row: T) => React.HTMLAttributes<HTMLTableRowElement>;
334
+ }
335
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { DataTableColumn, DataTableInstance, UseDataTableOptions } from './types';
2
+ /** The value a column sorts, searches and filters by. */
3
+ export declare function getColumnValue<T>(column: DataTableColumn<T>, row: T): unknown;
4
+ /**
5
+ * State and row processing of a `DataTable`, without any markup. Pass the
6
+ * result to `DataTable.Root` to lay the parts out yourself, or read `rows`,
7
+ * `filterValues` and the rest to drive something else (an export, a chart).
8
+ */
9
+ export declare function useDataTable<T>({ data, columns, mode, total, loading, error, onRetry, getRowId, locale, searchable, search: searchProp, defaultSearch, onSearchChange, searchDebounce, filter, filters: filtersProp, filterValues: filterValuesProp, defaultFilterValues, onFilterValuesChange, sort: sortProp, defaultSort, onSortChange, paginated, page: pageProp, onPageChange, pageSize: pageSizeProp, defaultPageSize, onPageSizeChange, selection: selectionProp, onSelectionChange, onRowClick, rowLabel, rowActions, rowTone, rowProps, onRowSave, onRowDelete, labels, }: UseDataTableOptions<T>): DataTableInstance<T>;