@ai-matrx/design-system 0.55.0 → 0.56.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 (36) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +20 -0
  3. package/dist/data-table/copy-helpers.d.cts +1 -1
  4. package/dist/data-table/copy-helpers.d.ts +1 -1
  5. package/dist/data-table/filter-engine.d.cts +1 -1
  6. package/dist/data-table/filter-engine.d.ts +1 -1
  7. package/dist/data-table/host.d.cts +1 -1
  8. package/dist/data-table/host.d.ts +1 -1
  9. package/dist/data-table/index.cjs +2294 -2238
  10. package/dist/data-table/index.cjs.map +1 -1
  11. package/dist/data-table/index.d.cts +8 -3
  12. package/dist/data-table/index.d.ts +8 -3
  13. package/dist/data-table/index.js +2406 -2350
  14. package/dist/data-table/index.js.map +1 -1
  15. package/dist/data-table/infer-filter.d.cts +1 -1
  16. package/dist/data-table/infer-filter.d.ts +1 -1
  17. package/dist/data-table/layered-filters.d.cts +1 -1
  18. package/dist/data-table/layered-filters.d.ts +1 -1
  19. package/dist/data-table/query-control.d.cts +1 -1
  20. package/dist/data-table/query-control.d.ts +1 -1
  21. package/dist/data-table/types.cjs.map +1 -1
  22. package/dist/data-table/types.d.cts +1 -1
  23. package/dist/data-table/types.d.ts +1 -1
  24. package/dist/data-table/url-state.d.cts +1 -1
  25. package/dist/data-table/url-state.d.ts +1 -1
  26. package/dist/data-table/xlsx.d.cts +1 -1
  27. package/dist/data-table/xlsx.d.ts +1 -1
  28. package/dist/index.cjs +2 -2
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/{layered-filters-v-hFI3Pk.d.cts → layered-filters-CNFxkmfs.d.cts} +21 -10
  33. package/dist/{layered-filters-DlGwwJbD.d.ts → layered-filters-cXDqSLSR.d.ts} +21 -10
  34. package/dist/styles.css +46 -27
  35. package/dist/tokens.css +19 -5
  36. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,7 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.56.0
4
+
5
+ - **THE PANEL MOTION (the motion standard, Arman 2026-10-02).** Every panel-like slide the
6
+ package ships now opens AND closes on one token pair, `--matrx-motion-duration-panel` /
7
+ `--matrx-motion-ease-panel`: the Sheet on every side (was 500ms `ease-out` in, 300ms
8
+ `ease-in` out), the mobile Dialog / CommandDialog bottom sheet (was 200ms), the vaul Drawer
9
+ and its scrim (was vaul 1.1.2's 0.5s `cubic-bezier(0.32,0.72,0,1)`, including the inline
10
+ settle after a released drag — a drag itself still has no transition), and the Sidebar's
11
+ collapse (`--sidebar-duration` / `--sidebar-easing` are now defined from the pair, was
12
+ 200ms `linear`). The names are the package's contract; `tokens.css` ships the standard as
13
+ the layered default — 600ms, `cubic-bezier(0.4, 0, 0.2, 1)`, 0ms under
14
+ `prefers-reduced-motion: reduce` — and a host that declares them unlayered owns the values.
15
+ `--matrx-motion-duration-sheet` is removed (nothing reads it). Menus, popovers, tooltips and
16
+ dialogs keep the small-motion tokens. Guard: `src/panel-motion.test.ts` (15 red on 0.55.1).
17
+
18
+ ### Consumer action
19
+
20
+ - Hosts that already define `--matrx-motion-duration-panel` / `--matrx-motion-ease-panel`
21
+ (matrx-frontend `app/globals.css`) need nothing. Any other host gets the standard from
22
+ `tokens.css`; to retime every panel at once, redeclare the two tokens unlayered.
23
+ - Remove any host override of `--matrx-motion-duration-sheet` (no longer read).
24
+
25
+ ## 0.55.1
26
+
27
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
28
+ `git diff npm/design-system/v0.55.0..npm/design-system/v0.55.1 -- apps/shared/design-system`).
29
+ No source changes intended and no consumer action required.
30
+
3
31
  ## 0.55.0
4
32
 
33
+ - **Icon-only standard row actions (Arman, October 2).** `rowActions` now returns
34
+ `MatrxTableIconAction[]`: id, icon component, accessible label, callback and optional
35
+ tooltip, disabled/loading state, tone and button variant. The package owns button markup
36
+ and sizing; no children, text renderer or React-node escape hatch is accepted. A complex
37
+ menu/editor declares a column with `customActions` instead. That column is non-data,
38
+ not draggable, excluded from copy/spreadsheet cells, and carries the live record controls.
39
+ Custom header controls belong to that column's `header`; `rowActionsHeader` is removed.
40
+ Frontend, Dashboard, Records Grid and desktop callers are migrated without changing writes.
41
+ Guards: `TableIconActions.test.tsx`, edit-actions, layout-look, density and row-cost tests.
42
+
43
+
5
44
  - **Custom fields on every list (lane 7 STANDARD-TABLES W5).** `MatrxDataTable` takes `rowToken`
6
45
  (the registry token of its rows); the host port `useCustomFieldColumns(token, organizationIds)` —
7
46
  a hook bound once — answers that token's custom-field columns for the rows' own organizations
package/README.md CHANGED
@@ -223,3 +223,23 @@ component lifetime. A return to that identity restores its drafts; drafts from
223
223
  other results offer Copy and confirmed Discard, never a save against the current
224
224
  rows. Applications own persistence across unmounts and must remount the table
225
225
  when changing authenticated users so prior-user drafts are not exposed.
226
+
227
+ ### Table row actions
228
+
229
+ Standard `MatrxDataTable.rowActions` returns icon descriptors, never React content:
230
+
231
+ ```tsx
232
+ rowActions={(row) => [{
233
+ id: "inspect", icon: Eye, label: `Inspect ${row.name}`,
234
+ tooltip: "Open record details", onClick: () => openRecord(row.id),
235
+ variant: "ghost", tone: "primary",
236
+ }]}
237
+ ```
238
+
239
+ `label` is the accessible name and default tooltip, not visible button text. `disabled` and
240
+ `loading` retain the icon button; the table owns density and sizing. `onClick` receives the
241
+ button event for callers that need modifier keys. A menu, editor or other React content must
242
+ be declared in its own column: `{ id: "workflow", header: "Workflow", customActions: (row,
243
+ controls) => <WorkflowMenu row={row} controls={controls} /> }`. Custom columns carry live
244
+ record controls, never participate in sort/filter/copy/spreadsheet data, and are not draggable
245
+ (their headers may contain controls). Hidden custom columns stay hidden in mobile cards too.
@@ -1,5 +1,5 @@
1
1
  import { AgentPayloadInput } from './copy-types.cjs';
2
- import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../layered-filters-v-hFI3Pk.cjs';
2
+ import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../layered-filters-CNFxkmfs.cjs';
3
3
  import '../content-transfer.cjs';
4
4
  import 'react';
5
5
  import '@ai-matrx/kit/content-transfer';
@@ -1,5 +1,5 @@
1
1
  import { AgentPayloadInput } from './copy-types.js';
2
- import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../layered-filters-DlGwwJbD.js';
2
+ import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../layered-filters-cXDqSLSR.js';
3
3
  import '../content-transfer.js';
4
4
  import 'react';
5
5
  import '@ai-matrx/kit/content-transfer';
@@ -1,4 +1,4 @@
1
- import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../layered-filters-v-hFI3Pk.cjs';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../layered-filters-CNFxkmfs.cjs';
2
2
  import '../content-transfer.cjs';
3
3
  import 'react';
4
4
  import '@ai-matrx/kit/content-transfer';
@@ -1,4 +1,4 @@
1
- import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../layered-filters-DlGwwJbD.js';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../layered-filters-cXDqSLSR.js';
2
2
  import '../content-transfer.js';
3
3
  import 'react';
4
4
  import '@ai-matrx/kit/content-transfer';
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { ComponentType, ReactNode, MouseEventHandler } from 'react';
3
3
  import { CopyControlProps } from './copy-types.cjs';
4
4
  export { AgentPayloadInput, AiCustomSource, AiVariant, CopyExportConfig } from './copy-types.cjs';
5
- import { M as MatrxColumnDef, b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../layered-filters-v-hFI3Pk.cjs';
5
+ import { M as MatrxColumnDef, b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../layered-filters-CNFxkmfs.cjs';
6
6
  import { MatrxTableMenuItem, MatrxTableMenuTarget, MatrxTableMenuPayload, MatrxTableMenuSectionsResolver, MatrxTableMenuIconName } from './menu-targets.cjs';
7
7
  export { MatrxTableMenuSection } from './menu-targets.cjs';
8
8
  import '../content-transfer.cjs';
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { ComponentType, ReactNode, MouseEventHandler } from 'react';
3
3
  import { CopyControlProps } from './copy-types.js';
4
4
  export { AgentPayloadInput, AiCustomSource, AiVariant, CopyExportConfig } from './copy-types.js';
5
- import { M as MatrxColumnDef, b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../layered-filters-DlGwwJbD.js';
5
+ import { M as MatrxColumnDef, b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../layered-filters-cXDqSLSR.js';
6
6
  import { MatrxTableMenuItem, MatrxTableMenuTarget, MatrxTableMenuPayload, MatrxTableMenuSectionsResolver, MatrxTableMenuIconName } from './menu-targets.js';
7
7
  export { MatrxTableMenuSection } from './menu-targets.js';
8
8
  import '../content-transfer.js';