@ai-matrx/design-system 0.86.366 → 0.86.367

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,12 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.86.367
4
+
5
+ - `SwipeDeck`: the answered list's "Show me how" is its own quiet button (`matrx-sd-review-help`, 40px, one line, 16px icon) beside "Back to cards"; it borrowed the legend-chip style, which sizes no icon, so the icon drew full size and the words wrapped. No consumer action required.
6
+ - **Contact values: "Search the web" runs in the host's own search, prefetched.** `ContactValuesHost` takes `searchWeb(query)` (open the host's search in place instead of an outbound Google link) and `prefetchWebSearch(query)` → `WebSearchPrefetch` (`get` / `subscribe`; `get` returns the same object until the status changes). The peek starts the prefetch when it opens and the row shows "Searching…", then "N results" / "No results"; the row always sits last in Actions, built by the shell from each value's `webSearch` words, and closes the peek when pressed. Phones search as `949-404-4444`. Peek rows (`PeekRow`, `PeekCardRowsItem`) gain `onSelect`, an in-place action drawn like a link that wins over `href`. Guards: `contact-values.test.tsx` "searches the web in the host's own search", "starts the host's search when the peek opens". Consumer action: pass `searchWeb` (and optionally `prefetchWebSearch`) to keep searches in-app; without them the row stays an outbound link.
7
+
3
8
  ## 0.86.366
4
9
 
5
- UNVERIFIED: this release has no Unreleased entry and the source comparison could not be made (the caller supplied no source comparison). Whether source changed is unknown; consumer action is unknown.
6
- Check the package's gitHead on npm against this version's gitHead: `git diff <previous gitHead> <this gitHead> -- apps/shared/design-system/src`.
10
+ SOURCE CHANGED WITH NO RELEASE NOTE. This release shipped source changes that nobody described in an Unreleased entry,
11
+ so they may include breaking API changes. Consumer action is UNKNOWN: read the diff before upgrading.
12
+ Diff: `git diff 19ee9cd304 5fa3da8c6c -- apps/shared/design-system/src`
13
+
14
+ Changed shipped source files (2):
15
+ - `apps/shared/design-system/src/desktop/errors.ts`
16
+ - `apps/shared/design-system/src/error-sentence.ts`
7
17
 
8
18
  ## 0.86.365
9
19
 
20
+ - Icon tile labels (`Tile layout="icon"`) wrap only at spaces — never inside a word — and a word wider than its tile ends in an ellipsis; the Alchemy copy palette widens 15.5rem → 16.5rem so "Markdown" and "Formatted" fit on one line. No consumer action required.
10
21
  - `SwipeDeck` gains `titleSize` (`"fit"` default | `"page"`: the card text at a page-title size in a 760px reading column, top-aligned; the stage still scrolls when the card is taller) and `moreOnCard` (default `true`; `false` drops the deck's own row of off-edge answers so the host draws every answer through `context.answer` — their shortcuts still answer). No consumer action required.
11
22
 
12
23
  ## 0.86.364
@@ -55,7 +55,9 @@ button[data-alchemy-trigger="icon"] > svg { width: 0.875rem; height: 0.875rem; s
55
55
  /* THE PALETTE (Arman, 2026-10-14): one surface — no bordered box inside it — small rows, no hint
56
56
  text on screen (a row's hint is its tooltip), one row of at most four copy tiles. */
57
57
  .matrx-alchemy-menu.matrx-alchemy-palette {
58
- width: min(15.5rem, calc(100vw - 2rem));
58
+ /* 16.5rem: each of the four tiles leaves ~58px for its 11px label — "Markdown" and "Formatted" are
59
+ 55px, and at 15.5rem (54px) they broke mid-word (2026-10-24). */
60
+ width: min(16.5rem, calc(100vw - 2rem));
59
61
  min-width: 0;
60
62
  padding: 0.25rem;
61
63
  max-height: var(--radix-popover-content-available-height, 80dvh);
package/dist/controls.css CHANGED
@@ -1741,8 +1741,13 @@
1741
1741
  -webkit-box-orient: vertical;
1742
1742
  -webkit-line-clamp: 2;
1743
1743
  overflow: hidden;
1744
- overflow-wrap: break-word;
1745
- text-overflow: clip;
1744
+ /* Whole words only: a label never breaks inside a word ("Markdow / n", 2026-10-24) — it wraps at a
1745
+ space, and a word wider than the tile ends in an ellipsis. !important beats the host's mobile
1746
+ `span { word-break: break-word }`. */
1747
+ overflow-wrap: normal !important;
1748
+ word-break: normal !important;
1749
+ hyphens: manual;
1750
+ text-overflow: ellipsis;
1746
1751
  white-space: normal;
1747
1752
  font-size: 0.6875rem !important;
1748
1753
  font-weight: 400 !important;
@@ -23763,9 +23763,14 @@ function MatrxDataTableCore(coreProps) {
23763
23763
  };
23764
23764
  const selectionNoun = selection?.noun ?? "row";
23765
23765
  const selectionCount = allMatching && selectionMatchingTotal !== void 0 ? selectionMatchingTotal : selectedIdSet.size;
23766
- const offerSelectAllMatching = Boolean(selection) && !allMatching && allOnPageSelected && selectionMatchingTotal !== void 0 && selectionMatchingTotal > selectedIdSet.size;
23766
+ const offerSelectAllMatching = Boolean(selection) && selection?.selectAllMatching !== false && !allMatching && allOnPageSelected && selectionMatchingTotal !== void 0 && selectionMatchingTotal > selectedIdSet.size;
23767
23767
  const selectAllMatching = () => {
23768
23768
  if (!selection || selectionMatchingTotal === void 0) return;
23769
+ if (typeof selection.selectAllMatching === "function") {
23770
+ lastToggledIndex.current = null;
23771
+ selection.selectAllMatching();
23772
+ return;
23773
+ }
23769
23774
  lastToggledIndex.current = null;
23770
23775
  if (selectionMatchingTotal <= orderedRows.length) {
23771
23776
  const next = new Set(selectedIdSet);