@ai-matrx/design-system 0.32.0 → 0.35.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.
- package/CHANGELOG.md +62 -0
- package/dist/content-transfer.cjs +3 -1
- package/dist/content-transfer.cjs.map +1 -1
- package/dist/content-transfer.js +3 -1
- package/dist/content-transfer.js.map +1 -1
- package/dist/data-table/copy-helpers.d.cts +1 -1
- package/dist/data-table/copy-helpers.d.ts +1 -1
- package/dist/data-table/data-row-inspector.cjs +3 -1
- package/dist/data-table/data-row-inspector.cjs.map +1 -1
- package/dist/data-table/data-row-inspector.js +3 -1
- package/dist/data-table/data-row-inspector.js.map +1 -1
- package/dist/data-table/data-row-window.cjs +3 -1
- package/dist/data-table/data-row-window.cjs.map +1 -1
- package/dist/data-table/data-row-window.js +3 -1
- package/dist/data-table/data-row-window.js.map +1 -1
- package/dist/data-table/filter-engine.d.cts +1 -1
- package/dist/data-table/filter-engine.d.ts +1 -1
- package/dist/data-table/host.d.cts +1 -1
- package/dist/data-table/host.d.ts +1 -1
- package/dist/data-table/index.cjs +95 -34
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.d.cts +2 -2
- package/dist/data-table/index.d.ts +2 -2
- package/dist/data-table/index.js +95 -34
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/infer-filter.d.cts +1 -1
- package/dist/data-table/infer-filter.d.ts +1 -1
- package/dist/data-table/layered-filters.d.cts +1 -1
- package/dist/data-table/layered-filters.d.ts +1 -1
- package/dist/data-table/query-control.d.cts +1 -1
- package/dist/data-table/query-control.d.ts +1 -1
- package/dist/data-table/types.cjs.map +1 -1
- package/dist/data-table/types.d.cts +1 -1
- package/dist/data-table/types.d.ts +1 -1
- package/dist/data-table/url-state.d.cts +1 -1
- package/dist/data-table/url-state.d.ts +1 -1
- package/dist/data-table/xlsx.d.cts +1 -1
- package/dist/data-table/xlsx.d.ts +1 -1
- package/dist/index.cjs +33 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +33 -4
- package/dist/index.js.map +1 -1
- package/dist/{types-CFmCZXVn.d.ts → types-Cxm5XK0L.d.ts} +25 -7
- package/dist/{types-CYkwg9jR.d.cts → types-kiV-CAuZ.d.cts} +25 -7
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,67 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.35.0 — 2026-09-22
|
|
4
|
+
|
|
5
|
+
**A popover may now be sized by its CONTENT, because a fixed width cannot be right for a
|
|
6
|
+
name nobody chose the length of.** (lane FIX-14.)
|
|
7
|
+
|
|
8
|
+
`PopoverContent` was `w-72` for everyone, so every surface showing content of unknown
|
|
9
|
+
length pasted its own width over it — and `@ai-matrx/records-ui`'s relation picker pasted
|
|
10
|
+
`w-64`, which is how the one control whose job is to show the name you are about to create
|
|
11
|
+
came to read `Create “Marisol Okonkwo — 418 Calle Pu`, cut mid-word.
|
|
12
|
+
|
|
13
|
+
* New `sizing` prop. `"fixed"` (default) is exactly the old `w-72` — nothing moves for any
|
|
14
|
+
existing caller. `"content"` grows to its content between an honest floor and an honest
|
|
15
|
+
ceiling: at least the trigger's width and at least 20rem (the width Airtable's and
|
|
16
|
+
Notion's link-record pickers settle on), at most 28rem, and never wider than the viewport
|
|
17
|
+
less a 1rem gutter each side. The floor is clamped by the same gutter, so on a very
|
|
18
|
+
narrow screen the ceiling still wins.
|
|
19
|
+
* **Consumer action:** a popover whose body shows a record title, a person's name, or any
|
|
20
|
+
other value the system did not choose passes `sizing="content"` and removes its own
|
|
21
|
+
`w-*` class. Content beyond the ceiling truncates with an ellipsis and a `title` — that
|
|
22
|
+
part belongs to the caller.
|
|
23
|
+
|
|
24
|
+
Measured headlessly at 1600×1000 and at 375 wide on the records-ui harness against the live
|
|
25
|
+
store: the picker's popover is 408px and shows the whole name on the desktop viewport, and
|
|
26
|
+
343px with a real `text-overflow: ellipsis` on the phone, inside the viewport both times.
|
|
27
|
+
Suite: 103 files / 1114 tests green, `tsc --noEmit` clean.
|
|
28
|
+
|
|
29
|
+
## 0.34.0 — 2026-09-21
|
|
30
|
+
|
|
31
|
+
**The release gate was red on main, and the red was a stale expectation.**
|
|
32
|
+
|
|
33
|
+
0.33.0's tag could not publish: `default-copy-regressions.test.tsx` required a
|
|
34
|
+
JSON-`null` cell to copy as the literal word `null` in HTML and CSV, and
|
|
35
|
+
`@ai-matrx/kit` 0.16.1 had just stopped doing that on purpose — a host
|
|
36
|
+
normalises a missing cell to `null` so the row keeps its shape, and a row
|
|
37
|
+
copied out of this very table arrived in Sheets carrying `null` as TEXT in its
|
|
38
|
+
empty columns (observed live 2026-09-15). The same test's workbook leg had
|
|
39
|
+
always expected an empty cell, so it was asserting two answers for one value.
|
|
40
|
+
Both clauses now expect empty, with a clause that no copied cell may contain
|
|
41
|
+
the word again. No product code changed in this release beyond 0.33.0's
|
|
42
|
+
contents.
|
|
43
|
+
|
|
44
|
+
## 0.33.0 — 2026-09-21
|
|
45
|
+
|
|
46
|
+
**The organization picker stops negating the matches one click below it, and a
|
|
47
|
+
frozen column stops showing the rows sliding under it.**
|
|
48
|
+
|
|
49
|
+
- `OrganizationPicker` — when every match for a search is a test organization,
|
|
50
|
+
the picker used to say *"Nothing matches “X” outside the test organizations
|
|
51
|
+
below."* `isTestFixture` rows are query-filtered, so those rows below **are**
|
|
52
|
+
matches for X: the sentence opened by denying the thing sitting one click
|
|
53
|
+
away, and a person who reads "nothing matches" retypes their search instead
|
|
54
|
+
of clicking. It now says what is true and carries the click that reveals
|
|
55
|
+
them — *"1 match for “vis” is in your test organizations — show them"* — and
|
|
56
|
+
reads "listed below" once open. Two clauses in
|
|
57
|
+
`src/organization-picker.test.tsx` hold the wording.
|
|
58
|
+
- `MatrxDataTable` frozen columns are painted **opaque**, with the paint taken
|
|
59
|
+
from the semantic surface tokens rather than a literal colour, so a frozen
|
|
60
|
+
column matches its theme instead of being a hardcoded swatch and the
|
|
61
|
+
scrolled rows no longer show through it.
|
|
62
|
+
|
|
63
|
+
Additive: no API changed.
|
|
64
|
+
|
|
3
65
|
## 0.32.0 — 2026-09-21
|
|
4
66
|
|
|
5
67
|
**The organization picker stopped being a filing cabinet.**
|
|
@@ -597,6 +597,7 @@ var PopoverContent = React7.forwardRef(
|
|
|
597
597
|
sideOffset = 4,
|
|
598
598
|
container,
|
|
599
599
|
animated = true,
|
|
600
|
+
sizing = "fixed",
|
|
600
601
|
...props
|
|
601
602
|
}, ref) => {
|
|
602
603
|
const portalContainer = usePortalContainer(container);
|
|
@@ -613,7 +614,8 @@ var PopoverContent = React7.forwardRef(
|
|
|
613
614
|
// z, DOM portal order decides, so a dialog opened FROM a popover stacks
|
|
614
615
|
// above it, and a popover opened from a dialog still stacks above the
|
|
615
616
|
// dialog. z-[10001] buried dialogs behind fullscreen popovers.
|
|
616
|
-
"z-[10000]
|
|
617
|
+
"z-[10000] max-h-[var(--radix-popover-content-available-height)] overflow-y-auto overscroll-contain rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none",
|
|
618
|
+
sizing === "content" ? "w-auto min-w-[min(max(var(--radix-popover-trigger-width),20rem),calc(100vw-2rem))] max-w-[min(28rem,calc(100vw-2rem))]" : "w-72",
|
|
617
619
|
animated && MOTION_POPPER,
|
|
618
620
|
className
|
|
619
621
|
),
|