@elabs-ai/components-ui 5.1.0 → 5.3.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/dist/{chunk-KBWHHAI3.js → chunk-2ZWUTZHE.js} +2 -2
- package/dist/{chunk-SSQG36MH.js → chunk-34CYSZ2F.js} +2 -2
- package/dist/chunk-34CYSZ2F.js.map +1 -0
- package/dist/{chunk-AXHMQOIZ.js → chunk-3GJLYUZ6.js} +3 -3
- package/dist/{chunk-CEDK5GM2.js → chunk-5AJQUJ5C.js} +2 -2
- package/dist/{chunk-MDQYRES4.js → chunk-5KNLME6F.js} +11 -5
- package/dist/chunk-5KNLME6F.js.map +1 -0
- package/dist/{chunk-ERTYAID6.js → chunk-5QQFXDUY.js} +5 -3
- package/dist/{chunk-ERTYAID6.js.map → chunk-5QQFXDUY.js.map} +1 -1
- package/dist/{chunk-E3GNYOLS.js → chunk-64BKIIJC.js} +2 -2
- package/dist/{chunk-RHVYRQN4.js → chunk-7ZJLR6RP.js} +2 -2
- package/dist/{chunk-HWVU636Q.js → chunk-A3JF66ZC.js} +3 -3
- package/dist/{chunk-NZUKZRT7.js → chunk-A3TT32GE.js} +2 -2
- package/dist/{chunk-C2ICCCP5.js → chunk-A4ZSNEZD.js} +2 -2
- package/dist/{chunk-JTY3REOB.js → chunk-BGXBANS2.js} +3 -3
- package/dist/{chunk-MY5H6D5Y.js → chunk-C4FNDXBM.js} +2 -2
- package/dist/{chunk-QF6UWWDY.js → chunk-C4FZWPI4.js} +1 -1
- package/dist/{chunk-QF6UWWDY.js.map → chunk-C4FZWPI4.js.map} +1 -1
- package/dist/{chunk-QLM3KTAQ.js → chunk-C6I5I5LA.js} +3 -3
- package/dist/{chunk-IE5GWE72.js → chunk-CF7YSCCA.js} +3 -3
- package/dist/chunk-CF7YSCCA.js.map +1 -0
- package/dist/{chunk-RYPK72YP.js → chunk-CGY25FAG.js} +2 -2
- package/dist/{chunk-HDS64Z5L.js → chunk-DIL73NE3.js} +2 -2
- package/dist/{chunk-VC4GKLZL.js → chunk-EHN5ZAHP.js} +2 -2
- package/dist/{chunk-HXQ4MDCH.js → chunk-F6FF4EJN.js} +2 -2
- package/dist/{chunk-V5QCJHDA.js → chunk-FC2LHNJG.js} +3 -3
- package/dist/{chunk-ZRMF4YAS.js → chunk-FCVHZDP7.js} +3 -3
- package/dist/{chunk-BYFRDLDL.js → chunk-FKDI2T7X.js} +2 -2
- package/dist/{chunk-GWHO5ACE.js → chunk-FNRVVVXX.js} +2 -2
- package/dist/{chunk-Y33ZFTMR.js → chunk-FWAFP76U.js} +2 -2
- package/dist/{chunk-ZALGMUSW.js → chunk-HUXLE3K3.js} +2 -2
- package/dist/{chunk-NRPZ3BH4.js → chunk-I3LBIBVN.js} +2 -2
- package/dist/{chunk-GTDCC4YX.js → chunk-IV6OYZTL.js} +2 -2
- package/dist/{chunk-4DWIMWR5.js → chunk-JQIXRCLG.js} +2 -2
- package/dist/{chunk-M5WPZXBA.js → chunk-JU4KW7JN.js} +3 -3
- package/dist/{chunk-PSXUEWUS.js → chunk-LVY7B5PD.js} +2 -2
- package/dist/{chunk-FLCQKC64.js → chunk-MIWFBH5S.js} +3 -3
- package/dist/{chunk-6TJVJPNU.js → chunk-O6AIFSTX.js} +46 -1
- package/dist/chunk-O6AIFSTX.js.map +1 -0
- package/dist/{chunk-EJQYE4MY.js → chunk-OFFWEDKY.js} +2 -2
- package/dist/{chunk-W7OIVERI.js → chunk-ONXBRQJT.js} +2 -2
- package/dist/{chunk-ENL3CCZB.js → chunk-PCNQ6NP2.js} +5 -5
- package/dist/{chunk-BRL2HMZJ.js → chunk-PFGQDW3H.js} +2 -2
- package/dist/{chunk-GMXSCEYN.js → chunk-R6CITZBB.js} +2 -2
- package/dist/{chunk-CY5ISPFB.js → chunk-RHZSAWAU.js} +2 -2
- package/dist/{chunk-FXC64HLD.js → chunk-S7YR3FYZ.js} +2 -2
- package/dist/{chunk-W35X6J5P.js → chunk-SD5MGHIJ.js} +3 -3
- package/dist/{chunk-2DFB4YTK.js → chunk-SJHDX73F.js} +2 -2
- package/dist/{chunk-MRBDJASL.js → chunk-SQLEVIAD.js} +3 -3
- package/dist/{chunk-3EDNWHWD.js → chunk-SR3SC2Q3.js} +2 -2
- package/dist/{chunk-HANBQNW3.js → chunk-U7ADXWTI.js} +26 -14
- package/dist/chunk-U7ADXWTI.js.map +1 -0
- package/dist/{chunk-CEHCVDYR.js → chunk-U7CSWQAE.js} +3 -3
- package/dist/{chunk-SWQCCR6Q.js → chunk-U7FC5J6J.js} +3 -3
- package/dist/{chunk-4VCU3GFI.js → chunk-UVVVKPSH.js} +2 -2
- package/dist/{chunk-BDOG4YSM.js → chunk-VAWYYETZ.js} +8 -8
- package/dist/{chunk-ALNJV4XB.js → chunk-WDZ47ZTX.js} +2 -2
- package/dist/{chunk-HHZJALGA.js → chunk-WL2EZDSD.js} +3 -3
- package/dist/{chunk-UQPW7INX.js → chunk-XE6GYGWS.js} +2 -2
- package/dist/{chunk-OGTILHKP.js → chunk-Y3CKZ7SH.js} +3 -3
- package/dist/{chunk-RIYDAMSQ.js → chunk-YA2CG4YL.js} +2 -2
- package/dist/{chunk-4DZGAY6R.js → chunk-ZESSUMCO.js} +2 -2
- package/dist/{chunk-L6A3RXCU.js → chunk-ZGNWDYSC.js} +3 -3
- package/dist/components/advanced-group/advanced-group.js +3 -3
- package/dist/components/advanced-group/index.js +3 -3
- package/dist/components/app-sidebar/app-sidebar.js +5 -5
- package/dist/components/app-sidebar/index.js +5 -5
- package/dist/components/attribution-panel/attribution-panel.js +4 -4
- package/dist/components/attribution-panel/attributions.generated.js +1 -1
- package/dist/components/attribution-panel/index.js +4 -4
- package/dist/components/bounded-number/bounded-number.js +4 -4
- package/dist/components/bounded-number/index.js +4 -4
- package/dist/components/breadcrumb/breadcrumb.js +3 -3
- package/dist/components/breadcrumb/index.js +3 -3
- package/dist/components/carousel/carousel.js +3 -3
- package/dist/components/carousel/index.js +3 -3
- package/dist/components/change-review/change-review.js +4 -4
- package/dist/components/change-review/index.js +4 -4
- package/dist/components/color-picker/color-picker.js +3 -3
- package/dist/components/color-picker/index.js +3 -3
- package/dist/components/combobox/combobox.js +5 -5
- package/dist/components/combobox/index.js +5 -5
- package/dist/components/command/command.js +4 -4
- package/dist/components/command/index.js +4 -4
- package/dist/components/confirm-dialog/confirm-dialog.js +4 -4
- package/dist/components/confirm-dialog/index.js +4 -4
- package/dist/components/context-rail/context-rail.js +6 -6
- package/dist/components/context-rail/index.js +6 -6
- package/dist/components/copyable-value/copyable-value.js +3 -3
- package/dist/components/copyable-value/index.js +3 -3
- package/dist/components/date-picker/date-picker.js +3 -3
- package/dist/components/date-picker/index.js +3 -3
- package/dist/components/date-range-picker/date-range-picker.js +3 -3
- package/dist/components/date-range-picker/index.js +3 -3
- package/dist/components/dialog/dialog.js +3 -3
- package/dist/components/dialog/index.js +3 -3
- package/dist/components/empty-state/empty-state.js +4 -4
- package/dist/components/empty-state/index.js +4 -4
- package/dist/components/error-state/error-state.js +4 -4
- package/dist/components/error-state/index.js +4 -4
- package/dist/components/expand-dialog/expand-dialog.js +4 -4
- package/dist/components/expand-dialog/index.js +4 -4
- package/dist/components/file-upload/file-upload.js +3 -3
- package/dist/components/file-upload/index.js +3 -3
- package/dist/components/key-value-editor/index.js +3 -3
- package/dist/components/key-value-editor/key-value-editor.js +3 -3
- package/dist/components/keyboard-shortcuts/index.js +4 -4
- package/dist/components/keyboard-shortcuts/keyboard-shortcuts.js +4 -4
- package/dist/components/list-editor/index.js +3 -3
- package/dist/components/list-editor/list-editor.js +3 -3
- package/dist/components/loading-state/index.js +4 -4
- package/dist/components/loading-state/loading-state.js +4 -4
- package/dist/components/locale-provider/index.js +2 -2
- package/dist/components/locale-provider/locale-provider.js +2 -2
- package/dist/components/locale-provider/messages.js +1 -1
- package/dist/components/mention-input/index.js +3 -3
- package/dist/components/mention-input/mention-input.js +3 -3
- package/dist/components/metric-card/index.js +4 -4
- package/dist/components/metric-card/metric-card.js +4 -4
- package/dist/components/model-picker/index.js +5 -5
- package/dist/components/model-picker/model-picker.js +5 -5
- package/dist/components/nav-main/index.js +5 -5
- package/dist/components/nav-main/nav-main.js +5 -5
- package/dist/components/nav-notifications/index.js +3 -3
- package/dist/components/nav-notifications/nav-notifications.js +3 -3
- package/dist/components/nav-user/index.js +5 -5
- package/dist/components/nav-user/nav-user.js +5 -5
- package/dist/components/number-input/index.js +3 -3
- package/dist/components/number-input/number-input.js +3 -3
- package/dist/components/pagination/index.js +3 -3
- package/dist/components/pagination/pagination.js +3 -3
- package/dist/components/revision-timeline/index.js +3 -3
- package/dist/components/revision-timeline/revision-timeline.js +3 -3
- package/dist/components/schema-form/index.js +9 -9
- package/dist/components/schema-form/schema-form.js +9 -9
- package/dist/components/sheet/index.js +3 -3
- package/dist/components/sheet/sheet.js +3 -3
- package/dist/components/side-dock/index.js +4 -4
- package/dist/components/side-dock/side-dock.js +4 -4
- package/dist/components/sidebar/index.js +4 -4
- package/dist/components/sidebar/sidebar.js +4 -4
- package/dist/components/slider-number/index.js +4 -4
- package/dist/components/slider-number/slider-number.js +4 -4
- package/dist/components/spec-playground/index.js +2 -2
- package/dist/components/spec-playground/locate-json-path.js +1 -1
- package/dist/components/spec-playground/spec-playground.js +2 -2
- package/dist/components/spinner/index.js +3 -3
- package/dist/components/spinner/spinner.js +3 -3
- package/dist/components/state-panel/index.js +3 -3
- package/dist/components/state-panel/state-panel.js +3 -3
- package/dist/components/table/index.js +3 -3
- package/dist/components/table/table.js +3 -3
- package/dist/components/team-switcher/index.js +5 -5
- package/dist/components/team-switcher/team-switcher.js +5 -5
- package/dist/components/theme-switcher/index.js +3 -3
- package/dist/components/theme-switcher/theme-switcher.js +3 -3
- package/dist/components/toolbar/index.js +1 -1
- package/dist/components/toolbar/toolbar.js +1 -1
- package/dist/components/transfer/index.js +3 -3
- package/dist/components/transfer/transfer.js +3 -3
- package/dist/components/tree/index.js +4 -4
- package/dist/components/tree/tree.js +4 -4
- package/dist/components/tree-select/index.js +5 -5
- package/dist/components/tree-select/tree-select.js +5 -5
- package/dist/components/view-toolbar/index.js +3 -3
- package/dist/components/view-toolbar/view-toolbar.js +3 -3
- package/dist/components/virtual-select/index.js +3 -3
- package/dist/components/virtual-select/virtual-select.js +3 -3
- package/dist/components/workspace-picker/index.js +6 -6
- package/dist/components/workspace-picker/workspace-picker.js +6 -6
- package/dist/index.d.ts +18 -3
- package/dist/index.js +60 -57
- package/dist/lib/streamdown-translations.js +3 -3
- package/package.json +3 -3
- package/src/components/attribution-panel/attributions.generated.ts +26 -14
- package/src/components/locale-provider/messages.ts +47 -0
- package/src/components/metric-card/metric-card.tsx +1 -1
- package/src/components/spec-playground/locate-json-path.ts +1 -1
- package/src/components/spec-playground/spec-playground.tsx +1 -1
- package/src/components/toolbar/toolbar.tsx +4 -2
- package/src/components/tree/tree.stories.tsx +28 -0
- package/src/components/tree/tree.tsx +17 -2
- package/src/index.ts +3 -0
- package/dist/chunk-6TJVJPNU.js.map +0 -1
- package/dist/chunk-HANBQNW3.js.map +0 -1
- package/dist/chunk-IE5GWE72.js.map +0 -1
- package/dist/chunk-MDQYRES4.js.map +0 -1
- package/dist/chunk-SSQG36MH.js.map +0 -1
- /package/dist/{chunk-KBWHHAI3.js.map → chunk-2ZWUTZHE.js.map} +0 -0
- /package/dist/{chunk-AXHMQOIZ.js.map → chunk-3GJLYUZ6.js.map} +0 -0
- /package/dist/{chunk-CEDK5GM2.js.map → chunk-5AJQUJ5C.js.map} +0 -0
- /package/dist/{chunk-E3GNYOLS.js.map → chunk-64BKIIJC.js.map} +0 -0
- /package/dist/{chunk-RHVYRQN4.js.map → chunk-7ZJLR6RP.js.map} +0 -0
- /package/dist/{chunk-HWVU636Q.js.map → chunk-A3JF66ZC.js.map} +0 -0
- /package/dist/{chunk-NZUKZRT7.js.map → chunk-A3TT32GE.js.map} +0 -0
- /package/dist/{chunk-C2ICCCP5.js.map → chunk-A4ZSNEZD.js.map} +0 -0
- /package/dist/{chunk-JTY3REOB.js.map → chunk-BGXBANS2.js.map} +0 -0
- /package/dist/{chunk-MY5H6D5Y.js.map → chunk-C4FNDXBM.js.map} +0 -0
- /package/dist/{chunk-QLM3KTAQ.js.map → chunk-C6I5I5LA.js.map} +0 -0
- /package/dist/{chunk-RYPK72YP.js.map → chunk-CGY25FAG.js.map} +0 -0
- /package/dist/{chunk-HDS64Z5L.js.map → chunk-DIL73NE3.js.map} +0 -0
- /package/dist/{chunk-VC4GKLZL.js.map → chunk-EHN5ZAHP.js.map} +0 -0
- /package/dist/{chunk-HXQ4MDCH.js.map → chunk-F6FF4EJN.js.map} +0 -0
- /package/dist/{chunk-V5QCJHDA.js.map → chunk-FC2LHNJG.js.map} +0 -0
- /package/dist/{chunk-ZRMF4YAS.js.map → chunk-FCVHZDP7.js.map} +0 -0
- /package/dist/{chunk-BYFRDLDL.js.map → chunk-FKDI2T7X.js.map} +0 -0
- /package/dist/{chunk-GWHO5ACE.js.map → chunk-FNRVVVXX.js.map} +0 -0
- /package/dist/{chunk-Y33ZFTMR.js.map → chunk-FWAFP76U.js.map} +0 -0
- /package/dist/{chunk-ZALGMUSW.js.map → chunk-HUXLE3K3.js.map} +0 -0
- /package/dist/{chunk-NRPZ3BH4.js.map → chunk-I3LBIBVN.js.map} +0 -0
- /package/dist/{chunk-GTDCC4YX.js.map → chunk-IV6OYZTL.js.map} +0 -0
- /package/dist/{chunk-4DWIMWR5.js.map → chunk-JQIXRCLG.js.map} +0 -0
- /package/dist/{chunk-M5WPZXBA.js.map → chunk-JU4KW7JN.js.map} +0 -0
- /package/dist/{chunk-PSXUEWUS.js.map → chunk-LVY7B5PD.js.map} +0 -0
- /package/dist/{chunk-FLCQKC64.js.map → chunk-MIWFBH5S.js.map} +0 -0
- /package/dist/{chunk-EJQYE4MY.js.map → chunk-OFFWEDKY.js.map} +0 -0
- /package/dist/{chunk-W7OIVERI.js.map → chunk-ONXBRQJT.js.map} +0 -0
- /package/dist/{chunk-ENL3CCZB.js.map → chunk-PCNQ6NP2.js.map} +0 -0
- /package/dist/{chunk-BRL2HMZJ.js.map → chunk-PFGQDW3H.js.map} +0 -0
- /package/dist/{chunk-GMXSCEYN.js.map → chunk-R6CITZBB.js.map} +0 -0
- /package/dist/{chunk-CY5ISPFB.js.map → chunk-RHZSAWAU.js.map} +0 -0
- /package/dist/{chunk-FXC64HLD.js.map → chunk-S7YR3FYZ.js.map} +0 -0
- /package/dist/{chunk-W35X6J5P.js.map → chunk-SD5MGHIJ.js.map} +0 -0
- /package/dist/{chunk-2DFB4YTK.js.map → chunk-SJHDX73F.js.map} +0 -0
- /package/dist/{chunk-MRBDJASL.js.map → chunk-SQLEVIAD.js.map} +0 -0
- /package/dist/{chunk-3EDNWHWD.js.map → chunk-SR3SC2Q3.js.map} +0 -0
- /package/dist/{chunk-CEHCVDYR.js.map → chunk-U7CSWQAE.js.map} +0 -0
- /package/dist/{chunk-SWQCCR6Q.js.map → chunk-U7FC5J6J.js.map} +0 -0
- /package/dist/{chunk-4VCU3GFI.js.map → chunk-UVVVKPSH.js.map} +0 -0
- /package/dist/{chunk-BDOG4YSM.js.map → chunk-VAWYYETZ.js.map} +0 -0
- /package/dist/{chunk-ALNJV4XB.js.map → chunk-WDZ47ZTX.js.map} +0 -0
- /package/dist/{chunk-HHZJALGA.js.map → chunk-WL2EZDSD.js.map} +0 -0
- /package/dist/{chunk-UQPW7INX.js.map → chunk-XE6GYGWS.js.map} +0 -0
- /package/dist/{chunk-OGTILHKP.js.map → chunk-Y3CKZ7SH.js.map} +0 -0
- /package/dist/{chunk-RIYDAMSQ.js.map → chunk-YA2CG4YL.js.map} +0 -0
- /package/dist/{chunk-4DZGAY6R.js.map → chunk-ZESSUMCO.js.map} +0 -0
- /package/dist/{chunk-L6A3RXCU.js.map → chunk-ZGNWDYSC.js.map} +0 -0
|
@@ -83,6 +83,13 @@ export interface TreeProps<T = unknown> extends Omit<HTMLAttributes<HTMLDivEleme
|
|
|
83
83
|
* the same multi-cue approach the Sidebar uses.)
|
|
84
84
|
*/
|
|
85
85
|
surface?: "default" | "sidebar";
|
|
86
|
+
/**
|
|
87
|
+
* What a click on a row does to an expandable node. `"row"` (default): the click both
|
|
88
|
+
* selects the node and toggles its children. `"chevron"`: the click only selects; only
|
|
89
|
+
* the chevron (and ArrowLeft/ArrowRight) expands or collapses — the filter-pane
|
|
90
|
+
* convention, where clicking a parent value must select it without reflowing the list.
|
|
91
|
+
*/
|
|
92
|
+
expandOn?: "row" | "chevron";
|
|
86
93
|
/**
|
|
87
94
|
* Enable windowed rendering for large trees (>50 visible rows).
|
|
88
95
|
* When `true`, only the visible slice of the flattened tree is mounted in
|
|
@@ -242,6 +249,7 @@ interface VirtualFlatRowProps<T> {
|
|
|
242
249
|
selectionMode: "single" | "multiple" | "none";
|
|
243
250
|
checkboxes: boolean;
|
|
244
251
|
surface: "default" | "sidebar";
|
|
252
|
+
expandOn: "row" | "chevron";
|
|
245
253
|
onToggleExpand: (id: string) => void;
|
|
246
254
|
onSelect: (id: string) => void;
|
|
247
255
|
onRetry: (id: string) => void;
|
|
@@ -259,6 +267,7 @@ function VirtualFlatRow<T>({
|
|
|
259
267
|
selectionMode,
|
|
260
268
|
checkboxes,
|
|
261
269
|
surface,
|
|
270
|
+
expandOn,
|
|
262
271
|
onToggleExpand,
|
|
263
272
|
onSelect,
|
|
264
273
|
onRetry,
|
|
@@ -281,7 +290,7 @@ function VirtualFlatRow<T>({
|
|
|
281
290
|
if (node.disabled) return;
|
|
282
291
|
setActiveId(node.id);
|
|
283
292
|
onSelect(node.id);
|
|
284
|
-
if (expandable) onToggleExpand(node.id);
|
|
293
|
+
if (expandable && expandOn === "row") onToggleExpand(node.id);
|
|
285
294
|
};
|
|
286
295
|
|
|
287
296
|
return (
|
|
@@ -488,6 +497,7 @@ interface TreeItemProps<T> {
|
|
|
488
497
|
onSelectionChange: (ids: Set<string>) => void;
|
|
489
498
|
checkboxes: boolean;
|
|
490
499
|
surface: "default" | "sidebar";
|
|
500
|
+
expandOn: "row" | "chevron";
|
|
491
501
|
activeId: string | null;
|
|
492
502
|
setActiveId: (id: string | null) => void;
|
|
493
503
|
registerNodeRef: (id: string, el: HTMLElement | null) => void;
|
|
@@ -507,6 +517,7 @@ function TreeItem<T>({
|
|
|
507
517
|
onSelectionChange,
|
|
508
518
|
checkboxes,
|
|
509
519
|
surface,
|
|
520
|
+
expandOn,
|
|
510
521
|
activeId,
|
|
511
522
|
setActiveId,
|
|
512
523
|
registerNodeRef,
|
|
@@ -560,7 +571,7 @@ function TreeItem<T>({
|
|
|
560
571
|
const handleRowClick = () => {
|
|
561
572
|
setActiveId(node.id);
|
|
562
573
|
handleSelect();
|
|
563
|
-
if (expandable) toggleExpanded();
|
|
574
|
+
if (expandable && expandOn === "row") toggleExpanded();
|
|
564
575
|
};
|
|
565
576
|
|
|
566
577
|
const indentStyle = { paddingLeft: `${(level - 1) * 1}rem` };
|
|
@@ -695,6 +706,7 @@ function TreeItem<T>({
|
|
|
695
706
|
onSelectionChange={onSelectionChange}
|
|
696
707
|
checkboxes={checkboxes}
|
|
697
708
|
surface={surface}
|
|
709
|
+
expandOn={expandOn}
|
|
698
710
|
activeId={activeId}
|
|
699
711
|
setActiveId={setActiveId}
|
|
700
712
|
registerNodeRef={registerNodeRef}
|
|
@@ -806,6 +818,7 @@ export const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(
|
|
|
806
818
|
scrollSelectionIntoView = false,
|
|
807
819
|
loadChildren,
|
|
808
820
|
surface = "default",
|
|
821
|
+
expandOn = "row",
|
|
809
822
|
className,
|
|
810
823
|
...props
|
|
811
824
|
},
|
|
@@ -1113,6 +1126,7 @@ export const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(
|
|
|
1113
1126
|
onSelectionChange={setSelectedIds}
|
|
1114
1127
|
checkboxes={checkboxes}
|
|
1115
1128
|
surface={surface}
|
|
1129
|
+
expandOn={expandOn}
|
|
1116
1130
|
activeId={activeId}
|
|
1117
1131
|
setActiveId={setActiveId}
|
|
1118
1132
|
// registerAndFlush (not raw registerNodeRef) so nodeRefsForFlush is
|
|
@@ -1191,6 +1205,7 @@ export const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(
|
|
|
1191
1205
|
selectionMode={selectionMode}
|
|
1192
1206
|
checkboxes={checkboxes}
|
|
1193
1207
|
surface={surface}
|
|
1208
|
+
expandOn={expandOn}
|
|
1194
1209
|
onToggleExpand={handleToggleExpand}
|
|
1195
1210
|
onSelect={handleSelectVirtual}
|
|
1196
1211
|
onRetry={() => handleExpandLazy(node)}
|
package/src/index.ts
CHANGED
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
|
|
16
16
|
// Utilities
|
|
17
17
|
export { cn } from "./lib/cn";
|
|
18
|
+
// Forwarded ref + a locally owned ref on one node (a measured root that is also
|
|
19
|
+
// the consumer's handle) — exported so siblings don't fork a callback-ref merger.
|
|
20
|
+
export { mergeRefs } from "./lib/merge-refs";
|
|
18
21
|
// The canonical mobile-breakpoint check (Sidebar / ContextPanel Sheet fallback
|
|
19
22
|
// pattern, research 09 §B.4) — exported so siblings don't fork a matchMedia hook.
|
|
20
23
|
export { useIsMobile } from "./lib/use-mobile";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/locale-provider/messages.ts"],"sourcesContent":["\"use client\";\n\n/**\n * ICU cardinal-plural category, per `Intl.PluralRules` (\"zero\" | \"one\" | \"two\"\n * | \"few\" | \"many\" | \"other\"). Locales vary in which categories they use —\n * English has only \"one\"/\"other\"; Polish and Russian also use \"few\"/\"many\" —\n * so a `PluralMessage` may omit any category it doesn't need. `\"other\"` is the\n * universal fallback every locale defines.\n */\nexport type PluralCategory = Intl.LDMLPluralRule;\n\n/**\n * A per-count message: one string per plural category, selected at render\n * time via `Intl.PluralRules(locale).select(count)`. Each string still\n * supports the same `{name}`-style interpolation as a plain message.\n * Note: when passed to `t()`, `count` in `vars` must be a number, not a\n * numeric string, to select the correct plural category.\n */\nexport type PluralMessage = Partial<Record<PluralCategory, string>>;\n\n/** A single message value: a plain string, or a plural-form map. */\nexport type MessageValue = string | PluralMessage;\n\n/**\n * Shipped English (en-US) default microcopy bundle.\n *\n * Keys are intentionally terse, semantic, and framework-agnostic so they\n * translate cleanly into any target locale. Keep this list small and real —\n * only add a key here when a component actually needs it.\n */\nexport const DEFAULT_MESSAGES: Record<string, MessageValue> = {\n // ── Generic (shared across packages — reuse these before minting a new key) ──\n close: \"Close\",\n copy: \"Copy\",\n clear: \"Clear\",\n previous: \"Previous\",\n next: \"Next\",\n previousSlide: \"Previous slide\",\n nextSlide: \"Next slide\",\n noResults: \"No results.\",\n noRows: \"No rows.\",\n loading: \"Loading…\",\n more: \"More\",\n selectAll: \"Select all\",\n // Cardinal-plural example (#19) — a shared \"N item(s) selected\" microcopy\n // any multi-select surface can reuse via `t(\"itemsSelected\", { count })`.\n // Demonstrates the plural-form shape: pick the primitive over inventing a\n // near-duplicate flat string per component.\n itemsSelected: { one: \"{count} item selected\", other: \"{count} items selected\" },\n\n // ── @elabs-ai/components-ui ───────────────────────────────────────────────────────────────\n \"ui.metricCard.loading\": \"Loading metric…\",\n // CopyableValue. `hint` is APPENDED to the visible (compact) value, so the\n // accessible name contains what the reader sees — WCAG 2.5.3, Label in Name.\n \"ui.copyableValue.hint\": \"Copy exact value\",\n \"ui.copyableValue.copied\": \"Copied\",\n // ExpandDialog. Names the context pane beside the enlarged content, so a\n // screen-reader user can tell the two scrollable regions apart.\n \"ui.expandDialog.detail\": \"Details\",\n // AttributionPanel. `required` labels a notice a licence obliges us to show —\n // it is the WORD, not a colour, so the distinction survives greyscale (1.4.1).\n \"ui.attributionPanel.label\": \"Third-party attributions\",\n \"ui.attributionPanel.required\": \"Required\",\n \"ui.attributionPanel.empty\": \"No attributions match this filter.\",\n // ModelPicker. `refreshFailed` sits ABOVE a list that still works; `loadFailed`\n // replaces the list. The distinction is load-bearing — see modelPickerBody.\n \"ui.modelPicker.label\": \"Choose a target\",\n \"ui.modelPicker.searchPlaceholder\": \"Search…\",\n \"ui.modelPicker.refreshFailed\": \"Couldn't refresh the list\",\n \"ui.modelPicker.loadFailed\": \"Couldn't load the list\",\n \"ui.modelPicker.nothingYet\": \"Nothing to show yet\",\n \"ui.modelPicker.retry\": \"Retry\",\n // KeyboardShortcuts (#113). `emptyFiltered` keeps the user's own query in the\n // sentence so the empty state says WHY it is empty, not merely that it is.\n \"ui.keyboardShortcuts.searchPlaceholder\": \"Search shortcuts…\",\n \"ui.keyboardShortcuts.emptyTitle\": \"No shortcuts found\",\n \"ui.keyboardShortcuts.emptyFiltered\": \"No shortcuts match “{query}”.\",\n \"ui.keyboardShortcuts.empty\": \"No shortcuts to show.\",\n // WorkspacePicker (#111). It composes ModelPicker, so it carries its OWN\n // label/search strings rather than inheriting the generic \"Choose a target\".\n // `current` is appended into the row's meta so the in-force workspace reaches\n // the option's accessible name as a WORD, not only a check glyph (1.4.1).\n \"ui.workspacePicker.label\": \"Choose a workspace\",\n \"ui.workspacePicker.placeholder\": \"No workspace selected\",\n \"ui.workspacePicker.recent\": \"Recent workspaces\",\n \"ui.workspacePicker.searchPlaceholder\": \"Search workspaces…\",\n \"ui.workspacePicker.current\": \"Current\",\n \"ui.workspacePicker.pathLabel\": \"Workspace path\",\n \"ui.workspacePicker.pathPlaceholder\": \"/path/to/project…\",\n \"ui.workspacePicker.openPath\": \"Open\",\n // ViewToolbar (#331). `removeFilter` deliberately WRAPS the visible chip text\n // so the accessible name contains it (WCAG 2.5.3 Label in Name).\n \"ui.viewToolbar.about\": \"About this view\",\n \"ui.viewToolbar.activeFilters\": \"Active filters\",\n \"ui.viewToolbar.clearAll\": \"Clear all\",\n \"ui.viewToolbar.countOfTotal\": \"{count} of {total}\",\n \"ui.viewToolbar.removeFilter\": \"Remove filter: {label}\",\n // Combobox `allowCustomValue` mode (#359) — `{value}` interpolates the\n // currently typed, non-matching search text.\n \"ui.combobox.useCustomValue\": 'Use \"{value}\"',\n \"ui.combobox.emptyAllowCustom\": \"No matches. Type to add a custom value.\",\n // Form kit (#370–#374).\n \"ui.boundedNumber.emptyLabel\": \"No limit\",\n \"ui.keyValueEditor.addRow\": \"Add row\",\n \"ui.keyValueEditor.keyLabel\": \"Key {n}\",\n \"ui.keyValueEditor.valueLabel\": \"Value {n}\",\n \"ui.keyValueEditor.removeRow\": \"Remove row {n}\",\n \"ui.keyValueEditor.reveal\": \"Reveal value {n}\",\n \"ui.keyValueEditor.hide\": \"Hide value {n}\",\n \"ui.keyValueEditor.empty\": \"No entries yet.\",\n \"ui.listEditor.addItem\": \"Add item\",\n \"ui.listEditor.itemLabel\": \"Item {n}\",\n \"ui.listEditor.removeItem\": \"Remove item {n}\",\n \"ui.listEditor.moveUp\": \"Move item {n} up\",\n \"ui.listEditor.moveDown\": \"Move item {n} down\",\n \"ui.listEditor.empty\": \"No items yet.\",\n \"ui.sliderNumber.reset\": \"Reset\",\n // MentionInput (#368). The listbox lives in a portal with no visible label of\n // its own, so this IS its accessible name. The empty state deliberately\n // reuses the generic `noResults` key rather than minting a near-duplicate.\n \"ui.mentionInput.listLabel\": \"Mention suggestions\",\n // ConfirmDialog's fallback action labels. A real confirmation replaces\n // `confirmLabel` with the CONSEQUENCE (\"Delete skill\"); this generic default\n // exists so the component is never unlabelled.\n \"ui.confirmDialog.confirm\": \"Confirm\",\n \"ui.confirmDialog.cancel\": \"Cancel\",\n \"ui.advancedGroup.title\": \"Advanced\",\n \"ui.advancedGroup.changed\": \"{count} changed\",\n // SchemaForm — the spec-driven config-form renderer (issue #22).\n \"ui.schemaForm.selectPlaceholder\": \"Select…\",\n \"ui.schemaForm.label\": \"Form\",\n \"ui.schemaForm.submit\": \"Submit\",\n \"ui.schemaForm.submitting\": \"Submitting…\",\n \"ui.schemaForm.submitted\": \"Submitted\",\n // SchemaFormTestAction — a form/group-level \"Test connection\" affordance\n // (issue #22 maintainer ruling, 2026-09-01), independent of field validity\n // and never gating submit.\n \"ui.schemaForm.testAction.label\": \"Test connection\",\n \"ui.schemaForm.testAction.pending\": \"Testing…\",\n \"ui.schemaForm.testAction.success\": \"Connected\",\n \"ui.schemaForm.testAction.failure\": \"Test failed\",\n // Pagination's ellipsis (sr-only — the visible glyph is decorative).\n \"ui.breadcrumb.label\": \"breadcrumb\",\n \"ui.pagination.label\": \"pagination\",\n \"ui.pagination.morePages\": \"More pages\",\n // Pagination's prev/next links — the ACCESSIBLE NAME (`aria-label`), distinct\n // from the visible `previous`/`next` text below it: an `aria-label` overrides\n // visible text content as the accessible name, so leaving these hardcoded in\n // English meant a non-English `LocaleProvider` translated the visible label\n // but a screen-reader user still heard English (#12/#53 review, P2).\n \"ui.pagination.previous\": \"Go to previous page\",\n \"ui.pagination.next\": \"Go to next page\",\n // Sidebar's mobile Sheet title (sr-only header — the sheet itself has no\n // visible chrome, so this is only ever read by assistive tech).\n \"ui.sidebar.title\": \"Sidebar\",\n // ContextRail's switcher count phrase (composed into the accessible name,\n // e.g. \"Sources 3 items\") and its default empty-state copy.\n \"ui.contextRail.sectionCount\": { one: \"{count} item\", other: \"{count} items\" },\n \"ui.contextRail.empty\": \"No sections\",\n // SideDock's resize handle — its sr-only label and its live width readout.\n \"ui.sideDock.resize\": \"Resize\",\n \"ui.sideDock.widthValue\": { one: \"{size} pixel\", other: \"{size} pixels\" },\n // Tree's error row — shared by the virtualized and non-virtualized branches.\n \"ui.tree.failedToLoad\": \"Failed to load\",\n // ThemeSwitcher's \"follow the OS\" option, in both dropdown and toggle modes.\n \"ui.themeSwitcher.system\": \"System\",\n // Group labels + scheme names in the family layout (ADR 0036).\n \"ui.themeSwitcher.theme\": \"Theme\",\n \"ui.themeSwitcher.mode\": \"Mode\",\n \"ui.themeSwitcher.light\": \"Light\",\n \"ui.themeSwitcher.dark\": \"Dark\",\n \"ui.navNotifications.label\": \"Notifications\",\n // NavUser — the standard sidebar footer: account menu group label and its\n // two default actions.\n \"ui.navUser.label\": \"Account\",\n \"ui.navUser.settings\": \"Settings\",\n \"ui.navUser.signOut\": \"Sign out\",\n \"ui.teamSwitcher.label\": \"Teams\",\n \"ui.teamSwitcher.addTeam\": \"Add team\",\n // Table's own scroll wrapper (#366). Rendered ONLY when the wrapper actually\n // overflows, so it is never announced for a table that fits — see\n // `packages/ui/src/components/table/table.tsx`. Deliberately a `ui.*`\n // sibling of `data.table.scrollRegion` rather than a shared cross-package\n // key: `Table` is a `@elabs-ai/components-ui` component and each package\n // keeps its own namespace even where the English string coincides (compare\n // `viewer.content` vs this), so a translator can phrase either\n // independently and neither package depends on a string owned by another.\n \"ui.table.scrollRegion\": \"Table contents, scrollable\",\n // NumberInput's step buttons (#4 i18n sweep).\n \"ui.numberInput.decrease\": \"Decrease\",\n \"ui.numberInput.increase\": \"Increase\",\n // Combobox/VirtualSelect/TreeSelect each keep their own placeholder pair\n // (English text coincides, but a translator may phrase a search box\n // differently per surface — same rationale as `ui.table.scrollRegion`).\n \"ui.combobox.placeholder\": \"Select…\",\n \"ui.combobox.searchPlaceholder\": \"Search…\",\n \"ui.virtualSelect.placeholder\": \"Select…\",\n \"ui.virtualSelect.searchPlaceholder\": \"Search…\",\n \"ui.treeSelect.placeholder\": \"Select…\",\n \"ui.treeSelect.moreSelected\": \"and {count} more selected\",\n \"ui.fileUpload.selectedFiles\": \"Selected files\",\n \"ui.fileUpload.dragDropHere\": \"Drag & drop files here\",\n \"ui.fileUpload.browseFiles\": \"Browse files\",\n // Sidebar's mobile Sheet description (sr-only) and the collapse/expand\n // trigger's shared name (SidebarTrigger's sr-only text + SidebarRail's\n // aria-label/title).\n \"ui.sidebar.mobileDescription\": \"Displays the mobile sidebar.\",\n \"ui.sidebar.toggle\": \"Toggle Sidebar\",\n \"ui.revisionTimeline.label\": \"Revisions\",\n \"ui.tree.retry\": \"Retry\",\n \"ui.tree.retryLoadingChildren\": \"Retry loading children\",\n // Spinner's bare default label — kept WITHOUT an ellipsis (unlike the\n // generic `loading` key) to stay byte-identical to its pre-i18n default.\n \"ui.spinner.label\": \"Loading\",\n \"ui.statePanel.errorTitle\": \"Something went wrong\",\n \"ui.statePanel.errorDescription\": \"An unexpected error occurred. Please try again.\",\n \"ui.statePanel.errorEyebrow\": \"Error\",\n \"ui.carousel.label\": \"Carousel\",\n // Transfer (#4 i18n sweep). `panelFallback`/`itemsFallback` back the two\n // spots where the panel title isn't a plain string (a ReactNode) and the\n // sr-only text falls back to a generic word instead.\n \"ui.transfer.selectAllIn\": \"Select all in {title}\",\n \"ui.transfer.panelFallback\": \"panel\",\n \"ui.transfer.searchIn\": \"Search {title}\",\n \"ui.transfer.itemsFallback\": \"items\",\n \"ui.transfer.searchPlaceholder\": \"Search…\",\n \"ui.transfer.empty\": \"No items\",\n \"ui.transfer.defaultSourceTitle\": \"Source\",\n \"ui.transfer.defaultTargetTitle\": \"Target\",\n \"ui.transfer.movedToTarget\": {\n one: \"{count} item moved to the target list.\",\n other: \"{count} items moved to the target list.\",\n },\n \"ui.transfer.movedToSource\": {\n one: \"{count} item moved to the source list.\",\n other: \"{count} items moved to the source list.\",\n },\n \"ui.transfer.moveControls\": \"Move controls\",\n \"ui.transfer.moveSelectedRight\": \"Move selected right\",\n \"ui.transfer.moveAllRight\": \"Move all right\",\n \"ui.transfer.moveSelectedLeft\": \"Move selected left\",\n \"ui.transfer.moveAllLeft\": \"Move all left\",\n // ChangeReview (#4 i18n sweep).\n \"ui.changeReview.heading\": \"Review changes\",\n \"ui.changeReview.approvedCount\": \"{approved} of {total} approved\",\n \"ui.changeReview.rejectAll\": \"Reject all\",\n \"ui.changeReview.rejectAllLabel\": \"Reject all changes\",\n \"ui.changeReview.approveAll\": \"Approve all\",\n \"ui.changeReview.approveAllLabel\": \"Approve all changes\",\n \"ui.changeReview.provenanceLabel\": \"Change provenance\",\n \"ui.changeReview.emptyTitle\": \"No changes to review\",\n \"ui.changeReview.emptyDescription\":\n \"When an agent proposes edits, they'll appear here for your approval.\",\n \"ui.changeReview.statusAdded\": \"added\",\n \"ui.changeReview.statusRemoved\": \"removed\",\n \"ui.changeReview.statusModified\": \"modified\",\n \"ui.changeReview.phaseBefore\": \"Before\",\n \"ui.changeReview.phaseAfter\": \"After\",\n \"ui.changeReview.checkPassed\": \"Passed\",\n \"ui.changeReview.checkFailed\": \"Failed\",\n \"ui.changeReview.showDetail\": \"Show detail\",\n \"ui.changeReview.hideDetail\": \"Hide detail\",\n \"ui.changeReview.rejectHunk\": \"Reject hunk: {title}\",\n \"ui.changeReview.approveHunk\": \"Approve hunk: {title}\",\n \"ui.changeReview.changeType\": \"Change type: {status}\",\n \"ui.changeReview.beforePrefix\": \"Before: \",\n \"ui.changeReview.afterPrefix\": \"After: \",\n \"ui.changeReview.approvedBadge\": \"Approved\",\n \"ui.navNotifications.trigger\": \"Open notifications\",\n \"ui.colorPicker.pickColor\": \"Pick color\",\n \"ui.colorPicker.none\": \"None\",\n \"ui.colorPicker.swatches\": \"Color swatches\",\n \"ui.colorPicker.customHexLabel\": \"Custom hex\",\n \"ui.colorPicker.notThemeAware\": \"(not theme-aware)\",\n \"ui.colorPicker.customHex\": \"Custom hex color\",\n\n // ── @elabs-ai/components-data ─────────────────────────────────────────────────────────────\n // The scroll region's accessible name is rendered ONLY when the table actually\n // overflows its container, so it is never announced for a table that fits.\n \"data.table.scrollRegion\": \"Table contents, scrollable\",\n \"data.table.loading\": \"Loading table data…\",\n // Fallback name for a row's activation control when the row's first cell holds\n // no primitive value to name it after (see `rowActionLabel`).\n \"data.table.rowAction\": \"Activate row\",\n // createSelectionColumn (#11) — the header select-all checkbox and each row's\n // own checkbox. Kept table-scoped (not the generic `selectAll` key) so a\n // translator can phrase \"rows\" distinctly from other bulk-select surfaces.\n \"data.table.selectAllRows\": \"Select all rows\",\n // `selectRowNamed` names each row's checkbox from its own first data column\n // (#11 I4) so screen-reader users hear \"Select Alpha\", not `selectRow`'s\n // identical generic label repeated on every row; `selectRow` stays the\n // fallback when no data column value is derivable.\n \"data.table.selectRowNamed\": \"Select {name}\",\n \"data.table.selectRow\": \"Select row\",\n // Column resizing (#12) — the accessible name for the WAI-ARIA\n // separator-as-slider resize handle at the end of a resizable header cell.\n \"data.table.resizeColumn\": \"Resize column, {name}\",\n // #51 — the handle's accessible VALUE, paired with aria-valuenow (which\n // stays a plain number for AT/TanStack). A bare number reads as a\n // dimensionless ordinal; the unit makes it a size. A `PluralMessage` (PR\n // #81 review, \"Format the announced resize value for the active locale\") —\n // the call site passes both `count` (the raw number, so a locale whose\n // plural rules select something other than \"other\" for a given size is\n // reachable) and `size` (pre-formatted via `formatNumber`, so a locale\n // override renders locale-appropriate digits/grouping instead of a raw\n // Latin-digit JS number).\n \"data.table.resizeColumnValue\": { one: \"{size} pixel\", other: \"{size} pixels\" },\n // `showRanks` (RM-123). The printed number is the row's position in the DATA\n // AS SUPPLIED, not its position on screen: it travels with its row through\n // sorting, filtering and paging, so beside a sorted column it legitimately\n // reads 2, 1, 6, 4. That rule is invisible in a column headed by a bare \"#\",\n // which reads as a broken ranking — so it is said twice: `rankHeader` is the\n // column's accessible NAME (the \"#\" glyph is decorative beside it), and\n // `rankKey` is the one-line key printed above the table for everyone else.\n \"data.table.rankHeader\": \"Position in the data as supplied\",\n \"data.table.rankKey\":\n \"# is each row’s position in the data as supplied, not its position in this view — sorting never renumbers it.\",\n // Row drag-reorder (#13). `reorderHandle`/`reorderColumnHeader` name the\n // grip control and its column; the four `reorder*` announcement keys back\n // the aria-live region dnd-kit's `accessibility.announcements` renders on\n // pickup/move/drop/cancel (WCAG 4.1.3) — `position`/`total` are 1-based so\n // the announcement reads like \"3 of 8\", not a 0-based index.\n \"data.table.reorderColumnHeader\": \"Reorder\",\n \"data.table.reorderHandle\": \"Reorder {name}\",\n \"data.table.reorderPickedUp\": \"Picked up {name}.\",\n \"data.table.reorderMoved\": \"{name} moved to position {position} of {total}.\",\n \"data.table.reorderDropped\": \"{name} dropped at position {position} of {total}.\",\n \"data.table.reorderCancelled\":\n \"Reordering cancelled. {name} returned to position {position} of {total}.\",\n // #98: `@dnd-kit` renders two more AT-visible strings for this same\n // feature that this repo's source never writes — the hidden keyboard\n // usage instructions (wired to the grip via `aria-describedby`) and the\n // activator's `aria-roledescription`. Both ship a hardcoded English\n // default deep inside the library; localizing them means overriding them\n // explicitly with these two keys. The English DEFAULT below is dnd-kit's\n // own default text verbatim (`defaultScreenReaderInstructions.draggable`\n // in `@dnd-kit/core`, and `useSortable`'s `roleDescription: 'sortable'` in\n // `@dnd-kit/sortable`) — not a rewrite — so an English consumer with no\n // `LocaleProvider` override sees byte-identical output to before this\n // fix; only a `messages` override changes it.\n \"data.table.reorderInstructions\":\n \"\\n To pick up a draggable item, press the space bar.\\n While dragging, use the arrow keys to move the item.\\n Press space again to drop the item in its new position, or press escape to cancel.\\n \",\n \"data.table.reorderRoleDescription\": \"sortable\",\n \"data.facetFilter.clearFilters\": \"Clear filters\",\n \"data.columnPicker.toggleColumns\": \"Toggle columns\",\n \"data.columnPicker.label\": \"Columns\",\n \"data.searchInput.label\": \"Search\",\n \"data.searchInput.placeholder\": \"Search…\",\n \"data.searchInput.clear\": \"Clear search\",\n\n // ── @elabs-ai/components-charts ───────────────────────────────────────────────────────────\n // Shared caption for any bare chart surface's layout-shaped skeleton\n // (ChartFrame, ChartCard, AutoChart all show the same \"a chart is loading\"\n // concept — one key, reused, rather than three near-duplicate strings).\n \"charts.chart.loading\": \"Loading chart…\",\n // ChartFallback's default copy per `kind` (#304). Written for the reader of\n // the page, not the developer: the unsupported chart type name goes to a\n // dev-only console warning, never into this string.\n \"charts.chart.empty\": \"No data to display\",\n \"charts.chart.unsupported\": \"This chart can’t be displayed.\",\n \"charts.metricGrid.loading\": \"Loading metrics…\",\n // Chart drill-down (#349). The chart SVG is aria-hidden, so these names are\n // the ONLY thing AT reads for an interactive datapoint — there is no\n // consumer-side workaround if they stay English.\n \"charts.datapointLayer.label\": \"Chart data points\",\n \"charts.datapoint.label\": \"{series}, {category}: {value}\",\n \"charts.datapoint.labelNoSeries\": \"{category}: {value}\",\n // A target with no value (a tree node, a parallel-coordinates line, an empty\n // heatmap cell) drops the separator rather than announcing a dangling \":\".\n \"charts.datapoint.labelNoValue\": \"{series}, {category}\",\n \"charts.datapoint.labelNoSeriesNoValue\": \"{category}\",\n // Stands in for {category} when a target has none, so the name is never a\n // bare value or an empty string. {position} is 1-based.\n \"charts.datapoint.position\": \"Data point {position}\",\n // DumbbellChart: a target spans two values, so both ends are announced.\n \"charts.datapoint.labelRange\": \"{category}: {start} to {end}\",\n // Announced when `copyValueOnActivate` puts a datapoint's exact value on the\n // clipboard — the recovery path for a compact axis label.\n \"charts.datapoint.copied\": \"Exact value copied\",\n // chart selection — RM-073\n // Appended to a datapoint's name when a host's `selectionStates` resolves it,\n // so the selection tri-state never rides on colour/opacity alone (WCAG 1.4.1).\n // `associated` is the resting state and adds nothing.\n \"charts.datapoint.selected\": \"{label}, selected\",\n \"charts.datapoint.excluded\": \"{label}, excluded\",\n // ChartFrame's SVG/PNG export actions (RM-025). Each string is used twice —\n // as the icon button's `aria-label` (its ONLY accessible name) and as the\n // tooltip a sighted user reads — so one key serves both and they cannot\n // drift apart in translation.\n \"charts.chartFrame.exportSvg\": \"Export as SVG\",\n \"charts.chartFrame.exportPng\": \"Export as PNG\",\n \"charts.chartFrame.flipToTable\": \"Flip to table view\",\n \"charts.chartFrame.showChart\": \"Show chart\",\n \"charts.chartFrame.showAsTable\": \"Show as table\",\n \"charts.chartFrame.downloadCsv\": \"Download CSV\",\n \"charts.chartFrame.expandChart\": \"Expand chart\",\n \"charts.chartFrame.expand\": \"Expand\",\n \"charts.chartFrame.summary\": \"Summary\",\n \"charts.chartFrame.noDataToSummarize\": \"No data to summarize.\",\n \"charts.chartFrame.defaultTitle\": \"Chart\",\n \"charts.chartFrame.summaryDetailLabel\": \"Chart summary\",\n // ChartFrame's scrollable body (#432 round 3, WCAG 2.1.1): only set as\n // `aria-label`/`tabIndex` while the body actually overflows its box.\n \"charts.chartFrame.scrollableRegion\": \"Scrollable chart: {title}\",\n \"charts.legend.label\": \"Chart legend\",\n \"charts.gantt.timeline\": \"Timeline\",\n \"charts.gantt.dragToResizeColumn\": \"Drag to resize column\",\n \"charts.gantt.viewControls\": \"Gantt view controls\",\n \"charts.gantt.viewMode\": \"View mode\",\n \"charts.gantt.viewModeLabel\": \"View mode:\",\n \"charts.gantt.taskList\": \"Task list\",\n \"charts.gantt.taskListLabel\": \"Tasks\",\n \"charts.gantt.noTasksToDisplay\": \"No tasks to display\",\n \"charts.gantt.unitDay\": \"Day\",\n \"charts.gantt.unitWeek\": \"Week\",\n \"charts.gantt.unitMonth\": \"Month\",\n \"charts.gantt.unitQuarter\": \"Quarter\",\n \"charts.gantt.unitHour\": \"Hour\",\n \"charts.gantt.unitMinute\": \"Minute\",\n \"charts.gantt.unitSecond\": \"Second\",\n \"charts.gantt.unitMillisecond\": \"Millisecond\",\n // BulletChart (Few's bullet graph, RM-061). The SVG is aria-hidden, so this\n // sentence — built from these fragments — is the ONLY thing AT reads: it\n // states the value, its relationship to the target, and which qualitative\n // band it falls in. {value}/{target} already carry a caller-supplied name\n // via `labels` when one was given (composed before interpolation), so the\n // template itself stays name-agnostic.\n \"charts.bulletChart.noData\": \"No data\",\n \"charts.bulletChart.valueOfTarget\": \"{value} of {target} target\",\n \"charts.bulletChart.gapAbove\": \"{amount} above target\",\n \"charts.bulletChart.gapBelow\": \"{amount} below target\",\n \"charts.bulletChart.onTarget\": \"on target\",\n \"charts.bulletChart.band\": \"in band {band}\",\n \"charts.bulletChart.comparative\": \"compared to {value}\",\n // RM-075 follow-up: `container` dashboard tile's default tablist name when the tile\n // has no `title`.\n \"charts.dashboard.containerTabs\": \"Container tabs\",\n // dashboard edit — RM-078: edit-layer handles, size badge and screen-reader announcements.\n // Columns and rows are announced 1-based; the badge shows the same numbers.\n \"charts.dashboard.edit.instructions\":\n \"To pick up a tile, press Enter. Use the arrow keys to move it one cell, or four cells with Shift. Press Enter to drop it, or Escape to cancel. On a resize handle, the arrow keys resize directly.\",\n \"charts.dashboard.edit.moveTile\": \"Move {title}\",\n \"charts.dashboard.edit.resizeTile\": \"Resize {title} from {edge}\",\n \"charts.dashboard.edit.edgeTop\": \"top\",\n \"charts.dashboard.edit.edgeTopRight\": \"top-right\",\n \"charts.dashboard.edit.edgeRight\": \"right\",\n \"charts.dashboard.edit.edgeBottomRight\": \"bottom-right\",\n \"charts.dashboard.edit.edgeBottom\": \"bottom\",\n \"charts.dashboard.edit.edgeBottomLeft\": \"bottom-left\",\n \"charts.dashboard.edit.edgeLeft\": \"left\",\n \"charts.dashboard.edit.edgeTopLeft\": \"top-left\",\n \"charts.dashboard.edit.sizeBadge\": \"({x},{y}) ⤢ {w} × {h}\",\n \"charts.dashboard.edit.pickedUp\": \"Picked up {title} at column {x}, row {y}\",\n \"charts.dashboard.edit.moved\": \"Moved to column {x}, row {y}\",\n \"charts.dashboard.edit.dropped\": \"Dropped {title} at column {x}, row {y}, size {w} by {h}\",\n \"charts.dashboard.edit.rejected\": \"Cannot place here — not enough room\",\n \"charts.dashboard.edit.resizing\": \"Resizing {title}: {w} by {h}\",\n \"charts.dashboard.edit.resized\": \"Resized {title} to {w} by {h}\",\n // dashboard edit — RM-078 (follow-up 5): a clamped keyboard step (grid edge or a tile's own\n // min/max size) now announces once per key press instead of staying silent once the layout\n // stops changing; cancel (Escape, or tabbing off a resize handle mid-gesture) says which\n // gesture was cancelled and where it was restored to.\n \"charts.dashboard.edit.clampedEdge\": \"At the {edge} edge. ({x},{y}) {w} × {h}\",\n \"charts.dashboard.edit.moveCancelled\": \"Move cancelled. Restored to column {x}, row {y}\",\n \"charts.dashboard.edit.resizeCancelled\":\n \"Resize cancelled. Restored to column {x}, row {y}, size {w} by {h}\",\n // dashboard toolbar — RM-079: mode switch, undo/redo, grid settings, save/discard, shortcuts.\n \"charts.dashboard.toolbar.ariaLabel\": \"Dashboard toolbar\",\n \"charts.dashboard.toolbar.viewMode\": \"View\",\n \"charts.dashboard.toolbar.editMode\": \"Edit\",\n \"charts.dashboard.toolbar.editDisabledNarrow\": \"Editing needs a wider screen\",\n \"charts.dashboard.toolbar.undo\": \"Undo\",\n \"charts.dashboard.toolbar.redo\": \"Redo\",\n \"charts.dashboard.toolbar.add\": \"Add\",\n \"charts.dashboard.toolbar.grid\": \"Grid\",\n \"charts.dashboard.toolbar.gridSettings\": \"Grid settings\",\n \"charts.dashboard.toolbar.save\": \"Save\",\n \"charts.dashboard.toolbar.discard\": \"Discard\",\n \"charts.dashboard.toolbar.unsavedChanges\": \"Unsaved changes\",\n \"charts.dashboard.toolbar.discardTitle\": \"Discard changes?\",\n \"charts.dashboard.toolbar.discardDescription\":\n \"Your edits since the last save will be lost. This cannot be undone.\",\n \"charts.dashboard.toolbar.discardConfirm\": \"Discard changes\",\n \"charts.dashboard.toolbar.shortcuts\": \"Keyboard shortcuts\",\n \"charts.dashboard.toolbar.shortcutsDescription\":\n \"Every shortcut available while this sheet is focused.\",\n \"charts.dashboard.toolbar.shortcutsGroup\": \"Dashboard\",\n \"charts.dashboard.toolbar.shortcutUndo\": \"Undo\",\n \"charts.dashboard.toolbar.shortcutRedo\": \"Redo\",\n \"charts.dashboard.toolbar.shortcutToggleEdit\": \"Toggle edit mode\",\n \"charts.dashboard.toolbar.shortcutDelete\": \"Delete focused tiles\",\n \"charts.dashboard.toolbar.shortcutDuplicate\": \"Duplicate focused tiles\",\n \"charts.dashboard.toolbar.shortcutClearFocus\": \"Clear focus\",\n \"charts.dashboard.toolbar.shortcutSave\": \"Save\",\n // tile operations — RM-081 follow-up 1: labels for the 5 shortcuts RM-081 added\n // (dashboardShortcutDescriptors); the shortcuts sheet fell back to the raw action key\n // without these.\n \"charts.dashboard.toolbar.shortcutCopy\": \"Copy focused tiles\",\n \"charts.dashboard.toolbar.shortcutCut\": \"Cut focused tiles\",\n \"charts.dashboard.toolbar.shortcutPaste\": \"Paste tiles\",\n \"charts.dashboard.toolbar.shortcutSelectAll\": \"Select all tiles\",\n \"charts.dashboard.toolbar.shortcutContextMenu\": \"Open the focused tile’s context menu\",\n // dashboard toolbar export — RM-084: the \"Export sheet…\" menu (SVG, PNG).\n \"charts.dashboard.toolbar.export\": \"Export sheet…\",\n \"charts.dashboard.toolbar.exportSvg\": \"Export as SVG\",\n \"charts.dashboard.toolbar.exportPng\": \"Export as PNG\",\n \"charts.dashboard.grid.mode\": \"Layout mode\",\n \"charts.dashboard.grid.modeFit\": \"Fit to screen\",\n \"charts.dashboard.grid.modeFlow\": \"Flow\",\n \"charts.dashboard.grid.density\": \"Density\",\n \"charts.dashboard.grid.densityWide\": \"Wide\",\n \"charts.dashboard.grid.densityMedium\": \"Medium\",\n \"charts.dashboard.grid.densityNarrow\": \"Narrow\",\n \"charts.dashboard.grid.densityCustom\": \"Custom\",\n \"charts.dashboard.grid.columns\": \"Columns\",\n \"charts.dashboard.grid.rows\": \"Rows\",\n \"charts.dashboard.grid.rowHeight\": \"Row height\",\n \"charts.dashboard.grid.gap\": \"Gap\",\n \"charts.dashboard.grid.extendable\": \"Extend sheet\",\n \"charts.dashboard.grid.extendableDescription\":\n \"Adds 50 % more rows so it never runs out of room.\",\n // dashboard tile ops — RM-081: the tile context menu (right-click, header kebab, Shift+F10)\n // and its \"Replace with…\" submenu, plus the toast on a destructive multi-tile delete.\n \"charts.dashboard.tileOps.menuLabel\": \"Tile actions\",\n \"charts.dashboard.tileOps.duplicate\": \"Duplicate\",\n \"charts.dashboard.tileOps.replaceWith\": \"Replace with…\",\n \"charts.dashboard.tileOps.addToLibrary\": \"Add to library\",\n \"charts.dashboard.tileOps.copy\": \"Copy\",\n \"charts.dashboard.tileOps.cut\": \"Cut\",\n \"charts.dashboard.tileOps.paste\": \"Paste\",\n \"charts.dashboard.tileOps.pasteAndReplace\": \"Paste and replace\",\n \"charts.dashboard.tileOps.bringForward\": \"Bring forward\",\n \"charts.dashboard.tileOps.sendBackward\": \"Send backward\",\n \"charts.dashboard.tileOps.delete\": \"Delete\",\n \"charts.dashboard.tileOps.deletedOne\": \"Tile deleted\",\n \"charts.dashboard.tileOps.deletedMany\": \"{count} tiles deleted\",\n \"charts.dashboard.tileOps.undo\": \"Undo\",\n // tile operations — RM-081 follow-up 1: the header-kebab entry that opens the same context\n // menu, and the floating align/distribute toolbar over a multi-selection.\n \"charts.dashboard.tileOps.openTileMenu\": \"Tile actions…\",\n \"charts.dashboard.tileOps.selectionToolbarLabel\": \"Align selection\",\n \"charts.dashboard.tileOps.alignLeft\": \"Align left edges\",\n \"charts.dashboard.tileOps.alignCenterH\": \"Align horizontal centers\",\n \"charts.dashboard.tileOps.alignRight\": \"Align right edges\",\n \"charts.dashboard.tileOps.alignTop\": \"Align top edges\",\n \"charts.dashboard.tileOps.alignCenterV\": \"Align vertical centers\",\n \"charts.dashboard.tileOps.alignBottom\": \"Align bottom edges\",\n \"charts.dashboard.tileOps.distributeHorizontal\": \"Distribute horizontally\",\n \"charts.dashboard.tileOps.distributeVertical\": \"Distribute vertically\",\n // Dual-axis — RM-121\n \"charts.axis.leftScale\": \"Left scale\",\n \"charts.axis.rightScale\": \"Right scale\",\n\n // ── @elabs-ai/components-maps ─────────────────────────────────────────────────────────────\n \"maps.popup.close\": \"Close popup\",\n \"maps.marker.drag\": \"Draggable marker. Arrow keys move it, Shift for a larger step.\",\n \"maps.canvas.unavailableTitle\": \"Map unavailable\",\n \"maps.canvas.unavailableDescription\": \"This browser can’t render WebGL maps.\",\n \"maps.canvas.loading\": \"Loading map\",\n \"maps.controls.zoomIn\": \"Zoom in\",\n \"maps.controls.zoomOut\": \"Zoom out\",\n \"maps.controls.resetBearing\": \"Reset bearing to north\",\n \"maps.controls.locate\": \"Find my location\",\n \"maps.controls.locating\": \"Locating\",\n \"maps.controls.fullscreen\": \"Toggle fullscreen\",\n \"maps.controls.fit\": \"Fit the whole plan\",\n\n // ── @elabs-ai/components-flow ─────────────────────────────────────────────────────────────\n \"flow.inspectorPanel.close\": \"Close inspector\",\n \"flow.inspectorPanel.title\": \"Inspector\",\n \"flow.inspectorPanel.emptyMessage\": \"Select a node to see its details.\",\n\n // ── @elabs-ai/components-ai ───────────────────────────────────────────────────────────────\n // Namespaced `ai.<area>.<key>` so package microcopy can't collide with the\n // generic keys above, or with a future package's. See ADR 0017.\n //\n // The three attachment errors are the only @elabs-ai/components-ai strings a user reads as a\n // SYSTEM MESSAGE rather than a control label — they are the reason this bundle\n // grew beyond the generic set.\n \"ai.promptInput.errorAccept\": \"No files match the accepted types.\",\n \"ai.promptInput.errorMaxFileSize\": \"All files exceed the maximum size.\",\n \"ai.promptInput.errorMaxFiles\": \"Too many files. Some were not added.\",\n \"ai.promptInput.placeholder\": \"What would you like to know?\",\n \"ai.promptInput.uploadFiles\": \"Upload files\",\n \"ai.promptInput.submit\": \"Submit\",\n \"ai.promptInput.stop\": \"Stop\",\n \"ai.agent.instructions\": \"Instructions\",\n \"ai.agent.tools\": \"Tools\",\n \"ai.agent.outputSchema\": \"Output Schema\",\n \"ai.codeBlock.generating\": \"Generating…\",\n \"ai.composer.placeholder\": \"Ask me anything…\",\n \"ai.tokenUsage.usage\": \"Model context usage\",\n \"ai.tokenUsage.totalCost\": \"Total cost\",\n \"ai.tokenUsage.input\": \"Input\",\n \"ai.tokenUsage.output\": \"Output\",\n \"ai.tokenUsage.reasoning\": \"Reasoning\",\n \"ai.tokenUsage.cache\": \"Cache\",\n \"ai.contextPanel.back\": \"Back to context\",\n \"ai.contextPanel.toggle\": \"Toggle context panel\",\n // The mobile Sheet's sr-only title (#18) — distinct from `contextPanel.toggle`,\n // which labels the button that opens/closes it.\n \"ai.contextPanel.title\": \"Context panel\",\n \"ai.contextPanel.description\": \"Displays the chat context panel.\",\n \"ai.environmentVariables.toggleVisibility\": \"Toggle value visibility\",\n \"ai.gallery.label\": \"Image gallery\",\n \"ai.gallery.expandImage\": \"Expand image\",\n \"ai.gallery.downloadImage\": \"Download image\",\n \"ai.gallery.noImages\": \"No images\",\n \"ai.gallery.noDetails\": \"No details\",\n // Shared by Tool's technical view and SchemaDisplay's request panel.\n \"ai.schemaDisplay.parameters\": \"Parameters\",\n \"ai.schemaDisplay.response\": \"Response\",\n \"ai.schemaDisplay.requestBody\": \"Request Body\",\n // ReasoningTrigger's default not-yet-timed message (before `duration` is known).\n \"ai.reasoning.thoughtDefault\": \"Thought for a few seconds\",\n \"ai.reasoning.thinking\": \"Thinking…\",\n \"ai.reasoning.thoughtForDuration\": \"Thought for {duration} seconds\",\n \"ai.stackTrace.empty\": \"No stack frames\",\n \"ai.webPreview.noConsoleOutput\": \"No console output\",\n // PlanTrigger's icon-only collapse/expand control (sr-only).\n \"ai.plan.togglePlan\": \"Toggle plan\",\n \"ai.message.actions\": \"Message actions\",\n \"ai.message.editMessage\": \"Edit message\",\n \"ai.message.feedback\": \"Message feedback\",\n \"ai.message.previousBranch\": \"Previous branch\",\n \"ai.message.nextBranch\": \"Next branch\",\n \"ai.messageCompare.error\": \"Error\",\n \"ai.messageCompare.tabs\": \"Compare responses\",\n \"ai.persona.idle\": \"Assistant idle\",\n \"ai.persona.listening\": \"Assistant listening\",\n \"ai.persona.thinking\": \"Assistant thinking…\",\n \"ai.persona.speaking\": \"Assistant speaking\",\n \"ai.persona.asleep\": \"Assistant asleep\",\n // Optional-peer lazy engines (issue #33) — one shared pair every lazy\n // boundary's missing-dependency panel resolves through, plus one\n // `feature`-name key per boundary that renders it (mermaid, the terminal).\n \"ai.error.engineMissing\": \"{feature} unavailable\",\n \"ai.error.engineMissingBody\": \"{feature} needs {packages} to be installed.\",\n \"ai.error.retry\": \"Try again\",\n \"ai.mermaid.feature\": \"Mermaid diagrams\",\n \"ai.mermaid.renderError\": \"Diagram couldn't be drawn\",\n \"ai.terminal.feature\": \"Interactive terminal\",\n \"ai.terminal.renderError\": \"Terminal couldn't start\",\n \"ai.audioPlayer.feature\": \"Audio player\",\n \"ai.audioPlayer.renderError\": \"Audio player couldn't load\",\n // AudioVisualizer. Announced through a throttled `role=\"status\"` region —\n // the canvas itself is decorative (see .claude/rules/loading-states.md and\n // issue #21's accessibility guidance).\n \"ai.audioVisualizer.idle\": \"Microphone not connected\",\n \"ai.audioVisualizer.silent\": \"No input detected\",\n \"ai.audioVisualizer.active\": \"Microphone active\",\n \"ai.selectionToolbar.label\": \"Selection actions\",\n \"ai.webPreview.urlPlaceholder\": \"Enter URL...\",\n \"ai.micSelector.searchPlaceholder\": \"Search microphones...\",\n \"ai.messageForm.selectPlaceholder\": \"Select…\",\n \"ai.messageForm.label\": \"Form\",\n \"ai.messageTable.label\": \"Data table\",\n \"ai.voiceSelector.playPreview\": \"Play preview\",\n \"ai.voiceSelector.pausePreview\": \"Pause preview\",\n\n // TurnStatus / SessionStatusBar (#105). `label` itself is caller-supplied\n // (\"Working…\", \"Editing files…\") and rendered verbatim, so it needs no key\n // here — only the component-owned completed-turn sentence and controls do.\n \"ai.turnStatus.completedIn\": \"Turn completed in {elapsed}\",\n \"ai.turnStatus.completed\": \"Turn completed\",\n \"ai.turnStatus.scrollToBottom\": \"Scroll to bottom\",\n \"ai.sessionStatusBar.connections\": \"{connected} of {total} connections\",\n \"ai.sessionStatusBar.connecting\": \"Connecting…\",\n // SessionHeader (#110). The section headings and the quick-action group name\n // are component-owned chrome; the capability/what's-new item text itself is\n // caller-supplied and rendered verbatim.\n \"ai.sessionHeader.capabilities\": \"Capabilities\",\n \"ai.sessionHeader.whatsNew\": \"What’s new\",\n \"ai.sessionHeader.quickActions\": \"Quick actions\",\n // PermissionModeSelect (#104). The in-force marker is a WORD inside the mode\n // label, so the current mode survives greyscale and reaches the accessible name.\n \"ai.permissionModeSelect.current\": \"Current\",\n // AgentEvent (#109). The pass/fail WORD is the non-colour channel — the tone\n // is redundant with it, so a check outcome survives greyscale (WCAG 1.4.1).\n \"ai.agentEvent.checkPassed\": \"Passed\",\n \"ai.agentEvent.checkFailed\": \"Failed\",\n \"ai.agentEvent.checksSummary\": \"{passed}/{ran} checks passed\",\n \"ai.agentEvent.phaseBefore\": \"Before\",\n \"ai.agentEvent.phaseAfter\": \"After\",\n \"ai.agentEvent.phaseLifecycle\": \"Lifecycle\",\n // DiffView (#102). `addedLine` / `removedLine` are the sr-only polarity\n // prefixes — the +/− glyph is aria-hidden, so these WORDS are the channel a\n // greyscale or screen-reader user recovers the polarity from (WCAG 1.4.1).\n // They intentionally end in a space so they read as a prefix to the code line.\n \"ai.diffView.addedLine\": \"Added: \",\n \"ai.diffView.removedLine\": \"Removed: \",\n \"ai.diffView.statsSummary\": \"{additions} additions, {deletions} deletions\",\n \"ai.diffView.showMore\": { one: \"Show {count} more line\", other: \"Show {count} more lines\" },\n \"ai.diffView.pagerLegend\": \"Arrow keys scroll, Page Up/Down page, Home/End jump\",\n \"ai.diffView.regionLabel\": \"Code diff\",\n \"ai.diffView.loading\": \"Loading diff…\",\n // ApprovalCard (#103). The SCOPE sentence is what makes an N-option\n // permission prompt safe to answer: \"Yes\" and \"Yes, and don't ask again\" look\n // alike and mean very different things. Each option links its scope sentence\n // through aria-describedby, so the blast radius of a choice reaches assistive\n // tech as words — never as a colour or a data-* attribute.\n \"ai.approvalCard.scopeOnceDescription\": \"Applies to this action only.\",\n \"ai.approvalCard.scopeSessionDescription\":\n \"Applies to actions like this for the rest of this session.\",\n \"ai.approvalCard.scopeAlwaysDescription\": \"Applies to actions like this from now on.\",\n \"ai.approvalCard.scopeDenyDescription\": \"Rejects this action.\",\n \"ai.approvalCard.reasonLabel\": \"Reason\",\n \"ai.approvalCard.reasonPlaceholder\": \"Add a reason (optional)…\",\n // PromptInputSlash (#106). `listLabel` goes to cmdk's own `label` prop, not\n // `aria-label` — cmdk overwrites a consumer `aria-label` on CommandList and\n // reads its accessible name off `label` instead.\n \"ai.promptInputSlash.listLabel\": \"Commands\",\n \"ai.promptInputSlash.empty\": \"No matching commands.\",\n\n // ── Streamdown chrome (third-party rendering surface) ──────────────────────\n // `streamdown` renders its OWN controls inside every streamed-markdown block\n // (code header, table menus, Mermaid toolbar, external-link interstitial) and\n // exposes them through a `translations` prop. Those strings live in the\n // dependency, not in our source, so `pnpm microcopy:check` structurally cannot\n // see them — without this block a `<LocaleProvider>` stops at the boundary and\n // the chrome stays English (#310).\n //\n // Values are BYTE-IDENTICAL to streamdown@2.5.0's `defaultTranslations`, so\n // wiring them through `t()` is a no-op for anyone who overrides nothing\n // (ADR 0017's defaults-unchanged property). Keep them that way on upgrade.\n //\n // Deliberately NOT aliased onto the generic `close` / `ai.gallery.downloadImage`\n // keys: a locale may want different wording inside markdown chrome than in the\n // surrounding app, and a translator needs the Streamdown surface addressable as\n // one block.\n \"ai.streamdown.copyCode\": \"Copy Code\",\n \"ai.streamdown.downloadFile\": \"Download file\",\n \"ai.streamdown.downloadDiagram\": \"Download diagram\",\n \"ai.streamdown.downloadDiagramAsSvg\": \"Download diagram as SVG\",\n \"ai.streamdown.downloadDiagramAsPng\": \"Download diagram as PNG\",\n \"ai.streamdown.downloadDiagramAsMmd\": \"Download diagram as MMD\",\n \"ai.streamdown.viewFullscreen\": \"View fullscreen\",\n \"ai.streamdown.exitFullscreen\": \"Exit fullscreen\",\n \"ai.streamdown.mermaidFormatSvg\": \"SVG\",\n \"ai.streamdown.mermaidFormatPng\": \"PNG\",\n \"ai.streamdown.mermaidFormatMmd\": \"MMD\",\n \"ai.streamdown.copyTable\": \"Copy table\",\n \"ai.streamdown.copyTableAsMarkdown\": \"Copy table as Markdown\",\n \"ai.streamdown.copyTableAsCsv\": \"Copy table as CSV\",\n \"ai.streamdown.copyTableAsTsv\": \"Copy table as TSV\",\n \"ai.streamdown.downloadTable\": \"Download table\",\n \"ai.streamdown.downloadTableAsCsv\": \"Download table as CSV\",\n \"ai.streamdown.downloadTableAsMarkdown\": \"Download table as Markdown\",\n \"ai.streamdown.tableFormatMarkdown\": \"Markdown\",\n \"ai.streamdown.tableFormatCsv\": \"CSV\",\n \"ai.streamdown.tableFormatTsv\": \"TSV\",\n \"ai.streamdown.imageNotAvailable\": \"Image not available\",\n \"ai.streamdown.downloadImage\": \"Download image\",\n \"ai.streamdown.openExternalLink\": \"Open external link?\",\n // Straight apostrophe on purpose — must stay byte-identical to streamdown's\n // default, so the micro-typography curly-quote preference does not apply here.\n \"ai.streamdown.externalLinkWarning\": \"You're about to visit an external website.\",\n \"ai.streamdown.close\": \"Close\",\n \"ai.streamdown.copyLink\": \"Copy link\",\n \"ai.streamdown.copied\": \"Copied\",\n \"ai.streamdown.openLink\": \"Open link\",\n // Tool (#4 i18n sweep).\n \"ai.tool.showTechnicalDetails\": \"Show technical details\",\n \"ai.tool.error\": \"Error\",\n \"ai.tool.result\": \"Result\",\n // PackageInfo.\n \"ai.packageInfo.dependencies\": \"Dependencies\",\n // AssetPreview.\n \"ai.assetPreview.rowCount\": { one: \"{count} row\", other: \"{count} rows\" },\n \"ai.assetPreview.noPreview\": \"No preview available…\",\n \"ai.assetPreview.preview\": \"Preview\",\n \"ai.assetPreview.raw\": \"Raw\",\n // WebPreview's sandboxed iframe accessible name.\n \"ai.webPreview.previewTitle\": \"Preview\",\n // A2UI surface (D2 — an agent-designed screen rendered from data)\n \"ai.a2ui.loading\": \"Loading surface…\",\n \"ai.a2ui.invalid\": \"This surface can’t be shown — it doesn’t match the catalog.\",\n \"ai.a2ui.moreErrors\": { one: \"…and {count} more problem\", other: \"…and {count} more problems\" },\n // FileTree's expand/collapse chevron control.\n \"ai.fileTree.expandFolder\": \"Expand {name}\",\n \"ai.fileTree.collapseFolder\": \"Collapse {name}\",\n \"ai.fileTree.noAssetsProduced\": \"No assets produced yet.\",\n \"ai.conversation.download\": \"Download conversation\",\n // OpenInChat. `provider` is a brand name (ChatGPT, Claude, …) — kept\n // untranslated data, interpolated into the translated \"Open in …\" phrase.\n \"ai.openInChat.trigger\": \"Open in chat\",\n \"ai.openInChat.openInProvider\": \"Open in {provider}\",\n // TestResults.\n \"ai.testResults.passedCount\": { one: \"{count} passed\", other: \"{count} passed\" },\n \"ai.testResults.failedCount\": { one: \"{count} failed\", other: \"{count} failed\" },\n \"ai.testResults.skippedCount\": { one: \"{count} skipped\", other: \"{count} skipped\" },\n \"ai.testResults.testsPassed\": \"{passed}/{total} tests passed\",\n\n // ── @elabs-ai/components-editor ───────────────────────────────────────────\n // DecisionCard (ai-objects). Status vocabulary + the card's own accessible name\n // and the \"Alternatives considered\" section (shared by its heading and its list's\n // aria-label).\n \"editor.decisionCard.statusAccepted\": \"Accepted\",\n \"editor.decisionCard.statusRejected\": \"Rejected\",\n \"editor.decisionCard.statusProposed\": \"Proposed\",\n \"editor.decisionCard.statusSuperseded\": \"Superseded\",\n \"editor.decisionCard.label\": \"Decision: {label}\",\n \"editor.decisionCard.alternativesConsidered\": \"Alternatives considered\",\n // KnowledgeCard (ai-objects).\n \"editor.knowledgeCard.label\": \"Knowledge fact\",\n \"editor.knowledgeCard.heading\": \"Knowledge\",\n \"editor.knowledgeCard.sources\": \"Sources\",\n \"editor.knowledgeCard.source\": \"Source: {name}\",\n \"editor.knowledgeCard.sourceUnresolved\": \"Source (unresolved): {name}\",\n // CalcBlock. `equals` is the sr-only prefix read before a computed value —\n // intentionally ends in a space so it reads as a prefix (mirrors `ai.diffView.addedLine`).\n \"editor.calcBlock.error\": \"Error: {message}\",\n \"editor.calcBlock.equals\": \"equals \",\n \"editor.calcBlock.total\": \"Total\",\n \"editor.calcBlock.emptyBlock\": \"Empty calc block.\",\n // CopyButton. The \"Copy\" state reuses the shared generic `copy` key.\n \"editor.copyButton.copied\": \"Copied\",\n // EditorToolbar.\n \"editor.editorToolbar.language\": \"Language\",\n // Citations (markdown-academic).\n \"editor.citations.citationLabel\": \"Citation: {name}\",\n \"editor.citations.unresolvedCitation\": \"Unresolved citation\",\n \"editor.citations.unresolvedKey\": \"Unresolved: @{key}\",\n \"editor.citations.references\": \"References\",\n // Math (markdown-academic).\n \"editor.math.renderError\": \"Could not render math\",\n \"editor.math.renderErrorLabel\": \"Math (could not render): {tex}\",\n // CompletionMenu (markdown-editor).\n \"editor.completions.suggestions\": \"Suggestions\",\n \"editor.completions.noSuggestions\": \"No suggestions\",\n // SlashMenu (markdown-editor).\n \"editor.slashMenu.insertBlock\": \"Insert block\",\n \"editor.slashMenu.noMatchingBlocks\": \"No matching blocks\",\n // TableControlsView (markdown-editor/table-view — the WYSIWYG GFM table toolbar).\n \"editor.tableView.tableControls\": \"Table controls\",\n \"editor.tableView.row\": \"Row\",\n \"editor.tableView.col\": \"Col\",\n \"editor.tableView.addRowAbove\": \"Add row above\",\n \"editor.tableView.addRowBelow\": \"Add row below\",\n \"editor.tableView.deleteRow\": \"Delete row\",\n \"editor.tableView.addColumnLeft\": \"Add column left\",\n \"editor.tableView.addColumnRight\": \"Add column right\",\n \"editor.tableView.deleteColumn\": \"Delete column\",\n // Directive node-views (markdown-editor/directive-views — Milkdown WYSIWYG).\n \"editor.directiveViews.cardTitle\": \"Card title\",\n \"editor.directiveViews.calloutTitle\": \"Callout title\",\n \"editor.directiveViews.unknownBlock\": \"Unknown block: {name}\",\n \"editor.directiveViews.unknownInlineBlock\": \"Unknown inline block:\",\n \"editor.directiveViews.metricLabel\": \"Metric label\",\n \"editor.directiveViews.metricLabelPlaceholder\": \"Label\",\n \"editor.directiveViews.metricValue\": \"Metric value\",\n \"editor.directiveViews.metricValuePlaceholder\": \"0\",\n \"editor.directiveViews.editIteration\": \"Edit iteration…\",\n \"editor.directiveViews.changeLayout\": \"Change layout\",\n \"editor.directiveViews.transpose\": \"Transpose\",\n \"editor.directiveViews.convertToStatic\": \"Convert to static\",\n \"editor.directiveViews.needsEmbeddedValues\": \"— needs embedded values\",\n \"editor.directiveViews.pivot\": \"Pivot\",\n \"editor.directiveViews.iterate\": \"Iterate\",\n \"editor.directiveViews.perItem\": \"· per {as}\",\n \"editor.directiveViews.templateSuffix\": \"— template\",\n \"editor.directiveViews.iterationActions\": \"Iteration actions\",\n \"editor.directiveViews.iterationActionsTitle\": \"Iteration actions…\",\n // IterationBuilderDialog (markdown-iteration) — the guided iterate/pivot authoring modal.\n \"editor.iterationBuilder.pivotNoun\": \"pivot\",\n \"editor.iterationBuilder.iterationNoun\": \"iteration\",\n \"editor.iterationBuilder.editTitle\": \"Edit {noun}\",\n \"editor.iterationBuilder.insertTitle\": \"Insert {noun}\",\n \"editor.iterationBuilder.pivotDescription\":\n \"Pick the row and column values, then write the per-cell template. The matrix below fills in live.\",\n \"editor.iterationBuilder.iterationDescription\":\n \"Add the list values, then write the per-row template. The result below fills in live.\",\n \"editor.iterationBuilder.bindName\": \"Bind name\",\n \"editor.iterationBuilder.bindNamePlaceholder\": \"item\",\n \"editor.iterationBuilder.bindNameHintPrefix\": \"Use \",\n \"editor.iterationBuilder.bindNameHintSuffix\": \" in the template.\",\n \"editor.iterationBuilder.rowValues\": \"Row values\",\n \"editor.iterationBuilder.values\": \"Values\",\n \"editor.iterationBuilder.valuePlaceholder\": \"Type a value, press Enter…\",\n \"editor.iterationBuilder.columnValues\": \"Column values\",\n \"editor.iterationBuilder.layout\": \"Layout\",\n \"editor.iterationBuilder.perCellTemplate\": \"Per-cell template\",\n \"editor.iterationBuilder.perRowTemplate\": \"Per-row template\",\n \"editor.iterationBuilder.livePreview\": \"Live preview\",\n \"editor.iterationBuilder.cancel\": \"Cancel\",\n \"editor.iterationBuilder.save\": \"Save\",\n \"editor.iterationBuilder.insert\": \"Insert\",\n // IterationTemplateDialog (markdown-iteration) — the lighter template-only modal.\n \"editor.templateDialog.editPivotTitle\": \"Edit pivot template\",\n \"editor.templateDialog.editIterationTitle\": \"Edit iteration template\",\n \"editor.templateDialog.descriptionPrefix\": \"The per-{unit} template. Use \",\n \"editor.templateDialog.descriptionMiddle\": \" placeholders (e.g. \",\n \"editor.templateDialog.descriptionSuffix\":\n \") — each is filled per {unit} when the block renders.\",\n \"editor.templateDialog.editorLabel\": \"Iteration template editor\",\n \"editor.templateDialog.cancel\": \"Cancel\",\n \"editor.templateDialog.saveTemplate\": \"Save template\",\n // DocumentOutline (markdown-outline).\n \"editor.documentOutline.label\": \"Document outline\",\n \"editor.documentOutline.empty\": \"No headings yet.\",\n // MarkdownToolbar (the source-pane formatting bar). Directive snippet labels\n // are the Insert menu's fallback item text (`DIRECTIVE_SNIPPETS`); the snippet\n // MARKDOWN they insert is example document content, not UI chrome, and stays\n // English (see the `i18n-exempt` comments at each snippet).\n \"editor.markdownToolbar.label\": \"Markdown formatting\",\n \"editor.markdownToolbar.bold\": \"Bold\",\n \"editor.markdownToolbar.italic\": \"Italic\",\n \"editor.markdownToolbar.inlineCode\": \"Inline code\",\n \"editor.markdownToolbar.link\": \"Link\",\n \"editor.markdownToolbar.headingLevel\": \"Heading level\",\n \"editor.markdownToolbar.heading\": \"Heading\",\n \"editor.markdownToolbar.headingLevelItem\": \"Heading {level}\",\n \"editor.markdownToolbar.quote\": \"Quote\",\n \"editor.markdownToolbar.bulletList\": \"Bullet list\",\n \"editor.markdownToolbar.numberedList\": \"Numbered list\",\n \"editor.markdownToolbar.divider\": \"Divider\",\n \"editor.markdownToolbar.insertBlock\": \"Insert block\",\n \"editor.markdownToolbar.insert\": \"Insert\",\n \"editor.markdownToolbar.insertBrandBlock\": \"Insert brand block\",\n \"editor.markdownToolbar.directiveCard\": \"Card\",\n \"editor.markdownToolbar.directiveCallout\": \"Callout\",\n \"editor.markdownToolbar.directiveMetric\": \"Metric\",\n \"editor.markdownToolbar.directiveTimeline\": \"Timeline\",\n // MarkdownWorkspace's focus-writing toggle.\n \"editor.markdownWorkspace.focusWriting\": \"Focus writing\",\n \"editor.markdownWorkspace.focus\": \"Focus\",\n \"editor.markdownWorkspace.focusWritingHint\": \"Typewriter scrolling · inactive paragraphs dim\",\n // MermaidDiagram (the inline renderer).\n \"editor.mermaidDiagram.label\": \"Diagram\",\n \"editor.mermaidDiagram.expand\": \"Expand diagram\",\n \"editor.mermaidDiagram.downloadSvg\": \"Download diagram as SVG\",\n \"editor.mermaidDiagram.copySource\": \"Copy diagram source\",\n \"editor.mermaidDiagram.renderFailed\": \"Diagram failed to render\",\n \"editor.mermaidDiagram.rendering\": \"Rendering diagram…\",\n // MermaidViewer (the expanded zoom/pan/search surface). `nodeCountHint` mirrors\n // the ORIGINAL (pre-i18n) copy exactly, including its always-plural \"nodes\" —\n // it is a static hint (\"N nodes · type to filter\"), not a real plural form, so\n // it stays a plain interpolated string rather than a `PluralMessage`.\n \"editor.mermaidViewer.findPlaceholder\": \"Find in diagram…\",\n \"editor.mermaidViewer.findLabel\": \"Find in diagram\",\n \"editor.mermaidViewer.matchCount\": { one: \"{count} node\", other: \"{count} nodes\" },\n \"editor.mermaidViewer.nodeCountHint\": \"{count} nodes · type to filter\",\n \"editor.mermaidViewer.zoomOut\": \"Zoom out\",\n \"editor.mermaidViewer.zoomIn\": \"Zoom in\",\n \"editor.mermaidViewer.resetZoom\": \"Reset zoom to 100%\",\n \"editor.mermaidViewer.fitDiagram\": \"Fit diagram\",\n\n // ── @elabs-ai/components-viewer (ADR 0024) ─────────────────────────\n // FileViewer chrome. Every control here is icon-only, so these ARE the\n // accessible names — a non-English screen-reader user has no workaround.\n \"viewer.label\": \"File viewer\",\n // The scrolling content region's accessible name. It is a focusable tab stop\n // (WCAG 2.1.1: a pane that scrolls but holds nothing focusable is unreachable\n // from a keyboard), so it needs a name as well as a role.\n \"viewer.content\": \"File content\",\n \"viewer.download\": \"Download {name}\",\n \"viewer.raw\": \"Show source\",\n \"viewer.rendered\": \"Show rendered\",\n // States. `loading` announces the region once (role=\"status\"); the skeleton\n // itself is aria-hidden, so this is the only thing AT hears.\n \"viewer.loading\": \"Loading {name}…\",\n \"viewer.empty\": \"No file selected\",\n \"viewer.emptyBody\": \"Choose a file to preview it here.\",\n // Failures. Each maps to one ViewerErrorCode, so the code is the contract and\n // the wording can change per locale without touching component logic.\n \"viewer.error.unsupportedFormat\": \"Can't preview this file type\",\n \"viewer.error.unsupportedFormatBody\":\n \"{name} can be downloaded, but there's no preview for it here.\",\n \"viewer.error.parserMissing\": \"Preview unavailable\",\n \"viewer.error.parserMissingBody\": \"Previewing {name} needs {packages} to be installed.\",\n \"viewer.error.readFailed\": \"Couldn't open this file\",\n \"viewer.error.readFailedBody\":\n \"{name} couldn't be read. It may have moved, or you may not have access.\",\n \"viewer.error.parseFailed\": \"Couldn't read this file\",\n \"viewer.error.parseFailedBody\": \"{name} isn't a valid {format} file, or it's damaged.\",\n \"viewer.error.imageFailedTitle\": \"Couldn't show this image\",\n \"viewer.error.imageFailed\": \"{name} could not be displayed.\",\n \"viewer.retry\": \"Try again\",\n // Table view (CSV/TSV). The count is a summary for the whole grid.\n \"viewer.table.caption\": \"{rows} rows, {columns} columns\",\n \"viewer.table.truncated\": \"Showing the first {count} rows.\",\n \"viewer.table.emptyCell\": \"Empty\",\n // Text and JSON views.\n \"viewer.text.truncated\": \"Showing the first {shown} of {total} characters.\",\n \"viewer.json.tree\": \"JSON structure\",\n // Page, scale and rotation chrome (ADR 0026). Format-agnostic: one pager\n // serves PDF pages and PowerPoint slides, so the words are about \"pages\" and\n // the slide-specific wording lives on the slide itself.\n \"viewer.pager.controls\": \"Pages\",\n \"viewer.pager.previous\": \"Previous page\",\n \"viewer.pager.next\": \"Next page\",\n // The field's own accessible name. The visible \"of {total}\" beside it is not\n // a label — a screen reader would read the two as one run without this.\n \"viewer.pager.pageNumber\": \"Page number\",\n \"viewer.pager.of\": \"of {total}\",\n // Live region: a repainted canvas and a changed input value both announce\n // nothing, so this sentence is the only confirmation a page turned.\n \"viewer.pager.status\": \"Page {page} of {total}\",\n \"viewer.zoom.controls\": \"Zoom\",\n \"viewer.zoom.in\": \"Zoom in\",\n \"viewer.zoom.out\": \"Zoom out\",\n \"viewer.zoom.level\": \"Zoom level\",\n \"viewer.zoom.fitWidth\": \"Fit width\",\n \"viewer.zoom.fitPage\": \"Fit page\",\n \"viewer.zoom.status\": \"Zoom {level}\",\n \"viewer.rotate\": \"Rotate clockwise\",\n // PDF view.\n \"viewer.pdf.page\": \"Page {page}\",\n \"viewer.pdf.pages\": \"Document pages\",\n \"viewer.pdf.pageFailed\": \"Page {page} couldn't be drawn.\",\n // Media view (video / audio).\n \"viewer.media.label\": \"{name} player\",\n \"viewer.media.unsupportedTitle\": \"Can't play this file\",\n \"viewer.media.unsupported\": \"This browser can't play {name}.\",\n // Office views. A preview shows a document's STRUCTURE, not Word's or\n // PowerPoint's page layout — the copy never promises a faithful reproduction.\n \"viewer.docx.empty\": \"This document has no text\",\n \"viewer.sheet.tabs\": \"Sheets\",\n \"viewer.pptx.slide\": \"Slide {slide}\",\n \"viewer.pptx.untitled\": \"Untitled slide\",\n \"viewer.pptx.notes\": \"Speaker notes\",\n \"viewer.pptx.empty\": \"This slide has no text\",\n // Code and markdown views. `file.empty` is shared: \"the file opened and there\n // is nothing in it\" is one message whatever the format.\n \"viewer.file.empty\": \"This file is empty\",\n // Find-in-document (ADR 0025). The count is a live region read on every step,\n // so it stays short; `findNone` replaces it rather than sitting beside it, so\n // a fruitless search never reads as \"0 of 0\".\n \"viewer.find.open\": \"Find in document\",\n \"viewer.find.label\": \"Find in document\",\n \"viewer.find.placeholder\": \"Find…\",\n \"viewer.find.close\": \"Close find\",\n \"viewer.find.previous\": \"Previous match\",\n \"viewer.find.next\": \"Next match\",\n \"viewer.find.caseSensitive\": \"Match case\",\n \"viewer.find.count\": \"{index} of {total}\",\n \"viewer.find.none\": \"No matches\",\n \"viewer.find.capped\": \"Showing the first {limit} matches of {total}.\",\n // Citations / passages the app points the viewer at. A miss is a STATE, not a\n // silent no-op — the reader is told the passage could not be located, and\n // \"past the part we previewed\" is different news from \"not in this document\".\n \"viewer.highlight.notFound\": \"Couldn't find that passage in this document.\",\n \"viewer.highlight.notFoundTruncated\":\n \"That passage may be beyond the part of this document we could preview.\",\n \"viewer.highlight.unsupported\": \"This build can't point at part of a {format} file.\",\n \"viewer.highlight.previous\": \"Previous passage\",\n \"viewer.highlight.next\": \"Next passage\",\n \"viewer.highlight.count\": \"Passage {index} of {total}\",\n\n // ── @elabs-ai/components-terminal ─────────────────────────────────────────\n // Terminal (the read-only ANSI log): the ONE live-region announcement for\n // its `isStreaming` rung. The blinking cursor block is the only other\n // streaming signal and it is purely visual, so without this a screen-reader\n // user attached to a running build or deploy log gets no indication that\n // anything is still arriving.\n \"terminal.output.streaming\": \"Streaming output…\",\n // TerminalTranscriptRow (#117 T2): the gutter's meaning as words, so the\n // \"who spoke / what it printed / did it fail\" grammar survives greyscale\n // and reaches assistive tech, not only the glyph + colour.\n \"terminal.transcriptRow.user\": \"Prompt\",\n \"terminal.transcriptRow.agent\": \"Agent\",\n \"terminal.transcriptRow.output\": \"Output\",\n \"terminal.transcriptRow.error\": \"Error\",\n \"terminal.transcriptRow.exitCode\": \"Exit {code}\",\n // TerminalTodoList (#117 T5): the three-state checklist's announced word\n // per row — the second, non-colour channel beside the ✔ / ◼ / ◻ glyph and\n // the strikethrough/bold treatment. Wording verified 2026-09-01 against\n // Claude Code v2.1.207's own upstream state words, parentheses included.\n \"terminal.todoList.done\": \"(completed)\",\n \"terminal.todoList.active\": \"(in progress)\",\n \"terminal.todoList.pending\": \"(pending)\",\n // TerminalEventLine (#117 T6): the lifecycle/hook event line. `outcome*` is\n // the sr-only word beside the (always aria-hidden) StatusIcon glyph —\n // never omitted for the default \"ok\" case, so \"succeeded\" is exactly as\n // recoverable as \"failed\". `hooksTotal`/`hooksResult` are the terminal's\n // own literal `[hooks: …]` bracket vocabulary, verified live 2026-09-01\n // against Grok CLI v0.2.93; `hooksFailed` is the sr-only, count-aware\n // \"N hooks failed\" that makes a partial hook failure (e.g. `3/1`) read as\n // bad without relying on colour.\n \"terminal.eventLine.outcomeOk\": \"Succeeded\",\n \"terminal.eventLine.outcomeBlocked\": \"Blocked\",\n \"terminal.eventLine.outcomeFailed\": \"Failed\",\n \"terminal.eventLine.phaseBefore\": \"Before\",\n \"terminal.eventLine.phaseAfter\": \"After\",\n \"terminal.eventLine.phaseLifecycle\": \"Lifecycle\",\n \"terminal.eventLine.hooksTotal\": \"[hooks: {total}]\",\n \"terminal.eventLine.hooksResult\": \"[hooks: {ran}/{passed}]\",\n \"terminal.eventLine.hooksFailed\": {\n one: \"{count} hook failed\",\n other: \"{count} hooks failed\",\n },\n // TerminalWorking (#117 T3): the in-turn footer's default label and its two\n // icon-only controls' accessible names. No generic \"stop\"/\"scroll to\n // bottom\" key exists yet (only the ai-namespaced `ai.promptInput.stop` /\n // `ai.turnStatus.scrollToBottom`), so these are minted under the package's\n // own namespace rather than borrowed cross-package.\n \"terminal.working.label\": \"Waiting for response…\",\n \"terminal.working.stop\": \"Stop\",\n \"terminal.working.scrollToBottom\": \"Scroll to bottom\",\n // TerminalStatusBar (#117 T4): the ambient chrome row's accessible name and\n // the sr-only words beside its aria-hidden numerals/glyphs. Mirrors\n // `ai.sessionStatusBar.connections`' wording under this package's own\n // namespace (cannot import the `ai` key — sibling packages never import\n // each other, `.claude/rules/terminal-components.md` § Reuse means\n // promotion). `disconnected` and `stepsComplete` (\"steps complete\") are\n // verified live 2026-09-01 against Grok CLI v0.2.93.\n \"terminal.statusBar.label\": \"Session status\",\n \"terminal.statusBar.connecting\": \"Connecting…\",\n \"terminal.statusBar.connections\": \"{connected} of {total} connections\",\n \"terminal.statusBar.disconnected\": \"Disconnected\",\n \"terminal.statusBar.context\": \"{used} of {limit} context used\",\n \"terminal.statusBar.stepsComplete\": \"{current} of {total} steps complete\",\n // TerminalBanner (#117 T7): the launch card above an empty transcript.\n // Mirrors `ai.sessionHeader.*`'s wording under this package's own\n // namespace — sibling packages never import each other's locale keys\n // (`.claude/rules/terminal-components.md` § Reuse means promotion).\n \"terminal.banner.capabilities\": \"Capabilities\",\n \"terminal.banner.whatsNew\": \"What’s new\",\n \"terminal.banner.quickActions\": \"Quick actions\",\n // TerminalToolCall (#117 T8): the tool-call row's status word (announced\n // beside the glyph via TerminalRow's gutterLabel — never colour alone),\n // the result row's swapped heading (mirrors ToolOutput's own \"Result\"/\n // \"Error\" heading swap, `@elabs-ai/components-ai`), and the expand\n // trigger's accessible name. Unlike upstream's inert `\"(ctrl+o to\n // expand)\"` hint text, this IS a real focusable control's label — no CLI\n // chord required.\n \"terminal.toolCall.succeeded\": \"Succeeded\",\n \"terminal.toolCall.failed\": \"Failed\",\n \"terminal.toolCall.running\": \"Running\",\n \"terminal.toolCall.result\": \"Result\",\n \"terminal.toolCall.error\": \"Error\",\n \"terminal.toolCall.expandHint\": \"Show details\",\n // TerminalDiffHunk (#117 T9): the header's fixed \"Update ({file})\" phrase,\n // and the collapsed-context-run disclosure's count-aware label. Mirrors\n // `ai.diffView.showMore`'s wording under this package's own namespace —\n // sibling packages never import each other's locale keys\n // (`.claude/rules/terminal-components.md` § Reuse means promotion). The\n // per-line `add`/`del` polarity words are NOT duplicated here: they ride\n // the shared `diffLineAccessibleLabel()` keys (`ai.diffView.addedLine` /\n // `ai.diffView.removedLine`) above, the actual promoted channel.\n \"terminal.diffHunk.header\": \"Update ({file})\",\n \"terminal.diffHunk.showMore\": {\n one: \"Show {count} more line\",\n other: \"Show {count} more lines\",\n },\n // TerminalPermission (#117 T10): the per-call scoped approval prompt's\n // default title/question and its three scoped option labels, verified\n // live 2026-09-01 against Claude Code v2.1.207. The third option is the\n // vendor-free `deny` scope: upstream names its own product in this label,\n // ours reads \"the agent\" instead (#117 acceptance criterion). The reason\n // field reuses `ai.approvalCard.reasonLabel`/`reasonPlaceholder` and the\n // option descriptions reuse `APPROVAL_SCOPE_DESCRIPTION_KEYS` — both\n // already generic, so nothing new is minted for either.\n \"terminal.permission.title\": \"Bash command\",\n \"terminal.permission.question\": \"Do you want to proceed?\",\n \"terminal.permission.optionOnce\": \"Yes\",\n \"terminal.permission.optionSession\": \"Yes, and don’t ask again this session\",\n \"terminal.permission.optionDeny\": \"No, and tell the agent what to do differently\",\n // TerminalComposer (#117 T11): the prompt composer's placeholder, its\n // merged submit/stop affordance's accessible name (mirrors\n // `ai.promptInput.submit`/`stop` under this package's own namespace —\n // sibling packages never import each other's locale keys,\n // `.claude/rules/terminal-components.md` § Reuse means promotion), the\n // effort scale's default accessible name, and the shortcut-hint row's\n // three default words.\n \"terminal.composer.placeholder\": \"Type your next instruction…\",\n \"terminal.composer.submit\": \"Send\",\n \"terminal.composer.stop\": \"Stop\",\n \"terminal.composer.effort\": \"Effort\",\n \"terminal.composer.shortcutSend\": \"send\",\n \"terminal.composer.shortcutNewline\": \"newline\",\n \"terminal.composer.shortcutCancel\": \"cancel\",\n // TerminalSlashMenu (#117 T12): the `/`-command palette's listbox\n // accessible name (mirrors `ai.promptInputSlash.listLabel`'s wording under\n // this package's own namespace — sibling packages never import each\n // other's locale keys, `.claude/rules/terminal-components.md` § Reuse\n // means promotion). The empty state reuses the generic `noResults` key\n // rather than minting a second one.\n \"terminal.slashMenu.listLabel\": \"Commands\",\n // ── @elabs-ai/components-process ──────────────────────────────────────────────────────────\n // ProcessMap (RM-051). Namespaced `process.<area>.<key>` like every other\n // package; a sibling package's keys are never reused across the boundary.\n // The table twin's column headers are here because that table IS the\n // accessible reading of the canvas — an untranslated header would leave a\n // screen-reader user with numbers and no measure name.\n \"process.map.loading\": \"Discovering the process…\",\n \"process.map.empty\": \"No activities to map\",\n \"process.map.emptyBody\":\n \"This log has no events, or the abstraction hid every activity. Widen the abstraction or load a different log.\",\n \"process.map.label\": \"Process map\",\n \"process.map.filter\": \"Filter…\",\n \"process.map.activityCaption\": \"Activities — {metric} per activity\",\n \"process.map.transitionCaption\": \"Transitions — {metric} per directly-follows pair\",\n \"process.map.columnActivity\": \"Activity\",\n \"process.map.columnRole\": \"Role\",\n \"process.map.columnRework\": \"Rework\",\n \"process.map.columnFrom\": \"From\",\n \"process.map.columnTo\": \"To\",\n \"process.map.columnShape\": \"Shape\",\n // State column (#373) — the table twin's own channel for the selection/filter state the\n // canvas already says through real text in its accessible names; the twin used to carry\n // it only as a `data-*` attribute, which reaches no user.\n \"process.map.columnState\": \"State\",\n // The State column's own CELL values (#413 review, PRRT_kwDOT6D7ts6gJX2C). #373 localized\n // the column HEADER but left every cell printing the literal English word — since that cell\n // is also the row's screen-reader channel for its selection/filter state\n // (`selectionStateLabel` below is the un-localized canonical word `process-map.tsx` maps\n // through these keys at the render site), a non-English `LocaleProvider` left both the\n // visible AND the accessible content untranslated. `\"associated\"` (the ordinary case) has\n // no key: it prints nothing, by design.\n \"process.map.stateSelected\": \"Selected\",\n \"process.map.stateExcluded\": \"Excluded\",\n // Filter-intent menu item ACCESSIBLE names (#346). A transition's menu offers the same\n // four intents once per endpoint (eight items total); the visible text\n // (`PROCESS_FILTER_INTENT_LABELS` in map-model.ts) stays unsuffixed and compact, so these\n // compose the activity into the item's real accessible name instead — the channel a\n // screen-reader user actually hears, and the one the visible-only text left ambiguous.\n \"process.map.filterIntentWith\": \"Keep cases containing {activity}\",\n \"process.map.filterIntentWithout\": \"Keep cases without {activity}\",\n \"process.map.filterIntentStartsWith\": \"Keep cases starting with {activity}\",\n \"process.map.filterIntentEndsWith\": \"Keep cases ending with {activity}\",\n // The map's own live-region summary (#375) — one polite `role=\"status\"` announces what\n // the active selection/filter just changed, mirroring `AbstractionControls`' hidden-count\n // summary below: two independently-pluralized fragments, composed at the call site\n // (`process-map.tsx`) rather than merged into one message, for the same reason.\n \"process.map.excludedActivities\": {\n one: \"{count} of {total} activity excluded\",\n other: \"{count} of {total} activities excluded\",\n },\n \"process.map.excludedTransitions\": {\n one: \"{count} of {total} transition excluded\",\n other: \"{count} of {total} transitions excluded\",\n },\n // The live region's AFFECTED-SET fragments (#413 review, PRRT_kwDOT6D7ts6gJX2I). Counts\n // alone are not enough: two selections/filters that exclude DIFFERENT elements but land on\n // the SAME counts produce byte-for-byte identical text, so the polite region — which\n // announces content CHANGES, not model changes — stays silent even though the map\n // re-inked. Naming which elements are excluded makes the string track the actual set, not\n // only its size. Composed at the call site alongside the two counts above, and omitted\n // entirely when nothing of that kind is excluded (so the common case stays as short as\n // before this fix).\n \"process.map.excludedActivityNames\": \"excluding {names}\",\n \"process.map.excludedTransitionNames\": \"excluding {names}\",\n // AbstractionControls (RM-052, issue #227). The two sliders' own labels,\n // the invert switch, the \"Auto\" heuristic button, and the hidden-count\n // status line. `hiddenActivities`/`hiddenPaths` are separate `PluralMessage`s\n // (not one combined key) because `t()` selects its plural category from a\n // SINGLE `count` var — see `resolveMessage` in `locale-provider.tsx` — so\n // the two independently-pluralizable counts are composed as two `t()` calls\n // joined at the call site (`abstraction-controls.tsx`), not one key with two\n // numbers.\n \"process.abstractionControls.label\": \"Abstraction\",\n \"process.abstractionControls.activities\": \"Activities\",\n \"process.abstractionControls.paths\": \"Paths\",\n \"process.abstractionControls.invert\": \"Invert\",\n \"process.abstractionControls.auto\": \"Auto\",\n \"process.abstractionControls.hiddenActivities\": {\n one: \"{count} activity hidden\",\n other: \"{count} activities hidden\",\n },\n \"process.abstractionControls.hiddenPaths\": {\n one: \"{count} path hidden\",\n other: \"{count} paths hidden\",\n },\n // MetricLayerSwitch (RM-052, issue #227). The Frequency/Performance/Rework\n // toggle group, the node/edge metric selects' field labels, and the lock\n // toggle's two accessible-name states. The per-VALUE metric labels\n // (\"Occurrences\", \"Share of transitions\", …) are deliberately NOT\n // duplicated here — they are read straight from `nodeMetricLabel`/\n // `edgeMetricLabel` (`process-map/map-model.ts`), which already resolve\n // each `ProcessMetric` to its correct, audience-specific text; see\n // `metric-layer-switch.tsx`'s module docblock.\n \"process.metricLayerSwitch.label\": \"Metric\",\n \"process.metricLayerSwitch.layer\": \"Metric layer\",\n \"process.metricLayerSwitch.frequency\": \"Frequency\",\n \"process.metricLayerSwitch.performance\": \"Performance\",\n \"process.metricLayerSwitch.rework\": \"Rework\",\n \"process.metricLayerSwitch.node\": \"Activity\",\n \"process.metricLayerSwitch.edge\": \"Transition\",\n \"process.metricLayerSwitch.lockOn\": \"Unlock activity and transition metrics\",\n \"process.metricLayerSwitch.lockOff\": \"Lock activity and transition metrics together\",\n // ProcessKpiStrip (RM-052, issue #227). Six tiles' labels, plus the\n // conformance tile's genuine \"not available\" state (no conformance model\n // has run yet) — a real state, not a fabricated 0%.\n \"process.kpiStrip.cases\": \"Cases\",\n \"process.kpiStrip.events\": \"Events\",\n \"process.kpiStrip.variants\": \"Variants\",\n \"process.kpiStrip.medianThroughput\": \"Median throughput\",\n \"process.kpiStrip.reworkRate\": \"Rework rate\",\n \"process.kpiStrip.conformance\": \"Conformance\",\n \"process.kpiStrip.conformanceUnavailable\": \"Not available\",\n \"process.kpiStrip.conformanceUnavailableHint\": \"Run conformance checking to see this metric.\",\n // Sparkline text alternative (#359). `Sparkline`'s own default alt text is more\n // informative than the tile's own label — passing the label straight through\n // overrode it and left a screen-reader user hearing the tile's name twice with no\n // sense of the trend. `direction` is itself a resolved `t()` value (trendRising/\n // Falling/Steady), composed into this template the same way `hiddenSummary`\n // (abstraction-controls.tsx) composes two already-localized fragments.\n \"process.kpiStrip.trendAlt\":\n \"{subject}, {periods}-period trend, {direction} from {first} to {last}\",\n \"process.kpiStrip.trendRising\": \"rising\",\n \"process.kpiStrip.trendFalling\": \"falling\",\n \"process.kpiStrip.trendSteady\": \"steady\",\n // ProcessFilterBar (RM-056, #205). Filter-chain breadcrumb chip labels — label-in-value\n // text, one key per `FilterIntent[\"kind\"]` — the \"Clear all\" action, the chip's own\n // \"excluded\" count label, and the summary line's two independently-omittable clauses\n // (see `process-filter-bar.tsx`'s module docblock for why they are composed, not merged).\n \"process.filterBar.label\": \"Active filters\",\n \"process.filterBar.with\": \"Contains {activity}\",\n \"process.filterBar.without\": \"Excludes {activity}\",\n \"process.filterBar.startsWith\": \"Starts with {activity}\",\n \"process.filterBar.endsWith\": \"Ends with {activity}\",\n \"process.filterBar.variant\": {\n one: \"{count} variant selected\",\n other: \"{count} variants selected\",\n },\n \"process.filterBar.cases\": {\n one: \"{count} case selected\",\n other: \"{count} cases selected\",\n },\n \"process.filterBar.filter\": \"Filter\",\n \"process.filterBar.excludedLabel\": \"excluded\",\n \"process.filterBar.clearAll\": \"Clear all\",\n \"process.filterBar.showingAll\": {\n one: \"Showing all {total} case\",\n other: \"Showing all {total} cases\",\n },\n \"process.filterBar.showing\": \"Showing {filtered} of {total} cases\",\n \"process.filterBar.hiddenByAbstraction\": {\n one: \"{count} activity hidden by abstraction\",\n other: \"{count} activities hidden by abstraction\",\n },\n // CaseTable (RM-055, issue #204). A column configuration over `data`'s\n // DataTable — see `.claude/rules/data.md`'s \"primitives go down, compositions\n // go up\". `conformance*` labels the three-state badge; `conformance` itself\n // is host-supplied (never fabricated here — same rule as `ProcessKpiStrip`'s\n // own conformance tile).\n \"process.caseTable.columnCaseId\": \"Case\",\n \"process.caseTable.columnStart\": \"Start\",\n \"process.caseTable.columnEnd\": \"End\",\n \"process.caseTable.columnDuration\": \"Duration\",\n \"process.caseTable.columnEventCount\": \"Events\",\n \"process.caseTable.columnVariant\": \"Variant\",\n \"process.caseTable.columnConformance\": \"Conformance\",\n \"process.caseTable.conformanceConforming\": \"Conforming\",\n \"process.caseTable.conformanceNonConforming\": \"Non-conforming\",\n \"process.caseTable.conformanceUnknown\": \"Unknown\",\n \"process.caseTable.exportCsv\": \"Export CSV\",\n \"process.caseTable.empty\": \"No cases to display.\",\n \"process.caseTable.tableLabel\": \"Cases\",\n // CaseTimeline (RM-055, issue #204). A thin `charts/Gantt` wrapper — one row\n // per activity instance, waiting time as gap bands, overlapping instances\n // flagged parallel. `parallelLabel` is the non-colour channel WCAG 1.4.1\n // requires alongside the `info` tone the bar itself carries.\n \"process.caseTimeline.label\": \"Case timeline\",\n \"process.caseTimeline.parallelLabel\": \"Parallel\",\n \"process.caseTimeline.parallelSuffix\": \"parallel with another activity\",\n \"process.caseTimeline.gapLabel\": \"Waiting, {duration}\",\n // ProcessCompare (RM-064, issue #211). `{label}` is the HOST-supplied side name\n // (\"Before\"/\"After\", a log's own file name, …), not a fixed \"A\"/\"B\" — see\n // `process-compare.tsx`'s module docblock for why the diff-state words name the\n // owning side instead of a generic letter.\n \"process.compare.label\": \"Process comparison\",\n \"process.compare.tableView\": \"Table view\",\n \"process.compare.mapLabel\": \"Process map — {label}\",\n \"process.compare.superimposedMapLabel\": \"Process map — {aLabel} vs {bLabel}\",\n \"process.compare.legendTitle\": \"Comparison\",\n \"process.compare.diffSuffixCommon\": \"common\",\n \"process.compare.diffSuffixOnly\": \"{label} only\",\n \"process.compare.cases\": \"{label} — cases\",\n \"process.compare.medianThroughput\": \"{label} — median throughput\",\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/attribution-panel/attributions.generated.ts"],"sourcesContent":["// GENERATED by scripts/gen-attributions.mjs — DO NOT EDIT BY HAND.\n// Run `pnpm gen` after changing a dependency, a vendored font, or\n// scripts/attributions.sources.json. `pnpm gen:check` fails on a stale copy.\n//\n// 122 entries (data: 4, source: 20, font: 2, dependency: 96).\n\nimport type { Attribution } from \"./attribution-types\";\n\nexport const ATTRIBUTIONS: readonly Attribution[] = [\n {\n version: null,\n note: \"Default light/dark basemap styles and tiles (positron / dark-matter).\",\n id: \"carto\",\n category: \"data\",\n name: \"CARTO\",\n license: \"CARTO basemap terms\",\n copyright: \"© CARTO\",\n url: \"https://carto.com/about-carto/\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: true,\n },\n {\n version: null,\n note: \"Map data behind the default Carto basemap. ODbL obliges the credit wherever the tiles are shown.\",\n id: \"openstreetmap\",\n category: \"data\",\n name: \"OpenStreetMap\",\n license: \"ODbL-1.0\",\n copyright: \"© OpenStreetMap contributors\",\n url: \"https://www.openstreetmap.org/copyright\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: true,\n },\n {\n version: null,\n note: \"The `countries-110m` TopoJSON build of Natural Earth that `world-fixture.ts` was converted from (once, offline — no TopoJSON decoder ships). ISC requires the copyright notice.\",\n id: \"world-atlas\",\n category: \"data\",\n name: \"world-atlas\",\n license: \"ISC\",\n copyright: \"Copyright 2013-2024 Michael Bostock\",\n url: \"https://github.com/topojson/world-atlas\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: true,\n },\n {\n version: null,\n note: 'The 1:110m admin-0 country outlines behind `ChoroplethChart`\\'s bundled \"world\" fixture (packages/charts/src/charts/choropleth/world-fixture.ts). Public domain, so the credit is courtesy, not an obligation.',\n id: \"natural-earth\",\n category: \"data\",\n name: \"Natural Earth\",\n license: \"public-domain\",\n copyright: \"Public domain (Natural Earth terms of use)\",\n url: \"https://www.naturalearthdata.com/about/terms-of-use/\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"Vendored into @elabs-ai/components-ai and rewired onto brand-ui primitives and tokens. Apache-2.0, NOT MIT: §4 obliges us to carry the notice and to state that we modified the files.\",\n id: \"vercel-ai-elements\",\n category: \"source\",\n name: \"AI Elements\",\n license: \"Apache-2.0\",\n copyright: \"Copyright 2023 Vercel, Inc.\",\n url: \"https://github.com/vercel/ai-elements\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: true,\n },\n {\n version: null,\n note: \"The ShimmeringText component, from the ncdai shadcn registry. Its TRADEMARK.md grants no right to the author's name or brand assets — the code is adopted, the branding is not.\",\n id: \"shimmering-text\",\n category: \"source\",\n name: \"@ncdai/shimmering-text\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Chánh Đại\",\n url: \"https://github.com/ncdai/chanhdai.com\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"The pluggable adapter-registry architecture behind the file viewer (ADR 0024).\",\n id: \"anyview\",\n category: \"source\",\n name: \"anyview\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 harshpreet931\",\n url: \"https://github.com/harshpreet931/anyview\",\n usedBy: [\"@elabs-ai/components-viewer\"],\n required: false,\n },\n {\n version: null,\n note: \"The message-part grouping design behind part-groups.ts, re-expressed in this library's idiom.\",\n id: \"assistant-ui\",\n category: \"source\",\n name: \"assistant-ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 AgentbaseAI Inc.\",\n url: \"https://github.com/assistant-ui/assistant-ui\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n },\n {\n version: null,\n note: \"Sample datasets in the bar / composed / candlestick chart stories. Attributed to bklit-ui (MIT, the charts library) rather than the archived bklit app (CC BY-NC 4.0) — see the note in ATTRIBUTION.md.\",\n id: \"bklit-ui\",\n category: \"source\",\n name: \"Bklit UI\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 uixmat\",\n url: \"https://github.com/bklit/bklit-ui\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"Agent-session UI logic re-expressed on our tokens: the line-level diff model and its screen-reader polarity prefixes, the scoped N-option permission anatomy, the slash-palette prefix-filter/clamp behaviour, the turn-status elapsed formatter, the hook/lifecycle event line, and the grouped keyboard-shortcuts sheet. No upstream code, styling or terminal palette is shipped.\",\n id: \"brainless\",\n category: \"source\",\n name: \"brainless\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Ben Swerdlow\",\n url: \"https://github.com/theswerd/brainless\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-ui\", \"@elabs-ai/components-terminal\"],\n required: false,\n },\n {\n version: null,\n note: \"The view-state seam and chrome-part inversion the viewer adopted (ADR 0026). Its LICENSE.md carries two copyright lines; both are reproduced.\",\n id: \"extend-hq-ui\",\n category: \"source\",\n name: \"extend-hq/ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 CrowdView Inc, dba Extend; portions Copyright (c) 2023 shadcn\",\n url: \"https://github.com/extend-hq/ui\",\n usedBy: [\"@elabs-ai/components-viewer\"],\n required: false,\n },\n {\n version: null,\n note: \"The eXtensible Event Stream interchange format fromXes reads: a <log> of <trace>s of <event>s, each carrying typed key/value attributes, plus <classifier> and lifecycle:transition. Only the format is implemented, by a hand-rolled tokenizer; no text, schema file or code is copied. The license of the specification document itself was not established.\",\n id: \"xes-ieee-1849\",\n category: \"source\",\n name: \"IEEE 1849-2016 (XES)\",\n license: \"Published specification (license of the document not established)\",\n copyright: \"© IEEE\",\n url: \"https://standards.ieee.org/ieee/1849/6811/\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"The editorial chart gallery behind the 2026-09-04 charts gap analysis: 71 files across the charts and tokens packages cite it as the source of a value, a mark shape or a composition (unit decomposition, hairline furniture, the sequential/diverging ramps, the reveal timing), and three copy-own registry blocks (chart-editorial-hourglass, -patchwork, -almanac) reproduce three of its gallery cards' DATA-SHAPE DESCRIPTIONS from that same analysis' one-line prose. No code was copied verbatim — each was re-expressed onto this repo's tokens and primitives. Its LICENSE is PolyForm Noncommercial 1.0.0, read verbatim from the upstream file; GitHub's own detection reports NOASSERTION, which is why nothing flagged it earlier. The licence's Required Notice slot is left at the template's example value, so upstream states no copyright holder and none is claimed here. Noncommercial-only is unresolved for a repo headed for public release — a licensing decision for the maintainer, not something attribution settles.\",\n id: \"lieflat-charts\",\n category: \"source\",\n name: \"lieflat-charts\",\n license: \"PolyForm-Noncommercial-1.0.0\",\n copyright: null,\n url: \"https://github.com/larashero3-dotcom/lieflat-charts\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-tokens\"],\n required: false,\n },\n {\n version: null,\n note: \"The live-axis tick-interval picker behind live-y-axis.tsx. Upstream now names that function niceTimeInterval.\",\n id: \"liveline\",\n category: \"source\",\n name: \"Liveline\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025-2026 Benji Taylor\",\n url: \"https://github.com/benjitaylor/liveline\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n },\n {\n version: null,\n note: \"The MapLibre component set @elabs-ai/components-maps was adapted from (ADR 0015).\",\n id: \"mapcn\",\n category: \"source\",\n name: \"mapcn\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 Anmoldeep Singh\",\n url: \"https://github.com/AnmolSaini16/mapcn\",\n usedBy: [\"@elabs-ai/components-maps\"],\n required: false,\n },\n {\n version: null,\n note: \"The @milkdown/react integration is vendored under markdown-editor/milkdown-react/ and adapted; Milkdown itself is also a runtime dependency.\",\n id: \"milkdown\",\n category: \"source\",\n name: \"Milkdown\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2020-present Mirone\",\n url: \"https://github.com/Milkdown/milkdown\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n },\n {\n version: null,\n note: \"The Object-Centric Event Log 2.0 JSON serialization fromOcel reads (objectTypes, objects, events, relationships). Only the format is implemented; no text, schema file or code is copied. The license of the specification document itself was not established.\",\n id: \"ocel-2-0\",\n category: \"source\",\n name: \"OCEL 2.0 specification\",\n license: \"Published specification (license of the document not established)\",\n copyright: \"© the OCEL 2.0 specification authors\",\n url: \"https://doi.org/10.48550/arXiv.2403.01975\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"Algorithm shape for the framework-free process-mining core: which aggregates a directly-follows graph carries (discoverGraph) and how traces are grouped into variants (extractVariants), with durationStats as their shared summary; and the token-based replay procedure behind tokenReplay (produced/consumed/missing/remaining counting, silent-transition enabling before forcing missing tokens); and the object-centric directly-follows graph (discoverObjectCentricGraph): one directly-follows graph per object type, shared activities merged into one node with per-type counts, edges kept per type. Re-typed in TypeScript from the published algorithms, not copied.\",\n id: \"pm4js\",\n category: \"source\",\n name: \"pm4js\",\n license: \"BSD-3-Clause\",\n copyright: \"Copyright 2021 Alessandro Berti\",\n url: \"https://github.com/pm4js/pm4js-core\",\n usedBy: [\"@elabs-ai/components-process\"],\n required: false,\n },\n {\n version: null,\n note: \"Beyond the npm dependency below, the shipped dist of react-scroll-area and react-select is modified in patches/ — disclosed here so the change is not invisible.\",\n id: \"radix-primitives-patched\",\n category: \"source\",\n name: \"Radix UI Primitives (patched)\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2022 WorkOS\",\n url: \"https://github.com/radix-ui/primitives\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n },\n {\n version: null,\n note: \"The owned-source component model and many primitive implementations; the registry is shadcn-compatible (ADR 0001).\",\n id: \"shadcn-ui\",\n category: \"source\",\n name: \"shadcn/ui\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2023 shadcn\",\n url: \"https://github.com/shadcn-ui/ui\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n },\n {\n version: null,\n note: \"The stacked, layered elevation-ramp technique behind the shadow tokens (ADR 0020).\",\n id: \"shadow-plugin\",\n category: \"source\",\n name: \"shadow-plugin\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2026 Florian Kiem\",\n url: \"https://github.com/flornkm/shadow-plugin\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: false,\n },\n {\n version: null,\n note: \"world-countries.json, fetched at runtime by the stat-card-choropleth-01 registry block. Its LICENSE names no holder, and upstream traces the file to johan/world.geo.json, which calls its own legal status dubious — the block already carries a TODO to self-host a clean source.\",\n id: \"subyfly-topojson\",\n category: \"source\",\n name: \"subyfly/topojson\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2016\",\n url: \"https://github.com/subyfly/topojson\",\n usedBy: [],\n required: false,\n },\n {\n version: null,\n note: \"The composition-patterns skill behind the component-api rule's compound-component conventions. The repo declares NO licence and ships no LICENSE file — credited by link, with no licence claimed.\",\n id: \"vercel-agent-skills\",\n category: \"source\",\n name: \"vercel-labs/agent-skills\",\n license: \"No licence declared\",\n copyright: null,\n url: \"https://github.com/vercel-labs/agent-skills\",\n usedBy: [],\n required: false,\n },\n {\n version: null,\n note: \"Adopted delta-only into the repo's interaction-guidelines rule. Governance, not shipped code.\",\n id: \"web-interface-guidelines\",\n category: \"source\",\n name: \"Web Interface Guidelines\",\n license: \"MIT\",\n copyright: \"Copyright (c) 2025 Vercel Labs\",\n url: \"https://github.com/vercel-labs/web-interface-guidelines\",\n usedBy: [],\n required: false,\n },\n {\n id: \"font:inter\",\n category: \"font\",\n name: \"Inter\",\n version: null,\n license: \"OFL-1.1\",\n copyright: \"Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)\",\n url: \"https://github.com/rsms/inter\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: true,\n note: \"Self-hosted webfont shipped in the tokens package.\",\n },\n {\n id: \"font:source-code-pro\",\n category: \"font\",\n name: \"Source Code Pro\",\n version: null,\n license: \"OFL-1.1\",\n copyright:\n \"Copyright 2010-2020 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved.\",\n url: \"https://github.com/adobe-fonts/source-code-pro\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: true,\n note: \"Self-hosted webfont shipped in the tokens package.\",\n },\n {\n id: \"@dagrejs/dagre\",\n category: \"dependency\",\n name: \"@dagrejs/dagre\",\n version: \"3.0.0\",\n license: \"MIT\",\n copyright: \"Chris Pettitt\",\n url: \"https://www.npmjs.com/package/@dagrejs/dagre\",\n usedBy: [\"@elabs-ai/components-flow\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/core\",\n category: \"dependency\",\n name: \"@dnd-kit/core\",\n version: \"6.3.1\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/core\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/sortable\",\n category: \"dependency\",\n name: \"@dnd-kit/sortable\",\n version: \"10.0.0\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/sortable\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@dnd-kit/utilities\",\n category: \"dependency\",\n name: \"@dnd-kit/utilities\",\n version: \"3.2.2\",\n license: \"MIT\",\n copyright: \"Claudéric Demers\",\n url: \"https://www.npmjs.com/package/@dnd-kit/utilities\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@milkdown/kit\",\n category: \"dependency\",\n name: \"@milkdown/kit\",\n version: \"7.21.2\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@milkdown/kit\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@number-flow/react\",\n category: \"dependency\",\n name: \"@number-flow/react\",\n version: \"0.5.14\",\n license: \"MIT\",\n copyright: \"Maxwell Barvian\",\n url: \"https://www.npmjs.com/package/@number-flow/react\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@prosemirror-adapter/react\",\n category: \"dependency\",\n name: \"@prosemirror-adapter/react\",\n version: \"0.5.3\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@prosemirror-adapter/react\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-accordion\",\n category: \"dependency\",\n name: \"@radix-ui/react-accordion\",\n version: \"1.2.12\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-accordion\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-alert-dialog\",\n category: \"dependency\",\n name: \"@radix-ui/react-alert-dialog\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-alert-dialog\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-aspect-ratio\",\n category: \"dependency\",\n name: \"@radix-ui/react-aspect-ratio\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-aspect-ratio\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-avatar\",\n category: \"dependency\",\n name: \"@radix-ui/react-avatar\",\n version: \"1.1.11\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-avatar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-checkbox\",\n category: \"dependency\",\n name: \"@radix-ui/react-checkbox\",\n version: \"1.3.3\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-checkbox\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-collapsible\",\n category: \"dependency\",\n name: \"@radix-ui/react-collapsible\",\n version: \"1.1.12\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-collapsible\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-context-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-context-menu\",\n version: \"2.2.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-context-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-dialog\",\n category: \"dependency\",\n name: \"@radix-ui/react-dialog\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-dialog\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-direction\",\n category: \"dependency\",\n name: \"@radix-ui/react-direction\",\n version: \"1.1.1\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-direction\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-dropdown-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-dropdown-menu\",\n version: \"2.1.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-dropdown-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-hover-card\",\n category: \"dependency\",\n name: \"@radix-ui/react-hover-card\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-hover-card\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-label\",\n category: \"dependency\",\n name: \"@radix-ui/react-label\",\n version: \"2.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-label\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-menubar\",\n category: \"dependency\",\n name: \"@radix-ui/react-menubar\",\n version: \"1.1.16\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-menubar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-navigation-menu\",\n category: \"dependency\",\n name: \"@radix-ui/react-navigation-menu\",\n version: \"1.2.14\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-navigation-menu\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-popover\",\n category: \"dependency\",\n name: \"@radix-ui/react-popover\",\n version: \"1.1.15\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-popover\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-progress\",\n category: \"dependency\",\n name: \"@radix-ui/react-progress\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-progress\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-radio-group\",\n category: \"dependency\",\n name: \"@radix-ui/react-radio-group\",\n version: \"1.3.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-radio-group\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-scroll-area\",\n category: \"dependency\",\n name: \"@radix-ui/react-scroll-area\",\n version: \"1.2.10\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-scroll-area\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-select\",\n category: \"dependency\",\n name: \"@radix-ui/react-select\",\n version: \"2.2.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-select\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-separator\",\n category: \"dependency\",\n name: \"@radix-ui/react-separator\",\n version: \"1.1.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-separator\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-slider\",\n category: \"dependency\",\n name: \"@radix-ui/react-slider\",\n version: \"1.3.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-slider\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-slot\",\n category: \"dependency\",\n name: \"@radix-ui/react-slot\",\n version: \"1.2.4\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-slot\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-switch\",\n category: \"dependency\",\n name: \"@radix-ui/react-switch\",\n version: \"1.2.6\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-switch\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-tabs\",\n category: \"dependency\",\n name: \"@radix-ui/react-tabs\",\n version: \"1.1.13\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-tabs\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toggle\",\n category: \"dependency\",\n name: \"@radix-ui/react-toggle\",\n version: \"1.1.10\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toggle\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toggle-group\",\n category: \"dependency\",\n name: \"@radix-ui/react-toggle-group\",\n version: \"1.1.11\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toggle-group\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-toolbar\",\n category: \"dependency\",\n name: \"@radix-ui/react-toolbar\",\n version: \"1.1.19\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-toolbar\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-tooltip\",\n category: \"dependency\",\n name: \"@radix-ui/react-tooltip\",\n version: \"1.2.8\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-tooltip\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"@radix-ui/react-use-controllable-state\",\n category: \"dependency\",\n name: \"@radix-ui/react-use-controllable-state\",\n version: \"1.2.2\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@radix-ui/react-use-controllable-state\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/cjk\",\n category: \"dependency\",\n name: \"@streamdown/cjk\",\n version: \"1.0.3\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/cjk\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/code\",\n category: \"dependency\",\n name: \"@streamdown/code\",\n version: \"1.1.1\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/code\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/math\",\n category: \"dependency\",\n name: \"@streamdown/math\",\n version: \"1.0.2\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/math\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@streamdown/mermaid\",\n category: \"dependency\",\n name: \"@streamdown/mermaid\",\n version: \"1.0.2\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/@streamdown/mermaid\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"@tanstack/react-table\",\n category: \"dependency\",\n name: \"@tanstack/react-table\",\n version: \"8.21.3\",\n license: \"MIT\",\n copyright: \"Tanner Linsley\",\n url: \"https://www.npmjs.com/package/@tanstack/react-table\",\n usedBy: [\"@elabs-ai/components-data\"],\n required: false,\n note: null,\n },\n {\n id: \"@tanstack/react-virtual\",\n category: \"dependency\",\n name: \"@tanstack/react-virtual\",\n version: \"3.14.2\",\n license: \"MIT\",\n copyright: \"Tanner Linsley\",\n url: \"https://www.npmjs.com/package/@tanstack/react-virtual\",\n usedBy: [\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-data\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-ui\",\n \"@elabs-ai/components-viewer\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"@visx/brush\",\n category: \"dependency\",\n name: \"@visx/brush\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/brush\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/curve\",\n category: \"dependency\",\n name: \"@visx/curve\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/curve\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/event\",\n category: \"dependency\",\n name: \"@visx/event\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/event\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/geo\",\n category: \"dependency\",\n name: \"@visx/geo\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@nschnierer\",\n url: \"https://www.npmjs.com/package/@visx/geo\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/gradient\",\n category: \"dependency\",\n name: \"@visx/gradient\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/gradient\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/grid\",\n category: \"dependency\",\n name: \"@visx/grid\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/grid\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/group\",\n category: \"dependency\",\n name: \"@visx/group\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/group\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/pattern\",\n category: \"dependency\",\n name: \"@visx/pattern\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/pattern\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/responsive\",\n category: \"dependency\",\n name: \"@visx/responsive\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/responsive\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/sankey\",\n category: \"dependency\",\n name: \"@visx/sankey\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@jacksonhardaker\",\n url: \"https://www.npmjs.com/package/@visx/sankey\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/scale\",\n category: \"dependency\",\n name: \"@visx/scale\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/@visx/scale\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/shape\",\n category: \"dependency\",\n name: \"@visx/shape\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/shape\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"@visx/zoom\",\n category: \"dependency\",\n name: \"@visx/zoom\",\n version: \"4.0.1-alpha.0\",\n license: \"MIT\",\n copyright: \"@hshoff\",\n url: \"https://www.npmjs.com/package/@visx/zoom\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"ansi-to-react\",\n category: \"dependency\",\n name: \"ansi-to-react\",\n version: \"6.2.6\",\n license: \"BSD-3-Clause\",\n copyright: \"Kyle Kelley\",\n url: \"https://www.npmjs.com/package/ansi-to-react\",\n usedBy: [\"@elabs-ai/components-terminal\"],\n required: false,\n note: null,\n },\n {\n id: \"class-variance-authority\",\n category: \"dependency\",\n name: \"class-variance-authority\",\n version: \"0.7.1\",\n license: \"Apache-2.0\",\n copyright: \"Joe Bell\",\n url: \"https://www.npmjs.com/package/class-variance-authority\",\n usedBy: [\n \"@elabs-ai/components-ai\",\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-editor\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-terminal\",\n \"@elabs-ai/components-ui\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"clsx\",\n category: \"dependency\",\n name: \"clsx\",\n version: \"2.1.1\",\n license: \"MIT\",\n copyright: \"Luke Edwards\",\n url: \"https://www.npmjs.com/package/clsx\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"cmdk\",\n category: \"dependency\",\n name: \"cmdk\",\n version: \"1.1.1\",\n license: \"MIT\",\n copyright: \"Paco\",\n url: \"https://www.npmjs.com/package/cmdk\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-array\",\n category: \"dependency\",\n name: \"d3-array\",\n version: \"3.2.4\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-array\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-force\",\n category: \"dependency\",\n name: \"d3-force\",\n version: \"3.0.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-force\",\n usedBy: [\"@elabs-ai/components-charts\", \"@elabs-ai/components-flow\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-geo\",\n category: \"dependency\",\n name: \"d3-geo\",\n version: \"3.1.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-geo\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-hierarchy\",\n category: \"dependency\",\n name: \"d3-hierarchy\",\n version: \"3.1.2\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-hierarchy\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-sankey\",\n category: \"dependency\",\n name: \"d3-sankey\",\n version: \"0.12.3\",\n license: \"BSD-3-Clause\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-sankey\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-scale\",\n category: \"dependency\",\n name: \"d3-scale\",\n version: \"4.0.2\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-scale\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"d3-shape\",\n category: \"dependency\",\n name: \"d3-shape\",\n version: \"3.2.0\",\n license: \"ISC\",\n copyright: \"Mike Bostock\",\n url: \"https://www.npmjs.com/package/d3-shape\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n version: \"0.12.0\",\n note: \"elkjs adapter — RM-067. The Eclipse Layout Kernel, behind layoutFlowElk. An OPTIONAL peer dependency, so the derived dependency list (plain `dependencies` only) cannot see it; it is credited here instead. Never bundled into the package: loaded with import() from the host's own install, and used under EPL-2.0. The licence text (LICENSE.md) names no holder; the copyright line is read verbatim from the header of elkjs's own lib/elk-api.d.ts.\",\n id: \"elkjs\",\n category: \"dependency\",\n name: \"elkjs\",\n license: \"EPL-2.0 OR GPL-3.0-or-later\",\n copyright: \"Copyright (c) 2019 TypeFox and others\",\n url: \"https://github.com/kieler/elkjs\",\n usedBy: [\"@elabs-ai/components-flow\"],\n required: false,\n },\n {\n id: \"embla-carousel-react\",\n category: \"dependency\",\n name: \"embla-carousel-react\",\n version: \"8.6.0\",\n license: \"MIT\",\n copyright: \"David Jerleke\",\n url: \"https://www.npmjs.com/package/embla-carousel-react\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"input-otp\",\n category: \"dependency\",\n name: \"input-otp\",\n version: \"1.4.2\",\n license: \"MIT\",\n copyright: \"Guilherme Rodz\",\n url: \"https://www.npmjs.com/package/input-otp\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"js-yaml\",\n category: \"dependency\",\n name: \"js-yaml\",\n version: \"4.2.0\",\n license: \"MIT\",\n copyright: \"Vladimir Zapparov\",\n url: \"https://www.npmjs.com/package/js-yaml\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"katex\",\n category: \"dependency\",\n name: \"katex\",\n version: \"0.16.47\",\n license: \"MIT\",\n copyright: null,\n url: \"https://www.npmjs.com/package/katex\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"lucide-react\",\n category: \"dependency\",\n name: \"lucide-react\",\n version: \"0.577.0\",\n license: \"ISC\",\n copyright: \"Eric Fennis\",\n url: \"https://www.npmjs.com/package/lucide-react\",\n usedBy: [\n \"@elabs-ai/components-ai\",\n \"@elabs-ai/components-charts\",\n \"@elabs-ai/components-data\",\n \"@elabs-ai/components-editor\",\n \"@elabs-ai/components-flow\",\n \"@elabs-ai/components-maps\",\n \"@elabs-ai/components-process\",\n \"@elabs-ai/components-terminal\",\n \"@elabs-ai/components-ui\",\n \"@elabs-ai/components-viewer\",\n ],\n required: false,\n note: null,\n },\n {\n id: \"mermaid\",\n category: \"dependency\",\n name: \"mermaid\",\n version: \"11.15.0\",\n license: \"MIT\",\n copyright: \"Knut Sveidqvist\",\n url: \"https://www.npmjs.com/package/mermaid\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"motion\",\n category: \"dependency\",\n name: \"motion\",\n version: \"12.40.0\",\n license: \"MIT\",\n copyright: \"Matt Perry\",\n url: \"https://www.npmjs.com/package/motion\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"nanoid\",\n category: \"dependency\",\n name: \"nanoid\",\n version: \"5.1.11\",\n license: \"MIT\",\n copyright: \"Andrey Sitnik\",\n url: \"https://www.npmjs.com/package/nanoid\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"react-day-picker\",\n category: \"dependency\",\n name: \"react-day-picker\",\n version: \"9.14.0\",\n license: \"MIT\",\n copyright: \"Giampaolo Bellavite\",\n url: \"https://www.npmjs.com/package/react-day-picker\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"react-jsx-parser\",\n category: \"dependency\",\n name: \"react-jsx-parser\",\n version: \"2.4.1\",\n license: \"MIT\",\n copyright: \"Troy Alford\",\n url: \"https://www.npmjs.com/package/react-jsx-parser\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"react-resizable-panels\",\n category: \"dependency\",\n name: \"react-resizable-panels\",\n version: \"2.1.9\",\n license: \"MIT\",\n copyright: \"Brian Vaughn\",\n url: \"https://www.npmjs.com/package/react-resizable-panels\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"react-use-measure\",\n category: \"dependency\",\n name: \"react-use-measure\",\n version: \"2.1.7\",\n license: \"MIT\",\n copyright: \"Paul Henschel\",\n url: \"https://www.npmjs.com/package/react-use-measure\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-directive\",\n category: \"dependency\",\n name: \"remark-directive\",\n version: \"4.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-directive\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-frontmatter\",\n category: \"dependency\",\n name: \"remark-frontmatter\",\n version: \"5.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-frontmatter\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-gfm\",\n category: \"dependency\",\n name: \"remark-gfm\",\n version: \"4.0.1\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-gfm\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-math\",\n category: \"dependency\",\n name: \"remark-math\",\n version: \"6.0.0\",\n license: \"MIT\",\n copyright: \"Junyoung Choi\",\n url: \"https://www.npmjs.com/package/remark-math\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"remark-parse\",\n category: \"dependency\",\n name: \"remark-parse\",\n version: \"11.0.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/remark-parse\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"shiki\",\n category: \"dependency\",\n name: \"shiki\",\n version: \"3.23.0\",\n license: \"MIT\",\n copyright: \"Pine Wu; Anthony Fu\",\n url: \"https://www.npmjs.com/package/shiki\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"sonner\",\n category: \"dependency\",\n name: \"sonner\",\n version: \"1.7.4\",\n license: \"MIT\",\n copyright: \"Emil Kowalski\",\n url: \"https://www.npmjs.com/package/sonner\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"streamdown\",\n category: \"dependency\",\n name: \"streamdown\",\n version: \"2.5.0\",\n license: \"Apache-2.0\",\n copyright: \"Hayden Bleasel\",\n url: \"https://www.npmjs.com/package/streamdown\",\n usedBy: [\"@elabs-ai/components-ai\", \"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"tailwind-merge\",\n category: \"dependency\",\n name: \"tailwind-merge\",\n version: \"2.6.1\",\n license: \"MIT\",\n copyright: \"Dany Castillo\",\n url: \"https://www.npmjs.com/package/tailwind-merge\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"tokenlens\",\n category: \"dependency\",\n name: \"tokenlens\",\n version: \"1.3.1\",\n license: \"MIT\",\n copyright: \"Nicklas Scharpff\",\n url: \"https://www.npmjs.com/package/tokenlens\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"tw-animate-css\",\n category: \"dependency\",\n name: \"tw-animate-css\",\n version: \"1.4.0\",\n license: \"MIT\",\n copyright: \"Luca Bosin\",\n url: \"https://www.npmjs.com/package/tw-animate-css\",\n usedBy: [\"@elabs-ai/components-tokens\"],\n required: false,\n note: null,\n },\n {\n id: \"unified\",\n category: \"dependency\",\n name: \"unified\",\n version: \"11.0.5\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/unified\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"unist-util-visit\",\n category: \"dependency\",\n name: \"unist-util-visit\",\n version: \"5.1.0\",\n license: \"MIT\",\n copyright: \"Titus Wormer\",\n url: \"https://www.npmjs.com/package/unist-util-visit\",\n usedBy: [\"@elabs-ai/components-editor\"],\n required: false,\n note: null,\n },\n {\n id: \"use-stick-to-bottom\",\n category: \"dependency\",\n name: \"use-stick-to-bottom\",\n version: \"1.1.6\",\n license: \"MIT\",\n copyright: \"Sam Denty\",\n url: \"https://www.npmjs.com/package/use-stick-to-bottom\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"vaul\",\n category: \"dependency\",\n name: \"vaul\",\n version: \"1.1.2\",\n license: \"MIT\",\n copyright: \"Emil Kowalski\",\n url: \"https://www.npmjs.com/package/vaul\",\n usedBy: [\"@elabs-ai/components-ui\"],\n required: false,\n note: null,\n },\n {\n id: \"zod\",\n category: \"dependency\",\n name: \"zod\",\n version: \"3.25.76\",\n license: \"MIT\",\n copyright: \"Colin McDonnell\",\n url: \"https://www.npmjs.com/package/zod\",\n usedBy: [\"@elabs-ai/components-ai\"],\n required: false,\n note: null,\n },\n {\n id: \"zustand\",\n category: \"dependency\",\n name: \"zustand\",\n version: \"5.0.15\",\n license: \"MIT\",\n copyright: \"Paul Henschel\",\n url: \"https://www.npmjs.com/package/zustand\",\n usedBy: [\"@elabs-ai/components-charts\"],\n required: false,\n note: null,\n },\n] as const;\n"],"mappings":"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","names":[]}
|