@ai-matrx/design-system 0.48.1 → 0.48.5

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 (40) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/data-table/copy-helpers.d.cts +1 -1
  3. package/dist/data-table/copy-helpers.d.ts +1 -1
  4. package/dist/data-table/filter-engine.d.cts +1 -1
  5. package/dist/data-table/filter-engine.d.ts +1 -1
  6. package/dist/data-table/host.d.cts +1 -1
  7. package/dist/data-table/host.d.ts +1 -1
  8. package/dist/data-table/index.cjs +87 -27
  9. package/dist/data-table/index.cjs.map +1 -1
  10. package/dist/data-table/index.d.cts +3 -21
  11. package/dist/data-table/index.d.ts +3 -21
  12. package/dist/data-table/index.js +184 -124
  13. package/dist/data-table/index.js.map +1 -1
  14. package/dist/data-table/infer-filter.d.cts +1 -1
  15. package/dist/data-table/infer-filter.d.ts +1 -1
  16. package/dist/data-table/layered-filters.d.cts +1 -1
  17. package/dist/data-table/layered-filters.d.ts +1 -1
  18. package/dist/data-table/pagination.cjs +4 -1
  19. package/dist/data-table/pagination.cjs.map +1 -1
  20. package/dist/data-table/pagination.js +4 -1
  21. package/dist/data-table/pagination.js.map +1 -1
  22. package/dist/data-table/query-control.d.cts +1 -1
  23. package/dist/data-table/query-control.d.ts +1 -1
  24. package/dist/data-table/types.cjs.map +1 -1
  25. package/dist/data-table/types.d.cts +1 -1
  26. package/dist/data-table/types.d.ts +1 -1
  27. package/dist/data-table/url-state.d.cts +1 -1
  28. package/dist/data-table/url-state.d.ts +1 -1
  29. package/dist/data-table/xlsx.d.cts +1 -1
  30. package/dist/data-table/xlsx.d.ts +1 -1
  31. package/dist/index.cjs +43 -13
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +40 -2
  34. package/dist/index.d.ts +40 -2
  35. package/dist/index.js +43 -13
  36. package/dist/index.js.map +1 -1
  37. package/dist/tap-target.css +4 -1
  38. package/dist/{types-DuvXeW4i.d.cts → types-Dh3wRc0N.d.cts} +52 -1
  39. package/dist/{types-oza_vuRW.d.ts → types-hMqC2Fwn.d.ts} +52 -1
  40. package/package.json +1 -1
@@ -191,7 +191,10 @@
191
191
  align-items: center;
192
192
  justify-content: center;
193
193
  }
194
- @media (pointer: coarse) {
194
+ /* A phone-width table (its cards layout) is held to the touch floor too, not only a
195
+ coarse pointer: a 375px view measured 32x32 kebabs and pager buttons (page-pass
196
+ 2026-09-27) — the same width contract `.matrx-touch-targets` uses. */
197
+ @media (pointer: coarse), (max-width: 639px) {
195
198
  [data-matrx-table][data-matrx-table-density] :is([data-matrx-table-search], [data-matrx-table-footer], [data-matrx-table-row-actions], [data-matrx-table-toolbar-action]) :is(button, input, a, [role="combobox"]),
196
199
  [data-matrx-table][data-matrx-table-density] :is([data-matrx-table-scroll-control], [data-matrx-table-selection-target]) {
197
200
  min-height: 2.75rem !important;
@@ -1,4 +1,5 @@
1
1
  import { ContentTransferReference } from './content-transfer.cjs';
2
+ import * as React from 'react';
2
3
  import { ReactNode } from 'react';
3
4
  import { AgentPayloadInput, AiVariant, AiCustomSource, CopyExportConfig } from './data-table/copy-types.cjs';
4
5
  import { TableStyle, ChoiceColorLookup } from './data-table/table-style.cjs';
@@ -10,6 +11,45 @@ import { SpreadsheetIntent, SpreadsheetPastePlan, SpreadsheetController } from '
10
11
  import { DateColumnFilterValue } from './data-table/date-filter.cjs';
11
12
  import { MatrxTableMenuItem, MatrxTableMenuPayload, MatrxTableMenuSection } from './data-table/menu-targets.cjs';
12
13
 
14
+ interface TableViewTab {
15
+ id: string;
16
+ label: string;
17
+ count?: number;
18
+ }
19
+ interface TableViewTabsProps {
20
+ tabs: readonly TableViewTab[];
21
+ activeId: string;
22
+ onSelect: (id: string) => void;
23
+ onAdd: () => void;
24
+ onClose: (id: string) => void;
25
+ onRename: (id: string, label: string) => void;
26
+ /** Related-data doors use the same row, without creating another table. */
27
+ related?: ReactNode;
28
+ /** Open this tab's name field now (a just-created tab asks for its name). */
29
+ editingId?: string | null;
30
+ /** The name field closed with Escape (a just-created tab is then discarded). */
31
+ onEditCancel?: (id: string) => void;
32
+ /** The name field closed (committed or cancelled). */
33
+ onEditDone?: () => void;
34
+ }
35
+ /** One shared tab strip; hosts may own URL state without copying its UI. */
36
+ declare function TableViewTabs({ tabs, activeId, onSelect, onAdd, onClose, onRename, related, editingId, onEditCancel, onEditDone }: TableViewTabsProps): React.JSX.Element;
37
+ /** A named view the host persists (its preferences store); the default tab is never stored. */
38
+ interface SavedTableViewTab {
39
+ id: string;
40
+ label: string;
41
+ snapshot: TableViewSnapshot;
42
+ }
43
+ /**
44
+ * Where working view tabs live. Without a store they are in memory (gone on reload) —
45
+ * a host that offers the "+" on a page people come back to passes one, so a view
46
+ * made with "+" is named and survives a reload (page-pass 2026-09-27).
47
+ */
48
+ interface TableViewTabsStore {
49
+ views: readonly SavedTableViewTab[];
50
+ onChange: (views: SavedTableViewTab[]) => void;
51
+ }
52
+
13
53
  type TableSearchRole = "id" | "name" | "description" | "other";
14
54
  interface TableSearchScope {
15
55
  id: string;
@@ -631,6 +671,12 @@ interface MatrxDataTableToolbar {
631
671
  portalInto?: HTMLElement | null;
632
672
  /** Keep the toolbar on ONE row at every width; a narrow screen scrolls it sideways. */
633
673
  singleRow?: boolean;
674
+ /**
675
+ * `false`: no Columns button — the placing page already owns the ONE column picker (a list
676
+ * shell with its own picker that hands the table only the visible columns; two pickers that
677
+ * disagree about which columns exist is worse than one). Default: shown.
678
+ */
679
+ columns?: boolean;
634
680
  /**
635
681
  * WHERE THE ROW'S CONTROLS GO WHEN IT HAS NO ROOM (lane C, merged-grid review 2026-09-26):
636
682
  * `inline` (default) draws them on the row; `menu` puts the table's controls and `actions`
@@ -1413,6 +1459,11 @@ interface MatrxDataTableProps<T> {
1413
1459
  defaultViewSnapshot?: TableViewSnapshot;
1414
1460
  /** Working view tabs, on by default. Disable for embedded/single-purpose tables. */
1415
1461
  viewTabs?: boolean;
1462
+ /**
1463
+ * Where the working view tabs are kept. Absent: in memory, gone on reload. A page people
1464
+ * return to passes its preferences store, so a view made with "+" is named and survives.
1465
+ */
1466
+ viewTabsStore?: TableViewTabsStore;
1416
1467
  /** Related-data controls shown at the right of the working-view tab strip. */
1417
1468
  relatedTableActions?: ReactNode;
1418
1469
  /** Optional URL/source-owned column order and visibility. */
@@ -1639,4 +1690,4 @@ interface MatrxDataTableProps<T> {
1639
1690
  onRowOpen?: (row: T) => void;
1640
1691
  }
1641
1692
 
1642
- export { inferTableSearchRole as $, type AnyOfColumnSearch as A, type MatrxDataTableQueryControl as B, type ColumnFiltersState as C, type MatrxDataTableReadStatus as D, type MatrxDataTableSelectionConfig as E, type MatrxDataTableSingleExpandedDetailConfig as F, type MatrxDataTableSourceProcessing as G, type MatrxDataTableSpreadsheetConfig as H, type MatrxDataTableStyleConfig as I, type MatrxDataTableToolbar as J, type MatrxDataTableUrlStateConfig as K, type LayeredFilterRule as L, type MatrxColumnDef as M, type MatrxDataTableVirtualizeConfig as N, type MatrxDataTableWindowConfig as O, type MatrxTablePagination as P, type NumberFilterOp as Q, type SortDirection as R, type SortState as S, type TableSearchMatchMode as T, type SpreadsheetSelection as U, type TableRankedSearchOptions as V, type TableSearchRole as W, type TableSearchScope as X, type TableViewQuery as Y, type TextFilterMode as Z, type ToolbarFacet as _, type ColumnFilterValue as a, rankTableSearchRows as a0, resolveTableSearchScopes as a1, LAYERED_FILTER_OPERATORS as a2, LAYERED_FILTER_OPERATOR_LABELS as a3, type LayeredFilterField as a4, type LayeredFilterOperator as a5, columnFiltersToLayeredRules as a6, completeLayeredFilterRules as a7, decodeLayeredFilterRules as a8, encodeLayeredFilterRules as a9, isCompleteLayeredFilterRule as aa, isLayeredFilterOperator as ab, layeredFilterMatchesValue as ac, layeredFilterNeedsValue as ad, layeredFilterRuleSummary as ae, operatorsForLayeredField as af, type TableSavedViewsProps as b, type MatrxDataTableDensity as c, type MatrxDataTableRecordControls as d, type MatrxDataTableQueryState as e, type ColumnFilterKind as f, type MatrxDataTableCopyConfig as g, type MatrxDataTableProps as h, type TableViewSnapshot as i, type MatrxDataTableRead as j, type ColumnMarker as k, type CellEditType as l, type CellEditsMap as m, type MatrxDataTableContextMenuConfig as n, type MatrxDataTableCoverageConfig as o, type MatrxDataTableDetailConfig as p, type MatrxDataTableEditConfig as q, type MatrxDataTableEmptyState as r, type MatrxDataTableExpandedDetailConfig as s, type MatrxDataTableFacetsConfig as t, type MatrxDataTableFilterUi as u, type MatrxDataTableGroupingConfig as v, type MatrxDataTableHierarchyConfig as w, type MatrxDataTableHierarchyMove as x, type MatrxDataTableMobileCardControls as y, type MatrxDataTableMultiExpandedDetailConfig as z };
1693
+ export { TableViewTabs as $, type AnyOfColumnSearch as A, type MatrxDataTableQueryControl as B, type ColumnFiltersState as C, type MatrxDataTableReadStatus as D, type MatrxDataTableSelectionConfig as E, type MatrxDataTableSingleExpandedDetailConfig as F, type MatrxDataTableSourceProcessing as G, type MatrxDataTableSpreadsheetConfig as H, type MatrxDataTableStyleConfig as I, type MatrxDataTableToolbar as J, type MatrxDataTableUrlStateConfig as K, type LayeredFilterRule as L, type MatrxColumnDef as M, type MatrxDataTableVirtualizeConfig as N, type MatrxDataTableWindowConfig as O, type MatrxTablePagination as P, type NumberFilterOp as Q, type SavedTableViewTab as R, type SortState as S, type TableSearchMatchMode as T, type SortDirection as U, type SpreadsheetSelection as V, type TableRankedSearchOptions as W, type TableSearchRole as X, type TableSearchScope as Y, type TableViewQuery as Z, type TableViewTab as _, type ColumnFilterValue as a, type TableViewTabsProps as a0, type TableViewTabsStore as a1, type TextFilterMode as a2, type ToolbarFacet as a3, inferTableSearchRole as a4, rankTableSearchRows as a5, resolveTableSearchScopes as a6, LAYERED_FILTER_OPERATORS as a7, LAYERED_FILTER_OPERATOR_LABELS as a8, type LayeredFilterField as a9, type LayeredFilterOperator as aa, columnFiltersToLayeredRules as ab, completeLayeredFilterRules as ac, decodeLayeredFilterRules as ad, encodeLayeredFilterRules as ae, isCompleteLayeredFilterRule as af, isLayeredFilterOperator as ag, layeredFilterMatchesValue as ah, layeredFilterNeedsValue as ai, layeredFilterRuleSummary as aj, operatorsForLayeredField as ak, type TableSavedViewsProps as b, type MatrxDataTableDensity as c, type MatrxDataTableRecordControls as d, type MatrxDataTableQueryState as e, type ColumnFilterKind as f, type MatrxDataTableCopyConfig as g, type MatrxDataTableProps as h, type TableViewSnapshot as i, type MatrxDataTableRead as j, type ColumnMarker as k, type CellEditType as l, type CellEditsMap as m, type MatrxDataTableContextMenuConfig as n, type MatrxDataTableCoverageConfig as o, type MatrxDataTableDetailConfig as p, type MatrxDataTableEditConfig as q, type MatrxDataTableEmptyState as r, type MatrxDataTableExpandedDetailConfig as s, type MatrxDataTableFacetsConfig as t, type MatrxDataTableFilterUi as u, type MatrxDataTableGroupingConfig as v, type MatrxDataTableHierarchyConfig as w, type MatrxDataTableHierarchyMove as x, type MatrxDataTableMobileCardControls as y, type MatrxDataTableMultiExpandedDetailConfig as z };
@@ -1,4 +1,5 @@
1
1
  import { ContentTransferReference } from './content-transfer.js';
2
+ import * as React from 'react';
2
3
  import { ReactNode } from 'react';
3
4
  import { AgentPayloadInput, AiVariant, AiCustomSource, CopyExportConfig } from './data-table/copy-types.js';
4
5
  import { TableStyle, ChoiceColorLookup } from './data-table/table-style.js';
@@ -10,6 +11,45 @@ import { SpreadsheetIntent, SpreadsheetPastePlan, SpreadsheetController } from '
10
11
  import { DateColumnFilterValue } from './data-table/date-filter.js';
11
12
  import { MatrxTableMenuItem, MatrxTableMenuPayload, MatrxTableMenuSection } from './data-table/menu-targets.js';
12
13
 
14
+ interface TableViewTab {
15
+ id: string;
16
+ label: string;
17
+ count?: number;
18
+ }
19
+ interface TableViewTabsProps {
20
+ tabs: readonly TableViewTab[];
21
+ activeId: string;
22
+ onSelect: (id: string) => void;
23
+ onAdd: () => void;
24
+ onClose: (id: string) => void;
25
+ onRename: (id: string, label: string) => void;
26
+ /** Related-data doors use the same row, without creating another table. */
27
+ related?: ReactNode;
28
+ /** Open this tab's name field now (a just-created tab asks for its name). */
29
+ editingId?: string | null;
30
+ /** The name field closed with Escape (a just-created tab is then discarded). */
31
+ onEditCancel?: (id: string) => void;
32
+ /** The name field closed (committed or cancelled). */
33
+ onEditDone?: () => void;
34
+ }
35
+ /** One shared tab strip; hosts may own URL state without copying its UI. */
36
+ declare function TableViewTabs({ tabs, activeId, onSelect, onAdd, onClose, onRename, related, editingId, onEditCancel, onEditDone }: TableViewTabsProps): React.JSX.Element;
37
+ /** A named view the host persists (its preferences store); the default tab is never stored. */
38
+ interface SavedTableViewTab {
39
+ id: string;
40
+ label: string;
41
+ snapshot: TableViewSnapshot;
42
+ }
43
+ /**
44
+ * Where working view tabs live. Without a store they are in memory (gone on reload) —
45
+ * a host that offers the "+" on a page people come back to passes one, so a view
46
+ * made with "+" is named and survives a reload (page-pass 2026-09-27).
47
+ */
48
+ interface TableViewTabsStore {
49
+ views: readonly SavedTableViewTab[];
50
+ onChange: (views: SavedTableViewTab[]) => void;
51
+ }
52
+
13
53
  type TableSearchRole = "id" | "name" | "description" | "other";
14
54
  interface TableSearchScope {
15
55
  id: string;
@@ -631,6 +671,12 @@ interface MatrxDataTableToolbar {
631
671
  portalInto?: HTMLElement | null;
632
672
  /** Keep the toolbar on ONE row at every width; a narrow screen scrolls it sideways. */
633
673
  singleRow?: boolean;
674
+ /**
675
+ * `false`: no Columns button — the placing page already owns the ONE column picker (a list
676
+ * shell with its own picker that hands the table only the visible columns; two pickers that
677
+ * disagree about which columns exist is worse than one). Default: shown.
678
+ */
679
+ columns?: boolean;
634
680
  /**
635
681
  * WHERE THE ROW'S CONTROLS GO WHEN IT HAS NO ROOM (lane C, merged-grid review 2026-09-26):
636
682
  * `inline` (default) draws them on the row; `menu` puts the table's controls and `actions`
@@ -1413,6 +1459,11 @@ interface MatrxDataTableProps<T> {
1413
1459
  defaultViewSnapshot?: TableViewSnapshot;
1414
1460
  /** Working view tabs, on by default. Disable for embedded/single-purpose tables. */
1415
1461
  viewTabs?: boolean;
1462
+ /**
1463
+ * Where the working view tabs are kept. Absent: in memory, gone on reload. A page people
1464
+ * return to passes its preferences store, so a view made with "+" is named and survives.
1465
+ */
1466
+ viewTabsStore?: TableViewTabsStore;
1416
1467
  /** Related-data controls shown at the right of the working-view tab strip. */
1417
1468
  relatedTableActions?: ReactNode;
1418
1469
  /** Optional URL/source-owned column order and visibility. */
@@ -1639,4 +1690,4 @@ interface MatrxDataTableProps<T> {
1639
1690
  onRowOpen?: (row: T) => void;
1640
1691
  }
1641
1692
 
1642
- export { inferTableSearchRole as $, type AnyOfColumnSearch as A, type MatrxDataTableQueryControl as B, type ColumnFiltersState as C, type MatrxDataTableReadStatus as D, type MatrxDataTableSelectionConfig as E, type MatrxDataTableSingleExpandedDetailConfig as F, type MatrxDataTableSourceProcessing as G, type MatrxDataTableSpreadsheetConfig as H, type MatrxDataTableStyleConfig as I, type MatrxDataTableToolbar as J, type MatrxDataTableUrlStateConfig as K, type LayeredFilterRule as L, type MatrxColumnDef as M, type MatrxDataTableVirtualizeConfig as N, type MatrxDataTableWindowConfig as O, type MatrxTablePagination as P, type NumberFilterOp as Q, type SortDirection as R, type SortState as S, type TableSearchMatchMode as T, type SpreadsheetSelection as U, type TableRankedSearchOptions as V, type TableSearchRole as W, type TableSearchScope as X, type TableViewQuery as Y, type TextFilterMode as Z, type ToolbarFacet as _, type ColumnFilterValue as a, rankTableSearchRows as a0, resolveTableSearchScopes as a1, LAYERED_FILTER_OPERATORS as a2, LAYERED_FILTER_OPERATOR_LABELS as a3, type LayeredFilterField as a4, type LayeredFilterOperator as a5, columnFiltersToLayeredRules as a6, completeLayeredFilterRules as a7, decodeLayeredFilterRules as a8, encodeLayeredFilterRules as a9, isCompleteLayeredFilterRule as aa, isLayeredFilterOperator as ab, layeredFilterMatchesValue as ac, layeredFilterNeedsValue as ad, layeredFilterRuleSummary as ae, operatorsForLayeredField as af, type TableSavedViewsProps as b, type MatrxDataTableDensity as c, type MatrxDataTableRecordControls as d, type MatrxDataTableQueryState as e, type ColumnFilterKind as f, type MatrxDataTableCopyConfig as g, type MatrxDataTableProps as h, type TableViewSnapshot as i, type MatrxDataTableRead as j, type ColumnMarker as k, type CellEditType as l, type CellEditsMap as m, type MatrxDataTableContextMenuConfig as n, type MatrxDataTableCoverageConfig as o, type MatrxDataTableDetailConfig as p, type MatrxDataTableEditConfig as q, type MatrxDataTableEmptyState as r, type MatrxDataTableExpandedDetailConfig as s, type MatrxDataTableFacetsConfig as t, type MatrxDataTableFilterUi as u, type MatrxDataTableGroupingConfig as v, type MatrxDataTableHierarchyConfig as w, type MatrxDataTableHierarchyMove as x, type MatrxDataTableMobileCardControls as y, type MatrxDataTableMultiExpandedDetailConfig as z };
1693
+ export { TableViewTabs as $, type AnyOfColumnSearch as A, type MatrxDataTableQueryControl as B, type ColumnFiltersState as C, type MatrxDataTableReadStatus as D, type MatrxDataTableSelectionConfig as E, type MatrxDataTableSingleExpandedDetailConfig as F, type MatrxDataTableSourceProcessing as G, type MatrxDataTableSpreadsheetConfig as H, type MatrxDataTableStyleConfig as I, type MatrxDataTableToolbar as J, type MatrxDataTableUrlStateConfig as K, type LayeredFilterRule as L, type MatrxColumnDef as M, type MatrxDataTableVirtualizeConfig as N, type MatrxDataTableWindowConfig as O, type MatrxTablePagination as P, type NumberFilterOp as Q, type SavedTableViewTab as R, type SortState as S, type TableSearchMatchMode as T, type SortDirection as U, type SpreadsheetSelection as V, type TableRankedSearchOptions as W, type TableSearchRole as X, type TableSearchScope as Y, type TableViewQuery as Z, type TableViewTab as _, type ColumnFilterValue as a, type TableViewTabsProps as a0, type TableViewTabsStore as a1, type TextFilterMode as a2, type ToolbarFacet as a3, inferTableSearchRole as a4, rankTableSearchRows as a5, resolveTableSearchScopes as a6, LAYERED_FILTER_OPERATORS as a7, LAYERED_FILTER_OPERATOR_LABELS as a8, type LayeredFilterField as a9, type LayeredFilterOperator as aa, columnFiltersToLayeredRules as ab, completeLayeredFilterRules as ac, decodeLayeredFilterRules as ad, encodeLayeredFilterRules as ae, isCompleteLayeredFilterRule as af, isLayeredFilterOperator as ag, layeredFilterMatchesValue as ah, layeredFilterNeedsValue as ai, layeredFilterRuleSummary as aj, operatorsForLayeredField as ak, type TableSavedViewsProps as b, type MatrxDataTableDensity as c, type MatrxDataTableRecordControls as d, type MatrxDataTableQueryState as e, type ColumnFilterKind as f, type MatrxDataTableCopyConfig as g, type MatrxDataTableProps as h, type TableViewSnapshot as i, type MatrxDataTableRead as j, type ColumnMarker as k, type CellEditType as l, type CellEditsMap as m, type MatrxDataTableContextMenuConfig as n, type MatrxDataTableCoverageConfig as o, type MatrxDataTableDetailConfig as p, type MatrxDataTableEditConfig as q, type MatrxDataTableEmptyState as r, type MatrxDataTableExpandedDetailConfig as s, type MatrxDataTableFacetsConfig as t, type MatrxDataTableFilterUi as u, type MatrxDataTableGroupingConfig as v, type MatrxDataTableHierarchyConfig as w, type MatrxDataTableHierarchyMove as x, type MatrxDataTableMobileCardControls as y, type MatrxDataTableMultiExpandedDetailConfig as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-matrx/design-system",
3
- "version": "0.48.1",
3
+ "version": "0.48.5",
4
4
  "description": "AI Matrx semantic React primitives shared across Vite, Next.js, desktop, and customer-built applications.",
5
5
  "type": "module",
6
6
  "license": "MIT",