@cueplusplus/ui 0.10.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +195 -0
- package/README.md +109 -3
- package/dist/chrome/index.d.ts +2 -1
- package/dist/chrome/index.js +3 -2
- package/dist/chrome/inspector.d.ts +61 -0
- package/dist/chrome/inspector.js +121 -0
- package/dist/elements/scroll-anchor.js +4 -2
- package/dist/forms/input.d.ts +12 -0
- package/dist/forms/textarea.d.ts +12 -0
- package/dist/forms/toggle.d.ts +6 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +5 -2
- package/dist/instruments/code-block.d.ts +35 -0
- package/dist/instruments/code-block.js +173 -0
- package/dist/instruments/index.d.ts +2 -1
- package/dist/instruments/index.js +2 -1
- package/dist/layout/bento.js +1 -1
- package/dist/layout/index.d.ts +2 -1
- package/dist/layout/index.js +2 -1
- package/dist/layout/preview.d.ts +110 -0
- package/dist/layout/preview.js +459 -0
- package/dist/primitives/chip.d.ts +1 -1
- package/manifest/components/activity-graph.json +2 -1
- package/manifest/components/agent-card.json +2 -1
- package/manifest/components/agent-pile.json +2 -1
- package/manifest/components/background-inbox.json +2 -1
- package/manifest/components/breadcrumb.json +2 -1
- package/manifest/components/chart-tooltip-content.json +2 -1
- package/manifest/components/checkpoint-history.json +2 -1
- package/manifest/components/code-block.json +106 -0
- package/manifest/components/code-diff.json +2 -1
- package/manifest/components/combobox.json +2 -1
- package/manifest/components/comparison-card.json +2 -1
- package/manifest/components/composer-attachment-chip.json +2 -1
- package/manifest/components/composer-context.json +2 -1
- package/manifest/components/composer-model-item.json +2 -1
- package/manifest/components/composer-person-item.json +2 -1
- package/manifest/components/computer-use.json +2 -1
- package/manifest/components/confidence-marker.json +2 -1
- package/manifest/components/context-breakdown.json +2 -1
- package/manifest/components/context-usage.json +2 -1
- package/manifest/components/conversation-search.json +2 -1
- package/manifest/components/cost-meter.json +2 -1
- package/manifest/components/day-separator.json +2 -1
- package/manifest/components/document-reference.json +2 -1
- package/manifest/components/elements-command-palette.json +2 -1
- package/manifest/components/elements-timeline.json +2 -1
- package/manifest/components/elicitation-form.json +2 -1
- package/manifest/components/file-tree.json +2 -1
- package/manifest/components/flow-graph.json +4 -2
- package/manifest/components/frac.json +1 -1
- package/manifest/components/group-bar.json +2 -1
- package/manifest/components/inline-citation.json +2 -1
- package/manifest/components/input.json +20 -0
- package/manifest/components/inspector.json +199 -0
- package/manifest/components/job-progress.json +2 -1
- package/manifest/components/log-viewer.json +2 -1
- package/manifest/components/map-answer.json +2 -1
- package/manifest/components/math-block.json +1 -1
- package/manifest/components/mcp-server-panel.json +2 -1
- package/manifest/components/memory-chips.json +2 -1
- package/manifest/components/message-actions.json +2 -1
- package/manifest/components/message-attachments.json +2 -1
- package/manifest/components/message-queue.json +2 -1
- package/manifest/components/message-timing.json +2 -1
- package/manifest/components/meter.json +1 -1
- package/manifest/components/model-picker.json +2 -1
- package/manifest/components/multi-select.json +2 -1
- package/manifest/components/onboarding.json +2 -1
- package/manifest/components/password-input.json +20 -0
- package/manifest/components/preview.json +202 -0
- package/manifest/components/prompt-library.json +2 -1
- package/manifest/components/queue-dock.json +2 -1
- package/manifest/components/quote-reply.json +2 -1
- package/manifest/components/reasoning-effort.json +2 -1
- package/manifest/components/reasoning-panel.json +2 -1
- package/manifest/components/regenerate-menu.json +2 -1
- package/manifest/components/research-report.json +2 -1
- package/manifest/components/retrieval-chunks.json +2 -1
- package/manifest/components/reviewable-diff.json +2 -1
- package/manifest/components/schedule-card.json +2 -1
- package/manifest/components/score-breakdown.json +2 -1
- package/manifest/components/scroll-anchor.json +2 -1
- package/manifest/components/search-input.json +20 -0
- package/manifest/components/segmented-control.json +2 -1
- package/manifest/components/settings-panel.json +2 -1
- package/manifest/components/shared-conversation.json +2 -1
- package/manifest/components/sources.json +2 -1
- package/manifest/components/speaker-identity.json +2 -1
- package/manifest/components/spec-sheet.json +2 -1
- package/manifest/components/spectrum-visualizer.json +2 -1
- package/manifest/components/stepper.json +2 -1
- package/manifest/components/streaming-text.json +2 -1
- package/manifest/components/sub.json +1 -1
- package/manifest/components/subagent-list.json +4 -2
- package/manifest/components/sup.json +1 -1
- package/manifest/components/swap-label.json +2 -1
- package/manifest/components/textarea.json +20 -0
- package/manifest/components/thread-list.json +2 -1
- package/manifest/components/thread-search.json +2 -1
- package/manifest/components/todo-list.json +2 -1
- package/manifest/components/toggle.json +10 -0
- package/manifest/components/tool-group.json +2 -1
- package/manifest/components/trace-waterfall.json +2 -1
- package/manifest/components/tree.json +2 -1
- package/manifest/components/universe-grid.json +2 -1
- package/manifest/components/usage-chart.json +2 -1
- package/manifest/components/voice-conversation.json +2 -1
- package/manifest/components/web-search.json +2 -1
- package/manifest/fixtures.json +670 -0
- package/manifest/manifest.json +125 -86
- package/manifest/tokens.json +1 -1
- package/package.json +4 -4
|
@@ -17,6 +17,16 @@
|
|
|
17
17
|
"kind": "string"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
+
{
|
|
21
|
+
"name": "aria-label",
|
|
22
|
+
"type": "string",
|
|
23
|
+
"required": false,
|
|
24
|
+
"defaultValue": null,
|
|
25
|
+
"description": "Accessible name for the input, when no `FieldLabel` names it. Declared here\nrather than left to the inherited attribute so the props table carries the\nrow: a bare input outside a `Field` has no other way to be named.",
|
|
26
|
+
"control": {
|
|
27
|
+
"kind": "string"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
20
30
|
{
|
|
21
31
|
"name": "size",
|
|
22
32
|
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
@@ -42,6 +52,16 @@
|
|
|
42
52
|
"kind": "string"
|
|
43
53
|
}
|
|
44
54
|
},
|
|
55
|
+
{
|
|
56
|
+
"name": "placeholder",
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": false,
|
|
59
|
+
"defaultValue": null,
|
|
60
|
+
"description": "An example of what goes in the field, shown while it is empty. Not a name:\nit disappears on the first keystroke, so pair it with `aria-label` or a\n`FieldLabel`. Declared for the props-table row, as `aria-label` is above.",
|
|
61
|
+
"control": {
|
|
62
|
+
"kind": "string"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
45
65
|
{
|
|
46
66
|
"name": "revealed",
|
|
47
67
|
"type": "boolean",
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Preview",
|
|
3
|
+
"slug": "preview",
|
|
4
|
+
"group": "layout",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A frame for one component: a stage that is its own theme island, a slot for\ntools at the top right, and a footer.\n\n**The stage is the island; the chrome is not.** `theme`, `mode`, `density`\nand `font` land on the stage element only, and the stage republishes the\ntheme and density contexts so an overlay opened on it follows it. The tools,\nthe footer, the grips and anything they open stay in the scope around the\nPreview — a `terminal` preview's own controls do not turn cyan. With none of\nthe four set, the stage carries no attribute and costs what a `<div>` costs.\nA stage `theme` with no `mode` repeats the page's mode beside it.\n\n**`resizable` is handles of its own**, both axes by default: an edge grip per\naxis that is a keyboard-operable `separator` valued in pixels, and a corner\ngrip for the pointer. Double-click resets an axis. The width never outgrows\nthe frame: its bound in force is the frame's own width, observed live, when\nthat is under `maxWidth`. Not `Resizable`, which is split panes on an\noptional peer.\n\nProps, not a compound: one stage and two slots, each saying what it is.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "children",
|
|
12
|
+
"type": "ReactNode",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The specimen. It renders on the stage, inside whatever scope the stage sets.",
|
|
16
|
+
"control": {
|
|
17
|
+
"kind": "node",
|
|
18
|
+
"fixture": "children.text"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "label",
|
|
23
|
+
"type": "string",
|
|
24
|
+
"required": true,
|
|
25
|
+
"defaultValue": null,
|
|
26
|
+
"description": "The frame's accessible name — \"Button preview\". Required: a frame that holds\ncontrols and has no name is a group nobody can find.",
|
|
27
|
+
"control": {
|
|
28
|
+
"kind": "string"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "theme",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "A theme for the stage only. Unset, the stage inherits — no attribute is\nemitted at all. **Naming a theme does not load it**: the stage is scoped to\n`[data-theme=\"<name>\"]`, and that theme's stylesheet must already be on the\npage (`@cueplusplus/theme-<name>/theme.css`). The tools, the footer and\nanything they open stay in the page's theme. With no `mode`, the stage\nrepeats the page's mode beside the theme — `\"system\"` included — so a light\npage's stage paints the theme's light block, not its dark one, and agrees\nwith every overlay opened on it.",
|
|
37
|
+
"control": {
|
|
38
|
+
"kind": "string"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "mode",
|
|
43
|
+
"type": "\"system\" | \"dark\" | \"light\"",
|
|
44
|
+
"required": false,
|
|
45
|
+
"defaultValue": null,
|
|
46
|
+
"description": "Dark, light or system, for the stage only. A theme's light block is the\ncompound selector `[data-theme][data-mode]`, so with no `theme` the stage\nrestates the page's theme beside the mode; outside any `ThemeProvider` there\nis no theme to restate and the mode alone changes nothing. A stage\n`\"system\"` is stamped as it is, so the stylesheet's `[data-mode=\"system\"]`\nblock follows the OS; `useTheme().resolvedMode` read on the stage reports\nthe page's resolved mode.",
|
|
47
|
+
"control": {
|
|
48
|
+
"kind": "enum",
|
|
49
|
+
"members": [
|
|
50
|
+
"system",
|
|
51
|
+
"dark",
|
|
52
|
+
"light"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "density",
|
|
58
|
+
"type": "\"normal\" | \"large\" | \"compact\" | \"ultra-compact\" | \"ultra-large\"",
|
|
59
|
+
"required": false,
|
|
60
|
+
"defaultValue": null,
|
|
61
|
+
"description": "A rung of the density ladder for the stage only, as a `<Density>` island would set it.",
|
|
62
|
+
"control": {
|
|
63
|
+
"kind": "enum",
|
|
64
|
+
"members": [
|
|
65
|
+
"normal",
|
|
66
|
+
"large",
|
|
67
|
+
"compact",
|
|
68
|
+
"ultra-compact",
|
|
69
|
+
"ultra-large"
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "font",
|
|
75
|
+
"type": "\"source\" | \"system\" | \"geist\" | \"inter\" | \"plex\" | \"roboto\" | \"apple\" | \"office\"",
|
|
76
|
+
"required": false,
|
|
77
|
+
"defaultValue": null,
|
|
78
|
+
"description": "A font pairing for the stage only, as `data-font`. Portals still follow the root's pairing.",
|
|
79
|
+
"control": {
|
|
80
|
+
"kind": "enum",
|
|
81
|
+
"members": [
|
|
82
|
+
"source",
|
|
83
|
+
"system",
|
|
84
|
+
"geist",
|
|
85
|
+
"inter",
|
|
86
|
+
"plex",
|
|
87
|
+
"roboto",
|
|
88
|
+
"apple",
|
|
89
|
+
"office"
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "resizable",
|
|
95
|
+
"type": "boolean | PreviewResizeOptions",
|
|
96
|
+
"required": false,
|
|
97
|
+
"defaultValue": null,
|
|
98
|
+
"description": "Resize the stage by dragging or with the keyboard. `true` gives both axes\ninside the default bounds (160–1280 px wide, 96–960 px tall); an object\nnarrows the axis or moves the bounds. The width never outgrows the frame:\nits bound in force is the smaller of `maxWidth` and the frame's own width,\nobserved with a `ResizeObserver`, so a Preview in a grid track stays inside\nit as the viewport changes. The height is bounded by `maxHeight` alone, and\na taller stage grows its frame. Unset, the stage is fixed: no grips, and\nnothing measured or observed.\n\nA resizable frame fills its container's width (`w-full`), because the room\nit measures has to be its container's. In a flex row or a centred column a\nframe sized by its content would measure its own stage, and a stage bounded\nby itself can only shrink, with each step lowering the ceiling. A fixed\nPreview keeps sizing to its content; `className` can still set a width.",
|
|
99
|
+
"control": {
|
|
100
|
+
"kind": "opaque"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "tools",
|
|
105
|
+
"type": "ReactNode",
|
|
106
|
+
"required": false,
|
|
107
|
+
"defaultValue": null,
|
|
108
|
+
"description": "The top-right slot — by convention a row of `IconButton`s. Drawn outside the stage.",
|
|
109
|
+
"control": {
|
|
110
|
+
"kind": "node",
|
|
111
|
+
"fixture": "children.text"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "footer",
|
|
116
|
+
"type": "ReactNode",
|
|
117
|
+
"required": false,
|
|
118
|
+
"defaultValue": null,
|
|
119
|
+
"description": "The strip under the stage: the thin text and the way out. Drawn outside the stage.",
|
|
120
|
+
"control": {
|
|
121
|
+
"kind": "node",
|
|
122
|
+
"fixture": "children.text"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"typeReferences": [
|
|
127
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
|
|
128
|
+
],
|
|
129
|
+
"subcomponents": [],
|
|
130
|
+
"parts": [],
|
|
131
|
+
"variants": {},
|
|
132
|
+
"defaultVariants": {},
|
|
133
|
+
"tokensUsed": [
|
|
134
|
+
"--cue-accent",
|
|
135
|
+
"--cue-border",
|
|
136
|
+
"--cue-border-strong",
|
|
137
|
+
"--cue-control-sm",
|
|
138
|
+
"--cue-fg",
|
|
139
|
+
"--cue-fg-muted",
|
|
140
|
+
"--cue-font-mono",
|
|
141
|
+
"--cue-hair-strong",
|
|
142
|
+
"--cue-radius-control",
|
|
143
|
+
"--cue-radius-surface",
|
|
144
|
+
"--cue-space-2",
|
|
145
|
+
"--cue-space-4",
|
|
146
|
+
"--cue-space-5",
|
|
147
|
+
"--cue-space-6",
|
|
148
|
+
"--cue-space-8",
|
|
149
|
+
"--cue-surface-1",
|
|
150
|
+
"--cue-surface-2",
|
|
151
|
+
"--cue-surface-3",
|
|
152
|
+
"--cue-text-label"
|
|
153
|
+
],
|
|
154
|
+
"summary": "A frame for one component: a stage that is its own theme island, tools at the top right, a footer, and grips that resize it on both axes.",
|
|
155
|
+
"examples": [
|
|
156
|
+
{
|
|
157
|
+
"title": "Inheriting the page, resizable",
|
|
158
|
+
"code": "<Preview label=\"Button preview\" resizable footer={<span>Button</span>}>\n <Button variant=\"primary\">Take cue</Button>\n</Preview>",
|
|
159
|
+
"language": "tsx"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"title": "Its own theme and density",
|
|
163
|
+
"code": "<Preview label=\"Chip preview\" theme=\"terminal\" density=\"compact\">\n <Chip tone=\"accent\">Standby</Chip>\n</Preview>",
|
|
164
|
+
"language": "tsx"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"title": "Usage",
|
|
168
|
+
"code": "<Preview label=\"Button preview\" tools={<IconButton aria-label=\"Configure Button\" icon={Wrench} />}>\n <Button variant=\"primary\">Take cue</Button>\n</Preview>\n<Preview label=\"Chip preview\" theme=\"terminal\" density=\"compact\" resizable>\n <Chip tone=\"accent\">Standby</Chip>\n</Preview>",
|
|
169
|
+
"language": "tsx"
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"status": "stable",
|
|
173
|
+
"url": "/docs/components/preview",
|
|
174
|
+
"mdUrl": "/docs/components/preview.md",
|
|
175
|
+
"jsonUrl": "/r/components/preview.json",
|
|
176
|
+
"whenToUse": [
|
|
177
|
+
"Showing one component in a state a reader can see and change — a gallery tile, a docs listing, a design review page.",
|
|
178
|
+
"Putting a component in a different theme, mode, density or font from the page around it, without re-theming the controls that change it.",
|
|
179
|
+
"Letting a reader watch a component respond to its container: pass `resizable` and drag it narrow, or short."
|
|
180
|
+
],
|
|
181
|
+
"whenNotToUse": [
|
|
182
|
+
"Laying several components out side by side. That is `Bento` or `Grid`; a Preview holds one specimen.",
|
|
183
|
+
"Split panes a user resizes as part of an app. That is `Resizable`; a Preview's grips resize a stage, not a layout."
|
|
184
|
+
],
|
|
185
|
+
"commonMistakes": [
|
|
186
|
+
"Naming a `theme` whose stylesheet is not on the page. The stage is scoped to `[data-theme]`, and a Preview loads no CSS — import `@cueplusplus/theme-<name>/theme.css` yourself, or the stage paints the blank base.",
|
|
187
|
+
"Setting `mode` outside any `ThemeProvider` and expecting a change. A theme's light block needs the theme on the same element, and with no provider there is no theme to restate.",
|
|
188
|
+
"Putting the controls that configure the specimen in `children`. They would take the stage's theme; put them in `tools`, which follows the page."
|
|
189
|
+
],
|
|
190
|
+
"specimens": [
|
|
191
|
+
{
|
|
192
|
+
"title": "Preview",
|
|
193
|
+
"group": "layout",
|
|
194
|
+
"components": [
|
|
195
|
+
"Preview"
|
|
196
|
+
],
|
|
197
|
+
"code": "<Specimens>\n <Specimen label=\"inherits the page, resizable\" wide>\n <Preview\n label=\"Button preview\"\n resizable\n footer={<span className=\"font-mono text-(length:--cue-text-label) text-fg-subtle\">Button · inherits</span>}\n >\n <Button variant=\"primary\">Take cue</Button>\n </Preview>\n </Specimen>\n <Specimen label=\"its own theme and density\" wide>\n <Preview\n label=\"Chip preview\"\n theme=\"terminal\"\n density=\"compact\"\n footer={<span className=\"font-mono text-(length:--cue-text-label) text-fg-subtle\">Chip · terminal · compact</span>}\n >\n <Chip tone=\"accent\">Standby</Chip>\n </Preview>\n </Specimen>\n</Specimens>",
|
|
198
|
+
"note": "A frame for one component. The stage is its own theme island — theme, mode, density and font land on it and nowhere else — while the tools, the footer and anything they open follow the page.",
|
|
199
|
+
"interaction": "with `resizable`, the width and height grips are separators: Left and Right step the width, Up and Down the height, 8 px a press and 64 with Shift; Home and End reach the bounds, and a double-click resets an axis. The corner grip is a pointer convenience over the two."
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
}
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"defaultValue": null,
|
|
17
17
|
"description": "The turns waiting to send, in the order they will drain. Ordering is the\ncaller's: Cursor lets a person drag one up the list, and a component that\nsorted the array it was given could not be dragged.",
|
|
18
18
|
"control": {
|
|
19
|
-
"kind": "array"
|
|
19
|
+
"kind": "array",
|
|
20
|
+
"fixture": "agents.follow-ups"
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
{
|
|
@@ -27,6 +27,16 @@
|
|
|
27
27
|
"kind": "string"
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
|
+
{
|
|
31
|
+
"name": "aria-label",
|
|
32
|
+
"type": "string",
|
|
33
|
+
"required": false,
|
|
34
|
+
"defaultValue": null,
|
|
35
|
+
"description": "Accessible name for the input, when no `FieldLabel` names it. Declared here\nrather than left to the inherited attribute so the props table carries the\nrow: a bare input outside a `Field` has no other way to be named.",
|
|
36
|
+
"control": {
|
|
37
|
+
"kind": "string"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
30
40
|
{
|
|
31
41
|
"name": "size",
|
|
32
42
|
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
@@ -62,6 +72,16 @@
|
|
|
62
72
|
"kind": "string"
|
|
63
73
|
}
|
|
64
74
|
},
|
|
75
|
+
{
|
|
76
|
+
"name": "placeholder",
|
|
77
|
+
"type": "string",
|
|
78
|
+
"required": false,
|
|
79
|
+
"defaultValue": null,
|
|
80
|
+
"description": "An example of what goes in the field, shown while it is empty. Not a name:\nit disappears on the first keystroke, so pair it with `aria-label` or a\n`FieldLabel`. Declared for the props-table row, as `aria-label` is above.",
|
|
81
|
+
"control": {
|
|
82
|
+
"kind": "string"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
65
85
|
{
|
|
66
86
|
"name": "onValueChange",
|
|
67
87
|
"type": "((value: string) => void)",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"defaultValue": null,
|
|
15
15
|
"description": "One level per band, `0`–`1`, in the ramp's own order.\n\nPositional rather than keyed by band id: an FFT hands back an array forty\ntimes a second, and building a lookup per frame to match it up is work for\nno information.",
|
|
16
16
|
"control": {
|
|
17
|
-
"kind": "opaque"
|
|
17
|
+
"kind": "opaque",
|
|
18
|
+
"fixture": "midi.seven-band"
|
|
18
19
|
}
|
|
19
20
|
},
|
|
20
21
|
{
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"Sub",
|
|
36
36
|
"Sup"
|
|
37
37
|
],
|
|
38
|
-
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={
|
|
38
|
+
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={3} />\n </Specimen>\n <Specimen label=\"first step only\" wide>\n <MathBlock steps={MATH} visibleSteps={1} />\n </Specimen>\n</Specimens>",
|
|
39
39
|
"note": "Maths with the working shown, a step at a time. The expressions are nodes rather than a string, so there is no parser and no KaTeX in the bundle — `Frac` stacks a numerator over a rule, `Sup` and `Sub` set an index upright inside the serif italic, and anything else is text.",
|
|
40
40
|
"interaction": "none. Each step's note says what justified it, which is what turns three lines of algebra into an explanation."
|
|
41
41
|
}
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"defaultValue": null,
|
|
17
17
|
"description": "Parallel workers shown as cards with name and model.",
|
|
18
18
|
"control": {
|
|
19
|
-
"kind": "array"
|
|
19
|
+
"kind": "array",
|
|
20
|
+
"fixture": "agent.subagents"
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
{
|
|
@@ -57,7 +58,8 @@
|
|
|
57
58
|
"defaultValue": null,
|
|
58
59
|
"description": "Agent shown in the summary card once showSummary is true.",
|
|
59
60
|
"control": {
|
|
60
|
-
"kind": "opaque"
|
|
61
|
+
"kind": "opaque",
|
|
62
|
+
"fixture": "agent.summariser"
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
65
|
],
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"Sub",
|
|
36
36
|
"Sup"
|
|
37
37
|
],
|
|
38
|
-
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={
|
|
38
|
+
"code": "<Specimens>\n <Specimen label=\"worked through\" wide>\n <MathBlock label=\"illuminance at the deck\" steps={MATH} visibleSteps={3} />\n </Specimen>\n <Specimen label=\"first step only\" wide>\n <MathBlock steps={MATH} visibleSteps={1} />\n </Specimen>\n</Specimens>",
|
|
39
39
|
"note": "Maths with the working shown, a step at a time. The expressions are nodes rather than a string, so there is no parser and no KaTeX in the bundle — `Frac` stacks a numerator over a rule, `Sup` and `Sub` set an index upright inside the serif italic, and anything else is text.",
|
|
40
40
|
"interaction": "none. Each step's note says what justified it, which is what turns three lines of algebra into an explanation."
|
|
41
41
|
}
|
|
@@ -26,6 +26,26 @@
|
|
|
26
26
|
"control": {
|
|
27
27
|
"kind": "number"
|
|
28
28
|
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "aria-label",
|
|
32
|
+
"type": "string",
|
|
33
|
+
"required": false,
|
|
34
|
+
"defaultValue": null,
|
|
35
|
+
"description": "Accessible name for the textarea, when no `FieldLabel` names it. Declared\nhere rather than left to the inherited attribute so the props table carries\nthe row: a bare textarea outside a `Field` has no other way to be named.",
|
|
36
|
+
"control": {
|
|
37
|
+
"kind": "string"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "placeholder",
|
|
42
|
+
"type": "string",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "An example of what goes in the box, shown while it is empty. Not a name:\nit disappears on the first keystroke, so pair it with `aria-label` or a\n`FieldLabel`. Declared for the props-table row, as `aria-label` is above.",
|
|
46
|
+
"control": {
|
|
47
|
+
"kind": "string"
|
|
48
|
+
}
|
|
29
49
|
}
|
|
30
50
|
],
|
|
31
51
|
"typeReferences": [
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"defaultValue": null,
|
|
17
17
|
"description": "The list as it stands right now. Each item carries its own status, so the agent\ncan add, reorder, and complete items in any order between renders.",
|
|
18
18
|
"control": {
|
|
19
|
-
"kind": "array"
|
|
19
|
+
"kind": "array",
|
|
20
|
+
"fixture": "agent.todos"
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
{
|
|
@@ -17,6 +17,16 @@
|
|
|
17
17
|
"kind": "string"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
+
{
|
|
21
|
+
"name": "aria-label",
|
|
22
|
+
"type": "string",
|
|
23
|
+
"required": false,
|
|
24
|
+
"defaultValue": null,
|
|
25
|
+
"description": "Accessible name. An icon-only toggle has no text to be named by, so this is\nits name; declared here rather than left to the inherited attribute so the\nprops table carries the row the sentence above tells a caller to pass.",
|
|
26
|
+
"control": {
|
|
27
|
+
"kind": "string"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
20
30
|
{
|
|
21
31
|
"name": "children",
|
|
22
32
|
"type": "ReactNode",
|