prime-ui-kit 0.18.0 → 0.19.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 (104) hide show
  1. package/dist/chunks/{chunk-OAXJWF3L.js → chunk-RZNGLELR.js} +120 -114
  2. package/dist/chunks/{chunk-MB4CXSLL.js → chunk-WYCTXD63.js} +832 -619
  3. package/dist/chunks/{chunk-X3JT5CLR.js → chunk-ZTZ2ML2B.js} +1 -1
  4. package/dist/color-picker.js +2 -2
  5. package/dist/components/data-table/ColumnsMenu.d.ts +16 -20
  6. package/dist/components/data-table/DataTable.d.ts +14 -11
  7. package/dist/components/data-table/Head.d.ts +8 -1
  8. package/dist/components/data-table/Row.d.ts +7 -1
  9. package/dist/components/data-table/StateRows.d.ts +3 -1
  10. package/dist/components/field-list/FieldList.d.ts +8 -8
  11. package/dist/components/index.d.ts +1 -1
  12. package/dist/components/kanban/Kanban.d.ts +4 -0
  13. package/dist/components/list/List.d.ts +9 -4
  14. package/dist/index.css +1 -1
  15. package/dist/index.js +2 -2
  16. package/dist/internal/fieldCell.d.ts +6 -0
  17. package/dist/internal/leaveGuard.d.ts +6 -0
  18. package/dist/internal/overlay/DialogGuard.d.ts +3 -2
  19. package/dist/internal/overlay/DialogParts.d.ts +14 -5
  20. package/dist/layout/index.d.ts +1 -1
  21. package/dist/layout/page/Page.d.ts +1 -7
  22. package/dist/skill/anti-slop.md +23 -0
  23. package/dist/skill/api-contract.md +1 -1
  24. package/dist/skill/cheatsheet.md +7 -3
  25. package/dist/skill/checklist.md +4 -0
  26. package/dist/skill/composition.md +70 -12
  27. package/dist/skill/layouts.md +1 -1
  28. package/dist/skill/reference/components/confirm-dialog/COMPONENT.md +1 -1
  29. package/dist/skill/reference/components/data-table/COMPONENT.md +40 -40
  30. package/dist/skill/reference/components/data-table/examples/actions-column.tsx +154 -0
  31. package/dist/skill/reference/components/data-table/examples/columns-visibility.tsx +3 -12
  32. package/dist/skill/reference/components/data-table/examples/controlled.tsx +1 -1
  33. package/dist/skill/reference/components/data-table/examples/narrow.tsx +4 -11
  34. package/dist/skill/reference/components/data-table/examples/row-link.tsx +18 -22
  35. package/dist/skill/reference/components/data-table/examples/screen.tsx +12 -1
  36. package/dist/skill/reference/components/data-table/examples/toolbar.tsx +26 -32
  37. package/dist/skill/reference/components/dnd/COMPONENT.md +4 -3
  38. package/dist/skill/reference/components/dnd/examples/examples.module.css +4 -3
  39. package/dist/skill/reference/components/dnd/examples/handle.tsx +5 -5
  40. package/dist/skill/reference/components/dnd/examples/locked.tsx +1 -1
  41. package/dist/skill/reference/components/dnd/examples/table.tsx +6 -6
  42. package/dist/skill/reference/components/drawer/COMPONENT.md +26 -10
  43. package/dist/skill/reference/components/drawer/examples/header-actions.tsx +1 -1
  44. package/dist/skill/reference/components/drawer/examples/loading.tsx +58 -0
  45. package/dist/skill/reference/components/field-list/COMPONENT.md +29 -25
  46. package/dist/skill/reference/components/field-list/examples/base-row.tsx +2 -1
  47. package/dist/skill/reference/components/field-list/examples/locked.tsx +11 -11
  48. package/dist/skill/reference/components/field-list/examples/reorder.tsx +1 -1
  49. package/dist/skill/reference/components/field-list/examples/screen.module.css +1 -1
  50. package/dist/skill/reference/components/field-list/examples/screen.tsx +168 -162
  51. package/dist/skill/reference/components/field-list/examples/totals.tsx +9 -8
  52. package/dist/skill/reference/components/kanban/COMPONENT.md +6 -2
  53. package/dist/skill/reference/components/kanban/examples/states.tsx +7 -5
  54. package/dist/skill/reference/components/list/COMPONENT.md +21 -11
  55. package/dist/skill/reference/components/list/examples/reorder.tsx +42 -7
  56. package/dist/skill/reference/components/modal/COMPONENT.md +23 -10
  57. package/dist/skill/reference/components/segmented-control/COMPONENT.md +3 -2
  58. package/dist/skill/reference/components/sheet/COMPONENT.md +18 -7
  59. package/dist/skill/reference/layout/page/COMPONENT.md +5 -12
  60. package/dist/skill/reference/layout/page/examples/screen.module.css +1 -1
  61. package/dist/skill/reference/layout/page/examples/screen.tsx +93 -104
  62. package/dist/skill/reference/layout/page/examples/sections.tsx +2 -15
  63. package/dist/skill/responsive.md +7 -5
  64. package/dist/tokens/semantic.d.ts +1 -1
  65. package/dist/tokens/themes/dark.d.ts +1 -1
  66. package/package.json +1 -1
  67. package/src/components/confirm-dialog/COMPONENT.md +1 -1
  68. package/src/components/data-table/COMPONENT.md +40 -40
  69. package/src/components/data-table/examples/actions-column.tsx +154 -0
  70. package/src/components/data-table/examples/columns-visibility.tsx +3 -12
  71. package/src/components/data-table/examples/controlled.tsx +1 -1
  72. package/src/components/data-table/examples/narrow.tsx +4 -11
  73. package/src/components/data-table/examples/row-link.tsx +18 -22
  74. package/src/components/data-table/examples/screen.tsx +12 -1
  75. package/src/components/data-table/examples/toolbar.tsx +26 -32
  76. package/src/components/dnd/COMPONENT.md +4 -3
  77. package/src/components/dnd/examples/examples.module.css +4 -3
  78. package/src/components/dnd/examples/handle.tsx +5 -5
  79. package/src/components/dnd/examples/locked.tsx +1 -1
  80. package/src/components/dnd/examples/table.tsx +6 -6
  81. package/src/components/drawer/COMPONENT.md +26 -10
  82. package/src/components/drawer/examples/header-actions.tsx +1 -1
  83. package/src/components/drawer/examples/loading.tsx +58 -0
  84. package/src/components/field-list/COMPONENT.md +29 -25
  85. package/src/components/field-list/examples/base-row.tsx +2 -1
  86. package/src/components/field-list/examples/locked.tsx +11 -11
  87. package/src/components/field-list/examples/reorder.tsx +1 -1
  88. package/src/components/field-list/examples/screen.module.css +1 -1
  89. package/src/components/field-list/examples/screen.tsx +168 -162
  90. package/src/components/field-list/examples/totals.tsx +9 -8
  91. package/src/components/kanban/COMPONENT.md +6 -2
  92. package/src/components/kanban/examples/states.tsx +7 -5
  93. package/src/components/list/COMPONENT.md +21 -11
  94. package/src/components/list/examples/reorder.tsx +42 -7
  95. package/src/components/modal/COMPONENT.md +23 -10
  96. package/src/components/segmented-control/COMPONENT.md +3 -2
  97. package/src/components/sheet/COMPONENT.md +18 -7
  98. package/src/layout/page/COMPONENT.md +5 -12
  99. package/src/layout/page/examples/screen.module.css +1 -1
  100. package/src/layout/page/examples/screen.tsx +93 -104
  101. package/src/layout/page/examples/sections.tsx +2 -15
  102. package/src/styles/theme-dark.css +1 -1
  103. package/src/styles/theme-light.css +1 -1
  104. package/dist/components/data-table/context.d.ts +0 -14
@@ -23,7 +23,7 @@ import {
23
23
  useInheritedDisabled,
24
24
  useLabels,
25
25
  useOpenState
26
- } from "./chunk-OAXJWF3L.js";
26
+ } from "./chunk-RZNGLELR.js";
27
27
  import {
28
28
  cx,
29
29
  useHostTier
@@ -4,8 +4,8 @@ import {
4
4
  ColorField,
5
5
  ColorPicker,
6
6
  parseColor
7
- } from "./chunks/chunk-X3JT5CLR.js";
8
- import "./chunks/chunk-OAXJWF3L.js";
7
+ } from "./chunks/chunk-ZTZ2ML2B.js";
8
+ import "./chunks/chunk-RZNGLELR.js";
9
9
  import "./chunks/chunk-QFHE5GKW.js";
10
10
  export {
11
11
  ColorField,
@@ -1,23 +1,19 @@
1
- import * as React from "react";
2
- import type { PositionAlign, PositionSide } from "../../hooks/usePosition";
3
- export type DataTableColumnsMenuProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "type" | "children"> & {
4
- /**
5
- * Side of the trigger the menu opens on.
6
- */
7
- side?: PositionSide;
8
- /**
9
- * Alignment to the trigger. `auto` lines the panel up with the trigger edge that has more room beyond it; `start`, `center` or `end` fix it.
10
- */
11
- align?: PositionAlign;
12
- /** The trigger button. */
13
- ref?: React.Ref<HTMLButtonElement>;
1
+ import { type ControlSize } from "../../internal/states";
2
+ import type { DataTableLabels } from "./DataTable";
3
+ import type { DataTableColumn } from "./types";
4
+ type ColumnsMenuProps = {
5
+ /** Every column, hidden ones included, in table order. */
6
+ columns: DataTableColumn<never>[];
7
+ hidden: ReadonlySet<string>;
8
+ setHidden: (hidden: string[]) => void;
9
+ labels: DataTableLabels;
10
+ size: ControlSize;
14
11
  };
15
12
  /**
16
- * The column chooser of the table it sits in (put it into `toolbar`): a trigger button and a menu
17
- * with a check item per column and «Показать все». Writes the table's `hiddenColumns`; a column
18
- * with `hideable: false` stays checked and disabled, and the last visible column cannot be hidden.
13
+ * The column chooser of the table (`columnsMenu`), drawn in its header row: an icon-only ghost
14
+ * Button one tier below the table, named and tipped by `labels.columns`, opening a Dropdown with a
15
+ * check item per column and «Показать все». A column with `hideable: false` stays checked and
16
+ * disabled, and the last visible column cannot be hidden.
19
17
  */
20
- export declare function DataTableColumnsMenu({ side, align, ...rest }: DataTableColumnsMenuProps): import("react/jsx-runtime").JSX.Element;
21
- export declare namespace DataTableColumnsMenu {
22
- var displayName: string;
23
- }
18
+ export declare function ColumnsMenu({ columns, hidden, setHidden, labels, size }: ColumnsMenuProps): import("react/jsx-runtime").JSX.Element;
19
+ export {};
@@ -1,8 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { type ControlSize } from "../../internal/states";
3
- import { DataTableColumnsMenu } from "./ColumnsMenu";
4
3
  import type { DataTableColumn, DataTableGroup, DataTableRowClickEvent, DataTableSortState } from "./types";
5
- export type { DataTableColumnsMenuProps } from "./ColumnsMenu";
6
4
  export type { DataTableColumn, DataTableGroup, DataTableOrder, DataTableRowClickEvent, DataTableSortState, } from "./types";
7
5
  /** System strings; `{from}`, `{to}`, `{total}`, `{label}`, `{count}`, `{group}` are replaced. */
8
6
  export type DataTableLabels = {
@@ -26,9 +24,9 @@ export type DataTableLabels = {
26
24
  expand: string;
27
25
  /** `aria-label` of the expand toggle of an expanded row. */
28
26
  collapse: string;
29
- /** Text of the `DataTable.ColumnsMenu` trigger; `{shown}` and `{total}` are column counts. */
27
+ /** Name and tooltip of the column chooser (`columnsMenu`); `{shown}` and `{total}` are counts. */
30
28
  columns: string;
31
- /** The `DataTable.ColumnsMenu` item that shows every column again. */
29
+ /** The column chooser item that shows every column again. */
32
30
  showAllColumns: string;
33
31
  /** `aria-label` of a row's drag handle (`onReorder`); `{label}` is `getRowLabel(row)`. */
34
32
  reorderRow: string;
@@ -50,7 +48,7 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
50
48
  */
51
49
  columns: DataTableColumn<Row>[];
52
50
  /**
53
- * Ids of columns that are not rendered, controlled. A column with `hideable: false` stays. `DataTable.ColumnsMenu` in `toolbar` changes it.
51
+ * Ids of columns that are not rendered, controlled. A column with `hideable: false` stays. The column chooser (`columnsMenu`) changes it.
54
52
  */
55
53
  hiddenColumns?: string[];
56
54
  /**
@@ -58,9 +56,13 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
58
56
  */
59
57
  defaultHiddenColumns?: string[];
60
58
  /**
61
- * The hidden ids changed (`DataTable.ColumnsMenu`). The kit stores nothing: keep the list (local storage, the user's settings) and pass it back to restore the choice.
59
+ * The hidden ids changed (`columnsMenu`). The kit stores nothing: keep the list (local storage, the user's settings) and pass it back to restore the choice.
62
60
  */
63
61
  onHiddenColumnsChange?: (hiddenColumns: string[]) => void;
62
+ /**
63
+ * The column chooser at the end of the header row: in the head cell of a trailing row-actions column (`hideHeader`), else in a cell of its own; sticks with `stickyLastColumn`. Needs `showHeader`.
64
+ */
65
+ columnsMenu?: boolean;
64
66
  /**
65
67
  * Data; sorted in memory when a sort is set. With `source="server"` — the page (or the loaded batches) as the server returned it.
66
68
  */
@@ -93,6 +95,10 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
93
95
  * The first visible column (with the selection and toggle columns) sticks while scrolling sideways; the start edge shadow falls from its end edge.
94
96
  */
95
97
  stickyFirstColumn?: boolean;
98
+ /**
99
+ * The last visible column (row actions) sticks to the end edge while scrolling sideways; the end edge shadow falls from its start edge.
100
+ */
101
+ stickyLastColumn?: boolean;
96
102
  /**
97
103
  * Stable row id (position by default; sub-rows too, `index` among siblings); selection, expansion and the enter animation of new rows are keyed by it. Pass it whenever sorting, selection or expansion is used.
98
104
  */
@@ -254,7 +260,7 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
254
260
  */
255
261
  loadingRows?: number;
256
262
  /**
257
- * Panel above the table (search, filters, bulk actions); stacks below 30rem of table width.
263
+ * Panel above the table for several controls of the table itself (bulk actions on the selected rows, a table-local search with filters); stacks below 30rem of table width.
258
264
  */
259
265
  toolbar?: React.ReactNode;
260
266
  /**
@@ -282,7 +288,4 @@ export type DataTableProps<Row> = Omit<React.HTMLAttributes<HTMLDivElement>, "ch
282
288
  */
283
289
  onCollapsedGroupsChange?: (collapsedGroups: (string | number)[]) => void;
284
290
  };
285
- export declare function DataTable<Row>({ columns: allColumns, hiddenColumns, defaultHiddenColumns, onHiddenColumnsChange, rows, source, rowCount, size: sizeProp, className, showHeader, stickyHeader, stickyFirstColumn, getRowKey, getRowHref, onRowClick, isRowClickable, loading, empty, labels: labelsProp, rowDividers, columnDividers, sort, defaultSort, onSortChange, paging, page, defaultPage, onPageChange, pageSize, infiniteBatchSize, hasMore, loadingMore, onLoadMore, scrollHeight, fullWidth, highlightRowOnHover, highlightColumnOnHover, striped, getRowLabel, selectable, selected, defaultSelected, onSelectedChange, onReorder, getRowChildren, renderExpanded, isRowExpandable, expanded, defaultExpanded, onExpandedChange, loadError, loadingRows, toolbar, getRowGroup, renderGroupHeader, stickyGroupHeaders, collapsedGroups, defaultCollapsedGroups, onCollapsedGroupsChange, ref, ...rest }: DataTableProps<Row>): import("react/jsx-runtime").JSX.Element;
286
- export declare namespace DataTable {
287
- var ColumnsMenu: typeof DataTableColumnsMenu;
288
- }
291
+ export declare function DataTable<Row>({ columns: allColumns, hiddenColumns, defaultHiddenColumns, onHiddenColumnsChange, columnsMenu, rows, source, rowCount, size: sizeProp, className, showHeader, stickyHeader, stickyFirstColumn, stickyLastColumn, getRowKey, getRowHref, onRowClick, isRowClickable, loading, empty, labels: labelsProp, rowDividers, columnDividers, sort, defaultSort, onSortChange, paging, page, defaultPage, onPageChange, pageSize, infiniteBatchSize, hasMore, loadingMore, onLoadMore, scrollHeight, fullWidth, highlightRowOnHover, highlightColumnOnHover, striped, getRowLabel, selectable, selected, defaultSelected, onSelectedChange, onReorder, getRowChildren, renderExpanded, isRowExpandable, expanded, defaultExpanded, onExpandedChange, loadError, loadingRows, toolbar, getRowGroup, renderGroupHeader, stickyGroupHeaders, collapsedGroups, defaultCollapsedGroups, onCollapsedGroupsChange, ref, ...rest }: DataTableProps<Row>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,4 @@
1
+ import * as React from "react";
1
2
  import type { ControlSize } from "../../internal/states";
2
3
  import type { DataTableColumn, DataTableSortState } from "./types";
3
4
  type HeadProps<Row> = {
@@ -6,6 +7,8 @@ type HeadProps<Row> = {
6
7
  sort: DataTableSortState;
7
8
  onSort: (columnId: string) => void;
8
9
  stickyFirstColumn: boolean;
10
+ /** The last visible column sticks to the end edge (with `stickyHeader`: the end corner). */
11
+ stickyLastColumn: boolean;
9
12
  /** The head sticks to the top of the scroller. */
10
13
  stickyHeader: boolean;
11
14
  /** Sticky head and first column: the leading head cells stick to both edges. */
@@ -15,6 +18,10 @@ type HeadProps<Row> = {
15
18
  infoLabel: string;
16
19
  /** A leading column of row handles (`onReorder`). */
17
20
  reorderable?: boolean;
21
+ /** The column chooser trigger (`columnsMenu`), or null. */
22
+ columnsMenu: React.ReactNode;
23
+ /** The chooser stands in a cell of its own at the end; else in the row-actions head cell. */
24
+ menuCell: boolean;
18
25
  selectAll?: {
19
26
  checked: boolean;
20
27
  indeterminate: boolean;
@@ -23,5 +30,5 @@ type HeadProps<Row> = {
23
30
  onToggle: () => void;
24
31
  };
25
32
  };
26
- export declare function Head<Row>({ columns, size, sort, onSort, stickyFirstColumn, stickyHeader, stickyCorner, expandEnabled, infoLabel, reorderable, selectAll, }: HeadProps<Row>): import("react/jsx-runtime").JSX.Element;
33
+ export declare function Head<Row>({ columns, size, sort, onSort, stickyFirstColumn, stickyLastColumn, stickyHeader, stickyCorner, expandEnabled, infoLabel, reorderable, columnsMenu, menuCell, selectAll, }: HeadProps<Row>): import("react/jsx-runtime").JSX.Element;
27
34
  export {};
@@ -15,6 +15,10 @@ export type RowShared<Row> = {
15
15
  selectable: boolean;
16
16
  expandEnabled: boolean;
17
17
  stickyFirstColumn: boolean;
18
+ /** The last visible column sticks to the end edge (row actions). */
19
+ stickyLastColumn: boolean;
20
+ /** A trailing cell under the head's column chooser (`columnsMenu` with no row-actions column). */
21
+ menuCell: boolean;
18
22
  striped: boolean;
19
23
  totalColumns: number;
20
24
  /**
@@ -93,10 +97,12 @@ type MeasureBodyProps<Row> = {
93
97
  expandEnabled: boolean;
94
98
  /** A leading column of row handles (`onReorder`). */
95
99
  reorderable: boolean;
100
+ /** A trailing cell under the head's column chooser. */
101
+ menuCell: boolean;
96
102
  };
97
103
  /**
98
104
  * Sub-rows of collapsed rows and rows of collapsed groups, laid out invisibly so the columns are
99
105
  * already as wide as they will be once a row or group opens; never shown or reachable.
100
106
  */
101
- export declare function MeasureBody<Row>({ rows, columns, selectable, expandEnabled, reorderable, }: MeasureBodyProps<Row>): import("react/jsx-runtime").JSX.Element;
107
+ export declare function MeasureBody<Row>({ rows, columns, selectable, expandEnabled, reorderable, menuCell, }: MeasureBodyProps<Row>): import("react/jsx-runtime").JSX.Element;
102
108
  export {};
@@ -10,6 +10,8 @@ type StateRowsProps<Row> = {
10
10
  expandEnabled: boolean;
11
11
  /** A leading column of row handles (`onReorder`). */
12
12
  reorderable?: boolean;
13
+ /** A trailing cell under the head's column chooser. */
14
+ menuCell: boolean;
13
15
  loadError: React.ReactNode;
14
16
  empty: React.ReactNode;
15
17
  emptyLabel: string;
@@ -20,5 +22,5 @@ type StateRowsProps<Row> = {
20
22
  * in a sticky box of the visible width, so a wide table centres it in the viewport, not across
21
23
  * every column.
22
24
  */
23
- export declare function StateRows<Row>({ state, columns, size, totalColumns, selectable, expandEnabled, reorderable, loadError, empty, emptyLabel, skeletonRows, }: StateRowsProps<Row>): import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
25
+ export declare function StateRows<Row>({ state, columns, size, totalColumns, selectable, expandEnabled, reorderable, menuCell, loadError, empty, emptyLabel, skeletonRows, }: StateRowsProps<Row>): import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
24
26
  export {};
@@ -11,8 +11,8 @@ export type FieldListLabels = {
11
11
  row: string;
12
12
  /** Name of a row with `getLabel` text; `{label}` is that text. */
13
13
  namedRow: string;
14
- /** Spoken name of the lock on a `getLocked` row of a list without `reorderable`. */
15
- locked: string;
14
+ /** Why the remove button of a `getLocked` row is off: its tooltip and description. */
15
+ lockedReason: string;
16
16
  /** Text beside the disabled add button once the list holds `max` rows; `{max}` is the limit. */
17
17
  maxReached: string;
18
18
  /** Name of the totals row (`renderTotals`), shown in its first cell when that has no total. */
@@ -25,8 +25,8 @@ export type FieldListColumn = {
25
25
  /** Column heading, shown once above the rows; it names the field of this column in every row. */
26
26
  label: string;
27
27
  /**
28
- * `fill` (default) shares the free width; `compact` fits an icon-only control (an icon Select,
29
- * a swatch button, a checkbox); `xs` a number of a few digits (a share, a percent); `s` a short
28
+ * `fill` (default) shares the free width; `compact` is as wide as its widest control or heading
29
+ * (an icon Select, a swatch button, a checkbox); `xs` a number of a few digits (a share, a percent); `s` a short
30
30
  * value (a quantity, a code); `m` an amount or a date.
31
31
  */
32
32
  width?: FieldListColumnWidth;
@@ -64,11 +64,11 @@ export type FieldListProps<T extends object> = Omit<FieldRootDomProps, "onChange
64
64
  */
65
65
  columns: readonly FieldListColumn[];
66
66
  /**
67
- * The cells of a row, one element per column (a fragment): kit fields without `label`. `row` has `index`, `update(patch)` and `remove()`.
67
+ * The cells of a row, one element per column (a fragment): kit fields without `label`. `row` has `index`, `update(patch)` and `remove()`. In one column the remove is the field's last segment.
68
68
  */
69
69
  renderItem: (item: T, row: FieldListRow<T>) => React.ReactNode;
70
70
  /**
71
- * The totals row under the rows: one node per column (a fragment), `null` where a column has none. The first cell without a total reads `labels.totals`, the row's group name.
71
+ * The totals row under the rows: one node per column (a fragment), `null` where none; each aligned as its column's field text. The first cell without a total reads `labels.totals`.
72
72
  */
73
73
  renderTotals?: (items: readonly T[]) => React.ReactNode;
74
74
  /**
@@ -84,11 +84,11 @@ export type FieldListProps<T extends object> = Omit<FieldRootDomProps, "onChange
84
84
  */
85
85
  getLabel?: (item: T) => string;
86
86
  /**
87
- * Pinned rows: a lock in the lead column, no remove button, they hold their place while others move.
87
+ * Pinned rows: the remove button stays in its place, off, its tooltip says why (`labels.lockedReason`); with `reorderable` a lock takes the handle's place and the row holds it while others move.
88
88
  */
89
89
  getLocked?: (item: T) => boolean;
90
90
  /**
91
- * Rows move by a leading handle: drag, a touch hold, Alt + ↑ / ↓.
91
+ * Rows move by a handle at the row's end, after the remove button: drag, a touch hold, Alt + ↑ / ↓.
92
92
  */
93
93
  reorderable?: boolean;
94
94
  /**
@@ -40,7 +40,7 @@ export type { ConfirmDialogLabels, ConfirmDialogRootProps, ConfirmDialogTriggerP
40
40
  export { ConfirmDialog } from "./confirm-dialog/ConfirmDialog";
41
41
  export type { CrossfadeProps } from "./crossfade/Crossfade";
42
42
  export { Crossfade } from "./crossfade/Crossfade";
43
- export type { DataTableColumn, DataTableColumnsMenuProps, DataTableGroup, DataTableLabels, DataTableOrder, DataTableProps, DataTableRowClickEvent, DataTableSortState, } from "./data-table/DataTable";
43
+ export type { DataTableColumn, DataTableGroup, DataTableLabels, DataTableOrder, DataTableProps, DataTableRowClickEvent, DataTableSortState, } from "./data-table/DataTable";
44
44
  export { DataTable } from "./data-table/DataTable";
45
45
  export type { DatepickerLabels, DatepickerPanelProps, DatepickerPreset, DatepickerRange, DatepickerRootProps, WeekStart, } from "./datepicker/Datepicker";
46
46
  export { Datepicker, DEFAULT_DATEPICKER_PRESETS, datepickerPresets, formatDatepickerValue, formatDateValue, YEARLESS_YEAR, } from "./datepicker/Datepicker";
@@ -141,6 +141,10 @@ export type KanbanRootProps<T> = Omit<React.HTMLAttributes<HTMLDivElement>, "chi
141
141
  * Columns show skeleton cards in the card geometry; the cards cross-fade in when it turns off.
142
142
  */
143
143
  loading?: boolean;
144
+ /**
145
+ * Placeholder columns a `loading` board draws while `columns` is empty (the stages are still loading); the columns fade in where they stood.
146
+ */
147
+ loadingColumns?: number;
144
148
  /**
145
149
  * Read-only board: no drag, no keyboard moves, no column grips; `onItemOpen` and `getItemHref` still open cards.
146
150
  */
@@ -11,7 +11,7 @@ export type ListRootProps = Omit<React.HTMLAttributes<HTMLUListElement>, "childr
11
11
  */
12
12
  size?: ControlSize;
13
13
  /**
14
- * Rows reorder by a leading handle (drag, touch hold, Alt + ↑ / ↓): item `value` `id` goes before `beforeId` (`null` = last). Apply with `moveBefore`; a returned promise keeps the row busy, a rejection moves it back.
14
+ * Rows reorder by an end handle (drag, touch hold, Alt + ↑ / ↓): item `value` `id` goes before `beforeId` (`null` = last). Apply with `moveBefore`; a returned promise keeps the row busy, a rejection moves it back.
15
15
  */
16
16
  onReorder?: (id: string, beforeId: string | null) => void | Promise<void>;
17
17
  /**
@@ -90,14 +90,19 @@ declare namespace ListItemCount {
90
90
  var displayName: string;
91
91
  }
92
92
  export type ListItemActionsProps = React.HTMLAttributes<HTMLDivElement> & {
93
+ /**
94
+ * `"end"` after the row element: a plain settings row, label first. `"start"` before it, in the DOM too: the on / off of a reorderable row reads first and the grip keeps the end.
95
+ */
96
+ side?: "start" | "end";
93
97
  ref?: React.Ref<HTMLDivElement>;
94
98
  };
95
99
  /**
96
- * The row's own controls (a Switch, a Dropdown with its icon Button, an icon Button): at the end of
97
- * the row, beside its button or link and never inside it, one tier below the row. The row's fills
100
+ * The row's own controls (a Switch, a Dropdown with its icon Button, an icon Button): beside its
101
+ * button or link and never inside it, one tier below the row — at its end, or leading it with
102
+ * `side="start"` (the on / off of a reorderable row, whose end edge is the grip's). The row's fills
98
103
  * cover them.
99
104
  */
100
- declare function ListItemActions({ className, ...rest }: ListItemActionsProps): import("react/jsx-runtime").JSX.Element;
105
+ declare function ListItemActions({ side, className, ...rest }: ListItemActionsProps): import("react/jsx-runtime").JSX.Element;
101
106
  declare namespace ListItemActions {
102
107
  var displayName: string;
103
108
  }