@ai-matrx/content-ir-react 0.20.0 → 0.20.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.
- package/CHANGELOG.md +22 -0
- package/README.md +1 -1
- package/dist/{component-resolution.types-DwKSF64x.d.cts → component-resolution.types-BQa2ik3i.d.cts} +1 -1
- package/dist/{component-resolution.types-DwKSF64x.d.ts → component-resolution.types-BQa2ik3i.d.ts} +1 -1
- package/dist/{component-resolution.types-DY4pGymy.d.cts → component-resolution.types-C_irCaHc.d.cts} +1 -1
- package/dist/{component-resolution.types-DY4pGymy.d.ts → component-resolution.types-C_irCaHc.d.ts} +1 -1
- package/dist/db-component.d.cts +1 -1
- package/dist/db-component.d.ts +1 -1
- package/dist/{directive-host-B1hcjJxS.d.cts → directive-host-CtFMuSZc.d.cts} +7 -0
- package/dist/{directive-host-B1hcjJxS.d.ts → directive-host-CtFMuSZc.d.ts} +7 -0
- package/dist/directives.cjs +13 -8
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.d.cts +2 -2
- package/dist/directives.d.ts +2 -2
- package/dist/directives.js +13 -8
- package/dist/directives.js.map +1 -1
- package/dist/{host-types-BOWu99zI.d.ts → host-types-CGcK8Nib.d.ts} +2 -2
- package/dist/{host-types-Cn2lf8q3.d.cts → host-types-mMFt5-hQ.d.cts} +2 -2
- package/dist/host.cjs.map +1 -1
- package/dist/host.d.cts +4 -4
- package/dist/host.d.ts +4 -4
- package/dist/host.js.map +1 -1
- package/dist/index.cjs +13 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +13 -8
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +13 -8
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +4 -4
- package/dist/react.d.ts +4 -4
- package/dist/react.js +13 -8
- package/dist/react.js.map +1 -1
- package/dist/resolver.d.cts +2 -2
- package/dist/resolver.d.ts +2 -2
- package/dist/{route-DVfjdUYy.d.cts → route-Bq6db_zH.d.cts} +9 -2
- package/dist/{route-CDATmjfp.d.ts → route-DStinBoZ.d.ts} +9 -2
- package/dist/route.cjs.map +1 -1
- package/dist/route.d.cts +2 -2
- package/dist/route.d.ts +2 -2
- package/dist/route.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.20.2
|
|
4
|
+
|
|
5
|
+
Automatic changed-only republish (docs/metadata drift since the last tag — see
|
|
6
|
+
`git diff npm/content-ir-react/v0.20.1..npm/content-ir-react/v0.20.2 -- apps/shared/content-ir-react`).
|
|
7
|
+
No source changes intended and no consumer action required.
|
|
8
|
+
|
|
9
|
+
## 0.20.1 — 2026-10-02
|
|
10
|
+
|
|
11
|
+
G9 leftovers (nightly clone). Guard: `__tests__/directive-card-g9.test.tsx` (3 red on 0.20.0).
|
|
12
|
+
|
|
13
|
+
- **A button never wraps its label.** At 375px "Apply" broke to "Appl / y" beside
|
|
14
|
+
"Nothing to change". Apply, Run again, Retry, Details and Show more are `whitespace-nowrap`
|
|
15
|
+
(`shrink-0`); the header group wraps and the reason text is what wraps.
|
|
16
|
+
- **A screen-reader label never names an id.** A record row's copy control read
|
|
17
|
+
"Task a8a00001". `DirectiveCopyProps.label` is now type-generic ("this task") and the new
|
|
18
|
+
`DirectiveCopyProps.record` ({ noun, id }) lets the host swap in the record's live name.
|
|
19
|
+
|
|
20
|
+
### Consumer action
|
|
21
|
+
|
|
22
|
+
- In `renderCopy`, when `props.record` is set, label the control with the record's live name
|
|
23
|
+
(the same one `renderRecord` shows), keeping `props.label` while it loads.
|
|
24
|
+
|
|
3
25
|
## 0.20.0 — 2026-10-02
|
|
4
26
|
|
|
5
27
|
The G8A review of the action cards (nightly clone). Guard:
|
package/README.md
CHANGED
|
@@ -74,5 +74,5 @@ cannot express what your host needs, add a seam; never fork the route.
|
|
|
74
74
|
## Docs
|
|
75
75
|
|
|
76
76
|
- Package internals and boundary: `FEATURE.md` beside this file.
|
|
77
|
-
- Cross-repo system-of-record: `common-docs/systems/architecture/content-ir/
|
|
77
|
+
- Cross-repo system-of-record: `common-docs/systems/architecture/content-ir/FEATURE.md`.
|
|
78
78
|
- Shape System semantics: `matrx-frontend/features/content-ir/docs/SHAPE_SYSTEM.md`.
|
package/dist/{component-resolution.types-DwKSF64x.d.cts → component-resolution.types-BQa2ik3i.d.cts}
RENAMED
|
@@ -29,7 +29,7 @@ declare const consoleErrorReporter: ContentIrErrorReporter;
|
|
|
29
29
|
* resolver contract (rulings R1 + R6), stated once for every UI.
|
|
30
30
|
*
|
|
31
31
|
* Cross-repo system-of-record:
|
|
32
|
-
* `common-docs/systems/architecture/content-ir/
|
|
32
|
+
* `common-docs/systems/architecture/content-ir/FEATURE.md` (package boundary) and
|
|
33
33
|
* `matrx-frontend/features/content-ir/docs/SHAPE_SYSTEM.md` (the semantics).
|
|
34
34
|
*
|
|
35
35
|
* Nothing here knows where a row comes from. A host supplies rows from
|
package/dist/{component-resolution.types-DwKSF64x.d.ts → component-resolution.types-BQa2ik3i.d.ts}
RENAMED
|
@@ -29,7 +29,7 @@ declare const consoleErrorReporter: ContentIrErrorReporter;
|
|
|
29
29
|
* resolver contract (rulings R1 + R6), stated once for every UI.
|
|
30
30
|
*
|
|
31
31
|
* Cross-repo system-of-record:
|
|
32
|
-
* `common-docs/systems/architecture/content-ir/
|
|
32
|
+
* `common-docs/systems/architecture/content-ir/FEATURE.md` (package boundary) and
|
|
33
33
|
* `matrx-frontend/features/content-ir/docs/SHAPE_SYSTEM.md` (the semantics).
|
|
34
34
|
*
|
|
35
35
|
* Nothing here knows where a row comes from. A host supplies rows from
|
package/dist/{component-resolution.types-DY4pGymy.d.cts → component-resolution.types-C_irCaHc.d.cts}
RENAMED
|
@@ -29,7 +29,7 @@ declare const consoleErrorReporter: ContentIrErrorReporter;
|
|
|
29
29
|
* resolver contract (rulings R1 + R6), stated once for every UI.
|
|
30
30
|
*
|
|
31
31
|
* Cross-repo system-of-record:
|
|
32
|
-
* `common-docs/systems/architecture/content-ir/
|
|
32
|
+
* `common-docs/systems/architecture/content-ir/FEATURE.md` (package boundary) and
|
|
33
33
|
* `matrx-frontend/features/content-ir/docs/SHAPE_SYSTEM.md` (the semantics).
|
|
34
34
|
*
|
|
35
35
|
* Nothing here knows where a row comes from. A host supplies rows from
|
package/dist/{component-resolution.types-DY4pGymy.d.ts → component-resolution.types-C_irCaHc.d.ts}
RENAMED
|
@@ -29,7 +29,7 @@ declare const consoleErrorReporter: ContentIrErrorReporter;
|
|
|
29
29
|
* resolver contract (rulings R1 + R6), stated once for every UI.
|
|
30
30
|
*
|
|
31
31
|
* Cross-repo system-of-record:
|
|
32
|
-
* `common-docs/systems/architecture/content-ir/
|
|
32
|
+
* `common-docs/systems/architecture/content-ir/FEATURE.md` (package boundary) and
|
|
33
33
|
* `matrx-frontend/features/content-ir/docs/SHAPE_SYSTEM.md` (the semantics).
|
|
34
34
|
*
|
|
35
35
|
* Nothing here knows where a row comes from. A host supplies rows from
|
package/dist/db-component.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { C as ComponentResolution, a as ContentIrErrorReporter } from './component-resolution.types-
|
|
2
|
+
import { C as ComponentResolution, a as ContentIrErrorReporter } from './component-resolution.types-BQa2ik3i.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* The DB-component COMPILE CACHE — session-scoped, keyed per winning row
|
package/dist/db-component.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { C as ComponentResolution, a as ContentIrErrorReporter } from './component-resolution.types-
|
|
2
|
+
import { C as ComponentResolution, a as ContentIrErrorReporter } from './component-resolution.types-BQa2ik3i.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* The DB-component COMPILE CACHE — session-scoped, keyed per winning row
|
|
@@ -121,7 +121,14 @@ interface DirectiveOpenItemOptions {
|
|
|
121
121
|
total: number;
|
|
122
122
|
}
|
|
123
123
|
interface DirectiveCopyProps {
|
|
124
|
+
/**
|
|
125
|
+
* What the control is called to a screen reader. Never an id: for a record it
|
|
126
|
+
* is type-generic ("this task"); a host with the record's live name replaces
|
|
127
|
+
* it through `record`.
|
|
128
|
+
*/
|
|
124
129
|
label: string;
|
|
130
|
+
/** The existing record this control copies, when it copies one — to name it. */
|
|
131
|
+
record?: DirectiveRecordRef;
|
|
125
132
|
/** The value to copy — the whole shell or one item. */
|
|
126
133
|
value: unknown;
|
|
127
134
|
/** The item's kind, when copying an item. */
|
|
@@ -121,7 +121,14 @@ interface DirectiveOpenItemOptions {
|
|
|
121
121
|
total: number;
|
|
122
122
|
}
|
|
123
123
|
interface DirectiveCopyProps {
|
|
124
|
+
/**
|
|
125
|
+
* What the control is called to a screen reader. Never an id: for a record it
|
|
126
|
+
* is type-generic ("this task"); a host with the record's live name replaces
|
|
127
|
+
* it through `record`.
|
|
128
|
+
*/
|
|
124
129
|
label: string;
|
|
130
|
+
/** The existing record this control copies, when it copies one — to name it. */
|
|
131
|
+
record?: DirectiveRecordRef;
|
|
125
132
|
/** The value to copy — the whole shell or one item. */
|
|
126
133
|
value: unknown;
|
|
127
134
|
/** The item's kind, when copying an item. */
|
package/dist/directives.cjs
CHANGED
|
@@ -633,7 +633,7 @@ function ApplyDirectiveButton({
|
|
|
633
633
|
type: "button",
|
|
634
634
|
disabled: askingAgain,
|
|
635
635
|
onClick: () => void handleApply(!bad),
|
|
636
|
-
className: "inline-flex items-center gap-1 rounded px-1 py-0.5 text-muted-foreground hover:bg-accent hover:text-accent-foreground disabled:opacity-50",
|
|
636
|
+
className: "inline-flex shrink-0 items-center gap-1 whitespace-nowrap rounded px-1 py-0.5 text-muted-foreground hover:bg-accent hover:text-accent-foreground disabled:opacity-50",
|
|
637
637
|
"data-apply-action": bad ? "retry" : "run-again",
|
|
638
638
|
children: [
|
|
639
639
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RotateCcwIcon, { className: "h-3 w-3" }),
|
|
@@ -673,8 +673,8 @@ function ApplyDirectiveButton({
|
|
|
673
673
|
}
|
|
674
674
|
const destructive = directive.directiveClass === "delete";
|
|
675
675
|
const muted = nothingToChange && view.status === "idle";
|
|
676
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "
|
|
677
|
-
muted ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-xs text-muted-foreground", "data-apply-nothing": "", children: "Nothing to change" }) : null,
|
|
676
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "flex min-w-0 flex-wrap items-center justify-end gap-x-2 gap-y-1", children: [
|
|
677
|
+
muted ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "min-w-0 text-xs text-muted-foreground", "data-apply-nothing": "", children: "Nothing to change" }) : null,
|
|
678
678
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
679
679
|
"button",
|
|
680
680
|
{
|
|
@@ -683,7 +683,7 @@ function ApplyDirectiveButton({
|
|
|
683
683
|
disabled: view.status === "applying" || view.status === "asking" || items.length === 0,
|
|
684
684
|
"data-apply-tone": muted ? "muted" : destructive ? "destructive" : "default",
|
|
685
685
|
title: muted ? "It sets no fields, so applying it changes nothing." : void 0,
|
|
686
|
-
className: `inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium disabled:opacity-50 ${muted ? "border-border/60 bg-background text-muted-foreground hover:bg-accent" : destructive ? "border-destructive/50 bg-background text-destructive hover:bg-destructive/10" : "border-border bg-background hover:bg-accent"}`,
|
|
686
|
+
className: `inline-flex shrink-0 items-center gap-1 whitespace-nowrap rounded-md border px-2 py-1 text-xs font-medium disabled:opacity-50 ${muted ? "border-border/60 bg-background text-muted-foreground hover:bg-accent" : destructive ? "border-destructive/50 bg-background text-destructive hover:bg-destructive/10" : "border-border bg-background hover:bg-accent"}`,
|
|
687
687
|
children: [
|
|
688
688
|
view.status === "applying" ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(LoaderIcon, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(PlayIcon, { className: "h-3.5 w-3.5" }),
|
|
689
689
|
view.status === "applying" ? `Applying${itemCount ? ` ${itemCount} ${itemCount === 1 ? "item" : "items"}` : ""}\u2026${elapsed ? ` ${elapsed}s` : ""}` : label
|
|
@@ -734,7 +734,7 @@ function FailureNotice({
|
|
|
734
734
|
type: "button",
|
|
735
735
|
onClick: () => setOpen((v) => !v),
|
|
736
736
|
"aria-expanded": open,
|
|
737
|
-
className: "ml-1 underline underline-offset-2 hover:no-underline",
|
|
737
|
+
className: "ml-1 whitespace-nowrap underline underline-offset-2 hover:no-underline",
|
|
738
738
|
"data-apply-failure-details-toggle": true,
|
|
739
739
|
children: open ? "Hide details" : "Details"
|
|
740
740
|
}
|
|
@@ -888,7 +888,12 @@ function TargetRow({
|
|
|
888
888
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "py-1 text-xs", "data-directive-target": recordId, children: [
|
|
889
889
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
890
890
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "flex min-w-0 flex-1 items-center gap-1 px-1", children: name }),
|
|
891
|
-
host.renderCopy?.({
|
|
891
|
+
host.renderCopy?.({
|
|
892
|
+
label: `this ${(0, import_content_ir3.nounLabel)(directive.noun, host.nouns).toLowerCase()}`,
|
|
893
|
+
value: item,
|
|
894
|
+
size: "xs",
|
|
895
|
+
record: { noun: directive.noun, id: recordId }
|
|
896
|
+
})
|
|
892
897
|
] }),
|
|
893
898
|
isUpdate ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DirectiveChangeList, { changes, className: "mt-0.5 px-1" }) : null
|
|
894
899
|
] });
|
|
@@ -916,7 +921,7 @@ function SideEffectDirectiveCard({ directive }) {
|
|
|
916
921
|
" ",
|
|
917
922
|
total === 1 ? "item" : "items"
|
|
918
923
|
] }),
|
|
919
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "ml-auto flex items-center gap-1", children: [
|
|
924
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "ml-auto flex min-w-0 flex-wrap items-center justify-end gap-1", children: [
|
|
920
925
|
host.renderCopy?.({ label: display.title, value: directive.shell, size: "icon" }),
|
|
921
926
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
922
927
|
ApplyDirectiveButton,
|
|
@@ -938,7 +943,7 @@ function SideEffectDirectiveCard({ directive }) {
|
|
|
938
943
|
{
|
|
939
944
|
type: "button",
|
|
940
945
|
onClick: () => setExpanded((v) => !v),
|
|
941
|
-
className: "mt-0.5 inline-flex items-center gap-1 rounded px-1 py-0.5 text-[11px] text-muted-foreground hover:text-foreground",
|
|
946
|
+
className: "mt-0.5 inline-flex items-center gap-1 whitespace-nowrap rounded px-1 py-0.5 text-[11px] text-muted-foreground hover:text-foreground",
|
|
942
947
|
children: [
|
|
943
948
|
expanded ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ChevronDownIcon, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ChevronRightIcon, { className: "h-3 w-3" }),
|
|
944
949
|
expanded ? "Show less" : `Show ${hidden} more`
|