@flyingrobots/bijou 3.1.0 → 4.1.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/LICENSE +159 -21
- package/README.md +92 -13
- package/dist/adapters/test/io.d.ts +3 -1
- package/dist/adapters/test/io.d.ts.map +1 -1
- package/dist/adapters/test/io.js +27 -0
- package/dist/adapters/test/io.js.map +1 -1
- package/dist/core/bg-fill.d.ts.map +1 -1
- package/dist/core/bg-fill.js +24 -1
- package/dist/core/bg-fill.js.map +1 -1
- package/dist/core/components/box-v3.d.ts +0 -1
- package/dist/core/components/box-v3.d.ts.map +1 -1
- package/dist/core/components/box-v3.js +0 -1
- package/dist/core/components/box-v3.js.map +1 -1
- package/dist/core/components/explainability.d.ts +51 -0
- package/dist/core/components/explainability.d.ts.map +1 -0
- package/dist/core/components/explainability.js +134 -0
- package/dist/core/components/explainability.js.map +1 -0
- package/dist/core/components/index.d.ts +7 -1
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.js +4 -1
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/inspector.d.ts +49 -0
- package/dist/core/components/inspector.d.ts.map +1 -0
- package/dist/core/components/inspector.js +107 -0
- package/dist/core/components/inspector.js.map +1 -0
- package/dist/core/components/preference-list.d.ts +61 -0
- package/dist/core/components/preference-list.d.ts.map +1 -0
- package/dist/core/components/preference-list.js +215 -0
- package/dist/core/components/preference-list.js.map +1 -0
- package/dist/core/components/progress.d.ts +9 -1
- package/dist/core/components/progress.d.ts.map +1 -1
- package/dist/core/components/progress.js +20 -6
- package/dist/core/components/progress.js.map +1 -1
- package/dist/core/forms/filter-interactive.d.ts.map +1 -1
- package/dist/core/forms/filter-interactive.js +16 -16
- package/dist/core/forms/filter-interactive.js.map +1 -1
- package/dist/core/forms/form-utils.d.ts +33 -2
- package/dist/core/forms/form-utils.d.ts.map +1 -1
- package/dist/core/forms/form-utils.js +53 -3
- package/dist/core/forms/form-utils.js.map +1 -1
- package/dist/core/forms/multiselect.d.ts.map +1 -1
- package/dist/core/forms/multiselect.js +5 -5
- package/dist/core/forms/multiselect.js.map +1 -1
- package/dist/core/forms/select.d.ts.map +1 -1
- package/dist/core/forms/select.js +4 -4
- package/dist/core/forms/select.js.map +1 -1
- package/dist/core/forms/textarea-editor.d.ts.map +1 -1
- package/dist/core/forms/textarea-editor.js +12 -12
- package/dist/core/forms/textarea-editor.js.map +1 -1
- package/dist/core/key-input.d.ts +17 -0
- package/dist/core/key-input.d.ts.map +1 -0
- package/dist/core/key-input.js +92 -0
- package/dist/core/key-input.js.map +1 -0
- package/dist/core/render/differ.d.ts +3 -3
- package/dist/core/render/differ.d.ts.map +1 -1
- package/dist/core/render/differ.js +121 -52
- package/dist/core/render/differ.js.map +1 -1
- package/dist/core/text/grapheme.d.ts +7 -0
- package/dist/core/text/grapheme.d.ts.map +1 -1
- package/dist/core/text/grapheme.js +11 -1
- package/dist/core/text/grapheme.js.map +1 -1
- package/dist/core/text/index.d.ts +3 -2
- package/dist/core/text/index.d.ts.map +1 -1
- package/dist/core/text/index.js +2 -2
- package/dist/core/text/index.js.map +1 -1
- package/dist/core/text/wrap.d.ts +18 -0
- package/dist/core/text/wrap.d.ts.map +1 -1
- package/dist/core/text/wrap.js +92 -23
- package/dist/core/text/wrap.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/ports/index.d.ts +1 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/io.d.ts +30 -0
- package/dist/ports/io.d.ts.map +1 -1
- package/dist/ports/surface.d.ts.map +1 -1
- package/dist/ports/surface.js +40 -18
- package/dist/ports/surface.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { renderByMode } from '../mode-render.js';
|
|
2
|
+
import { resolveCtx } from '../resolve-ctx.js';
|
|
3
|
+
import { box } from './box.js';
|
|
4
|
+
import { enumeratedList } from './enumerated-list.js';
|
|
5
|
+
function emphasizeToken(token) {
|
|
6
|
+
return {
|
|
7
|
+
...token,
|
|
8
|
+
modifiers: [...(token.modifiers ?? []), 'bold'],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function formatConfidence(confidence) {
|
|
12
|
+
if (confidence == null)
|
|
13
|
+
return undefined;
|
|
14
|
+
if (typeof confidence === 'string')
|
|
15
|
+
return confidence;
|
|
16
|
+
if (Number.isNaN(confidence))
|
|
17
|
+
return undefined;
|
|
18
|
+
const percentage = confidence >= 0 && confidence <= 1 ? confidence * 100 : confidence;
|
|
19
|
+
return `${Math.round(percentage)}%`;
|
|
20
|
+
}
|
|
21
|
+
function formatEvidenceItem(item) {
|
|
22
|
+
return item.detail ? `${item.label} — ${item.detail}` : item.label;
|
|
23
|
+
}
|
|
24
|
+
function buildMetadataLines(options) {
|
|
25
|
+
const lines = [];
|
|
26
|
+
if (options.artifactKind)
|
|
27
|
+
lines.push(`Artifact kind: ${options.artifactKind}`);
|
|
28
|
+
if (options.source)
|
|
29
|
+
lines.push(`Source: ${options.source}`);
|
|
30
|
+
if (options.sourceMode)
|
|
31
|
+
lines.push(`Source mode: ${options.sourceMode}`);
|
|
32
|
+
const confidence = formatConfidence(options.confidence);
|
|
33
|
+
if (confidence)
|
|
34
|
+
lines.push(`Confidence: ${confidence}`);
|
|
35
|
+
return lines;
|
|
36
|
+
}
|
|
37
|
+
function buildPipeSections(options) {
|
|
38
|
+
const lines = [];
|
|
39
|
+
lines.push(`${options.label ?? '[AI]'} ${options.title}`);
|
|
40
|
+
lines.push(...buildMetadataLines(options));
|
|
41
|
+
if (options.rationale) {
|
|
42
|
+
if (lines.length > 0)
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push('Why:');
|
|
45
|
+
lines.push(` ${options.rationale}`);
|
|
46
|
+
}
|
|
47
|
+
if (options.evidence && options.evidence.length > 0) {
|
|
48
|
+
if (lines.length > 0)
|
|
49
|
+
lines.push('');
|
|
50
|
+
lines.push('Evidence:');
|
|
51
|
+
lines.push(...options.evidence.map((item) => `- ${formatEvidenceItem(item)}`));
|
|
52
|
+
}
|
|
53
|
+
if (options.nextAction) {
|
|
54
|
+
if (lines.length > 0)
|
|
55
|
+
lines.push('');
|
|
56
|
+
lines.push('Next action:');
|
|
57
|
+
lines.push(` ${options.nextAction}`);
|
|
58
|
+
}
|
|
59
|
+
if (options.governance) {
|
|
60
|
+
if (lines.length > 0)
|
|
61
|
+
lines.push('');
|
|
62
|
+
lines.push('Governance:');
|
|
63
|
+
lines.push(` ${options.governance}`);
|
|
64
|
+
}
|
|
65
|
+
return lines;
|
|
66
|
+
}
|
|
67
|
+
function buildAccessibleSections(options) {
|
|
68
|
+
const lines = [`AI explanation: ${options.title}`];
|
|
69
|
+
lines.push(...buildMetadataLines(options));
|
|
70
|
+
if (options.rationale) {
|
|
71
|
+
lines.push(`Why: ${options.rationale}`);
|
|
72
|
+
}
|
|
73
|
+
if (options.evidence && options.evidence.length > 0) {
|
|
74
|
+
lines.push('Evidence:');
|
|
75
|
+
lines.push(enumeratedList(options.evidence.map((item) => formatEvidenceItem(item)), { style: 'arabic', indent: 0 }));
|
|
76
|
+
}
|
|
77
|
+
if (options.nextAction) {
|
|
78
|
+
lines.push(`Next action: ${options.nextAction}`);
|
|
79
|
+
}
|
|
80
|
+
if (options.governance) {
|
|
81
|
+
lines.push(`Governance: ${options.governance}`);
|
|
82
|
+
}
|
|
83
|
+
return lines;
|
|
84
|
+
}
|
|
85
|
+
function buildInteractiveContent(options, ctx) {
|
|
86
|
+
const primary = ctx.semantic('primary');
|
|
87
|
+
const strong = emphasizeToken(primary);
|
|
88
|
+
const muted = ctx.semantic('muted');
|
|
89
|
+
const info = emphasizeToken(ctx.status('info'));
|
|
90
|
+
const label = options.label ?? '[AI]';
|
|
91
|
+
const sections = [
|
|
92
|
+
`${ctx.style.styled(info, label)} ${ctx.style.styled(strong, options.title)}`,
|
|
93
|
+
];
|
|
94
|
+
const metadata = buildMetadataLines(options);
|
|
95
|
+
if (metadata.length > 0) {
|
|
96
|
+
sections.push(metadata.map((line) => ctx.style.styled(muted, line)).join('\n'));
|
|
97
|
+
}
|
|
98
|
+
if (options.rationale) {
|
|
99
|
+
sections.push(`${ctx.style.styled(strong, 'Why')}\n${options.rationale}`);
|
|
100
|
+
}
|
|
101
|
+
if (options.evidence && options.evidence.length > 0) {
|
|
102
|
+
sections.push(`${ctx.style.styled(strong, 'Evidence')}\n${enumeratedList(options.evidence.map((item) => formatEvidenceItem(item)), { style: 'bullet', indent: 2, ctx })}`);
|
|
103
|
+
}
|
|
104
|
+
if (options.nextAction) {
|
|
105
|
+
sections.push(`${ctx.style.styled(strong, 'Next action')}\n${options.nextAction}`);
|
|
106
|
+
}
|
|
107
|
+
if (options.governance) {
|
|
108
|
+
sections.push(`${ctx.style.styled(strong, 'Governance')}\n${ctx.style.styled(muted, options.governance)}`);
|
|
109
|
+
}
|
|
110
|
+
return sections.join('\n\n');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Render a canonical explainability surface for AI-mediated recommendations.
|
|
114
|
+
*
|
|
115
|
+
* Output adapts by mode:
|
|
116
|
+
* - `interactive` / `static`: boxed, sectioned explainability surface with a visible `[AI]` label.
|
|
117
|
+
* - `pipe`: plain, newline-separated labeled sections.
|
|
118
|
+
* - `accessible`: explicit linearized explanation with the same meaning.
|
|
119
|
+
*/
|
|
120
|
+
export function explainability(options) {
|
|
121
|
+
const ctx = resolveCtx(options.ctx);
|
|
122
|
+
return renderByMode(ctx.mode, {
|
|
123
|
+
pipe: () => buildPipeSections(options).join('\n'),
|
|
124
|
+
accessible: () => buildAccessibleSections(options).join('\n'),
|
|
125
|
+
interactive: () => box(buildInteractiveContent(options, ctx), {
|
|
126
|
+
borderToken: options.borderToken ?? ctx.border('primary'),
|
|
127
|
+
bgToken: options.bgToken ?? ctx.surface('elevated'),
|
|
128
|
+
padding: { left: 1, right: 1 },
|
|
129
|
+
width: options.width,
|
|
130
|
+
ctx,
|
|
131
|
+
}),
|
|
132
|
+
}, options);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=explainability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainability.js","sourceRoot":"","sources":["../../../src/core/components/explainability.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export { tableSurface } from './table-v3.js';
|
|
|
16
16
|
export type { TableSurfaceCell, TableSurfaceOptions } from './table-v3.js';
|
|
17
17
|
export { box, headerBox } from './box.js';
|
|
18
18
|
export type { BoxOptions, HeaderBoxOptions } from './box.js';
|
|
19
|
-
export { boxSurface,
|
|
19
|
+
export { boxSurface, headerBoxSurface } from './box-v3.js';
|
|
20
20
|
export { selectLogoSize, loadRandomLogo } from './logo.js';
|
|
21
21
|
export type { LogoSize, LogoResult, LogoConstraints, LogoOptions } from './logo.js';
|
|
22
22
|
export { separator } from './separator.js';
|
|
@@ -45,6 +45,12 @@ export { paginator } from './paginator.js';
|
|
|
45
45
|
export type { PaginatorOptions } from './paginator.js';
|
|
46
46
|
export { stepper } from './stepper.js';
|
|
47
47
|
export type { StepperStep, StepperOptions } from './stepper.js';
|
|
48
|
+
export { explainability } from './explainability.js';
|
|
49
|
+
export type { ExplainabilityEvidenceItem, ExplainabilityOptions } from './explainability.js';
|
|
50
|
+
export { inspector } from './inspector.js';
|
|
51
|
+
export type { InspectorChrome, InspectorSectionTone, InspectorSection, InspectorOptions } from './inspector.js';
|
|
52
|
+
export { preferenceListSurface, preferenceRowSurface, resolvePreferenceRowLayout, preparePreferenceRow, preparePreferenceSections, } from './preference-list.js';
|
|
53
|
+
export type { PreferenceListTheme, PreferenceRowKind, PreferenceRow, PreparedPreferenceRow, PreferenceSection, PreparedPreferenceSection, PreferenceRowLayout, PreferenceRowSurfaceOptions, PreferenceListSurfaceOptions, } from './preference-list.js';
|
|
48
54
|
export { dag, dagSlice, dagLayout } from './dag.js';
|
|
49
55
|
export type { DagNode, DagOptions, DagNodePosition, DagLayout } from './dag.js';
|
|
50
56
|
export { arraySource, isDagSource, isSlicedDagSource } from './dag-source.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEnI,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export { progressBar, createProgressBar, createAnimatedProgressBar } from './pro
|
|
|
10
10
|
export { table } from './table.js';
|
|
11
11
|
export { tableSurface } from './table-v3.js';
|
|
12
12
|
export { box, headerBox } from './box.js';
|
|
13
|
-
export { boxSurface,
|
|
13
|
+
export { boxSurface, headerBoxSurface } from './box-v3.js';
|
|
14
14
|
export { selectLogoSize, loadRandomLogo } from './logo.js';
|
|
15
15
|
export { separator } from './separator.js';
|
|
16
16
|
export { separatorSurface } from './separator-v3.js';
|
|
@@ -26,6 +26,9 @@ export { tabs } from './tabs.js';
|
|
|
26
26
|
export { breadcrumb } from './breadcrumb.js';
|
|
27
27
|
export { paginator } from './paginator.js';
|
|
28
28
|
export { stepper } from './stepper.js';
|
|
29
|
+
export { explainability } from './explainability.js';
|
|
30
|
+
export { inspector } from './inspector.js';
|
|
31
|
+
export { preferenceListSurface, preferenceRowSurface, resolvePreferenceRowLayout, preparePreferenceRow, preparePreferenceSections, } from './preference-list.js';
|
|
29
32
|
export { dag, dagSlice, dagLayout } from './dag.js';
|
|
30
33
|
export { arraySource, isDagSource, isSlicedDagSource } from './dag-source.js';
|
|
31
34
|
export { dagStats } from './dag-stats.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAa9B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { BijouContext } from '../../ports/context.js';
|
|
2
|
+
import type { TokenValue } from '../theme/tokens.js';
|
|
3
|
+
import type { BijouNodeOptions } from './types.js';
|
|
4
|
+
export type InspectorSectionTone = 'default' | 'muted';
|
|
5
|
+
export type InspectorChrome = 'boxed' | 'none';
|
|
6
|
+
/** A compact titled section within an inspector surface. */
|
|
7
|
+
export interface InspectorSection {
|
|
8
|
+
/** Section heading shown above the content. */
|
|
9
|
+
readonly title: string;
|
|
10
|
+
/** Section body content. */
|
|
11
|
+
readonly content: string;
|
|
12
|
+
/** Optional tone for the section body. */
|
|
13
|
+
readonly tone?: InspectorSectionTone;
|
|
14
|
+
}
|
|
15
|
+
/** Options for rendering a canonical inspector surface. */
|
|
16
|
+
export interface InspectorOptions extends BijouNodeOptions {
|
|
17
|
+
/** Title shown in the box chrome or as the first plain-text line. */
|
|
18
|
+
readonly title: string;
|
|
19
|
+
/** Optional current selection or active value to emphasize. */
|
|
20
|
+
readonly currentValue?: string;
|
|
21
|
+
/** Visible label for the current value. Defaults to `Current selection`. */
|
|
22
|
+
readonly currentValueLabel?: string;
|
|
23
|
+
/** Optional supporting text immediately beneath the current value. */
|
|
24
|
+
readonly supportingText?: string;
|
|
25
|
+
/** Optional explicit label for supporting text in non-visual modes. Defaults to `Context`. */
|
|
26
|
+
readonly supportingTextLabel?: string;
|
|
27
|
+
/** Compact titled sections shown below the active value. */
|
|
28
|
+
readonly sections?: readonly InspectorSection[];
|
|
29
|
+
/** Visual chrome for rich/static rendering. Defaults to `boxed`. */
|
|
30
|
+
readonly chrome?: InspectorChrome;
|
|
31
|
+
/** Optional border token for the visual surface. */
|
|
32
|
+
readonly borderToken?: TokenValue;
|
|
33
|
+
/** Optional background token for the visual surface. */
|
|
34
|
+
readonly bgToken?: TokenValue;
|
|
35
|
+
/** Optional fixed width for the visual surface. */
|
|
36
|
+
readonly width?: number;
|
|
37
|
+
/** Bijou context for rendering mode and theme resolution. */
|
|
38
|
+
readonly ctx?: BijouContext;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Render a canonical inspector surface for compact side-panel context.
|
|
42
|
+
*
|
|
43
|
+
* Output adapts by mode:
|
|
44
|
+
* - `interactive` / `static`: boxed current-selection panel with compact titled sections by default, or plain sectioned content when `chrome: 'none'`.
|
|
45
|
+
* - `pipe`: plain grouped text with explicit field labels.
|
|
46
|
+
* - `accessible`: explicit linearized field/value output with the same meaning.
|
|
47
|
+
*/
|
|
48
|
+
export declare function inspector(options: InspectorOptions): string;
|
|
49
|
+
//# sourceMappingURL=inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../../src/core/components/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/C,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,2DAA2D;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAgGD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAmB3D"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { renderByMode } from '../mode-render.js';
|
|
2
|
+
import { resolveCtx } from '../resolve-ctx.js';
|
|
3
|
+
import { box } from './box.js';
|
|
4
|
+
function emphasizeToken(token) {
|
|
5
|
+
return {
|
|
6
|
+
...token,
|
|
7
|
+
modifiers: [...(token.modifiers ?? []), 'bold'],
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function nonEmptySections(options) {
|
|
11
|
+
return (options.sections ?? []).filter((section) => section.content.trim().length > 0);
|
|
12
|
+
}
|
|
13
|
+
function indentLines(content, spaces = 2) {
|
|
14
|
+
const indent = ' '.repeat(Math.max(0, spaces));
|
|
15
|
+
return content
|
|
16
|
+
.split('\n')
|
|
17
|
+
.map((line) => `${indent}${line}`)
|
|
18
|
+
.join('\n');
|
|
19
|
+
}
|
|
20
|
+
function formatInlineOrBlock(title, content) {
|
|
21
|
+
if (!content.includes('\n')) {
|
|
22
|
+
return [`${title}: ${content}`];
|
|
23
|
+
}
|
|
24
|
+
return [`${title}:`, indentLines(content)];
|
|
25
|
+
}
|
|
26
|
+
function buildPipeSections(options) {
|
|
27
|
+
const lines = [options.title];
|
|
28
|
+
const currentValueLabel = options.currentValueLabel ?? 'Current selection';
|
|
29
|
+
const supportingTextLabel = options.supportingTextLabel ?? 'Context';
|
|
30
|
+
if (options.currentValue) {
|
|
31
|
+
lines.push('');
|
|
32
|
+
lines.push(`${currentValueLabel}: ${options.currentValue}`);
|
|
33
|
+
}
|
|
34
|
+
if (options.supportingText) {
|
|
35
|
+
lines.push('');
|
|
36
|
+
lines.push(...formatInlineOrBlock(supportingTextLabel, options.supportingText));
|
|
37
|
+
}
|
|
38
|
+
for (const section of nonEmptySections(options)) {
|
|
39
|
+
lines.push('');
|
|
40
|
+
lines.push(`${section.title}:`);
|
|
41
|
+
lines.push(indentLines(section.content));
|
|
42
|
+
}
|
|
43
|
+
return lines;
|
|
44
|
+
}
|
|
45
|
+
function buildAccessibleSections(options) {
|
|
46
|
+
const lines = [`Inspector: ${options.title}`];
|
|
47
|
+
const currentValueLabel = options.currentValueLabel ?? 'Current selection';
|
|
48
|
+
const supportingTextLabel = options.supportingTextLabel ?? 'Context';
|
|
49
|
+
if (options.currentValue) {
|
|
50
|
+
lines.push(`${currentValueLabel}: ${options.currentValue}`);
|
|
51
|
+
}
|
|
52
|
+
if (options.supportingText) {
|
|
53
|
+
lines.push(...formatInlineOrBlock(supportingTextLabel, options.supportingText));
|
|
54
|
+
}
|
|
55
|
+
for (const section of nonEmptySections(options)) {
|
|
56
|
+
lines.push(...formatInlineOrBlock(section.title, section.content));
|
|
57
|
+
}
|
|
58
|
+
return lines;
|
|
59
|
+
}
|
|
60
|
+
function buildInteractiveContent(options, ctx) {
|
|
61
|
+
const primary = emphasizeToken(ctx.semantic('primary'));
|
|
62
|
+
const muted = ctx.semantic('muted');
|
|
63
|
+
const currentValueLabel = options.currentValueLabel ?? 'Current selection';
|
|
64
|
+
const contentSections = [];
|
|
65
|
+
if (options.currentValue) {
|
|
66
|
+
contentSections.push(`${ctx.style.styled(muted, currentValueLabel)}\n${ctx.style.styled(primary, options.currentValue)}`);
|
|
67
|
+
}
|
|
68
|
+
if (options.supportingText) {
|
|
69
|
+
contentSections.push(ctx.style.styled(muted, options.supportingText));
|
|
70
|
+
}
|
|
71
|
+
for (const section of nonEmptySections(options)) {
|
|
72
|
+
const body = section.tone === 'muted'
|
|
73
|
+
? ctx.style.styled(muted, section.content)
|
|
74
|
+
: section.content;
|
|
75
|
+
contentSections.push(`${ctx.style.styled(primary, section.title)}\n${body}`);
|
|
76
|
+
}
|
|
77
|
+
return contentSections.join('\n\n');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Render a canonical inspector surface for compact side-panel context.
|
|
81
|
+
*
|
|
82
|
+
* Output adapts by mode:
|
|
83
|
+
* - `interactive` / `static`: boxed current-selection panel with compact titled sections by default, or plain sectioned content when `chrome: 'none'`.
|
|
84
|
+
* - `pipe`: plain grouped text with explicit field labels.
|
|
85
|
+
* - `accessible`: explicit linearized field/value output with the same meaning.
|
|
86
|
+
*/
|
|
87
|
+
export function inspector(options) {
|
|
88
|
+
const ctx = resolveCtx(options.ctx);
|
|
89
|
+
return renderByMode(ctx.mode, {
|
|
90
|
+
pipe: () => buildPipeSections(options).join('\n'),
|
|
91
|
+
accessible: () => buildAccessibleSections(options).join('\n'),
|
|
92
|
+
interactive: () => {
|
|
93
|
+
const content = buildInteractiveContent(options, ctx);
|
|
94
|
+
if (options.chrome === 'none')
|
|
95
|
+
return content;
|
|
96
|
+
return box(content, {
|
|
97
|
+
title: options.title,
|
|
98
|
+
borderToken: options.borderToken ?? ctx.border('muted'),
|
|
99
|
+
bgToken: options.bgToken ?? ctx.surface('elevated'),
|
|
100
|
+
padding: { left: 1, right: 1 },
|
|
101
|
+
width: options.width,
|
|
102
|
+
ctx,
|
|
103
|
+
});
|
|
104
|
+
},
|
|
105
|
+
}, options);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../src/core/components/inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type Surface } from '../../ports/surface.js';
|
|
2
|
+
import type { TokenValue } from '../theme/tokens.js';
|
|
3
|
+
import { type PreparedWrappedText } from '../text/wrap.js';
|
|
4
|
+
import type { BijouNodeOptions } from './types.js';
|
|
5
|
+
export type PreferenceRowKind = 'toggle' | 'choice' | 'info' | 'action';
|
|
6
|
+
export interface PreferenceRow {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly label: string;
|
|
9
|
+
readonly description?: string;
|
|
10
|
+
readonly valueLabel?: string;
|
|
11
|
+
readonly kind?: PreferenceRowKind;
|
|
12
|
+
readonly checked?: boolean;
|
|
13
|
+
readonly enabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface PreferenceSection {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly title: string;
|
|
18
|
+
readonly rows: readonly PreferenceRow[];
|
|
19
|
+
}
|
|
20
|
+
export interface PreferenceRowLayout {
|
|
21
|
+
readonly valueLabel: string;
|
|
22
|
+
readonly stackValue: boolean;
|
|
23
|
+
readonly descriptionLines: readonly string[];
|
|
24
|
+
readonly height: number;
|
|
25
|
+
}
|
|
26
|
+
export interface PreparedPreferenceRow {
|
|
27
|
+
readonly row: PreferenceRow;
|
|
28
|
+
readonly valueLabel: string;
|
|
29
|
+
readonly baseLeftText: string;
|
|
30
|
+
readonly preparedDescription?: PreparedWrappedText;
|
|
31
|
+
}
|
|
32
|
+
export interface PreparedPreferenceSection {
|
|
33
|
+
readonly id: string;
|
|
34
|
+
readonly title: string;
|
|
35
|
+
readonly rows: readonly PreparedPreferenceRow[];
|
|
36
|
+
}
|
|
37
|
+
export interface PreferenceListTheme {
|
|
38
|
+
readonly sectionTitleToken?: TokenValue;
|
|
39
|
+
readonly selectedRowBgToken?: TokenValue;
|
|
40
|
+
readonly toggleOnToken?: TokenValue;
|
|
41
|
+
readonly toggleOffToken?: TokenValue;
|
|
42
|
+
readonly choiceToken?: TokenValue;
|
|
43
|
+
readonly infoToken?: TokenValue;
|
|
44
|
+
readonly descriptionToken?: TokenValue;
|
|
45
|
+
}
|
|
46
|
+
export interface PreferenceRowSurfaceOptions extends BijouNodeOptions {
|
|
47
|
+
readonly width: number;
|
|
48
|
+
readonly selected?: boolean;
|
|
49
|
+
readonly theme?: PreferenceListTheme;
|
|
50
|
+
}
|
|
51
|
+
export interface PreferenceListSurfaceOptions extends BijouNodeOptions {
|
|
52
|
+
readonly width: number;
|
|
53
|
+
readonly selectedRowId?: string;
|
|
54
|
+
readonly theme?: PreferenceListTheme;
|
|
55
|
+
}
|
|
56
|
+
export declare function preparePreferenceRow(row: PreferenceRow): PreparedPreferenceRow;
|
|
57
|
+
export declare function preparePreferenceSections(sections: readonly PreferenceSection[]): readonly PreparedPreferenceSection[];
|
|
58
|
+
export declare function preferenceRowSurface(row: PreferenceRow | PreparedPreferenceRow, options: PreferenceRowSurfaceOptions): Surface;
|
|
59
|
+
export declare function preferenceListSurface(sections: readonly PreferenceSection[] | readonly PreparedPreferenceSection[], options: PreferenceListSurfaceOptions): Surface;
|
|
60
|
+
export declare function resolvePreferenceRowLayout(row: PreferenceRow | PreparedPreferenceRow, width: number): PreferenceRowLayout;
|
|
61
|
+
//# sourceMappingURL=preference-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preference-list.d.ts","sourceRoot":"","sources":["../../../src/core/components/preference-list.ts"],"names":[],"mappings":"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"}
|