@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/dist/index.d.cts
CHANGED
|
@@ -1089,6 +1089,34 @@ interface PopoverContentProps extends React.ComponentPropsWithoutRef<typeof Popo
|
|
|
1089
1089
|
* `styles.css` already honours `prefers-reduced-motion`.
|
|
1090
1090
|
*/
|
|
1091
1091
|
animated?: boolean;
|
|
1092
|
+
/**
|
|
1093
|
+
* HOW WIDE THE POPOVER IS ALLOWED TO BE, and it is the SYSTEM that decides — never a
|
|
1094
|
+
* surface pasting its own `w-64` over the default (lane FIX-14, 2026-09-22).
|
|
1095
|
+
*
|
|
1096
|
+
* `"fixed"` (default) is the historical `w-72`: right for a menu of short, known
|
|
1097
|
+
* labels, where a ragged edge would look broken.
|
|
1098
|
+
*
|
|
1099
|
+
* `"content"` is for a popover whose whole job is to SHOW SOMETHING THE SYSTEM DID
|
|
1100
|
+
* NOT CHOOSE — a person's name, a record's title, a row the user is about to
|
|
1101
|
+
* create. The relation picker offered
|
|
1102
|
+
*
|
|
1103
|
+
* Create “Marisol Okonkwo — 418 Calle Pu
|
|
1104
|
+
*
|
|
1105
|
+
* inside a 16rem box, cut mid-word, on the one control that exists to show the name
|
|
1106
|
+
* being created. A fixed width cannot be right for content of unknown length, so
|
|
1107
|
+
* this one grows to its content between an honest floor and an honest ceiling:
|
|
1108
|
+
*
|
|
1109
|
+
* · at least the trigger's own width, and at least 20rem — the width Airtable's and
|
|
1110
|
+
* Notion's link-record pickers settle on, and wide enough that an ordinary
|
|
1111
|
+
* "name — street, town" fits on one line;
|
|
1112
|
+
* · at most 28rem, and never wider than the viewport less a 1rem gutter each side,
|
|
1113
|
+
* so it still fits a 375px phone with nothing running off the screen. The floor is
|
|
1114
|
+
* clamped by the same gutter, so on a very narrow screen the ceiling still wins.
|
|
1115
|
+
*
|
|
1116
|
+
* Beyond that ceiling the CONTENT truncates with an ellipsis and carries a `title`.
|
|
1117
|
+
* Growing, then ellipsis — never a mid-word cut.
|
|
1118
|
+
*/
|
|
1119
|
+
sizing?: "fixed" | "content";
|
|
1092
1120
|
}
|
|
1093
1121
|
declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
1094
1122
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1089,6 +1089,34 @@ interface PopoverContentProps extends React.ComponentPropsWithoutRef<typeof Popo
|
|
|
1089
1089
|
* `styles.css` already honours `prefers-reduced-motion`.
|
|
1090
1090
|
*/
|
|
1091
1091
|
animated?: boolean;
|
|
1092
|
+
/**
|
|
1093
|
+
* HOW WIDE THE POPOVER IS ALLOWED TO BE, and it is the SYSTEM that decides — never a
|
|
1094
|
+
* surface pasting its own `w-64` over the default (lane FIX-14, 2026-09-22).
|
|
1095
|
+
*
|
|
1096
|
+
* `"fixed"` (default) is the historical `w-72`: right for a menu of short, known
|
|
1097
|
+
* labels, where a ragged edge would look broken.
|
|
1098
|
+
*
|
|
1099
|
+
* `"content"` is for a popover whose whole job is to SHOW SOMETHING THE SYSTEM DID
|
|
1100
|
+
* NOT CHOOSE — a person's name, a record's title, a row the user is about to
|
|
1101
|
+
* create. The relation picker offered
|
|
1102
|
+
*
|
|
1103
|
+
* Create “Marisol Okonkwo — 418 Calle Pu
|
|
1104
|
+
*
|
|
1105
|
+
* inside a 16rem box, cut mid-word, on the one control that exists to show the name
|
|
1106
|
+
* being created. A fixed width cannot be right for content of unknown length, so
|
|
1107
|
+
* this one grows to its content between an honest floor and an honest ceiling:
|
|
1108
|
+
*
|
|
1109
|
+
* · at least the trigger's own width, and at least 20rem — the width Airtable's and
|
|
1110
|
+
* Notion's link-record pickers settle on, and wide enough that an ordinary
|
|
1111
|
+
* "name — street, town" fits on one line;
|
|
1112
|
+
* · at most 28rem, and never wider than the viewport less a 1rem gutter each side,
|
|
1113
|
+
* so it still fits a 375px phone with nothing running off the screen. The floor is
|
|
1114
|
+
* clamped by the same gutter, so on a very narrow screen the ceiling still wins.
|
|
1115
|
+
*
|
|
1116
|
+
* Beyond that ceiling the CONTENT truncates with an ellipsis and carries a `title`.
|
|
1117
|
+
* Growing, then ellipsis — never a mid-word cut.
|
|
1118
|
+
*/
|
|
1119
|
+
sizing?: "fixed" | "content";
|
|
1092
1120
|
}
|
|
1093
1121
|
declare const PopoverContent: React.ForwardRefExoticComponent<PopoverContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
1094
1122
|
|
package/dist/index.js
CHANGED
|
@@ -1601,6 +1601,7 @@ var PopoverContent = React16.forwardRef(
|
|
|
1601
1601
|
sideOffset = 4,
|
|
1602
1602
|
container,
|
|
1603
1603
|
animated = true,
|
|
1604
|
+
sizing = "fixed",
|
|
1604
1605
|
...props
|
|
1605
1606
|
}, ref) => {
|
|
1606
1607
|
const portalContainer = usePortalContainer(container);
|
|
@@ -1617,7 +1618,8 @@ var PopoverContent = React16.forwardRef(
|
|
|
1617
1618
|
// z, DOM portal order decides, so a dialog opened FROM a popover stacks
|
|
1618
1619
|
// above it, and a popover opened from a dialog still stacks above the
|
|
1619
1620
|
// dialog. z-[10001] buried dialogs behind fullscreen popovers.
|
|
1620
|
-
"z-[10000]
|
|
1621
|
+
"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",
|
|
1622
|
+
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",
|
|
1621
1623
|
animated && MOTION_POPPER,
|
|
1622
1624
|
className
|
|
1623
1625
|
),
|
|
@@ -1724,7 +1726,7 @@ function CreatablePicker({
|
|
|
1724
1726
|
]
|
|
1725
1727
|
}
|
|
1726
1728
|
) }),
|
|
1727
|
-
/* @__PURE__ */ jsx20(PopoverContent, { align: "start", className: "
|
|
1729
|
+
/* @__PURE__ */ jsx20(PopoverContent, { sizing: "content", align: "start", className: "p-0", children: /* @__PURE__ */ jsxs9(
|
|
1728
1730
|
Command,
|
|
1729
1731
|
{
|
|
1730
1732
|
filter: (itemValue, search, keywords) => {
|
|
@@ -3522,13 +3524,40 @@ function OrganizationPicker({
|
|
|
3522
3524
|
}
|
|
3523
3525
|
) : listed.length === 0 ? (
|
|
3524
3526
|
/* THE ARCHIVED-ITEMS LAW, honesty half: "nothing" may only be said
|
|
3525
|
-
when both halves are empty. Here the other half is one line down.
|
|
3527
|
+
when both halves are empty. Here the other half is one line down.
|
|
3528
|
+
AND IT SAYS WHAT IS TRUE, NOT WHAT IS EMPTY. The earlier sentence
|
|
3529
|
+
read "Nothing matches “X” outside the test organizations below" —
|
|
3530
|
+
which opens by negating the very rows sitting one click away, and
|
|
3531
|
+
`fixtures` IS query-filtered, so those rows ARE matches for X. A
|
|
3532
|
+
person reading "nothing matches" retypes their search instead of
|
|
3533
|
+
clicking. So: count the matches, say where they are, and carry
|
|
3534
|
+
the click that reveals them — the same shape as the honest
|
|
3535
|
+
empty-filter twin one line down. (TAILS-3) */
|
|
3526
3536
|
/* @__PURE__ */ jsx38(
|
|
3527
3537
|
"p",
|
|
3528
3538
|
{
|
|
3529
3539
|
className: "px-2 py-2 text-xs text-muted-foreground",
|
|
3530
3540
|
"data-slot": "organization-picker-only-fixtures",
|
|
3531
|
-
children: query.trim() ?
|
|
3541
|
+
children: query.trim() ? /* @__PURE__ */ jsxs21(Fragment2, { children: [
|
|
3542
|
+
fixtures.length === 1 ? `1 match for \u201C${query.trim()}\u201D is in your test organizations` : `All ${fixtures.length} matches for \u201C${query.trim()}\u201D are in your test organizations`,
|
|
3543
|
+
showFixtures ? ", listed below." : /* @__PURE__ */ jsxs21(Fragment2, { children: [
|
|
3544
|
+
" \u2014 ",
|
|
3545
|
+
/* @__PURE__ */ jsx38(
|
|
3546
|
+
"button",
|
|
3547
|
+
{
|
|
3548
|
+
type: "button",
|
|
3549
|
+
className: "underline underline-offset-2 hover:text-foreground",
|
|
3550
|
+
"data-slot": "organization-picker-show-fixtures",
|
|
3551
|
+
onClick: (event) => {
|
|
3552
|
+
event.stopPropagation();
|
|
3553
|
+
setShowFixtures(true);
|
|
3554
|
+
},
|
|
3555
|
+
children: "show them"
|
|
3556
|
+
}
|
|
3557
|
+
),
|
|
3558
|
+
"."
|
|
3559
|
+
] })
|
|
3560
|
+
] }) : `Every organization you belong to is a test organization \u2014 all ${fixtures.length} are below.`
|
|
3532
3561
|
}
|
|
3533
3562
|
)
|
|
3534
3563
|
) : /* @__PURE__ */ jsx38("ul", { className: "max-h-72 overflow-y-auto", role: "listbox", "aria-label": "Organizations", children: listed.map(renderRow) }),
|