@techsio/ui-kit 0.37.1 → 0.39.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 (28) hide show
  1. package/dist/molecules/chart.js +393 -0
  2. package/dist/organisms/data-table.fields.js +720 -0
  3. package/dist/organisms/data-table.helpers.js +168 -0
  4. package/dist/organisms/data-table.js +1736 -0
  5. package/dist/organisms/table.js +7 -3
  6. package/dist/src/molecules/chart.d.ts +64 -0
  7. package/dist/src/molecules/chart.d.ts.map +1 -0
  8. package/dist/src/molecules/switch.d.ts +3 -3
  9. package/dist/src/molecules/toast.d.ts +3 -3
  10. package/dist/src/organisms/data-table.d.ts +357 -0
  11. package/dist/src/organisms/data-table.d.ts.map +1 -0
  12. package/dist/src/organisms/data-table.fields.d.ts +119 -0
  13. package/dist/src/organisms/data-table.fields.d.ts.map +1 -0
  14. package/dist/src/organisms/data-table.helpers.d.ts +240 -0
  15. package/dist/src/organisms/data-table.helpers.d.ts.map +1 -0
  16. package/dist/src/organisms/table.d.ts +15 -7
  17. package/dist/src/organisms/table.d.ts.map +1 -1
  18. package/dist/stories/changelog/changelog.stories.d.ts.map +1 -1
  19. package/dist/stories/molecules/chart.stories.d.ts +24 -0
  20. package/dist/stories/molecules/chart.stories.d.ts.map +1 -0
  21. package/dist/stories/organisms/data-table.stories.d.ts +145 -0
  22. package/dist/stories/organisms/data-table.stories.d.ts.map +1 -0
  23. package/dist/stories/organisms/table.stories.d.ts +7 -0
  24. package/dist/stories/organisms/table.stories.d.ts.map +1 -1
  25. package/package.json +14 -1
  26. package/src/tokens/components/components.css +2 -0
  27. package/src/tokens/components/molecules/_chart.css +98 -0
  28. package/src/tokens/components/organisms/_data-table.css +51 -0
@@ -27,10 +27,12 @@ const tableVariants = tv({
27
27
  ],
28
28
  columnHeader: [
29
29
  "text-start data-[numeric=true]:text-end",
30
+ "data-[align=center]:text-center data-[align=start]:text-start data-[align=end]:text-end",
30
31
  "font-table-header"
31
32
  ],
32
33
  cell: [
33
- "text-start data-[numeric=true]:text-end"
34
+ "text-start data-[numeric=true]:text-end",
35
+ "data-[align=center]:text-center data-[align=start]:text-start data-[align=end]:text-end"
34
36
  ]
35
37
  },
36
38
  variants: {
@@ -203,12 +205,13 @@ Table.Row = function({ children, ref, className, selected, ...props }) {
203
205
  children: children
204
206
  });
205
207
  };
206
- Table.ColumnHeader = function({ children, ref, className, numeric, ...props }) {
208
+ Table.ColumnHeader = function({ children, ref, className, numeric, align, ...props }) {
207
209
  const { styles } = useTableContext();
208
210
  return /*#__PURE__*/ jsx("th", {
209
211
  className: styles.columnHeader({
210
212
  className
211
213
  }),
214
+ "data-align": align,
212
215
  "data-numeric": numeric,
213
216
  ref: ref,
214
217
  scope: "col",
@@ -216,13 +219,14 @@ Table.ColumnHeader = function({ children, ref, className, numeric, ...props }) {
216
219
  children: children
217
220
  });
218
221
  };
219
- Table.Cell = function({ children, ref, className, numeric, ...props }) {
222
+ Table.Cell = function({ children, ref, className, numeric, align, ...props }) {
220
223
  const { styles, stickyFirstColumn } = useTableContext();
221
224
  return /*#__PURE__*/ jsx("td", {
222
225
  className: styles.cell({
223
226
  className,
224
227
  stickyFirstColumn
225
228
  }),
229
+ "data-align": align,
226
230
  "data-numeric": numeric,
227
231
  ref: ref,
228
232
  ...props,
@@ -0,0 +1,64 @@
1
+ export type { ChartPoint } from "@tanstack/charts";
2
+ /** The supported chart forms; each maps to one TanStack Charts mark family. */
3
+ export type ChartType = "line" | "area" | "bar" | "bar-horizontal" | "scatter" | "pie" | "donut";
4
+ /** A channel: either a field name on the datum or an accessor function. */
5
+ export type ChartAccessor<TDatum, TValue> = (keyof TDatum & string) | ((datum: TDatum) => TValue);
6
+ export type ChartProps<TDatum> = {
7
+ /** Which chart form to render. Defaults to "line". */
8
+ type?: ChartType;
9
+ /** Source rows. Each row flows through unchanged into tooltips and onSelect. */
10
+ data: readonly TDatum[];
11
+ /** Category / x-position channel. For pie and donut this is the slice label. */
12
+ x: ChartAccessor<TDatum, string | number | Date>;
13
+ /** Numeric value channel. For pie and donut this is the slice value. */
14
+ y: ChartAccessor<TDatum, number>;
15
+ /**
16
+ * Optional series identity. Splits the data into one colored series per
17
+ * distinct value, assigned the `--color-chart-series-*` tokens in fixed
18
+ * order. Without it the chart renders a single series in series-1.
19
+ */
20
+ series?: ChartAccessor<TDatum, string | number>;
21
+ /**
22
+ * Multi-series layout: stacked (true) or side-by-side/overlapping (false).
23
+ * Defaults to true for "area" and false for "bar"/"bar-horizontal".
24
+ */
25
+ stacked?: boolean;
26
+ /** Draw a dot on every data point of a line chart. */
27
+ points?: boolean;
28
+ /** Smooth line/area paths with a monotone curve instead of straight segments. */
29
+ smooth?: boolean;
30
+ /** Grid lines on the value axis. Defaults to true. */
31
+ grid?: boolean;
32
+ /**
33
+ * Show the categorical color legend. Defaults to true when `series` is set
34
+ * or the chart is a pie/donut, false otherwise.
35
+ */
36
+ legend?: boolean;
37
+ /** Optional title above the legend swatches. */
38
+ legendLabel?: string;
39
+ /** Axis label for the category/x channel. */
40
+ xLabel?: string;
41
+ /** Axis label for the value channel. */
42
+ yLabel?: string;
43
+ /** Formats value-axis tick labels (e.g. currency). */
44
+ formatValue?: (value: number) => string;
45
+ /** Fixed pixel height. When omitted, `aspectRatio` controls sizing. */
46
+ height?: number;
47
+ /** Width/height ratio used when `height` is omitted. Defaults to 16/9. */
48
+ aspectRatio?: number;
49
+ /** Deterministic first-frame width for SSR and hidden containers. */
50
+ initialWidth?: number;
51
+ /** Animate mark transitions. Defaults to true. */
52
+ animate?: boolean;
53
+ /** Show the built-in tooltip on hover/focus. Defaults to true. */
54
+ tooltip?: boolean;
55
+ /** Accessible chart name. Required. */
56
+ ariaLabel: string;
57
+ /** Longer accessible description. */
58
+ ariaDescription?: string;
59
+ className?: string;
60
+ /** Fires with the source row of the selected point, or null on deselect. */
61
+ onSelect?: (datum: TDatum | null) => void;
62
+ };
63
+ export declare function Chart<TDatum>({ type, data, x, y, series, stacked, points, smooth, grid, legend, legendLabel, xLabel, yLabel, formatValue, height, aspectRatio, initialWidth, animate, tooltip, ariaLabel, ariaDescription, className, onSelect, }: ChartProps<TDatum>): import("react/jsx-runtime").JSX.Element;
64
+ //# sourceMappingURL=chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../src/molecules/chart.tsx"],"names":[],"mappings":"AAyDA,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,+EAA+E;AAC/E,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,KAAK,GACL,gBAAgB,GAChB,SAAS,GACT,KAAK,GACL,OAAO,CAAA;AAEX,2EAA2E;AAC3E,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,IACpC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GACvB,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAA;AAE/B,MAAM,MAAM,UAAU,CAAC,MAAM,IAAI;IAC/B,sDAAsD;IACtD,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,gFAAgF;IAChF,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,gFAAgF;IAChF,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAA;IAChD,wEAAwE;IACxE,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IAC/C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CAC1C,CAAA;AA2gBD,wBAAgB,KAAK,CAAC,MAAM,EAAE,EAC5B,IAAa,EACb,IAAI,EACJ,CAAC,EACD,CAAC,EACD,MAAM,EACN,OAAO,EACP,MAAc,EACd,MAAc,EACd,IAAW,EACX,MAAM,EACN,WAAW,EACX,MAAM,EACN,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,EACX,YAAkB,EAClB,OAAc,EACd,OAAc,EACd,SAAS,EACT,eAAe,EACf,SAAS,EACT,QAAQ,GACT,EAAE,UAAU,CAAC,MAAM,CAAC,2CA2EpB"}
@@ -3,8 +3,8 @@ import type { VariantProps } from "tailwind-variants";
3
3
  declare const switchVariants: import("tailwind-variants").TVReturnType<{
4
4
  [key: string]: {
5
5
  [key: string]: import("tailwind-merge").ClassNameValue | {
6
- label?: import("tailwind-merge").ClassNameValue;
7
6
  root?: import("tailwind-merge").ClassNameValue;
7
+ label?: import("tailwind-merge").ClassNameValue;
8
8
  control?: import("tailwind-merge").ClassNameValue;
9
9
  hiddenInput?: import("tailwind-merge").ClassNameValue;
10
10
  thumb?: import("tailwind-merge").ClassNameValue;
@@ -13,8 +13,8 @@ declare const switchVariants: import("tailwind-variants").TVReturnType<{
13
13
  } | {
14
14
  [x: string]: {
15
15
  [x: string]: import("tailwind-merge").ClassNameValue | {
16
- label?: import("tailwind-merge").ClassNameValue;
17
16
  root?: import("tailwind-merge").ClassNameValue;
17
+ label?: import("tailwind-merge").ClassNameValue;
18
18
  control?: import("tailwind-merge").ClassNameValue;
19
19
  hiddenInput?: import("tailwind-merge").ClassNameValue;
20
20
  thumb?: import("tailwind-merge").ClassNameValue;
@@ -29,8 +29,8 @@ declare const switchVariants: import("tailwind-variants").TVReturnType<{
29
29
  }, undefined, {
30
30
  [key: string]: {
31
31
  [key: string]: import("tailwind-merge").ClassNameValue | {
32
- label?: import("tailwind-merge").ClassNameValue;
33
32
  root?: import("tailwind-merge").ClassNameValue;
33
+ label?: import("tailwind-merge").ClassNameValue;
34
34
  control?: import("tailwind-merge").ClassNameValue;
35
35
  hiddenInput?: import("tailwind-merge").ClassNameValue;
36
36
  thumb?: import("tailwind-merge").ClassNameValue;
@@ -7,9 +7,9 @@ declare const toastVariants: import("tailwind-variants").TVReturnType<{
7
7
  title?: import("tailwind-merge").ClassNameValue;
8
8
  icon?: import("tailwind-merge").ClassNameValue;
9
9
  group?: import("tailwind-merge").ClassNameValue;
10
+ root?: import("tailwind-merge").ClassNameValue;
10
11
  header?: import("tailwind-merge").ClassNameValue;
11
12
  description?: import("tailwind-merge").ClassNameValue;
12
- root?: import("tailwind-merge").ClassNameValue;
13
13
  closeButton?: import("tailwind-merge").ClassNameValue;
14
14
  };
15
15
  };
@@ -19,9 +19,9 @@ declare const toastVariants: import("tailwind-variants").TVReturnType<{
19
19
  title?: import("tailwind-merge").ClassNameValue;
20
20
  icon?: import("tailwind-merge").ClassNameValue;
21
21
  group?: import("tailwind-merge").ClassNameValue;
22
+ root?: import("tailwind-merge").ClassNameValue;
22
23
  header?: import("tailwind-merge").ClassNameValue;
23
24
  description?: import("tailwind-merge").ClassNameValue;
24
- root?: import("tailwind-merge").ClassNameValue;
25
25
  closeButton?: import("tailwind-merge").ClassNameValue;
26
26
  };
27
27
  };
@@ -39,9 +39,9 @@ declare const toastVariants: import("tailwind-variants").TVReturnType<{
39
39
  title?: import("tailwind-merge").ClassNameValue;
40
40
  icon?: import("tailwind-merge").ClassNameValue;
41
41
  group?: import("tailwind-merge").ClassNameValue;
42
+ root?: import("tailwind-merge").ClassNameValue;
42
43
  header?: import("tailwind-merge").ClassNameValue;
43
44
  description?: import("tailwind-merge").ClassNameValue;
44
- root?: import("tailwind-merge").ClassNameValue;
45
45
  closeButton?: import("tailwind-merge").ClassNameValue;
46
46
  };
47
47
  };
@@ -0,0 +1,357 @@
1
+ import { type ColumnFiltersState, type ColumnPinningState, type ColumnVisibilityState, type ExpandedState, type PaginationState, type RowData, type RowSelectionState, type SortingState } from "@tanstack/react-table";
2
+ import { type ReactNode, type Ref } from "react";
3
+ import { type ButtonProps } from "../atoms/button";
4
+ import { type IconType } from "../atoms/icon";
5
+ import { type PaginationProps } from "../molecules/pagination";
6
+ import { type DataTableColumnType, type DataTableEditorRenderer, type DataTableFilterRenderer } from "./data-table.fields";
7
+ import { type Column, type ColumnDef, type DataTableGetCellSpan, type Row, type TanstackTable } from "./data-table.helpers";
8
+ export type { DataTableColumnType, DataTableControlSize, DataTableEditorContext, DataTableEditorRenderer, DataTableFilterContext, DataTableFilterRenderer, DataTableOption, } from "./data-table.fields";
9
+ export type { Cell, CellContext, Column, ColumnDef, DataTableCellSpan, DataTableColumnWidth, DataTableConditionalFilterValue, DataTableFeatures, DataTableFilterOperator, DataTableGetCellSpan, DataTableInstance, Header, Row, TanstackTable, } from "./data-table.helpers";
10
+ export { conditionalFilterFn } from "./data-table.helpers";
11
+ /**
12
+ * A custom toolbar action, rendered as a `Button` at the table's `size`.
13
+ * Accepts the full Button API, so icon-only, themed and loading actions all
14
+ * work; `label` is a convenience alias for `children`.
15
+ */
16
+ export type DataTableToolbarAction = Omit<ButtonProps, "size"> & {
17
+ /**
18
+ * Stable React key; falls back to the array index. The fallback is fine for
19
+ * a fixed list, but a `toolbarActions` array that adds, removes or
20
+ * reorders entries based on state (e.g. permission changes) needs a real
21
+ * `id` — an index-keyed action can otherwise inherit a sibling's DOM node,
22
+ * along with its transient disabled/hover/focus state, across a re-render.
23
+ */
24
+ id?: string;
25
+ /** Button text. Omit for icon-only actions, but keep an `aria-label`. */
26
+ label?: ReactNode;
27
+ };
28
+ /**
29
+ * Recommended ceiling for `toolbarActions`. Exceeding it warns rather than
30
+ * throws — a fourth action still renders, it just crowds the toolbar and is
31
+ * usually a sign the extra actions belong in a menu.
32
+ */
33
+ export declare const DATA_TABLE_MAX_TOOLBAR_ACTIONS = 3;
34
+ /**
35
+ * Declarative row action. `hidden` and `disabled` are evaluated per row, so
36
+ * availability can follow the row's id, ownership or the current user's
37
+ * permissions.
38
+ */
39
+ export type DataTableRowAction<T extends RowData> = {
40
+ id: string;
41
+ label: string;
42
+ icon: IconType;
43
+ tone?: "neutral" | "danger";
44
+ /** Omit the action entirely for this row. */
45
+ hidden?: (row: Row<T>) => boolean;
46
+ /** Render the action but block it for this row. */
47
+ disabled?: (row: Row<T>) => boolean;
48
+ onAction: (row: Row<T>) => void;
49
+ };
50
+ /**
51
+ * Interactions that report through `onInteractionBlocked` while a row is being
52
+ * edited inline.
53
+ *
54
+ * This is exactly the set `blocked()` is called with. Sorting, selection and
55
+ * both reorder flavours are absent on purpose: sorting and selection controls
56
+ * are natively `disabled` during an edit and reorder simply stops being
57
+ * draggable, so in every one of those cases nothing reaches a handler and
58
+ * nothing could ever report. Making any of them reportable means making the
59
+ * control clickable-but-inert first.
60
+ */
61
+ export type DataTableBlockedAction = "globalFilter" | "paginate" | "columnVisibility" | "rowClick" | "expand";
62
+ export type DataTableTranslations = {
63
+ searchPlaceholder?: string;
64
+ /** Accessible name of the global search input. */
65
+ searchLabel?: string;
66
+ /** Accessible name of the search field's clear button. */
67
+ clearSearchLabel?: string;
68
+ /** Accessible name of the search submit button joined to the input. */
69
+ searchButtonLabel?: string;
70
+ columnsLabel?: string;
71
+ emptyTitle?: string;
72
+ emptyDescription?: string;
73
+ pageSizeLabel?: string;
74
+ actionsLabel?: string;
75
+ filtersLabel?: string;
76
+ selectAllLabel?: string;
77
+ loadingLabel?: string;
78
+ /** Override the filter condition labels, keyed by operator. */
79
+ operatorLabels?: Partial<Record<string, string>>;
80
+ editingLabel?: string;
81
+ rangeLabel?: (info: {
82
+ start: number;
83
+ end: number;
84
+ total: number;
85
+ }) => string;
86
+ /** Inline-edit validation error for a blank `meta.required` field. */
87
+ requiredLabel?: string;
88
+ };
89
+ export type DataTableProps<T extends RowData> = {
90
+ data: T[];
91
+ columns: ColumnDef<T, unknown>[];
92
+ getRowId?: (row: T, index: number) => string;
93
+ /** Stable id for the wrapper element; falls back to a generated one. */
94
+ id?: string;
95
+ className?: string;
96
+ ref?: Ref<HTMLDivElement>;
97
+ variant?: "line" | "outline" | "striped";
98
+ /**
99
+ * Zebra-stripe body rows. Independent of `variant`, so striping composes
100
+ * with `variant="outline"`. Equivalent to `variant="striped"` — DataTable
101
+ * routes both through this prop's own row-index-based coloring rather than
102
+ * `Table`'s `odd:`/`even:` implementation, which drifts under
103
+ * `enableVirtualization` (a row's DOM sibling position, not its logical
104
+ * index, changes as the windowed slice scrolls).
105
+ */
106
+ striped?: boolean;
107
+ /**
108
+ * Tint rows by nesting depth (`getSubRows` tree data or `renderExpandedRow`
109
+ * detail rows) — same idea as `striped`, but keyed on `row.depth` instead of
110
+ * row index, so a child row reads as "inside" its parent instead of just
111
+ * being the next row in a flat zebra pattern. Composes with `striped`: the
112
+ * depth tint and the odd/even stripe are different CSS properties and stack
113
+ * rather than fight for the same one.
114
+ */
115
+ tintNestedRows?: boolean;
116
+ size?: "sm" | "md" | "lg";
117
+ stickyHeader?: boolean;
118
+ interactive?: boolean;
119
+ showColumnBorder?: boolean;
120
+ caption?: ReactNode;
121
+ /** Hide the column header row(s) entirely (headerless / borderless layouts). */
122
+ hideHeader?: boolean;
123
+ /** Height of the scroll container; enables sticky header / infinite scroll. */
124
+ maxHeight?: string;
125
+ enableSorting?: boolean;
126
+ enableGlobalFilter?: boolean;
127
+ enableColumnFilters?: boolean;
128
+ enableRowSelection?: boolean;
129
+ /**
130
+ * `"multiple"` (default) lets any number of rows be selected; `"single"`
131
+ * replaces the selection so only one row is ever selected.
132
+ */
133
+ selectionMode?: "single" | "multiple";
134
+ /**
135
+ * Hard cap on how many rows can be selected at once. Once reached, unselected
136
+ * rows report `getCanSelect() === false` and their checkboxes disable, while
137
+ * already-selected rows stay deselectable.
138
+ */
139
+ maxSelectedRows?: number;
140
+ /**
141
+ * Per-row selectability predicate, for rules the mode/cap can't express
142
+ * (e.g. "only rows with status=active"). Composed with — not instead of —
143
+ * `selectionMode` and `maxSelectedRows`.
144
+ */
145
+ canSelectRow?: (row: Row<T>, context: {
146
+ selectedCount: number;
147
+ isSelected: boolean;
148
+ }) => boolean;
149
+ /** Fired when a selection change reaches `maxSelectedRows`. */
150
+ onSelectionLimitReached?: (details: {
151
+ limit: number;
152
+ selectedCount: number;
153
+ }) => void;
154
+ enableColumnVisibility?: boolean;
155
+ enableColumnPinning?: boolean;
156
+ enableColumnReorder?: boolean;
157
+ enableColumnResizing?: boolean;
158
+ /**
159
+ * CSS `table-layout`. Under the default `"auto"` a column's `meta.width` is
160
+ * only a hint and long content can still stretch the column; `"fixed"` makes
161
+ * declared widths exact and lets the remaining columns share what is left.
162
+ */
163
+ tableLayout?: "auto" | "fixed";
164
+ enableRowReorder?: boolean;
165
+ enableExpanding?: boolean;
166
+ enablePagination?: boolean;
167
+ enableVirtualization?: boolean;
168
+ getSubRows?: (row: T) => T[] | undefined;
169
+ /**
170
+ * Whether a row can expand. Defaults to "any row" when `renderExpandedRow` is
171
+ * given (master-detail), otherwise to "only rows that have sub-rows".
172
+ */
173
+ getRowCanExpand?: (row: Row<T>) => boolean;
174
+ getCellSpan?: DataTableGetCellSpan<T>;
175
+ sorting?: SortingState;
176
+ onSortingChange?: (state: SortingState) => void;
177
+ columnFilters?: ColumnFiltersState;
178
+ onColumnFiltersChange?: (state: ColumnFiltersState) => void;
179
+ globalFilter?: string;
180
+ onGlobalFilterChange?: (value: string) => void;
181
+ rowSelection?: RowSelectionState;
182
+ onRowSelectionChange?: (state: RowSelectionState) => void;
183
+ columnVisibility?: ColumnVisibilityState;
184
+ onColumnVisibilityChange?: (state: ColumnVisibilityState) => void;
185
+ columnOrder?: string[];
186
+ onColumnOrderChange?: (order: string[]) => void;
187
+ columnPinning?: ColumnPinningState;
188
+ onColumnPinningChange?: (state: ColumnPinningState) => void;
189
+ expanded?: ExpandedState;
190
+ onExpandedChange?: (state: ExpandedState) => void;
191
+ pagination?: PaginationState;
192
+ onPaginationChange?: (state: PaginationState) => void;
193
+ pageSizeOptions?: number[];
194
+ manualSorting?: boolean;
195
+ manualFiltering?: boolean;
196
+ manualPagination?: boolean;
197
+ rowCount?: number;
198
+ pageCount?: number;
199
+ onRowClick?: (row: Row<T>, event: React.MouseEvent<HTMLTableRowElement>) => void;
200
+ onReachEnd?: () => void;
201
+ onColumnReorder?: (details: {
202
+ from: number;
203
+ to: number;
204
+ columnId: string;
205
+ order: string[];
206
+ }) => void;
207
+ onRowReorder?: (details: {
208
+ from: number;
209
+ to: number;
210
+ rowId: string;
211
+ data: T[];
212
+ }) => void;
213
+ onCellEditCommit?: (details: {
214
+ rowId: string;
215
+ columnId: string;
216
+ value: unknown;
217
+ row: T;
218
+ }) => void;
219
+ /**
220
+ * Called once on mount with the table instance, for imperative access
221
+ * (`table.setPageIndex(…)`, `table.getSelectedRowModel()`, …).
222
+ *
223
+ * Methods stay live — they close over the core instance — but read
224
+ * `table.state` / `table.options` off this object with care: `useTable`
225
+ * returns a spread copy rather than the live instance, so the two fields
226
+ * captured here are a mount-time snapshot and never update. For live
227
+ * state use `renderToolbar`, which re-runs on render, or the instance's
228
+ * own `Subscribe`.
229
+ */
230
+ onReady?: (table: TanstackTable<T>) => void;
231
+ enableInlineEdit?: boolean;
232
+ /**
233
+ * Per-row gate for the built-in edit action. Returning false disables the
234
+ * edit affordance and refuses `startEdit` for that row.
235
+ */
236
+ canEditRow?: (row: Row<T>) => boolean;
237
+ /**
238
+ * Declarative actions rendered in the actions cell, each able to hide or
239
+ * disable itself per row.
240
+ */
241
+ rowActions?: DataTableRowAction<T>[];
242
+ /** Controlled id of the row being edited (`null` = not editing). */
243
+ editingRowId?: string | null;
244
+ onEditingRowIdChange?: (rowId: string | null) => void;
245
+ onEditStart?: (details: {
246
+ rowId: string;
247
+ row: T;
248
+ }) => void;
249
+ onEditChange?: (details: {
250
+ rowId: string;
251
+ columnId: string;
252
+ value: unknown;
253
+ draft: Record<string, unknown>;
254
+ }) => void;
255
+ onEditCommit?: (details: {
256
+ rowId: string;
257
+ draft: Record<string, unknown>;
258
+ row: T;
259
+ }) => void;
260
+ onEditCancel?: (details: {
261
+ rowId: string;
262
+ dirty: boolean;
263
+ }) => void;
264
+ onEditValidationError?: (details: {
265
+ rowId: string;
266
+ errors: Record<string, string>;
267
+ }) => void;
268
+ /**
269
+ * Lock sorting/filtering/pagination/selection/reorder while a row is being
270
+ * edited (default `true`). Turning this off is possible but means the edited
271
+ * row can be re-sorted or filtered away mid-edit.
272
+ */
273
+ lockInteractionsWhileEditing?: boolean;
274
+ /** Fired when a locked interaction is attempted during an edit. */
275
+ onInteractionBlocked?: (details: {
276
+ action: DataTableBlockedAction;
277
+ reason: "editing";
278
+ rowId: string;
279
+ }) => void;
280
+ filterRenderers?: Partial<Record<DataTableColumnType, DataTableFilterRenderer<T>>>;
281
+ editorRenderers?: Partial<Record<DataTableColumnType, DataTableEditorRenderer<T>>>;
282
+ /** Pin the row-actions column to the right edge (sticky). Default `true`. */
283
+ stickyActions?: boolean;
284
+ /**
285
+ * Human-readable label for a row, used by selection checkboxes and the edit
286
+ * action instead of the opaque row id.
287
+ */
288
+ getRowLabel?: (row: Row<T>) => string;
289
+ /** Replace the body with skeleton rows while the first page is being fetched. */
290
+ loading?: boolean;
291
+ /** How many skeleton rows to render while `loading`. */
292
+ loadingRowCount?: number;
293
+ /** Append a skeleton row while an infinite-scroll page is being fetched. */
294
+ loadingMore?: boolean;
295
+ /**
296
+ * Everything configurable on the `Pagination` molecule, surfaced at table
297
+ * level. `count`/`page`/`pageSize` stay owned by the table's pagination
298
+ * state, and `getPageUrl` by the table too — paging runs through the
299
+ * table's own state, so `Pagination` is rendered with a placeholder href
300
+ * whose navigation is suppressed. Requiring it here would force every
301
+ * consumer who only wants (say) `siblingCount` to invent a `getPageUrl`
302
+ * that is then overridden.
303
+ */
304
+ paginationProps?: Omit<PaginationProps, "count" | "page" | "pageSize" | "onPageChange" | "onChange" | "getPageUrl">;
305
+ renderToolbar?: (table: TanstackTable<T>) => ReactNode;
306
+ /**
307
+ * Custom actions trailing the toolbar search. At most
308
+ * `DATA_TABLE_MAX_TOOLBAR_ACTIONS` is recommended; more still render but warn.
309
+ */
310
+ toolbarActions?: DataTableToolbarAction[];
311
+ renderEmpty?: () => ReactNode;
312
+ /**
313
+ * Row actions; receives edit-mode state so you can swap in save/cancel.
314
+ * Return `null` to render no actions for that row, or `undefined` to fall
315
+ * through to the built-in edit button.
316
+ */
317
+ renderRowActions?: (row: Row<T>, state: {
318
+ isEditing: boolean;
319
+ startEdit: () => void;
320
+ commitEdit: () => void;
321
+ cancelEdit: () => void;
322
+ disabled: boolean;
323
+ }) => ReactNode;
324
+ /**
325
+ * Replace the filter control for a column. Return `null` for no filter at
326
+ * all, or `undefined` to fall through to the type-driven default.
327
+ */
328
+ renderHeaderFilter?: (column: Column<T, unknown>) => ReactNode;
329
+ renderExpandedRow?: (row: Row<T>) => ReactNode;
330
+ slotProps?: {
331
+ root?: React.HTMLAttributes<HTMLTableElement>;
332
+ header?: React.HTMLAttributes<HTMLTableSectionElement>;
333
+ body?: React.HTMLAttributes<HTMLTableSectionElement>;
334
+ row?: React.HTMLAttributes<HTMLTableRowElement> & {
335
+ ref?: Ref<HTMLTableRowElement>;
336
+ };
337
+ };
338
+ translations?: DataTableTranslations;
339
+ /** Estimated row height (px) for virtualization. */
340
+ estimateRowHeight?: number;
341
+ /** Distance from bottom (px) that triggers `onReachEnd`. */
342
+ reachEndThreshold?: number;
343
+ };
344
+ export declare function DataTable<T extends RowData>(props: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
345
+ export declare namespace DataTable {
346
+ var Toolbar: ({ children, }: {
347
+ children: ReactNode;
348
+ }) => import("react/jsx-runtime").JSX.Element;
349
+ var GlobalSearch: ({ className, }: {
350
+ className?: string;
351
+ }) => import("react/jsx-runtime").JSX.Element;
352
+ var ToolbarActions: () => import("react/jsx-runtime").JSX.Element | null;
353
+ var ColumnVisibility: () => import("react/jsx-runtime").JSX.Element;
354
+ var Pagination: () => import("react/jsx-runtime").JSX.Element;
355
+ var displayName: string;
356
+ }
357
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/organisms/data-table.tsx"],"names":[],"mappings":"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"}