@assure-one/design-system 1.47.1 → 1.48.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.
- package/codemods/lib/entry-map.mjs +4 -0
- package/dist/{brand-scope-DwLzUrSY.d.ts → brand-scope-ObBYNT0J.d.ts} +3 -63
- package/dist/{chunk-6CXI3KRG.js → chunk-FO2WSYUA.js} +796 -336
- package/dist/chunk-FO2WSYUA.js.map +1 -0
- package/dist/{chunk-IIBDSTOG.js → chunk-HV24JSRN.js} +215 -10
- package/dist/chunk-HV24JSRN.js.map +1 -0
- package/dist/{chunk-FIRPQWYR.js → chunk-YRFLK7ER.js} +1258 -270
- package/dist/chunk-YRFLK7ER.js.map +1 -0
- package/dist/css/components.css +1 -1
- package/dist/{data-table-view-D9a1_IRF.d.ts → data-table-view-CNTfzEyS.d.ts} +769 -16
- package/dist/{design-system-provider-C6Tu1vyg.d.ts → design-system-provider-YblRtwYw.d.ts} +1 -1
- package/dist/index.d.ts +914 -392
- package/dist/index.js +3227 -340
- package/dist/index.js.map +1 -1
- package/dist/legacy/index.d.ts +4 -3
- package/dist/legacy/index.js +2 -2
- package/dist/next/index.d.ts +2 -2
- package/dist/option-izy_4w4Z.d.ts +64 -0
- package/dist/styles.css +1 -1
- package/dist/suite/index.d.ts +38 -4
- package/dist/suite/index.js +2 -2
- package/dist/{types-BTHIs2nk.d.ts → types-CKpkEBvW.d.ts} +282 -1
- package/docs/components.md +19 -7
- package/docs/components.registry.json +152 -8
- package/package.json +2 -1
- package/dist/chunk-6CXI3KRG.js.map +0 -1
- package/dist/chunk-FIRPQWYR.js.map +0 -1
- package/dist/chunk-IIBDSTOG.js.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
|
-
import { ReactNode, CSSProperties } from 'react';
|
|
2
|
+
import { ReactNode, CSSProperties, RefObject } from 'react';
|
|
3
3
|
import { V as Variant, I as Intent, C as ControlSize, S as Shape } from './vocab-DornLJbW.js';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
6
|
-
import { S as SelectMessages, T as TableMessages } from './types-
|
|
6
|
+
import { S as SelectMessages, T as TableMessages } from './types-CKpkEBvW.js';
|
|
7
7
|
import { a as BrandTheme } from './brand-theme-ZYM867Jz.js';
|
|
8
|
+
import { O as Option } from './option-izy_4w4Z.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* `Code` parts, stamped as `data-slot="code[-<part>]"` (ADR-008). Inline, the
|
|
@@ -277,7 +278,7 @@ type ToastSlot = "region" | "root" | "icon" | "title" | "description" | "action"
|
|
|
277
278
|
*
|
|
278
279
|
* @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
|
|
279
280
|
*/
|
|
280
|
-
type TableSlot = "root" | "wrapper" | "header" | "body" | "footer" | "row" | "head" | "cell" | "caption" | "sort" | "sort-indicator" | "group-row" | "group-row-toggle" | "group-row-label" | "group-row-trailing";
|
|
281
|
+
type TableSlot = "root" | "wrapper" | "header" | "body" | "footer" | "row" | "head" | "cell" | "caption" | "sort" | "sort-indicator" | "group-row" | "group-row-toggle" | "group-row-label" | "group-row-trailing" | "sort-rank" | "resize-handle" | "head-menu" | "cell-secondary" | "spacer-row" | "group-row-count" | "group-row-subtotal";
|
|
281
282
|
/**
|
|
282
283
|
* `DataTable*` parts, stamped as `data-slot="data-table[-<part>]"` (ADR-008).
|
|
283
284
|
* These are `C-DT-PARTS`, the parallel copy of `Table*` that W6-03 folds back
|
|
@@ -303,7 +304,7 @@ type TableSlot = "root" | "wrapper" | "header" | "body" | "footer" | "row" | "he
|
|
|
303
304
|
*
|
|
304
305
|
* @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
|
|
305
306
|
*/
|
|
306
|
-
type DataTableSlot = "root" | "toolbar" | "spacer" | "results-count" | "header" | "body" | "row" | "head" | "head-button" | "head-indicator" | "cell" | "checkbox-cell" | "search" | "filters" | "columns-menu" | "content" | "bulk-actions" | "pagination";
|
|
307
|
+
type DataTableSlot = "root" | "toolbar" | "spacer" | "results-count" | "header" | "body" | "row" | "head" | "head-button" | "head-indicator" | "cell" | "checkbox-cell" | "search" | "filters" | "columns-menu" | "content" | "bulk-actions" | "pagination" | "head-menu" | "cell-secondary" | "load-more";
|
|
307
308
|
/**
|
|
308
309
|
* `Pagination` parts, stamped as `data-slot="pagination[-<part>]"` (ADR-008).
|
|
309
310
|
* `root` is the `<nav>`. The current page carries `data-selected` alongside
|
|
@@ -328,10 +329,11 @@ type ShellSlot = "root" | "main" | "content";
|
|
|
328
329
|
* `[&>div:first-child]` overrides because there is no name for
|
|
329
330
|
* `section-header`, `link-label` or `user` today.
|
|
330
331
|
*
|
|
331
|
-
* `group/sidebar`, `data-labels`, `data-state`, `data-
|
|
332
|
-
* `data-
|
|
333
|
-
*
|
|
334
|
-
*
|
|
332
|
+
* `group/sidebar`, `data-labels`, `data-state`, `data-collapsible` and
|
|
333
|
+
* `data-variant` on the root are **unchanged** — they are the frozen part of
|
|
334
|
+
* `C-DOM-06`, and no state attribute is re-stamped over them. (`data-peek` and
|
|
335
|
+
* `data-overlay` were only ever present mid-hover-peek; with peek removed they
|
|
336
|
+
* are never set.) W7-03 adds `data-collapsed` to the slots and the `SidebarSection`
|
|
335
337
|
* header slot; this change only names the parts.
|
|
336
338
|
*
|
|
337
339
|
* `group` is a `SidebarLinkGroup`: `group-link` is its activating row,
|
|
@@ -351,7 +353,7 @@ type SidebarSlot = "root" | "trigger" | "pin" | "brand" | "brand-text" | "sectio
|
|
|
351
353
|
*
|
|
352
354
|
* @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
|
|
353
355
|
*/
|
|
354
|
-
type SidebarBrandSwitcherSlot = "root" | "trigger" | "icon";
|
|
356
|
+
type SidebarBrandSwitcherSlot = "root" | "trigger" | "icon" | "mark";
|
|
355
357
|
/**
|
|
356
358
|
* `Text` parts, stamped as `data-slot="text"` (ADR-008). One part: the
|
|
357
359
|
* element that carries the role, and the element `className` lands on (with
|
|
@@ -478,6 +480,37 @@ type FieldsetSlot = "root" | "legend";
|
|
|
478
480
|
* @experimental Slot names are experimental until ADR-008 is accepted (W4-10).
|
|
479
481
|
*/
|
|
480
482
|
type ComboboxSlot = "root" | "control" | "value" | "chips" | "input" | "icon" | "clear" | "toggle" | "content" | "header" | "list" | "group" | "group-heading" | "item" | "item-indicator" | "create" | "empty" | "loading" | "footer";
|
|
483
|
+
/**
|
|
484
|
+
* `StatStrip` parts, stamped as `data-slot="stat-strip[-<part>]"` (ADR-008).
|
|
485
|
+
* `root` is the joined card (`role="group"`, `data-state="expanded" |
|
|
486
|
+
* "collapsed"`, `data-loading`), `content` the grid / inline row the toggle
|
|
487
|
+
* controls, `toggle` the wrapper of the collapse chevron. Each
|
|
488
|
+
* `StatStripItem` is an `item` (`data-pressed` and `data-disabled` when it is
|
|
489
|
+
* a filter toggle, `data-intent`, `data-glow` while it highlights a change)
|
|
490
|
+
* with its `label`, `value` and `caption`.
|
|
491
|
+
*
|
|
492
|
+
* @experimental Slot names are experimental until ADR-008 is accepted (W2-18).
|
|
493
|
+
*/
|
|
494
|
+
type StatStripSlot = "root" | "content" | "toggle" | "item" | "label" | "value" | "caption";
|
|
495
|
+
/**
|
|
496
|
+
* `FilterChips` parts, stamped as `data-slot="filter-chips[-<part>]"` (ADR-008):
|
|
497
|
+
* the row (`root`), one `chip` per active facet, the collapsed `overflow`
|
|
498
|
+
* ("+N") chip and its popover `overflow-panel` listing each `overflow-facet`
|
|
499
|
+
* and `overflow-value`, and the trailing `clear` ("Clear all") action.
|
|
500
|
+
*
|
|
501
|
+
* @experimental
|
|
502
|
+
*/
|
|
503
|
+
type FilterChipsSlot = "root" | "chip" | "overflow" | "overflow-panel" | "overflow-facet" | "overflow-value" | "clear";
|
|
504
|
+
/**
|
|
505
|
+
* `ListPage` parts, stamped as `data-slot="list-page[-<part>]"` (ADR-008): the
|
|
506
|
+
* full-height, non-scrolling `root`; the `stats`, `toolbar` and `bulk-bar`
|
|
507
|
+
* bands; the toolbar's `search`, `chips`, `count` and `actions` cells; the
|
|
508
|
+
* `table` card, its single `scroll` region and pinned `footer`; and the
|
|
509
|
+
* live `result-count`.
|
|
510
|
+
*
|
|
511
|
+
* @experimental
|
|
512
|
+
*/
|
|
513
|
+
type ListPageSlot = "root" | "stats" | "toolbar" | "search" | "chips" | "count" | "actions" | "table" | "scroll" | "footer" | "bulk-bar" | "result-count";
|
|
481
514
|
|
|
482
515
|
/** The emphasis subset a badge offers. @experimental */
|
|
483
516
|
type BadgeVariant = Extract<Variant, "solid" | "soft" | "outline">;
|
|
@@ -902,7 +935,23 @@ interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {
|
|
|
902
935
|
* @experimental
|
|
903
936
|
*/
|
|
904
937
|
messages?: Partial<TableMessages>;
|
|
938
|
+
/**
|
|
939
|
+
* Pin the identity column (PR 3): the first cell of every row sticks to the
|
|
940
|
+
* start edge while the wrapper scrolls horizontally. One attribute on the
|
|
941
|
+
* wrapper (`data-sticky-first`), read by a descendant selector — no prop on
|
|
942
|
+
* each cell. A cell's own `sticky` still works and wins.
|
|
943
|
+
*
|
|
944
|
+
* @experimental
|
|
945
|
+
*/
|
|
946
|
+
stickyFirstColumn?: boolean | undefined;
|
|
905
947
|
}
|
|
948
|
+
/**
|
|
949
|
+
* Whether the wrapper scrolls — its columns overflow it, or its rows do when
|
|
950
|
+
* it has a height (`stickyHeader`). Measured with a ResizeObserver (SSR renders
|
|
951
|
+
* "not overflowing"); the wrapper only becomes a focusable, labelled region
|
|
952
|
+
* when there is actually something to scroll — a table that fits gets no tab
|
|
953
|
+
* stop, and its DOM stays what it was (C-DOM-09).
|
|
954
|
+
*/
|
|
906
955
|
declare const Table: React$1.ForwardRefExoticComponent<TableProps & React$1.RefAttributes<HTMLTableElement>>;
|
|
907
956
|
type TableHeaderProps = React.HTMLAttributes<HTMLTableSectionElement>;
|
|
908
957
|
declare const TableHeader: React$1.ForwardRefExoticComponent<TableHeaderProps & React$1.RefAttributes<HTMLTableSectionElement>>;
|
|
@@ -964,8 +1013,58 @@ interface TableHeadProps extends Omit<React.ThHTMLAttributes<HTMLTableCellElemen
|
|
|
964
1013
|
* @experimental
|
|
965
1014
|
*/
|
|
966
1015
|
sort?: TableSortDirection | null | undefined;
|
|
967
|
-
/**
|
|
968
|
-
|
|
1016
|
+
/**
|
|
1017
|
+
* Receives the next step of the sort cycle when the header is activated.
|
|
1018
|
+
* The second argument (PR 3) says whether the activation was *additive* —
|
|
1019
|
+
* Shift-click or Shift+Enter — so a multi-sort table adds a secondary key
|
|
1020
|
+
* instead of replacing the primary. Single-argument handlers are unaffected.
|
|
1021
|
+
*/
|
|
1022
|
+
onSortChange?: ((sort: TableSortDirection | null, meta: TableSortChangeMeta) => void) | undefined;
|
|
1023
|
+
/**
|
|
1024
|
+
* The column's 1-based rank in a multi-key sort (PR 3). Rendered as a small
|
|
1025
|
+
* number beside the indicator when the table sorts by more than one key, and
|
|
1026
|
+
* spoken as "priority N". Omit for single-sort tables.
|
|
1027
|
+
*
|
|
1028
|
+
* @experimental
|
|
1029
|
+
*/
|
|
1030
|
+
sortIndex?: number | undefined;
|
|
1031
|
+
/**
|
|
1032
|
+
* The direction an unsorted column starts in (PR 3): `desc` for dates and
|
|
1033
|
+
* money, where the newest / largest is the useful first answer. Default `asc`.
|
|
1034
|
+
*
|
|
1035
|
+
* @experimental
|
|
1036
|
+
*/
|
|
1037
|
+
sortFirstDirection?: TableSortDirection | undefined;
|
|
1038
|
+
/**
|
|
1039
|
+
* A trailing slot inside the header cell, after the label — the
|
|
1040
|
+
* `TableHeadMenu` trigger (PR 3). A separate element from the sort button,
|
|
1041
|
+
* so opening the menu never sorts.
|
|
1042
|
+
*
|
|
1043
|
+
* @experimental
|
|
1044
|
+
*/
|
|
1045
|
+
menu?: React.ReactNode;
|
|
1046
|
+
/**
|
|
1047
|
+
* Renders a resize handle on the trailing edge (PR 3): pointer drag, or
|
|
1048
|
+
* ArrowLeft / ArrowRight (Shift for bigger steps) while it has focus. The
|
|
1049
|
+
* handle is its own element — dragging it never sorts. Pair with `width`
|
|
1050
|
+
* and `onWidthChange`.
|
|
1051
|
+
*
|
|
1052
|
+
* @experimental
|
|
1053
|
+
*/
|
|
1054
|
+
resizable?: boolean | undefined;
|
|
1055
|
+
/** Receives the new width in px while resizing. */
|
|
1056
|
+
onWidthChange?: ((width: number) => void) | undefined;
|
|
1057
|
+
/** Double-click or Enter on the resize handle: fit the column to its content. */
|
|
1058
|
+
onAutoSize?: (() => void) | undefined;
|
|
1059
|
+
/** Resize floor in px. Default `48`. */
|
|
1060
|
+
minWidth?: number | undefined;
|
|
1061
|
+
/** Resize ceiling in px. Default `800`. */
|
|
1062
|
+
maxWidth?: number | undefined;
|
|
1063
|
+
}
|
|
1064
|
+
/** What `TableHead`'s `onSortChange` learns besides the next direction. @experimental */
|
|
1065
|
+
interface TableSortChangeMeta {
|
|
1066
|
+
/** Shift was held: add or update a secondary sort key instead of replacing the sort. */
|
|
1067
|
+
additive: boolean;
|
|
969
1068
|
}
|
|
970
1069
|
declare const TableHead: React$1.ForwardRefExoticComponent<TableHeadProps & React$1.RefAttributes<HTMLTableCellElement>>;
|
|
971
1070
|
interface TableCellProps extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, "align">, TableCellCommonProps {
|
|
@@ -986,6 +1085,18 @@ interface TableCellProps extends Omit<React.TdHTMLAttributes<HTMLTableCellElemen
|
|
|
986
1085
|
overflowTooltip?: boolean;
|
|
987
1086
|
}
|
|
988
1087
|
declare const TableCell: React$1.ForwardRefExoticComponent<TableCellProps & React$1.RefAttributes<HTMLTableCellElement>>;
|
|
1088
|
+
type TableCellSecondaryProps = React.HTMLAttributes<HTMLSpanElement>;
|
|
1089
|
+
/**
|
|
1090
|
+
* TableCellSecondary — a quiet second line inside a cell (an email under a
|
|
1091
|
+
* name, an engagement under a client) that renders only in the comfortable
|
|
1092
|
+
* ("Detailed") density. Under a `data-ds-density="compact"` ancestor — the
|
|
1093
|
+
* `Table density` prop, or any density scope — it is hidden by a selector, so
|
|
1094
|
+
* switching density changes the *content* of a row, not just its padding,
|
|
1095
|
+
* with no prop on each cell.
|
|
1096
|
+
*
|
|
1097
|
+
* @experimental
|
|
1098
|
+
*/
|
|
1099
|
+
declare const TableCellSecondary: React$1.ForwardRefExoticComponent<TableCellSecondaryProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
989
1100
|
interface TableGroupRowProps extends Omit<React.HTMLAttributes<HTMLTableRowElement>, "children"> {
|
|
990
1101
|
/** How many columns the row's one cell spans — the table's column count. */
|
|
991
1102
|
colSpan: number;
|
|
@@ -1004,7 +1115,36 @@ interface TableGroupRowProps extends Omit<React.HTMLAttributes<HTMLTableRowEleme
|
|
|
1004
1115
|
open?: boolean;
|
|
1005
1116
|
onOpenChange?: (open: boolean) => void;
|
|
1006
1117
|
/** Copy for the collapse toggle; prop > provider > English default (W5-20). */
|
|
1007
|
-
messages?: Partial<Pick<TableMessages, "collapseSection" | "expandSection">>;
|
|
1118
|
+
messages?: Partial<Pick<TableMessages, "collapseSection" | "expandSection" | "groupLoadedOf">>;
|
|
1119
|
+
/**
|
|
1120
|
+
* Rows in the group (PR 3): shown after the label as "12". With
|
|
1121
|
+
* `totalCount` above it (infinite mode, only some rows loaded) it reads
|
|
1122
|
+
* "12 of 30 loaded". @experimental
|
|
1123
|
+
*/
|
|
1124
|
+
count?: number | undefined;
|
|
1125
|
+
/** Rows the group holds in all, when more exist than are loaded. @experimental */
|
|
1126
|
+
totalCount?: number | undefined;
|
|
1127
|
+
/** Locale for the count. @experimental */
|
|
1128
|
+
locale?: string | undefined;
|
|
1129
|
+
/**
|
|
1130
|
+
* Subtotal cells (PR 3), one entry per column (`colSpan` entries). The label
|
|
1131
|
+
* cell spans every column up to the first non-empty entry; each later entry
|
|
1132
|
+
* renders as its own cell, so a subtotal sits under its column. Mark money /
|
|
1133
|
+
* count entries `numeric` to right-align them like the column's cells.
|
|
1134
|
+
* @experimental
|
|
1135
|
+
*/
|
|
1136
|
+
subtotals?: readonly (TableGroupRowSubtotal | null | undefined)[] | undefined;
|
|
1137
|
+
/**
|
|
1138
|
+
* Stick under the sticky header while its rows scroll past (PR 3). Default:
|
|
1139
|
+
* follows the table's `stickyHeader`, as before. @experimental
|
|
1140
|
+
*/
|
|
1141
|
+
sticky?: boolean | undefined;
|
|
1142
|
+
}
|
|
1143
|
+
/** One subtotal cell of a {@link TableGroupRow}. @experimental */
|
|
1144
|
+
interface TableGroupRowSubtotal {
|
|
1145
|
+
value: React.ReactNode;
|
|
1146
|
+
/** Right-align with tabular figures, matching a `numeric` column. */
|
|
1147
|
+
numeric?: boolean | undefined;
|
|
1008
1148
|
}
|
|
1009
1149
|
/**
|
|
1010
1150
|
* TableGroupRow — a full-width section header row inside `TableBody` (W6-01
|
|
@@ -1021,6 +1161,446 @@ declare const TableGroupRow: React$1.ForwardRefExoticComponent<TableGroupRowProp
|
|
|
1021
1161
|
type TableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>;
|
|
1022
1162
|
declare const TableCaption: React$1.ForwardRefExoticComponent<TableCaptionProps & React$1.RefAttributes<HTMLTableCaptionElement>>;
|
|
1023
1163
|
|
|
1164
|
+
/**
|
|
1165
|
+
* `useDataTable<TRow>()` (W6-04/W6-05; target architecture §35.2) — the
|
|
1166
|
+
* headless controller behind every data table.
|
|
1167
|
+
*
|
|
1168
|
+
* No DOM, no styling: the hook owns the six state slices a table needs —
|
|
1169
|
+
* **sorting · pagination · search · selection · columnVisibility · filters** —
|
|
1170
|
+
* each independently controllable (`value` + `onValueChange`) or uncontrolled
|
|
1171
|
+
* with a default, plus the whole-state pair `state` / `onStateChange` for a
|
|
1172
|
+
* product hook that mirrors the table into the URL. It derives the rows to
|
|
1173
|
+
* render (filtered → searched → sorted → paged) from typed column definitions
|
|
1174
|
+
* and hands back stable ids for the ARIA wiring the rendering layer adds.
|
|
1175
|
+
*
|
|
1176
|
+
* Why it exists: today `DataTableView` keeps sort, search and page in private
|
|
1177
|
+
* state, so TAX seeds it once through `initialSort` and *listens to header
|
|
1178
|
+
* clicks by header text* to keep the URL in step (`use-queue-view.ts`), and
|
|
1179
|
+
* PRO hand-rolls the same three states per table. Every slice here is
|
|
1180
|
+
* observable and settable, so those bridges become `sorting` +
|
|
1181
|
+
* `onSortingChange`.
|
|
1182
|
+
*
|
|
1183
|
+
* `manual` (W6-05) turns the row model off for server-side tables: the hook
|
|
1184
|
+
* then never sorts, filters, searches or pages `data` itself — it only holds
|
|
1185
|
+
* and emits state, and `rowCount` sizes the pager.
|
|
1186
|
+
*
|
|
1187
|
+
* Every state slice is plain JSON (arrays and records, no `Set`/`Map`), so it
|
|
1188
|
+
* can be written to a URL or storage as it is. Persisting column visibility is
|
|
1189
|
+
* the consumer's `onColumnVisibilityChange`; the design system never touches
|
|
1190
|
+
* `localStorage`.
|
|
1191
|
+
*
|
|
1192
|
+
* @experimental
|
|
1193
|
+
*/
|
|
1194
|
+
/** Sort direction of one column; `null` on the sorting slice means unsorted. */
|
|
1195
|
+
type DataTableSortDirection = "asc" | "desc";
|
|
1196
|
+
/** What a column reads from a row: a property name or a function. */
|
|
1197
|
+
type DataTableAccessor<TRow> = keyof TRow | ((row: TRow) => unknown);
|
|
1198
|
+
/** A value the built-in comparator orders. `null`/`undefined` always sort last. */
|
|
1199
|
+
type DataTableSortValue = string | number | boolean | Date | null | undefined;
|
|
1200
|
+
/**
|
|
1201
|
+
* One column of a data table. `id` is the stable key the sorting and
|
|
1202
|
+
* column-visibility slices refer to and the ids for ARIA are derived from.
|
|
1203
|
+
*
|
|
1204
|
+
* @experimental
|
|
1205
|
+
*/
|
|
1206
|
+
interface DataTableColumn<TRow> {
|
|
1207
|
+
/** Stable identifier: the key in `sorting`, `columnVisibility` and derived DOM ids. */
|
|
1208
|
+
id: string;
|
|
1209
|
+
/** Header content. Any node — not string-only, so a consumer never has to find a column by its text. */
|
|
1210
|
+
header: ReactNode;
|
|
1211
|
+
/** How the cell value is read. Defaults to `row[id]` when `id` is a key of the row. */
|
|
1212
|
+
accessor?: DataTableAccessor<TRow>;
|
|
1213
|
+
/** Cell renderer. Defaults to the accessor value rendered as text by the rendering layer. */
|
|
1214
|
+
cell?: (row: TRow, context: {
|
|
1215
|
+
value: unknown;
|
|
1216
|
+
rowId: string;
|
|
1217
|
+
index: number;
|
|
1218
|
+
}) => ReactNode;
|
|
1219
|
+
/** Whether the header offers sorting. Default `false`. */
|
|
1220
|
+
sortable?: boolean | undefined;
|
|
1221
|
+
/** Custom sort key (e.g. a numeric age behind a "5h ago" label). Defaults to the accessor value. */
|
|
1222
|
+
sortValue?: ((row: TRow) => DataTableSortValue) | undefined;
|
|
1223
|
+
/**
|
|
1224
|
+
* Whether the client-side search reads this column. Default `true` for a
|
|
1225
|
+
* column with an accessor. `searchText` overrides what is read.
|
|
1226
|
+
*/
|
|
1227
|
+
searchable?: boolean;
|
|
1228
|
+
/** Text the client-side search matches for this column. Defaults to `String(value)`. */
|
|
1229
|
+
searchText?: (row: TRow) => string;
|
|
1230
|
+
/** Whether the columns menu may hide it. Default `true`. */
|
|
1231
|
+
hideable?: boolean;
|
|
1232
|
+
/** Layout hint for the rendering layer (W6-01 `TableCell align`). */
|
|
1233
|
+
align?: "start" | "center" | "end";
|
|
1234
|
+
/** Layout hint: right-aligned, tabular figures (W6-01 `TableCell numeric`). */
|
|
1235
|
+
numeric?: boolean;
|
|
1236
|
+
/** Layout hint: a CSS width for the column. */
|
|
1237
|
+
width?: string;
|
|
1238
|
+
/**
|
|
1239
|
+
* The direction a first click sorts in (PR 3). Default `"asc"`; dates and
|
|
1240
|
+
* money usually want `"desc"` (newest / largest first). The cycle is then
|
|
1241
|
+
* first → opposite → unsorted.
|
|
1242
|
+
*/
|
|
1243
|
+
sortFirstDirection?: DataTableSortDirection | undefined;
|
|
1244
|
+
/** Layout hint: stick the column to an edge while the table scrolls sideways (`TableCell sticky`). */
|
|
1245
|
+
sticky?: "start" | "end" | undefined;
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* One filter of a data table: which rows a value keeps, and the options the
|
|
1249
|
+
* rendering layer offers, in the shared {@link Option} model.
|
|
1250
|
+
*
|
|
1251
|
+
* @experimental
|
|
1252
|
+
*/
|
|
1253
|
+
interface DataTableFilterDefinition<TRow, TValue extends string = string> {
|
|
1254
|
+
id: string;
|
|
1255
|
+
label: string;
|
|
1256
|
+
options: readonly Option<TValue>[];
|
|
1257
|
+
/** `true` keeps the row for the given value. Receives one value at a time, also for a multi-value filter. */
|
|
1258
|
+
match: (row: TRow, value: TValue) => boolean;
|
|
1259
|
+
/** Whether several values may be active (a row matches when any matches). Default `false`. */
|
|
1260
|
+
multiple?: boolean;
|
|
1261
|
+
}
|
|
1262
|
+
/** Sorting slice: one column and a direction, or `null` for unsorted. */
|
|
1263
|
+
interface DataTableSortingState {
|
|
1264
|
+
columnId: string;
|
|
1265
|
+
direction: DataTableSortDirection;
|
|
1266
|
+
}
|
|
1267
|
+
/** Pagination slice. `page` is 1-based, like `Pagination` and `DataTableView`. */
|
|
1268
|
+
interface DataTablePaginationState {
|
|
1269
|
+
page: number;
|
|
1270
|
+
pageSize: number;
|
|
1271
|
+
}
|
|
1272
|
+
/** Filters slice: filter id → active value(s). A missing key, `null` or `[]` means "all". */
|
|
1273
|
+
type DataTableFilterValue = string | readonly string[] | null;
|
|
1274
|
+
type DataTableFiltersState = Readonly<Record<string, DataTableFilterValue>>;
|
|
1275
|
+
/** Column-visibility slice: column id → shown. A missing key means shown. */
|
|
1276
|
+
type DataTableColumnVisibilityState = Readonly<Record<string, boolean>>;
|
|
1277
|
+
/** Selection slice: the ids of the selected rows, in selection order. */
|
|
1278
|
+
type DataTableSelectionState = readonly string[];
|
|
1279
|
+
/**
|
|
1280
|
+
* Multi-sort slice (PR 3): the sort keys in priority order — index 0 is the
|
|
1281
|
+
* primary sort, the one the `sorting` slice mirrors. `[]` is unsorted.
|
|
1282
|
+
*/
|
|
1283
|
+
type DataTableMultiSortingState = readonly DataTableSortingState[];
|
|
1284
|
+
/** Column-order slice: column ids in display order. Ids not listed follow in `columns` order. */
|
|
1285
|
+
type DataTableColumnOrderState = readonly string[];
|
|
1286
|
+
/** Column-width slice: column id → width in px. A missing key keeps the column's own `width`. */
|
|
1287
|
+
type DataTableColumnWidthsState = Readonly<Record<string, number>>;
|
|
1288
|
+
/** Column-pinning slice: ids pinned to the start edge, in pin order (they render first). */
|
|
1289
|
+
interface DataTableColumnPinningState {
|
|
1290
|
+
start: readonly string[];
|
|
1291
|
+
}
|
|
1292
|
+
/**
|
|
1293
|
+
* The whole serialisable state of a table, e.g. for a URL or storage mirror.
|
|
1294
|
+
*
|
|
1295
|
+
* @experimental
|
|
1296
|
+
*/
|
|
1297
|
+
interface DataTableState {
|
|
1298
|
+
sorting: DataTableSortingState | null;
|
|
1299
|
+
pagination: DataTablePaginationState;
|
|
1300
|
+
search: string;
|
|
1301
|
+
selection: DataTableSelectionState;
|
|
1302
|
+
columnVisibility: DataTableColumnVisibilityState;
|
|
1303
|
+
filters: DataTableFiltersState;
|
|
1304
|
+
/**
|
|
1305
|
+
* Every sort key, primary first (PR 3). Always present on the state the hook
|
|
1306
|
+
* reports; optional so a state written before multi-sort still type-checks.
|
|
1307
|
+
*/
|
|
1308
|
+
multiSorting?: DataTableMultiSortingState;
|
|
1309
|
+
/** Column display order (PR 3). Always present on reported state. */
|
|
1310
|
+
columnOrder?: DataTableColumnOrderState;
|
|
1311
|
+
/** Column widths in px (PR 3). Always present on reported state. */
|
|
1312
|
+
columnWidths?: DataTableColumnWidthsState;
|
|
1313
|
+
/** Pinned columns (PR 3). Always present on reported state. */
|
|
1314
|
+
columnPinning?: DataTableColumnPinningState;
|
|
1315
|
+
}
|
|
1316
|
+
/**
|
|
1317
|
+
* Options of {@link useDataTable}. Every slice accepts a controlled value, a
|
|
1318
|
+
* default, and a change callback; the whole-state `state` / `defaultState` /
|
|
1319
|
+
* `onStateChange` triple works alongside (a granular prop wins over `state`).
|
|
1320
|
+
*
|
|
1321
|
+
* @experimental
|
|
1322
|
+
*/
|
|
1323
|
+
interface UseDataTableOptions<TRow> {
|
|
1324
|
+
/** The rows. In client mode the full set; in `manual` mode the current page as the server returned it. */
|
|
1325
|
+
data: readonly TRow[];
|
|
1326
|
+
columns: readonly DataTableColumn<TRow>[];
|
|
1327
|
+
/** Filter definitions (`filters` is the state). */
|
|
1328
|
+
filterDefinitions?: readonly DataTableFilterDefinition<TRow>[] | undefined;
|
|
1329
|
+
/**
|
|
1330
|
+
* Stable id of a row. Defaults to `row.id` when it is a string or number,
|
|
1331
|
+
* otherwise the row's index (fine for static data; pass one for anything
|
|
1332
|
+
* that reorders).
|
|
1333
|
+
*/
|
|
1334
|
+
getRowId?: ((row: TRow, index: number) => string) | undefined;
|
|
1335
|
+
/** Whether a row may be selected. Default: every row. */
|
|
1336
|
+
isRowSelectable?: ((row: TRow) => boolean) | undefined;
|
|
1337
|
+
/** Base id for the derived DOM ids (`getColumnId`, `getRowDomId`). Generated when omitted. */
|
|
1338
|
+
id?: string | undefined;
|
|
1339
|
+
/**
|
|
1340
|
+
* Server mode (W6-05): the hook never sorts, filters, searches or pages
|
|
1341
|
+
* `data` — it only holds and emits state. `rowCount` sizes the pager.
|
|
1342
|
+
* Default `false`.
|
|
1343
|
+
*/
|
|
1344
|
+
manual?: boolean | undefined;
|
|
1345
|
+
/** Total number of rows matching the current search and filters, in `manual` mode. Defaults to `data.length`. */
|
|
1346
|
+
rowCount?: number | undefined;
|
|
1347
|
+
/**
|
|
1348
|
+
* Called by `selection.selectAllMatching()` in `manual` mode, where only the
|
|
1349
|
+
* server knows every matching id: receives the current state so the
|
|
1350
|
+
* consumer can resolve the ids and set the selection.
|
|
1351
|
+
*/
|
|
1352
|
+
onSelectAllMatching?: ((state: DataTableState) => void) | undefined;
|
|
1353
|
+
/**
|
|
1354
|
+
* Whether changing the search or a filter returns to page 1. Default
|
|
1355
|
+
* `true` (today's `DataTableView`). Sorting never resets the page.
|
|
1356
|
+
*/
|
|
1357
|
+
resetPageOnChange?: boolean | undefined;
|
|
1358
|
+
sorting?: DataTableSortingState | null | undefined;
|
|
1359
|
+
defaultSorting?: DataTableSortingState | null | undefined;
|
|
1360
|
+
onSortingChange?: ((sorting: DataTableSortingState | null) => void) | undefined;
|
|
1361
|
+
/**
|
|
1362
|
+
* Allow several sort keys (PR 3): `sorting.toggle(id, { additive: true })`
|
|
1363
|
+
* (a Shift-click) adds or advances a secondary key. Default `false` — an
|
|
1364
|
+
* additive toggle then behaves like a plain one.
|
|
1365
|
+
*/
|
|
1366
|
+
multiSort?: boolean | undefined;
|
|
1367
|
+
/** Controlled sort keys, primary first. Wins over `sorting`. */
|
|
1368
|
+
multiSorting?: DataTableMultiSortingState | undefined;
|
|
1369
|
+
defaultMultiSorting?: DataTableMultiSortingState | undefined;
|
|
1370
|
+
onMultiSortingChange?: ((multiSorting: DataTableMultiSortingState) => void) | undefined;
|
|
1371
|
+
columnOrder?: DataTableColumnOrderState | undefined;
|
|
1372
|
+
defaultColumnOrder?: DataTableColumnOrderState | undefined;
|
|
1373
|
+
onColumnOrderChange?: ((columnOrder: DataTableColumnOrderState) => void) | undefined;
|
|
1374
|
+
columnWidths?: DataTableColumnWidthsState | undefined;
|
|
1375
|
+
defaultColumnWidths?: DataTableColumnWidthsState | undefined;
|
|
1376
|
+
onColumnWidthsChange?: ((columnWidths: DataTableColumnWidthsState) => void) | undefined;
|
|
1377
|
+
columnPinning?: DataTableColumnPinningState | undefined;
|
|
1378
|
+
defaultColumnPinning?: DataTableColumnPinningState | undefined;
|
|
1379
|
+
onColumnPinningChange?: ((columnPinning: DataTableColumnPinningState) => void) | undefined;
|
|
1380
|
+
pagination?: DataTablePaginationState | undefined;
|
|
1381
|
+
defaultPagination?: Partial<DataTablePaginationState> | undefined;
|
|
1382
|
+
onPaginationChange?: ((pagination: DataTablePaginationState) => void) | undefined;
|
|
1383
|
+
search?: string | undefined;
|
|
1384
|
+
defaultSearch?: string | undefined;
|
|
1385
|
+
onSearchChange?: ((search: string) => void) | undefined;
|
|
1386
|
+
selection?: DataTableSelectionState | undefined;
|
|
1387
|
+
defaultSelection?: DataTableSelectionState | undefined;
|
|
1388
|
+
onSelectionChange?: ((selection: DataTableSelectionState) => void) | undefined;
|
|
1389
|
+
columnVisibility?: DataTableColumnVisibilityState | undefined;
|
|
1390
|
+
defaultColumnVisibility?: DataTableColumnVisibilityState | undefined;
|
|
1391
|
+
/** The persistence hook for column visibility: write it wherever the product keeps preferences. */
|
|
1392
|
+
onColumnVisibilityChange?: ((columnVisibility: DataTableColumnVisibilityState) => void) | undefined;
|
|
1393
|
+
filters?: DataTableFiltersState | undefined;
|
|
1394
|
+
defaultFilters?: DataTableFiltersState | undefined;
|
|
1395
|
+
onFiltersChange?: ((filters: DataTableFiltersState) => void) | undefined;
|
|
1396
|
+
/** Whole-state control. A granular prop (`sorting`, `search`, …) wins over the matching key. */
|
|
1397
|
+
state?: Partial<DataTableState> | undefined;
|
|
1398
|
+
defaultState?: Partial<DataTableState> | undefined;
|
|
1399
|
+
/** Called with the complete next state after any slice changes. */
|
|
1400
|
+
onStateChange?: ((state: DataTableState) => void) | undefined;
|
|
1401
|
+
}
|
|
1402
|
+
/** One row of the derived row model. */
|
|
1403
|
+
interface DataTableRowModel<TRow> {
|
|
1404
|
+
id: string;
|
|
1405
|
+
row: TRow;
|
|
1406
|
+
/** Index within the rows to render (the current page). */
|
|
1407
|
+
index: number;
|
|
1408
|
+
selected: boolean;
|
|
1409
|
+
selectable: boolean;
|
|
1410
|
+
}
|
|
1411
|
+
/** `aria-sort` value of a sortable header. `undefined` for a non-sortable column. */
|
|
1412
|
+
type DataTableAriaSort = "ascending" | "descending" | "none" | undefined;
|
|
1413
|
+
/** Options of `sorting.toggle` (PR 3). */
|
|
1414
|
+
interface DataTableSortToggleOptions {
|
|
1415
|
+
/** Add or advance this column as a secondary key instead of replacing the sort (Shift-click). Needs `multiSort`. */
|
|
1416
|
+
additive?: boolean | undefined;
|
|
1417
|
+
}
|
|
1418
|
+
interface DataTableSortingApi {
|
|
1419
|
+
/** The primary sort key. */
|
|
1420
|
+
value: DataTableSortingState | null;
|
|
1421
|
+
/** Replaces the whole sort with one key (or none). */
|
|
1422
|
+
set: (sorting: DataTableSortingState | null) => void;
|
|
1423
|
+
/** Every sort key, primary first (PR 3). */
|
|
1424
|
+
multi: DataTableMultiSortingState;
|
|
1425
|
+
/** Replaces every sort key (PR 3). */
|
|
1426
|
+
setMulti: (multiSorting: DataTableMultiSortingState) => void;
|
|
1427
|
+
/** Direction of one column, `null` when it is not a sort key. */
|
|
1428
|
+
getDirection: (columnId: string) => DataTableSortDirection | null;
|
|
1429
|
+
/** 1-based priority of a sort key; `0` when the column is not sorted (PR 3). */
|
|
1430
|
+
getIndex: (columnId: string) => number;
|
|
1431
|
+
/**
|
|
1432
|
+
* Advances one column through its cycle: unsorted → first direction →
|
|
1433
|
+
* opposite → unsorted (first direction is the column's
|
|
1434
|
+
* `sortFirstDirection`, default `asc`). A plain toggle replaces the sort; an
|
|
1435
|
+
* `additive` one (with `multiSort`) adds, advances or drops a secondary key.
|
|
1436
|
+
*/
|
|
1437
|
+
toggle: (columnId: string, options?: DataTableSortToggleOptions) => void;
|
|
1438
|
+
/**
|
|
1439
|
+
* `aria-sort` for a header: `"ascending"`/`"descending"` on the primary key
|
|
1440
|
+
* only — ARIA expects one sorted header at a time — `"none"` for any other
|
|
1441
|
+
* sortable column, secondary keys included (their rank is in the header's
|
|
1442
|
+
* own text, see `TableHead sortIndex`).
|
|
1443
|
+
*/
|
|
1444
|
+
getAriaSort: (columnId: string) => DataTableAriaSort;
|
|
1445
|
+
}
|
|
1446
|
+
/** Column-order API (PR 3). */
|
|
1447
|
+
interface DataTableColumnOrderApi {
|
|
1448
|
+
/** Every column id in display order (resolved: unlisted ids appended). */
|
|
1449
|
+
value: DataTableColumnOrderState;
|
|
1450
|
+
set: (columnOrder: DataTableColumnOrderState) => void;
|
|
1451
|
+
/** Moves a column `delta` places among the rendered columns (`-1` left, `1` right). No-op at an edge or across the pinned boundary. */
|
|
1452
|
+
move: (columnId: string, delta: number) => void;
|
|
1453
|
+
/** Whether `move(columnId, delta)` would move it. */
|
|
1454
|
+
canMove: (columnId: string, delta: number) => boolean;
|
|
1455
|
+
/** Back to the `columns` order. */
|
|
1456
|
+
reset: () => void;
|
|
1457
|
+
}
|
|
1458
|
+
/** Column-width API (PR 3). */
|
|
1459
|
+
interface DataTableColumnWidthsApi {
|
|
1460
|
+
value: DataTableColumnWidthsState;
|
|
1461
|
+
/** Width in px set by the user, or `undefined` (the column's own `width`). */
|
|
1462
|
+
get: (columnId: string) => number | undefined;
|
|
1463
|
+
set: (columnId: string, width: number) => void;
|
|
1464
|
+
/** Clears one column's width (autosize), or every width without an argument. */
|
|
1465
|
+
reset: (columnId?: string) => void;
|
|
1466
|
+
}
|
|
1467
|
+
/** Column-pinning API (PR 3). */
|
|
1468
|
+
interface DataTableColumnPinningApi {
|
|
1469
|
+
value: DataTableColumnPinningState;
|
|
1470
|
+
isPinned: (columnId: string) => boolean;
|
|
1471
|
+
pin: (columnId: string) => void;
|
|
1472
|
+
unpin: (columnId: string) => void;
|
|
1473
|
+
set: (columnPinning: DataTableColumnPinningState) => void;
|
|
1474
|
+
reset: () => void;
|
|
1475
|
+
}
|
|
1476
|
+
interface DataTablePaginationApi extends DataTablePaginationState {
|
|
1477
|
+
pageCount: number;
|
|
1478
|
+
/** Total rows matching the search and filters (`rowCount` in manual mode). */
|
|
1479
|
+
rowCount: number;
|
|
1480
|
+
/** 1-based index of the first and last row on the page; both `0` when empty. */
|
|
1481
|
+
rangeStart: number;
|
|
1482
|
+
rangeEnd: number;
|
|
1483
|
+
canPreviousPage: boolean;
|
|
1484
|
+
canNextPage: boolean;
|
|
1485
|
+
set: (pagination: DataTablePaginationState) => void;
|
|
1486
|
+
setPage: (page: number) => void;
|
|
1487
|
+
/** Changes the page size and returns to page 1. */
|
|
1488
|
+
setPageSize: (pageSize: number) => void;
|
|
1489
|
+
nextPage: () => void;
|
|
1490
|
+
previousPage: () => void;
|
|
1491
|
+
}
|
|
1492
|
+
interface DataTableSearchApi {
|
|
1493
|
+
value: string;
|
|
1494
|
+
set: (search: string) => void;
|
|
1495
|
+
clear: () => void;
|
|
1496
|
+
}
|
|
1497
|
+
interface DataTableSelectionApi {
|
|
1498
|
+
value: DataTableSelectionState;
|
|
1499
|
+
count: number;
|
|
1500
|
+
isSelected: (rowId: string) => boolean;
|
|
1501
|
+
set: (selection: DataTableSelectionState) => void;
|
|
1502
|
+
select: (rowId: string) => void;
|
|
1503
|
+
deselect: (rowId: string) => void;
|
|
1504
|
+
toggle: (rowId: string) => void;
|
|
1505
|
+
clear: () => void;
|
|
1506
|
+
/** Every selectable row on the current page is selected (false when there is none). */
|
|
1507
|
+
allPageSelected: boolean;
|
|
1508
|
+
/** Some, but not all, selectable rows on the current page are selected (the header checkbox's indeterminate). */
|
|
1509
|
+
somePageSelected: boolean;
|
|
1510
|
+
/** Selects (or clears) the selectable rows on the current page, keeping selections made elsewhere. */
|
|
1511
|
+
selectPage: () => void;
|
|
1512
|
+
deselectPage: () => void;
|
|
1513
|
+
togglePage: () => void;
|
|
1514
|
+
/**
|
|
1515
|
+
* Selects every row matching the search and filters. In client mode the
|
|
1516
|
+
* hook knows them; in `manual` mode it calls `onSelectAllMatching(state)`.
|
|
1517
|
+
*/
|
|
1518
|
+
selectAllMatching: () => void;
|
|
1519
|
+
}
|
|
1520
|
+
interface DataTableColumnVisibilityApi {
|
|
1521
|
+
value: DataTableColumnVisibilityState;
|
|
1522
|
+
isVisible: (columnId: string) => boolean;
|
|
1523
|
+
set: (columnVisibility: DataTableColumnVisibilityState) => void;
|
|
1524
|
+
setVisible: (columnId: string, visible: boolean) => void;
|
|
1525
|
+
toggle: (columnId: string) => void;
|
|
1526
|
+
/** Shows every column again. */
|
|
1527
|
+
reset: () => void;
|
|
1528
|
+
}
|
|
1529
|
+
interface DataTableFiltersApi<TRow> {
|
|
1530
|
+
value: DataTableFiltersState;
|
|
1531
|
+
definitions: readonly DataTableFilterDefinition<TRow>[];
|
|
1532
|
+
/** Active value(s) of one filter; `null` when it is not narrowing. */
|
|
1533
|
+
get: (filterId: string) => DataTableFilterValue;
|
|
1534
|
+
set: (filterId: string, value: DataTableFilterValue) => void;
|
|
1535
|
+
clear: (filterId: string) => void;
|
|
1536
|
+
clearAll: () => void;
|
|
1537
|
+
/** Number of filters that are narrowing. */
|
|
1538
|
+
activeCount: number;
|
|
1539
|
+
}
|
|
1540
|
+
/**
|
|
1541
|
+
* What {@link useDataTable} returns.
|
|
1542
|
+
*
|
|
1543
|
+
* @experimental
|
|
1544
|
+
*/
|
|
1545
|
+
interface DataTableController<TRow> {
|
|
1546
|
+
/** Base id of the derived DOM ids. */
|
|
1547
|
+
id: string;
|
|
1548
|
+
manual: boolean;
|
|
1549
|
+
/** The whole serialisable state. */
|
|
1550
|
+
state: DataTableState;
|
|
1551
|
+
/** Every column, in order. */
|
|
1552
|
+
allColumns: readonly DataTableColumn<TRow>[];
|
|
1553
|
+
/** The columns to render: `allColumns` in `columnOrder`, pinned first, minus the hidden ones. */
|
|
1554
|
+
columns: readonly DataTableColumn<TRow>[];
|
|
1555
|
+
/** The rows to render: filtered → searched → sorted → paged (client mode), or `data` as given (manual mode). */
|
|
1556
|
+
rows: readonly DataTableRowModel<TRow>[];
|
|
1557
|
+
/**
|
|
1558
|
+
* Every row matching the search and filters, sorted, across all pages
|
|
1559
|
+
* (client mode) — the scope of `selection.selectAllMatching()`; `data` as
|
|
1560
|
+
* given in manual mode.
|
|
1561
|
+
*/
|
|
1562
|
+
matchingRows: readonly TRow[];
|
|
1563
|
+
/** Reads a cell through the column's accessor. */
|
|
1564
|
+
getCellValue: (row: TRow, column: DataTableColumn<TRow>) => unknown;
|
|
1565
|
+
/** Renders a cell: the column's `cell`, or the accessor value as text. */
|
|
1566
|
+
renderCell: (model: DataTableRowModel<TRow>, column: DataTableColumn<TRow>) => ReactNode;
|
|
1567
|
+
/** Stable DOM id for a column's header cell (`aria-describedby`, `headers`). */
|
|
1568
|
+
getColumnId: (columnId: string) => string;
|
|
1569
|
+
/** Stable DOM id for a row. */
|
|
1570
|
+
getRowDomId: (rowId: string) => string;
|
|
1571
|
+
sorting: DataTableSortingApi;
|
|
1572
|
+
pagination: DataTablePaginationApi;
|
|
1573
|
+
search: DataTableSearchApi;
|
|
1574
|
+
selection: DataTableSelectionApi;
|
|
1575
|
+
columnVisibility: DataTableColumnVisibilityApi;
|
|
1576
|
+
filters: DataTableFiltersApi<TRow>;
|
|
1577
|
+
/** Column order (PR 3). */
|
|
1578
|
+
columnOrder: DataTableColumnOrderApi;
|
|
1579
|
+
/** Column widths (PR 3). */
|
|
1580
|
+
columnWidths: DataTableColumnWidthsApi;
|
|
1581
|
+
/** Column pinning (PR 3). */
|
|
1582
|
+
columnPinning: DataTableColumnPinningApi;
|
|
1583
|
+
/** Resets order, widths, pinning and visibility in one change (a header menu's "Reset columns"). */
|
|
1584
|
+
resetColumns: () => void;
|
|
1585
|
+
}
|
|
1586
|
+
/**
|
|
1587
|
+
* The comparator `DataTableView` uses today: case-insensitive strings,
|
|
1588
|
+
* numbers and dates by value, `null`/`undefined` last in both directions.
|
|
1589
|
+
*/
|
|
1590
|
+
declare function compareSortValues(a: DataTableSortValue, b: DataTableSortValue, direction: DataTableSortDirection): number;
|
|
1591
|
+
/**
|
|
1592
|
+
* Advances through the header cycle: unsorted → `first` → opposite →
|
|
1593
|
+
* unsorted. `first` defaults to `asc` (today's cycle).
|
|
1594
|
+
*/
|
|
1595
|
+
declare function nextSortDirection(current: DataTableSortDirection | null, first?: DataTableSortDirection): DataTableSortDirection | null;
|
|
1596
|
+
/**
|
|
1597
|
+
* The headless data-table controller. See the module comment and
|
|
1598
|
+
* `docs/data-tables.md`.
|
|
1599
|
+
*
|
|
1600
|
+
* @experimental
|
|
1601
|
+
*/
|
|
1602
|
+
declare function useDataTable<TRow>(options: UseDataTableOptions<TRow>): DataTableController<TRow>;
|
|
1603
|
+
|
|
1024
1604
|
/**
|
|
1025
1605
|
* Practice service tones for the client portal. Each engagement surface
|
|
1026
1606
|
* (card, ring, timeline) is "toned per service": a fill color + a track
|
|
@@ -1045,6 +1625,10 @@ interface DataTableProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
1045
1625
|
/** When true, renders the table card with a flat top edge so it
|
|
1046
1626
|
* visually attaches to a `<DataTableToolbar>` above it. */
|
|
1047
1627
|
withToolbar?: boolean;
|
|
1628
|
+
/** Keep column headers visible inside the scrolling frame. @experimental */
|
|
1629
|
+
stickyHeader?: boolean | undefined;
|
|
1630
|
+
/** Accessible name for the frame when it overflows. Defaults to the table region message. @experimental */
|
|
1631
|
+
regionLabel?: string | undefined;
|
|
1048
1632
|
}
|
|
1049
1633
|
/**
|
|
1050
1634
|
* DataTable — outer wrapper. Children are typically:
|
|
@@ -1110,8 +1694,14 @@ interface DataTableHeaderProps extends Omit<TableHeadProps, "sort" | "onSortChan
|
|
|
1110
1694
|
/** Optional controlled sort state. When provided, `onSortChange` should
|
|
1111
1695
|
* also be wired up — the header becomes fully controlled. */
|
|
1112
1696
|
sort?: SortDirection | null;
|
|
1113
|
-
/** Fires whenever the user clicks a sortable header.
|
|
1114
|
-
|
|
1697
|
+
/** Fires whenever the user clicks a sortable header. The second argument
|
|
1698
|
+
* (PR 3) is `{ additive }` — Shift was held, so a multi-sort table adds a
|
|
1699
|
+
* secondary key. */
|
|
1700
|
+
onSortChange?: (sort: SortDirection | null, meta: TableSortChangeMeta) => void;
|
|
1701
|
+
/** 1-based rank in a multi-key sort (PR 3); shown beside the indicator. @experimental */
|
|
1702
|
+
sortIndex?: number | undefined;
|
|
1703
|
+
/** Direction an unsorted column starts in (PR 3). Default `asc`. @experimental */
|
|
1704
|
+
sortFirstDirection?: SortDirection | undefined;
|
|
1115
1705
|
}
|
|
1116
1706
|
/**
|
|
1117
1707
|
* DataTableHeader — `<th scope="col">`; alias of `TableHead` that keeps the
|
|
@@ -1174,6 +1764,104 @@ interface DataTableCheckboxProps extends Omit<DataTableCellProps, "onChange" | "
|
|
|
1174
1764
|
* column with no right padding to match `.row-checkbox` in the spec.
|
|
1175
1765
|
*/
|
|
1176
1766
|
declare const DataTableCheckbox: React$1.ForwardRefExoticComponent<DataTableCheckboxProps & React$1.RefAttributes<HTMLTableCellElement>>;
|
|
1767
|
+
/** DataTableCellSecondary — alias of `TableCellSecondary`: a second line shown only in comfortable density (PR 3). */
|
|
1768
|
+
type DataTableCellSecondaryProps = TableCellSecondaryProps;
|
|
1769
|
+
declare const DataTableCellSecondary: React$1.ForwardRefExoticComponent<TableCellSecondaryProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1770
|
+
|
|
1771
|
+
/** {@link useDataTableVirtualRows} options. @experimental */
|
|
1772
|
+
interface UseDataTableVirtualRowsOptions {
|
|
1773
|
+
/** Rows loaded so far. */
|
|
1774
|
+
count: number;
|
|
1775
|
+
/** The one scroll region (a `Table` wrapper or a `ListPageScroll`). */
|
|
1776
|
+
getScrollElement: () => HTMLElement | null;
|
|
1777
|
+
/** First-guess row height in px; real heights are measured. Default `44` (`--table-row-height`). */
|
|
1778
|
+
estimateSize?: ((index: number) => number) | undefined;
|
|
1779
|
+
/** Rows kept mounted beyond the viewport on each side. Default `15`. */
|
|
1780
|
+
overscan?: number | undefined;
|
|
1781
|
+
getItemKey?: ((index: number) => string | number) | undefined;
|
|
1782
|
+
}
|
|
1783
|
+
/** What {@link useDataTableVirtualRows} returns. @experimental */
|
|
1784
|
+
interface DataTableVirtualRows {
|
|
1785
|
+
/** The rows to render: `index` into your data, and `key`. */
|
|
1786
|
+
items: readonly {
|
|
1787
|
+
index: number;
|
|
1788
|
+
key: string | number;
|
|
1789
|
+
start: number;
|
|
1790
|
+
}[];
|
|
1791
|
+
/** Height of the spacer row before the first rendered row. */
|
|
1792
|
+
paddingTop: number;
|
|
1793
|
+
/** Height of the spacer row after the last rendered row. */
|
|
1794
|
+
paddingBottom: number;
|
|
1795
|
+
totalSize: number;
|
|
1796
|
+
/** Ref callback for each rendered `<tr>` (needs `data-index={item.index}`). */
|
|
1797
|
+
measureElement: (element: Element | null) => void;
|
|
1798
|
+
scrollToIndex: (index: number) => void;
|
|
1799
|
+
}
|
|
1800
|
+
/**
|
|
1801
|
+
* Windowed rows for a `<table>`: render `paddingTop` / `paddingBottom` as
|
|
1802
|
+
* `DataTableSpacerRow`s around `items`.
|
|
1803
|
+
*
|
|
1804
|
+
* @experimental
|
|
1805
|
+
*/
|
|
1806
|
+
declare function useDataTableVirtualRows({ count, getScrollElement, estimateSize, overscan, getItemKey, }: UseDataTableVirtualRowsOptions): DataTableVirtualRows;
|
|
1807
|
+
/** @experimental */
|
|
1808
|
+
interface DataTableSpacerRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
|
|
1809
|
+
/** Spacer height in px; renders nothing at 0. */
|
|
1810
|
+
height: number;
|
|
1811
|
+
/** The table's column count. */
|
|
1812
|
+
colSpan: number;
|
|
1813
|
+
}
|
|
1814
|
+
/**
|
|
1815
|
+
* DataTableSpacerRow — the empty, `aria-hidden` row that stands in for the
|
|
1816
|
+
* rows a virtualised table has not mounted.
|
|
1817
|
+
*
|
|
1818
|
+
* @experimental
|
|
1819
|
+
*/
|
|
1820
|
+
declare const DataTableSpacerRow: React$1.ForwardRefExoticComponent<DataTableSpacerRowProps & React$1.RefAttributes<HTMLTableRowElement>>;
|
|
1821
|
+
/** @experimental */
|
|
1822
|
+
interface DataTableLoadMoreProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children"> {
|
|
1823
|
+
/** More rows exist beyond what is loaded. */
|
|
1824
|
+
hasMore: boolean;
|
|
1825
|
+
/** A page is in flight — the sentinel and button do not fire again. */
|
|
1826
|
+
loading?: boolean | undefined;
|
|
1827
|
+
/** Failed page message. Pauses automatic loading; the visible retry button remains available. */
|
|
1828
|
+
error?: ReactNode;
|
|
1829
|
+
/** Fetch the next page (cursor, offset — the consumer's business). */
|
|
1830
|
+
onLoadMore: () => void;
|
|
1831
|
+
/** Rows loaded so far, for the end-of-list status. */
|
|
1832
|
+
loadedCount?: number | undefined;
|
|
1833
|
+
/** Total matching rows, when known: "240 of 1,240 loaded". */
|
|
1834
|
+
totalCount?: number | undefined;
|
|
1835
|
+
/** The scroll region the sentinel is observed in. Default: the viewport. */
|
|
1836
|
+
root?: RefObject<HTMLElement | null> | undefined;
|
|
1837
|
+
/** How far before the end to start loading. Default `400px`. */
|
|
1838
|
+
rootMargin?: string | undefined;
|
|
1839
|
+
locale?: string | undefined;
|
|
1840
|
+
}
|
|
1841
|
+
/**
|
|
1842
|
+
* DataTableLoadMore — the foot of an infinite list: a sentinel that loads
|
|
1843
|
+
* the next page as it scrolls into view, a visible "Load more" button for
|
|
1844
|
+
* keyboard and no-IntersectionObserver users, and a polite status ("All 1,240
|
|
1845
|
+
* loaded" / "240 of 1,240 loaded").
|
|
1846
|
+
*
|
|
1847
|
+
* @experimental
|
|
1848
|
+
*/
|
|
1849
|
+
declare const DataTableLoadMore: React$1.ForwardRefExoticComponent<DataTableLoadMoreProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1850
|
+
/** {@link useScrollRestoration} options. @experimental */
|
|
1851
|
+
interface UseScrollRestorationOptions {
|
|
1852
|
+
/** Restore only once this is true — e.g. once the restored rows are loaded. Default `true`. */
|
|
1853
|
+
ready?: boolean | undefined;
|
|
1854
|
+
/** Storage. Default `sessionStorage` (per tab, cleared with it). */
|
|
1855
|
+
storage?: Pick<Storage, "getItem" | "setItem"> | undefined;
|
|
1856
|
+
}
|
|
1857
|
+
/**
|
|
1858
|
+
* Saves a scroll region's `scrollTop` under `key` and restores it once on
|
|
1859
|
+
* mount (after `ready`), so "back" from a record returns to the same rows.
|
|
1860
|
+
* SSR-safe: storage is read only in an effect.
|
|
1861
|
+
*
|
|
1862
|
+
* @experimental
|
|
1863
|
+
*/
|
|
1864
|
+
declare function useScrollRestoration(key: string, ref: RefObject<HTMLElement | null>, options?: UseScrollRestorationOptions): void;
|
|
1177
1865
|
|
|
1178
1866
|
/**
|
|
1179
1867
|
* DataTableView — config-driven table on top of the composition
|
|
@@ -1209,6 +1897,16 @@ interface DataTableViewColumn<Row extends TableRowData> {
|
|
|
1209
1897
|
sortValue?: (row: Row) => string | number | null | undefined;
|
|
1210
1898
|
/** Custom cell renderer; defaults to the raw field value. */
|
|
1211
1899
|
render?: (row: Row) => ReactNode;
|
|
1900
|
+
/** Right-aligned tabular figures for money and counts (PR 3). @experimental */
|
|
1901
|
+
numeric?: boolean | undefined;
|
|
1902
|
+
/** A second, quieter line under the cell, shown only in the Detailed density (PR 3). @experimental */
|
|
1903
|
+
secondary?: ((row: Row) => ReactNode) | undefined;
|
|
1904
|
+
/** Direction an unsorted column starts in — `desc` for dates and money (PR 3). @experimental */
|
|
1905
|
+
sortFirstDirection?: SortDirection | undefined;
|
|
1906
|
+
/** `false` keeps the column out of the header menu's Hide (PR 3). Default `true`. @experimental */
|
|
1907
|
+
hideable?: boolean | undefined;
|
|
1908
|
+
/** A group's subtotal for this column, under it in each group header (PR 3). @experimental */
|
|
1909
|
+
subtotal?: ((rows: readonly Row[]) => ReactNode) | undefined;
|
|
1212
1910
|
}
|
|
1213
1911
|
interface DataTableViewFilter<Row extends TableRowData> {
|
|
1214
1912
|
key: string;
|
|
@@ -1297,8 +1995,63 @@ interface DataTableViewProps<Row extends TableRowData> {
|
|
|
1297
1995
|
/** Opt in to row selection. Omit it and the table renders exactly as before. */
|
|
1298
1996
|
selection?: DataTableViewSelection<Row>;
|
|
1299
1997
|
className?: string;
|
|
1998
|
+
/** Show all loaded rows and a lazy-load sentinel inside this scroll frame instead of numbered pagination. @experimental */
|
|
1999
|
+
loadMore?: Omit<DataTableLoadMoreProps, "root"> | undefined;
|
|
2000
|
+
/** Shift-click (Shift+Enter) a header to add a ranked secondary sort. @experimental */
|
|
2001
|
+
multiSort?: boolean | undefined;
|
|
2002
|
+
/** Controlled sort keys, primary first (with `multiSort`). @experimental */
|
|
2003
|
+
multiSorting?: DataTableMultiSortingState | undefined;
|
|
2004
|
+
onMultiSortingChange?: ((multiSorting: DataTableMultiSortingState) => void) | undefined;
|
|
2005
|
+
/** A per-column options menu (sort, move, hide, pin, autosize, reset) in each header. @experimental */
|
|
2006
|
+
columnMenu?: boolean | undefined;
|
|
2007
|
+
/** Pointer and keyboard column resize. @experimental */
|
|
2008
|
+
resizableColumns?: boolean | undefined;
|
|
2009
|
+
/** Column ids in display order. @experimental */
|
|
2010
|
+
columnOrder?: DataTableColumnOrderState | undefined;
|
|
2011
|
+
defaultColumnOrder?: DataTableColumnOrderState | undefined;
|
|
2012
|
+
onColumnOrderChange?: ((columnOrder: DataTableColumnOrderState) => void) | undefined;
|
|
2013
|
+
/** Column id → shown. @experimental */
|
|
2014
|
+
columnVisibility?: DataTableColumnVisibilityState | undefined;
|
|
2015
|
+
defaultColumnVisibility?: DataTableColumnVisibilityState | undefined;
|
|
2016
|
+
onColumnVisibilityChange?: ((columnVisibility: DataTableColumnVisibilityState) => void) | undefined;
|
|
2017
|
+
/** Column id → width in px (with `resizableColumns`). @experimental */
|
|
2018
|
+
columnWidths?: DataTableColumnWidthsState | undefined;
|
|
2019
|
+
defaultColumnWidths?: DataTableColumnWidthsState | undefined;
|
|
2020
|
+
onColumnWidthsChange?: ((columnWidths: DataTableColumnWidthsState) => void) | undefined;
|
|
2021
|
+
/** Columns pinned to the start edge. @experimental */
|
|
2022
|
+
columnPinning?: DataTableColumnPinningState | undefined;
|
|
2023
|
+
defaultColumnPinning?: DataTableColumnPinningState | undefined;
|
|
2024
|
+
onColumnPinningChange?: ((columnPinning: DataTableColumnPinningState) => void) | undefined;
|
|
2025
|
+
/**
|
|
2026
|
+
* Keep the first column in view while the table scrolls sideways. With
|
|
2027
|
+
* `selection` the first column is the checkbox column. @experimental
|
|
2028
|
+
*/
|
|
2029
|
+
stickyFirstColumn?: boolean | undefined;
|
|
2030
|
+
/** Keep column headers visible while this frame scrolls vertically. @experimental */
|
|
2031
|
+
stickyHeader?: boolean | undefined;
|
|
2032
|
+
/** Accessible name for the keyboard-scrollable region, present only when overflowing. @experimental */
|
|
2033
|
+
regionLabel?: string | undefined;
|
|
2034
|
+
/** Row density scope; `compact` hides each column's `secondary` line. @experimental */
|
|
2035
|
+
density?: ThemeDensity | undefined;
|
|
2036
|
+
/**
|
|
2037
|
+
* Group the current page's rows by this dimension (a `DisplayMenu` grouping
|
|
2038
|
+
* value); `null` / `"none"` is ungrouped. Groups render as collapsible
|
|
2039
|
+
* `TableGroupRow`s with a count and each column's `subtotal`. @experimental
|
|
2040
|
+
*/
|
|
2041
|
+
groupBy?: string | null | undefined;
|
|
2042
|
+
/** A row's group under `groupBy`. Default: the `groupBy` field as text. @experimental */
|
|
2043
|
+
getGroupKey?: ((row: Row, groupBy: string) => string) | undefined;
|
|
2044
|
+
/** A group header's label. Default: the group key. @experimental */
|
|
2045
|
+
renderGroupLabel?: ((groupKey: string, rows: readonly Row[]) => ReactNode) | undefined;
|
|
2046
|
+
/** Order of the groups. Default: first met. @experimental */
|
|
2047
|
+
compareGroups?: ((a: string, b: string) => number) | undefined;
|
|
2048
|
+
collapsedGroups?: readonly string[] | undefined;
|
|
2049
|
+
defaultCollapsedGroups?: readonly string[] | undefined;
|
|
2050
|
+
onCollapsedGroupsChange?: ((collapsed: readonly string[]) => void) | undefined;
|
|
2051
|
+
/** Remember collapsed groups per dimension under this key. @experimental */
|
|
2052
|
+
groupPersistKey?: string | undefined;
|
|
1300
2053
|
}
|
|
1301
|
-
declare function DataTableView<Row extends TableRowData>({ columns, data, filters, searchKeys, searchPlaceholder, initialSort, sorting: sortingProp, onSortingChange, page: pageProp, onPageChange, search: searchProp, onSearchChange, onRowClick, rowKey, pageSize, hideOnSinglePage, itemLabel, selection, className, }: DataTableViewProps<Row>): react_jsx_runtime.JSX.Element;
|
|
2054
|
+
declare function DataTableView<Row extends TableRowData>({ columns, data, filters, searchKeys, searchPlaceholder, initialSort, sorting: sortingProp, onSortingChange, page: pageProp, onPageChange, search: searchProp, onSearchChange, onRowClick, rowKey, pageSize, hideOnSinglePage, itemLabel, selection, className, loadMore, multiSort, multiSorting, onMultiSortingChange, columnMenu, resizableColumns, columnOrder, defaultColumnOrder, onColumnOrderChange, columnVisibility, defaultColumnVisibility, onColumnVisibilityChange, columnWidths, defaultColumnWidths, onColumnWidthsChange, columnPinning, defaultColumnPinning, onColumnPinningChange, stickyFirstColumn, stickyHeader, regionLabel, density, groupBy, getGroupKey, renderGroupLabel, compareGroups, collapsedGroups, defaultCollapsedGroups, onCollapsedGroupsChange, groupPersistKey, }: DataTableViewProps<Row>): react_jsx_runtime.JSX.Element;
|
|
1302
2055
|
/**
|
|
1303
2056
|
* EmptyValue — the em-dash placeholder for a cell with no value. Generic:
|
|
1304
2057
|
* no copy, no product tone.
|
|
@@ -1359,4 +2112,4 @@ declare function MoneyCell({ value }: {
|
|
|
1359
2112
|
value?: number | null;
|
|
1360
2113
|
}): react_jsx_runtime.JSX.Element;
|
|
1361
2114
|
|
|
1362
|
-
export {
|
|
2115
|
+
export { DataTableCheckbox as $, Assignee as A, type BadgeProps as B, type CardSlot as C, Dash as D, type CommandSlot as E, type FileKind as F, type ContextMenuSlot as G, DataTable as H, type InputSlot as I, type DataTableAccessor as J, type DataTableAriaSort as K, DataTableBody as L, MoneyCell as M, type NumberInputSlot as N, type DataTableBodyProps as O, type PhoneFieldSlot as P, DataTableCell as Q, DataTableCellDue as R, type SelectSize as S, TagsCell as T, type DataTableCellDueProps as U, DataTableCellId as V, DataTableCellMono as W, DataTableCellName as X, type DataTableCellProps as Y, DataTableCellSecondary as Z, type DataTableCellSecondaryProps as _, type ServiceTone as a, type KbdSlot as a$, type DataTableCheckboxProps as a0, type DataTableColumn as a1, type DataTableColumnOrderApi as a2, type DataTableColumnOrderState as a3, type DataTableColumnPinningApi as a4, type DataTableColumnPinningState as a5, type DataTableColumnVisibilityApi as a6, type DataTableColumnVisibilityState as a7, type DataTableColumnWidthsApi as a8, type DataTableColumnWidthsState as a9, type DataTableSortingApi as aA, type DataTableSortingState as aB, DataTableSpacer as aC, type DataTableSpacerProps as aD, DataTableSpacerRow as aE, type DataTableSpacerRowProps as aF, type DataTableState as aG, DataTableToolbar as aH, type DataTableToolbarProps as aI, DataTableView as aJ, type DataTableViewColumn as aK, type DataTableViewFilter as aL, type DataTableViewProps as aM, type DataTableViewSelection as aN, type DataTableViewSort as aO, type DataTableVirtualRows as aP, type DialogSlot as aQ, type DropdownMenuSlot as aR, EmptyValue as aS, type FieldSlot as aT, type FieldsetSlot as aU, FileChip as aV, type FileChipProps as aW, type FilterChipsSlot as aX, type HeadingSlot as aY, type IconButtonSlot as aZ, type InlineSlot as a_, type DataTableFilterDefinition as aa, type DataTableFilterValue as ab, type DataTableFiltersApi as ac, type DataTableFiltersState as ad, DataTableHead as ae, type DataTableHeadProps as af, DataTableHeader as ag, type DataTableHeaderProps as ah, DataTableLoadMore as ai, type DataTableLoadMoreProps as aj, type DataTableMultiSortingState as ak, type DataTablePaginationApi as al, type DataTablePaginationState as am, type DataTableProps as an, DataTableResultsCount as ao, type DataTableResultsCountProps as ap, DataTableRow as aq, type DataTableRowProps as ar, DataTableSearch as as, type DataTableSearchApi as at, type DataTableSearchProps as au, type DataTableSelectionApi as av, type DataTableSelectionState as aw, type DataTableSortDirection as ax, type DataTableSortToggleOptions as ay, type DataTableSortValue as az, StagePill as b, type TableStickyEdge as b$, type LabelSlot as b0, type LinkButtonSlot as b1, type ListPageSlot as b2, type PaginationSlot as b3, type PopoverSlot as b4, type PressableSlot as b5, type RadioGroupSlot as b6, SERVICE_TONES as b7, Select as b8, type SelectClassNames as b9, Table as bA, TableBody as bB, type TableBodyProps as bC, TableCaption as bD, type TableCaptionProps as bE, TableCell as bF, type TableCellAlign as bG, type TableCellCommonProps as bH, type TableCellProps as bI, TableCellSecondary as bJ, type TableCellSecondaryProps as bK, TableFooter as bL, type TableFooterProps as bM, TableGroupRow as bN, type TableGroupRowProps as bO, type TableGroupRowSubtotal as bP, TableHead as bQ, type TableHeadProps as bR, TableHeader as bS, type TableHeaderProps as bT, type TableHeaderStyle as bU, TableRow as bV, type TableRowData as bW, type TableRowProps as bX, type TableSlot as bY, type TableSortChangeMeta as bZ, type TableSortDirection as b_, SelectContent as ba, type SelectContentProps as bb, SelectGroup as bc, SelectItem as bd, SelectLabel as be, type SelectOption as bf, type SelectProps as bg, SelectRoot as bh, SelectScrollDownButton as bi, SelectScrollUpButton as bj, SelectSeparator as bk, type SelectSlot as bl, SelectTrigger as bm, type SelectTriggerProps as bn, SelectValue as bo, type SheetSlot as bp, type ShellSlot as bq, type SideDrawerSlot as br, type SidebarBrandSwitcherSlot as bs, type SidebarSlot as bt, type SortDirection as bu, type StackSlot as bv, type StatStripSlot as bw, type StatusBadgeSlot as bx, type SurfaceSlot as by, type SwitchSlot as bz, type AvatarSlot as c, type TableTone as c0, type TextSlot as c1, type ThemeBrand as c2, type ThemeDirection as c3, type ThemeScheme as c4, ThemeScope as c5, type ThemeScopeProps as c6, type ThemeScopeValue as c7, type ToastSlot as c8, type TooltipSlot as c9, type UseDataTableOptions as ca, type UseDataTableVirtualRowsOptions as cb, type UseScrollRestorationOptions as cc, badgeVariants as cd, compareSortValues as ce, nextSortDirection as cf, resolveBadgeAppearance as cg, serviceToneLabel as ch, serviceToneStyle as ci, useDataTable as cj, useDataTableVirtualRows as ck, useScrollRestoration as cl, type FileUploadSlot as d, type SearchInputSlot as e, type ThemeDensity as f, type TextareaSlot as g, type BadgeSize as h, type BadgeShape as i, type DataTableController as j, type DataTableSlot as k, type TableProps as l, type DataTableRowModel as m, type AlertDialogSlot as n, Badge as o, type BadgeAppearance as p, type BadgeAppearanceInput as q, type BadgeLegacyVariant as r, type BadgeSlot as s, type BadgeVariant as t, type BadgeVariantsProps as u, type ButtonSlot as v, type CheckboxSlot as w, type ChipSlot as x, type CodeSlot as y, type ComboboxSlot as z };
|