@ai-matrx/design-system 0.86.351 → 0.86.353

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 CHANGED
@@ -1,7 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.86.353
4
+
5
+ - Test-only: `chip-geometry.test.tsx` now pins the tone selector `:is(.matrx-control-chip, .matrx-tile, .matrx-tile-icon)` that 0.86.351 widened for `Tile iconTone`; the isolation check failed on the stale two-member pattern. No consumer action required.
6
+
7
+ ## 0.86.352
8
+
9
+ SOURCE CHANGED WITH NO RELEASE NOTE. This release shipped source changes that nobody described in an Unreleased entry,
10
+ so they may include breaking API changes. Consumer action is UNKNOWN: read the diff before upgrading.
11
+ Diff: `git diff e79e8f43fa f0db3b8d0a -- apps/shared/design-system/src`
12
+
13
+ Changed shipped source files (6):
14
+ - `apps/shared/design-system/src/desktop/desktop.css`
15
+ - `apps/shared/design-system/src/desktop/index.ts`
16
+ - `apps/shared/design-system/src/desktop/layout.tsx`
17
+ - `apps/shared/design-system/src/desktop/sheet.tsx`
18
+ - `apps/shared/design-system/src/desktop/table-filter.tsx`
19
+ - `apps/shared/design-system/src/desktop/table.tsx`
20
+
3
21
  ## 0.86.351
4
22
 
23
+ - Every contact value (`ContactValue`, `PhoneValue`, `EmailValue`, `AddressValue`, `UrlValue`, `SocialHandleValue`) gains `about`: peek blocks from the host (where the value was found, its answer) drawn inside the value's ONE peek, before Actions — so a host never wraps the value in a second peek. Additive; no consumer action required.
5
24
  - New `Checklist`, `ChecklistItem`, `ChecklistMark` and `ChecklistMeter` controls: a status-marked list of conditions with a segmented progress meter and one action slot per row. Additive; no consumer action required.
6
25
  - `Tile` gains `iconTone` (a `ChipTone`): the icon alone becomes a 28px colored square while the card stays neutral — a grid of actions where each job keeps its hue. Additive; no consumer action required.
7
26
 
package/dist/desktop.cjs CHANGED
@@ -2393,7 +2393,7 @@ var DialogContent2 = React14.forwardRef(function DialogContent3({ className, sho
2393
2393
  function DialogHeader2({ className, ...props }) {
2394
2394
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogHeader, { className: cn("gap-1 space-y-0 pr-0 text-left sm:text-left", className), ...props });
2395
2395
  }
2396
- function DialogBody({ className, children, ...props }) {
2396
+ function DialogBody({ className, children, minHeight, ...props }) {
2397
2397
  const ref = React14.useRef(null);
2398
2398
  const [overflowing, setOverflowing] = React14.useState(false);
2399
2399
  React14.useLayoutEffect(() => {
@@ -2407,7 +2407,7 @@ function DialogBody({ className, children, ...props }) {
2407
2407
  for (const child of Array.from(el.children)) observer.observe(child);
2408
2408
  return () => observer.disconnect();
2409
2409
  }, [children]);
2410
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref, "data-slot": "sheet-body", "data-overflowing": overflowing ? "" : void 0, className: cn("flex min-h-0 flex-col gap-4", className), ...props, children });
2410
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { ref, "data-slot": "sheet-body", "data-min-height": minHeight, "data-overflowing": overflowing ? "" : void 0, className: cn("flex min-h-0 flex-col gap-4", className), ...props, children });
2411
2411
  }
2412
2412
  function DialogFooter2({ className, ...props }) {
2413
2413
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DialogFooter, { className: cn("flex-row justify-end gap-2 space-x-0 bg-content pt-1 sm:gap-2 sm:space-x-0", className), ...props });
@@ -2995,6 +2995,7 @@ function holdsElements(children) {
2995
2995
  }
2996
2996
  function Notices({ children, className, onHeight, ...props }) {
2997
2997
  const stack = React16.useRef(null);
2998
+ const parent = React16.useContext(NoticeStackContext);
2998
2999
  const [registry3] = React16.useState(createNoticeRegistry);
2999
3000
  const layout = useNoticeStackLayout(registry3);
3000
3001
  const drawn = layout.total > 0;
@@ -3012,6 +3013,7 @@ function Notices({ children, className, onHeight, ...props }) {
3012
3013
  onHeight(0);
3013
3014
  };
3014
3015
  }, [onHeight, drawn]);
3016
+ if (parent) return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_jsx_runtime20.Fragment, { children });
3015
3017
  if (!holdsElements(children)) return null;
3016
3018
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3017
3019
  "div",
@@ -3025,10 +3027,21 @@ function Notices({ children, className, onHeight, ...props }) {
3025
3027
  className: cn("flex flex-col items-stretch gap-2 empty:hidden", className),
3026
3028
  ...props,
3027
3029
  children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(NoticeStackContext.Provider, { value: registry3, children: [
3028
- layout.folded > 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("button", { type: "button", "data-slot": "notices-more", className: "order-first self-end rounded-full px-2 py-0.5", onClick: () => registry3.expand(), children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Text, { variant: "caption", tone: "secondary", children: [
3029
- layout.folded,
3030
- " more"
3031
- ] }) }) : null,
3030
+ layout.folded > 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3031
+ Button,
3032
+ {
3033
+ type: "button",
3034
+ "data-slot": "notices-more",
3035
+ variant: "plain",
3036
+ size: "sm",
3037
+ className: "order-first self-end rounded-full px-2 py-0.5",
3038
+ onClick: () => registry3.expand(),
3039
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Text, { variant: "caption", tone: "secondary", children: [
3040
+ layout.folded,
3041
+ " more"
3042
+ ] })
3043
+ }
3044
+ ) : null,
3032
3045
  children
3033
3046
  ] })
3034
3047
  }
@@ -5730,13 +5743,13 @@ function TableFilterTokens({ columns, state, onChange }) {
5730
5743
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(RemovableTag, { "data-table-filter-token": column.key, className: "shrink-0", removeLabel: `Remove the ${name} filter`, onRemove: () => onChange(setValues(state, column.key, [])), children: `${name}: ${labels.join(", ")}` }, column.key);
5731
5744
  }) });
5732
5745
  }
5733
- function TableFilterBar({ columns, rows, state, onChange, shown, label }) {
5746
+ function TableFilterBar({ columns, rows, state, onChange, shown, label, noun }) {
5734
5747
  const searchable = columns.some((c) => c.search);
5735
5748
  const active = filterActive(state);
5736
5749
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { "data-slot": "data-table-filter-bar", className: "flex h-table-filter-bar shrink-0 items-center gap-2 border-b border-separator px-3", children: [
5737
5750
  /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden", children: [
5738
5751
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(TableFilterTokens, { columns, state, onChange }),
5739
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Text, { tone: "secondary", className: "shrink-0 tabular-nums", "data-table-filter-count": shown, children: active ? `${shown} of ${rows.length}` : `${rows.length}` })
5752
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Text, { tone: "secondary", className: "shrink-0 tabular-nums", "data-table-filter-count": shown, children: `${active ? `${shown} of ${rows.length}` : `${rows.length}`}${noun ? ` ${rows.length === 1 ? noun[0] : noun[1]}` : ""}` })
5740
5753
  ] }),
5741
5754
  searchable ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
5742
5755
  SearchField,
@@ -5849,6 +5862,7 @@ function DataTable({
5849
5862
  onFilterStateChange,
5850
5863
  defaultFilter,
5851
5864
  filterBar = true,
5865
+ noun,
5852
5866
  className,
5853
5867
  "aria-label": ariaLabel,
5854
5868
  columns: allColumns,
@@ -6039,7 +6053,7 @@ function DataTable({
6039
6053
  }
6040
6054
  };
6041
6055
  const contextItems = menuRow !== null && rowContextMenu ? rowContextMenu(menuRow) ?? null : null;
6042
- const bar = filterable && filterBar && givenRows.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TableFilterBar, { columns: allColumns, rows: givenRows, state: filter, onChange: setFilter, shown: rows.length, label: ariaLabel.toLowerCase() }) : null;
6056
+ const bar = filterable && filterBar && givenRows.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(TableFilterBar, { columns: allColumns, rows: givenRows, state: filter, onChange: setFilter, shown: rows.length, label: ariaLabel.toLowerCase(), noun }) : null;
6043
6057
  const framed = (body) => bar ? /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
6044
6058
  "div",
6045
6059
  {