@ai-matrx/design-system 0.44.0 → 0.44.2

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 (34) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/content-transfer.css +5 -3
  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 +20 -0
  10. package/dist/data-table/index.cjs.map +1 -1
  11. package/dist/data-table/index.d.cts +2 -2
  12. package/dist/data-table/index.d.ts +2 -2
  13. package/dist/data-table/index.js +20 -0
  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 +4 -2
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.js +4 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/{types-CUR8Hbt5.d.ts → types-Bzzzed5d.d.ts} +24 -1
  33. package/dist/{types-CqU57qk8.d.cts → types-cvgKRetM.d.cts} +24 -1
  34. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.44.2 (2026-09-26 — a context-menu region is never sized like an icon)
4
+
5
+ * **Fix:** `content-transfer.css` sized every `[data-alchemy-trigger]` to 2rem (2.75rem on coarse
6
+ pointers). `data-alchemy-trigger="context"` marks the whole REGION a context menu wraps, so once
7
+ matrx-frontend's context menu adopted it every wrapped chat message collapsed to 32px wide (video,
8
+ job card and text, found live 2026-09-26). The sizing rules now exclude `="context"`.
9
+ * Test: `styles.test.ts` "never sizes a context-menu region as if it were an icon button"
10
+ (RED without the change → GREEN).
11
+
12
+ **Consumer action:** none.
13
+
14
+ ## 0.44.1 (2026-09-26 — an indeterminate Progress actually sweeps)
15
+
16
+ * **Fix:** an indeterminate `Progress` (`value={null}`) carried `w-full` beside
17
+ `matrx-progress-indeterminate`. The sweep's 40% width lives in the package layer, which a host's
18
+ utilities layer outranks, so every indeterminate bar painted a solid full-width fill and never
19
+ moved (found live on matrx-frontend's video job card). The indicator now carries `w-full` only
20
+ when it is determinate.
21
+ * Test: `controls.test.tsx` "never pairs the indeterminate sweep with a full-width utility"
22
+ (RED without the change → GREEN).
23
+ * **Feature (records-ui merge tranche 6l):** `spreadsheet.onSelectionChange(selection | null)` — the
24
+ table tells its consumer where the person is standing after every move of the cell cursor or the
25
+ selected rectangle: the active cell, the rectangle's row and column ids in visual order, its cell
26
+ count and its TSV. The merged record grid builds its side-chat agent context from it. Test:
27
+ `MatrxDataTable.selection-is-told.test.tsx` (RED 1/2 on 0.44.0 → GREEN 2/2).
28
+
29
+ **Consumer action:** none.
30
+
3
31
  ## 0.44.0 (2026-09-26 — the layer the person used last is on top)
4
32
 
5
33
  * **`announceLayerFront(element)` / `LAYER_FRONT_EVENT` (`matrx:layer-front`)** — one signal
@@ -1,7 +1,9 @@
1
1
  /* Structural Alchemy rules. Hosts own token values; Tailwind is never required. */
2
2
  @import "./tap-target.css";
3
- /* Match Matrx sidebar icon geometry and its theme-aware color vocabulary. */
4
- [data-alchemy-trigger] {
3
+ /* Match Matrx sidebar icon geometry and its theme-aware color vocabulary.
4
+ `data-alchemy-trigger="context"` marks a whole context-menu REGION (a chat
5
+ message, a row), never an icon button, so it is never sized here. */
6
+ [data-alchemy-trigger]:not([data-alchemy-trigger="context"]) {
5
7
  width: 2rem;
6
8
  height: 2rem;
7
9
  }
@@ -25,7 +27,7 @@
25
27
  [data-alchemy-trigger="outline"] { width: 1.75rem; height: 1.75rem; padding: 0; }
26
28
  [data-alchemy-trigger="outline"] > svg { width: 1rem; height: 1rem; stroke-width: 2; }
27
29
  @media (pointer: coarse) {
28
- [data-alchemy-trigger] { width: 2.75rem; height: 2.75rem; }
30
+ [data-alchemy-trigger]:not([data-alchemy-trigger="context"]) { width: 2.75rem; height: 2.75rem; }
29
31
  }
30
32
  .matrx-alchemy {
31
33
  display: inline-flex;
@@ -1,5 +1,5 @@
1
1
  import { AgentPayloadInput } from './copy-types.cjs';
2
- import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-CqU57qk8.cjs';
2
+ import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-cvgKRetM.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 '../types-CUR8Hbt5.js';
2
+ import { g as MatrxDataTableCopyConfig, M as MatrxColumnDef } from '../types-Bzzzed5d.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 '../types-CqU57qk8.cjs';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-cvgKRetM.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 '../types-CUR8Hbt5.js';
1
+ import { M as MatrxColumnDef, C as ColumnFiltersState, S as SortState, L as LayeredFilterRule, T as TableSearchMatchMode, a as ColumnFilterValue } from '../types-Bzzzed5d.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 { b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../types-CqU57qk8.cjs';
5
+ import { b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../types-cvgKRetM.cjs';
6
6
  import { MatrxTableMenuTarget, MatrxTableMenuPayload, MatrxTableMenuSectionsResolver, MatrxTableMenuIconName } from './menu-targets.cjs';
7
7
  export { MatrxTableMenuItem, 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 { b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../types-CUR8Hbt5.js';
5
+ import { b as TableSavedViewsProps, c as MatrxDataTableDensity, d as MatrxDataTableRecordControls } from '../types-Bzzzed5d.js';
6
6
  import { MatrxTableMenuTarget, MatrxTableMenuPayload, MatrxTableMenuSectionsResolver, MatrxTableMenuIconName } from './menu-targets.js';
7
7
  export { MatrxTableMenuItem, MatrxTableMenuSection } from './menu-targets.js';
8
8
  import '../content-transfer.js';
@@ -13884,6 +13884,26 @@ function MatrxDataTableCore({
13884
13884
  );
13885
13885
  const sheetRef = (0, import_react21.useRef)(sheet);
13886
13886
  sheetRef.current = sheet;
13887
+ const onSheetSelectionRef = (0, import_react21.useRef)(spreadsheet?.onSelectionChange);
13888
+ onSheetSelectionRef.current = spreadsheet?.onSelectionChange;
13889
+ const sheetSelectionKey = sheet.range ? `${sheet.range.anchor.rowId}\0${sheet.range.anchor.fieldName}\0${sheet.range.focus.rowId}\0${sheet.range.focus.fieldName}\0${sheet.bounds ? `${sheet.bounds.r0}:${sheet.bounds.r1}:${sheet.bounds.c0}:${sheet.bounds.c1}` : ""}` : "";
13890
+ (0, import_react21.useEffect)(() => {
13891
+ const tell = onSheetSelectionRef.current;
13892
+ if (!tell) return;
13893
+ const current = sheetRef.current;
13894
+ if (!current.range) {
13895
+ tell(null);
13896
+ return;
13897
+ }
13898
+ const { rowIds, columnIds: columnIds2 } = current.selectionAddresses();
13899
+ tell({
13900
+ active: { rowId: current.range.focus.rowId, columnId: current.range.focus.fieldName },
13901
+ rowIds,
13902
+ columnIds: columnIds2,
13903
+ cellCount: rowIds.length * columnIds2.length,
13904
+ tsv: current.selectionTsv()
13905
+ });
13906
+ }, [sheetSelectionKey]);
13887
13907
  const searchValueRef = (0, import_react21.useRef)(searchValue);
13888
13908
  searchValueRef.current = searchValue;
13889
13909
  const facetsEnabled = Boolean(facets && facets.enabled !== false);