@cueplusplus/ui 0.14.0 → 0.14.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 +183 -0
- package/dist/primitives/chip.d.ts +1 -1
- package/dist/system/theme-provider.d.ts +25 -3
- package/dist/system/theme-provider.js +27 -2
- package/manifest/components/accordion.json +16 -4
- package/manifest/components/activity-graph.json +15 -3
- package/manifest/components/agent-card.json +15 -3
- package/manifest/components/agent-handoff.json +14 -3
- package/manifest/components/agent-mode-badge.json +12 -3
- package/manifest/components/agent-pile.json +13 -3
- package/manifest/components/agent-plan.json +13 -3
- package/manifest/components/agent-status.json +14 -3
- package/manifest/components/agent-surface.json +12 -3
- package/manifest/components/alert-dialog.json +14 -3
- package/manifest/components/animated-number.json +12 -3
- package/manifest/components/app-window-frame.json +13 -3
- package/manifest/components/approval-card.json +14 -3
- package/manifest/components/artifact-card.json +14 -3
- package/manifest/components/ask-box.json +13 -3
- package/manifest/components/audience-icon.json +11 -3
- package/manifest/components/autocomplete.json +15 -3
- package/manifest/components/avatar-group.json +15 -4
- package/manifest/components/avatar.json +16 -4
- package/manifest/components/background-inbox.json +14 -3
- package/manifest/components/band.json +14 -4
- package/manifest/components/breadcrumb.json +14 -3
- package/manifest/components/button-group.json +13 -3
- package/manifest/components/calendar.json +15 -4
- package/manifest/components/canvas-split-body.json +13 -3
- package/manifest/components/canvas-split-document.json +11 -3
- package/manifest/components/canvas-split-header.json +13 -3
- package/manifest/components/canvas-split-line.json +13 -3
- package/manifest/components/canvas-split-message.json +13 -3
- package/manifest/components/canvas-split-thread.json +11 -3
- package/manifest/components/canvas-split.json +13 -3
- package/manifest/components/card.json +14 -3
- package/manifest/components/carousel.json +12 -3
- package/manifest/components/catalogue-icon.json +11 -3
- package/manifest/components/channel-beta-icon.json +11 -3
- package/manifest/components/channel-matrix.json +11 -3
- package/manifest/components/channel-released-icon.json +11 -3
- package/manifest/components/chart-container.json +11 -3
- package/manifest/components/chart-ramp.json +12 -3
- package/manifest/components/chart-swatch.json +11 -3
- package/manifest/components/chart-tooltip-content.json +12 -4
- package/manifest/components/chart.json +14 -3
- package/manifest/components/chat-empty-state.json +13 -3
- package/manifest/components/chat-panel-assistant-message.json +11 -3
- package/manifest/components/chat-panel-composer.json +11 -3
- package/manifest/components/chat-panel-messages.json +11 -3
- package/manifest/components/chat-panel-typing.json +11 -3
- package/manifest/components/chat-panel-user-message.json +11 -3
- package/manifest/components/chat-panel.json +13 -3
- package/manifest/components/checkbox-group.json +15 -4
- package/manifest/components/checkpoint-history.json +13 -3
- package/manifest/components/clamp.json +12 -3
- package/manifest/components/cli-tool-icon.json +11 -3
- package/manifest/components/code-diff.json +14 -3
- package/manifest/components/code-runner.json +13 -3
- package/manifest/components/collapsible.json +13 -3
- package/manifest/components/color-area.json +12 -4
- package/manifest/components/color-field.json +12 -3
- package/manifest/components/color-picker.json +14 -4
- package/manifest/components/color-slider.json +12 -3
- package/manifest/components/color-swatch.json +13 -3
- package/manifest/components/colors-section.json +11 -3
- package/manifest/components/combobox.json +15 -4
- package/manifest/components/compaction-row.json +12 -3
- package/manifest/components/comparison-card.json +12 -3
- package/manifest/components/composer-actions.json +11 -3
- package/manifest/components/composer-attach-button.json +11 -3
- package/manifest/components/composer-attachment-chip.json +13 -3
- package/manifest/components/composer-attachments.json +11 -3
- package/manifest/components/composer-bar.json +12 -3
- package/manifest/components/composer-command-item.json +13 -3
- package/manifest/components/composer-context.json +13 -3
- package/manifest/components/composer-input.json +11 -3
- package/manifest/components/composer-menu-item.json +12 -3
- package/manifest/components/composer-menu.json +13 -3
- package/manifest/components/composer-model-item.json +13 -3
- package/manifest/components/composer-model-trigger.json +13 -3
- package/manifest/components/composer-person-item.json +13 -3
- package/manifest/components/composer-send.json +13 -3
- package/manifest/components/composer-toolbar.json +11 -3
- package/manifest/components/composer-voice-button.json +11 -3
- package/manifest/components/composer-voice.json +13 -3
- package/manifest/components/composer.json +14 -4
- package/manifest/components/computer-use.json +13 -3
- package/manifest/components/confidence-marker.json +11 -3
- package/manifest/components/connection-state.json +12 -3
- package/manifest/components/container.json +12 -3
- package/manifest/components/context-breakdown.json +12 -4
- package/manifest/components/context-menu.json +14 -4
- package/manifest/components/context-usage.json +14 -4
- package/manifest/components/conversation-search.json +13 -3
- package/manifest/components/copy-button.json +14 -3
- package/manifest/components/cost-meter.json +12 -3
- package/manifest/components/cue-portal-frame.json +12 -3
- package/manifest/components/data-table-pagination.json +13 -3
- package/manifest/components/data-table-toolbar.json +12 -3
- package/manifest/components/date-field.json +12 -3
- package/manifest/components/date-picker.json +13 -3
- package/manifest/components/date-range-picker.json +11 -3
- package/manifest/components/day-separator.json +12 -3
- package/manifest/components/delegation-card.json +14 -4
- package/manifest/components/density.json +12 -2
- package/manifest/components/description-list.json +15 -4
- package/manifest/components/diagram.json +13 -3
- package/manifest/components/disclosure.json +15 -4
- package/manifest/components/dmx-bar.json +12 -3
- package/manifest/components/dmx-strip.json +11 -3
- package/manifest/components/document-reference.json +13 -3
- package/manifest/components/draft-restore.json +13 -3
- package/manifest/components/drawer.json +13 -4
- package/manifest/components/edit-message.json +13 -3
- package/manifest/components/elements-command-palette.json +13 -3
- package/manifest/components/elements-composer.json +13 -3
- package/manifest/components/elements-data-table.json +11 -3
- package/manifest/components/elements-timeline.json +13 -3
- package/manifest/components/elicitation-form.json +13 -3
- package/manifest/components/empty-state-composer.json +11 -3
- package/manifest/components/empty-state-greeting.json +11 -3
- package/manifest/components/empty-state-suggestion.json +11 -3
- package/manifest/components/empty-state-suggestions.json +11 -3
- package/manifest/components/empty-state.json +15 -4
- package/manifest/components/end-of-turn-summary.json +14 -3
- package/manifest/components/env-var-input.json +15 -4
- package/manifest/components/error-state.json +13 -3
- package/manifest/components/export-dialog.json +10 -2
- package/manifest/components/eyebrow.json +14 -4
- package/manifest/components/feedback-dialog.json +13 -3
- package/manifest/components/field-description.json +15 -4
- package/manifest/components/field-error.json +15 -4
- package/manifest/components/field-label.json +15 -4
- package/manifest/components/file-tree.json +13 -3
- package/manifest/components/file-upload.json +14 -4
- package/manifest/components/flow-background.json +11 -3
- package/manifest/components/flow-controls.json +11 -3
- package/manifest/components/flow-graph.json +13 -3
- package/manifest/components/folder-icon.json +12 -3
- package/manifest/components/frac.json +11 -3
- package/manifest/components/generation-loader.json +13 -3
- package/manifest/components/generative-ui.json +16 -4
- package/manifest/components/grid.json +14 -3
- package/manifest/components/group-bar.json +13 -3
- package/manifest/components/guardrail-notice.json +13 -3
- package/manifest/components/hover-card.json +14 -4
- package/manifest/components/icon-button.json +15 -3
- package/manifest/components/image-generation.json +13 -3
- package/manifest/components/info-tip.json +15 -4
- package/manifest/components/inline-citation.json +13 -3
- package/manifest/components/input-group.json +15 -4
- package/manifest/components/item.json +15 -4
- package/manifest/components/job-progress.json +14 -3
- package/manifest/components/kbd.json +14 -3
- package/manifest/components/launcher-bubble.json +14 -3
- package/manifest/components/link.json +13 -3
- package/manifest/components/live-region-announcer.json +16 -4
- package/manifest/components/log-viewer.json +15 -3
- package/manifest/components/map-answer.json +13 -3
- package/manifest/components/markdown-text.json +16 -4
- package/manifest/components/math-block.json +13 -3
- package/manifest/components/mcp-server-icon.json +12 -3
- package/manifest/components/mcp-server-panel.json +13 -3
- package/manifest/components/memory-chips.json +12 -3
- package/manifest/components/menubar.json +13 -3
- package/manifest/components/message-actions.json +14 -4
- package/manifest/components/message-attachments.json +12 -3
- package/manifest/components/message-branches.json +12 -3
- package/manifest/components/message-list.json +12 -3
- package/manifest/components/message-pair.json +12 -3
- package/manifest/components/message-queue.json +13 -3
- package/manifest/components/message-timing.json +13 -3
- package/manifest/components/message.json +12 -3
- package/manifest/components/mobile-composer.json +14 -3
- package/manifest/components/model-picker.json +12 -3
- package/manifest/components/multi-select.json +16 -4
- package/manifest/components/musical-time-input.json +11 -3
- package/manifest/components/navigation-menu.json +13 -3
- package/manifest/components/node-card.json +11 -3
- package/manifest/components/node-handle.json +11 -3
- package/manifest/components/number-field.json +15 -3
- package/manifest/components/number-ticker.json +12 -3
- package/manifest/components/onboarding.json +12 -3
- package/manifest/components/otp-field.json +14 -3
- package/manifest/components/page-shell.json +14 -4
- package/manifest/components/pagination.json +14 -3
- package/manifest/components/panel-header.json +14 -4
- package/manifest/components/password-input.json +15 -4
- package/manifest/components/permission-grant.json +13 -3
- package/manifest/components/permission-scopes.json +14 -3
- package/manifest/components/piano-keyboard.json +11 -3
- package/manifest/components/preset-section.json +11 -3
- package/manifest/components/progress.json +14 -3
- package/manifest/components/prompt-library.json +12 -3
- package/manifest/components/queue-dock.json +14 -3
- package/manifest/components/quota-banner.json +12 -3
- package/manifest/components/quote-reply.json +12 -3
- package/manifest/components/radio-group.json +15 -4
- package/manifest/components/radio.json +15 -4
- package/manifest/components/rating.json +15 -4
- package/manifest/components/read-aloud.json +13 -3
- package/manifest/components/reasoning-effort.json +12 -3
- package/manifest/components/reasoning-panel.json +13 -3
- package/manifest/components/recommendation-card.json +12 -3
- package/manifest/components/regenerate-menu.json +12 -3
- package/manifest/components/replay-player.json +14 -3
- package/manifest/components/research-report.json +12 -3
- package/manifest/components/resizable.json +13 -3
- package/manifest/components/retrieval-chunks.json +13 -3
- package/manifest/components/revert-dock.json +14 -3
- package/manifest/components/reviewable-diff.json +12 -3
- package/manifest/components/risk-badge.json +14 -3
- package/manifest/components/schedule-card.json +12 -3
- package/manifest/components/score-breakdown.json +13 -3
- package/manifest/components/scroll-anchor.json +12 -3
- package/manifest/components/scroll-area.json +13 -3
- package/manifest/components/scrollable-tabs-list.json +14 -4
- package/manifest/components/seam-cell.json +13 -4
- package/manifest/components/seam-grid.json +14 -3
- package/manifest/components/seam-list.json +13 -3
- package/manifest/components/search-input.json +15 -4
- package/manifest/components/section-header.json +14 -3
- package/manifest/components/segmented-control.json +15 -3
- package/manifest/components/separator.json +14 -3
- package/manifest/components/settings-panel.json +13 -3
- package/manifest/components/shape-section.json +11 -3
- package/manifest/components/shared-conversation.json +12 -3
- package/manifest/components/sheet.json +14 -4
- package/manifest/components/shimmer-label.json +12 -3
- package/manifest/components/sidebar.json +15 -4
- package/manifest/components/signal-edge.json +13 -4
- package/manifest/components/skeleton.json +16 -4
- package/manifest/components/skill-icon.json +12 -3
- package/manifest/components/slider.json +14 -3
- package/manifest/components/sources.json +12 -3
- package/manifest/components/sparkline.json +14 -4
- package/manifest/components/speaker-identity.json +11 -3
- package/manifest/components/spec-sheet.json +13 -4
- package/manifest/components/spectrum-visualizer.json +11 -3
- package/manifest/components/spinner.json +16 -4
- package/manifest/components/stack-icon.json +12 -3
- package/manifest/components/stack.json +14 -3
- package/manifest/components/stacks-matrix-icon.json +11 -3
- package/manifest/components/stat.json +14 -3
- package/manifest/components/status-dot.json +16 -4
- package/manifest/components/stepper.json +15 -4
- package/manifest/components/stopped-run.json +13 -4
- package/manifest/components/streaming-text.json +12 -3
- package/manifest/components/sub.json +11 -3
- package/manifest/components/subagent-list.json +13 -3
- package/manifest/components/suggestions.json +12 -3
- package/manifest/components/sup.json +11 -3
- package/manifest/components/swap-label.json +12 -3
- package/manifest/components/tags-input.json +15 -4
- package/manifest/components/tail-status.json +14 -3
- package/manifest/components/terminal-block.json +13 -3
- package/manifest/components/terminal-frame.json +14 -3
- package/manifest/components/textarea.json +15 -4
- package/manifest/components/theme-configurator.json +12 -3
- package/manifest/components/theme-provider.json +1 -1
- package/manifest/components/thinking-indicator.json +12 -3
- package/manifest/components/thread-list.json +12 -3
- package/manifest/components/thread-search.json +12 -3
- package/manifest/components/threshold-rail.json +13 -3
- package/manifest/components/time-boundary.json +13 -3
- package/manifest/components/time-field.json +15 -4
- package/manifest/components/timeline-ruler.json +13 -3
- package/manifest/components/timeline.json +13 -3
- package/manifest/components/title-bar.json +13 -3
- package/manifest/components/todo-list.json +12 -3
- package/manifest/components/toggle-group.json +15 -4
- package/manifest/components/toggle.json +15 -4
- package/manifest/components/token-editor.json +12 -3
- package/manifest/components/tool-call.json +13 -3
- package/manifest/components/tool-error.json +14 -4
- package/manifest/components/tool-group.json +12 -3
- package/manifest/components/tool-timeline.json +14 -4
- package/manifest/components/toolbar.json +14 -4
- package/manifest/components/trace-waterfall.json +12 -3
- package/manifest/components/tree-visibility-toggle.json +13 -3
- package/manifest/components/tree.json +14 -3
- package/manifest/components/turn-footer.json +14 -3
- package/manifest/components/two-step-button.json +14 -3
- package/manifest/components/typing-indicator.json +12 -3
- package/manifest/components/universe-grid.json +14 -4
- package/manifest/components/unread-divider.json +14 -4
- package/manifest/components/usage-chart.json +14 -3
- package/manifest/components/verdict-row.json +14 -3
- package/manifest/components/voice-conversation.json +13 -3
- package/manifest/components/web-preview.json +13 -3
- package/manifest/components/web-search.json +13 -3
- package/manifest/components/work-collapse.json +15 -4
- package/manifest/manifest.json +649 -649
- package/manifest/tokens.json +1 -1
- package/package.json +4 -4
|
@@ -130,10 +130,22 @@
|
|
|
130
130
|
"language": "tsx"
|
|
131
131
|
}
|
|
132
132
|
],
|
|
133
|
-
"status": "
|
|
133
|
+
"status": "stable",
|
|
134
134
|
"url": "/docs/components/two-step-button",
|
|
135
135
|
"mdUrl": "/docs/components/two-step-button.md",
|
|
136
136
|
"jsonUrl": "/r/components/two-step-button.json",
|
|
137
|
+
"whenToUse": [
|
|
138
|
+
"A destructive action that is *routine* — deleting a cue, clearing a patch, something people do many times a day.",
|
|
139
|
+
"Anywhere the confirmation should stay where the action is, rather than interrupting the view."
|
|
140
|
+
],
|
|
141
|
+
"whenNotToUse": [
|
|
142
|
+
"A rare and expensive action. Use a modal `AlertDialog` — that is the right shape when the cost of being wrong is high.",
|
|
143
|
+
"A reversible action. Do it, and offer an undo."
|
|
144
|
+
],
|
|
145
|
+
"commonMistakes": [
|
|
146
|
+
"Putting a dialog in front of an action people take twenty times an hour, which just teaches them to dismiss dialogs.",
|
|
147
|
+
"Hand-rolling it. Three separate implementations existed across fifteen call sites before this was a component, and the arm timeout is the part each one got differently."
|
|
148
|
+
],
|
|
137
149
|
"specimens": [
|
|
138
150
|
{
|
|
139
151
|
"title": "TwoStepButton",
|
|
@@ -145,6 +157,5 @@
|
|
|
145
157
|
"note": "Arm, then confirm. The portfolio's most-reused interaction, unified from three upstream implementations.",
|
|
146
158
|
"interaction": "Escape, blur and the timeout all disarm; the armed state shows a visible Cancel next to a tone-solid confirm."
|
|
147
159
|
}
|
|
148
|
-
]
|
|
149
|
-
"todo": true
|
|
160
|
+
]
|
|
150
161
|
}
|
|
@@ -40,10 +40,20 @@
|
|
|
40
40
|
"language": "tsx"
|
|
41
41
|
}
|
|
42
42
|
],
|
|
43
|
-
"status": "
|
|
43
|
+
"status": "stable",
|
|
44
44
|
"url": "/docs/components/typing-indicator",
|
|
45
45
|
"mdUrl": "/docs/components/typing-indicator.md",
|
|
46
46
|
"jsonUrl": "/r/components/typing-indicator.json",
|
|
47
|
+
"whenToUse": [
|
|
48
|
+
"Presence while a reply is coming: a pill with `bubble`, or the bare dots inside something that already has a surface."
|
|
49
|
+
],
|
|
50
|
+
"whenNotToUse": [
|
|
51
|
+
"Naming what the run is doing. The dots say only that something is happening."
|
|
52
|
+
],
|
|
53
|
+
"commonMistakes": [
|
|
54
|
+
"Trying to pass `role` or `aria-label` through. Both are omitted from the props this component accepts.",
|
|
55
|
+
"Using `bubble` inside a bubble, so a pill sits inside another surface. `bare` renders only the three dots."
|
|
56
|
+
],
|
|
47
57
|
"specimens": [
|
|
48
58
|
{
|
|
49
59
|
"title": "TypingIndicator",
|
|
@@ -55,6 +65,5 @@
|
|
|
55
65
|
"note": "The gap between sending and the first token. Three dots that read as presence rather than noise — bare when the transcript has no bubbles, in a pill when it does.",
|
|
56
66
|
"interaction": "none. Both variants carry role='status' and a name, so the wait is announced once instead of animating silently."
|
|
57
67
|
}
|
|
58
|
-
]
|
|
59
|
-
"todo": true
|
|
68
|
+
]
|
|
60
69
|
}
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"--cue-text-micro",
|
|
128
128
|
"--cue-warn"
|
|
129
129
|
],
|
|
130
|
-
"summary": "A universe as 512 slots of occupancy: who holds what, and where two fixtures
|
|
130
|
+
"summary": "A universe as 512 slots of occupancy: who holds what, and where two fixtures collide.",
|
|
131
131
|
"examples": [
|
|
132
132
|
{
|
|
133
133
|
"title": "Usage",
|
|
@@ -135,10 +135,21 @@
|
|
|
135
135
|
"language": "tsx"
|
|
136
136
|
}
|
|
137
137
|
],
|
|
138
|
-
"status": "
|
|
138
|
+
"status": "stable",
|
|
139
139
|
"url": "/docs/components/universe-grid",
|
|
140
140
|
"mdUrl": "/docs/components/universe-grid.md",
|
|
141
141
|
"jsonUrl": "/r/components/universe-grid.json",
|
|
142
|
+
"whenToUse": [
|
|
143
|
+
"Patching, where the *shape* of the allocation is the reading — the gaps, the drift, the fixture that starts at 497.",
|
|
144
|
+
"Finding address collisions, which a list of start channels hides."
|
|
145
|
+
],
|
|
146
|
+
"whenNotToUse": [
|
|
147
|
+
"Live levels. Use `DmxBar` or `ChannelMatrix`.",
|
|
148
|
+
"A patch list the user sorts and edits field by field. Use a table."
|
|
149
|
+
],
|
|
150
|
+
"commonMistakes": [
|
|
151
|
+
"Drawing it as a table. Position *is* the address: a block's left edge is channel `start`, which is what makes an overlap visible instead of inferred."
|
|
152
|
+
],
|
|
142
153
|
"specimens": [
|
|
143
154
|
{
|
|
144
155
|
"title": "UniverseGrid",
|
|
@@ -150,6 +161,5 @@
|
|
|
150
161
|
"note": "512 slots of occupancy: minimum 2px slivers so a two-channel fixture is still visible, a conflict ring where two allocations overlap, a tick ruler at 1/64/…/512 and a legend that folds to `+N more`.",
|
|
151
162
|
"interaction": "each block is a button; the accessible name spells the whole patch out, so the picture is not the only channel."
|
|
152
163
|
}
|
|
153
|
-
]
|
|
154
|
-
"todo": true
|
|
164
|
+
]
|
|
155
165
|
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"--cue-border",
|
|
31
31
|
"--cue-fg-subtle"
|
|
32
32
|
],
|
|
33
|
-
"summary": "The rule that says
|
|
33
|
+
"summary": "The rule that says you have read down to here: an accented line with its label at the end.",
|
|
34
34
|
"examples": [
|
|
35
35
|
{
|
|
36
36
|
"title": "Usage",
|
|
@@ -38,10 +38,21 @@
|
|
|
38
38
|
"language": "tsx"
|
|
39
39
|
}
|
|
40
40
|
],
|
|
41
|
-
"status": "
|
|
41
|
+
"status": "stable",
|
|
42
42
|
"url": "/docs/components/unread-divider",
|
|
43
43
|
"mdUrl": "/docs/components/unread-divider.md",
|
|
44
44
|
"jsonUrl": "/r/components/unread-divider.json",
|
|
45
|
+
"whenToUse": [
|
|
46
|
+
"Marking where a reader was in a transcript. The caller decides where it goes and when it leaves."
|
|
47
|
+
],
|
|
48
|
+
"whenNotToUse": [
|
|
49
|
+
"A marker that follows the last-seen message. One that chased it would vanish the moment it appeared, which is why this takes no messages, no counts and no scroll position."
|
|
50
|
+
],
|
|
51
|
+
"commonMistakes": [
|
|
52
|
+
"Expecting it to move itself or to know anything about scrolling. The row is only ever the mark.",
|
|
53
|
+
"Writing a sentence into `label`. It defaults to `New` — one word, because the row is a place marker and not an announcement, and the sentence a reader wants is the one below the rule.",
|
|
54
|
+
"Centring it or neutralising its colour. It is accented and asymmetric so it can never be mistaken for a `TimeBoundary` two rows above it."
|
|
55
|
+
],
|
|
45
56
|
"specimens": [
|
|
46
57
|
{
|
|
47
58
|
"title": "UnreadDivider",
|
|
@@ -53,6 +64,5 @@
|
|
|
53
64
|
"note": "The second rule Cursor's row union has and no catalogue ships: where you had read down to. It takes no messages, no count and no scroll position, because the one rule it must obey is that it does not move while you read — a divider that chased the last-seen message would vanish the moment it appeared. Accented and asymmetric, so it can never be mistaken for a time boundary two rows above it.",
|
|
54
65
|
"interaction": "none, deliberately. The mark is the whole component; when it leaves is the caller's decision."
|
|
55
66
|
}
|
|
56
|
-
]
|
|
57
|
-
"todo": true
|
|
67
|
+
]
|
|
58
68
|
}
|
|
@@ -142,10 +142,22 @@
|
|
|
142
142
|
"language": "tsx"
|
|
143
143
|
}
|
|
144
144
|
],
|
|
145
|
-
"status": "
|
|
145
|
+
"status": "stable",
|
|
146
146
|
"url": "/docs/components/usage-chart",
|
|
147
147
|
"mdUrl": "/docs/components/usage-chart.md",
|
|
148
148
|
"jsonUrl": "/r/components/usage-chart.json",
|
|
149
|
+
"whenToUse": [
|
|
150
|
+
"Usage against a limit, where the ceiling is the reading.",
|
|
151
|
+
"Anywhere a gap in the data must show as a gap — `gapMs` is what keeps a missing hour from being drawn as a straight line through it."
|
|
152
|
+
],
|
|
153
|
+
"whenNotToUse": [
|
|
154
|
+
"General charting. Reach for a real chart library when you need axes, legends and several series.",
|
|
155
|
+
"A value with no ceiling. Half the honesty here comes from the fixed axis."
|
|
156
|
+
],
|
|
157
|
+
"commonMistakes": [
|
|
158
|
+
"Auto-scaling the y axis, which makes a flat 3% look identical to a flat 95%.",
|
|
159
|
+
"Adding a charting dependency for this shape. One line and five gridlines is a large price, and a library draws none of the three rules that make this honest."
|
|
160
|
+
],
|
|
149
161
|
"specimens": [
|
|
150
162
|
{
|
|
151
163
|
"title": "UsageChart",
|
|
@@ -157,6 +169,5 @@
|
|
|
157
169
|
"note": "A dependency-free SVG chart pinned to 0–100, with gap-aware path segmentation: a hole in the data is a hole in the line, not a straight edge across it.",
|
|
158
170
|
"interaction": "hover draws a crosshair at the nearest point and a tooltip chip; the whole chart carries a text summary for readers who get no hover."
|
|
159
171
|
}
|
|
160
|
-
]
|
|
161
|
-
"todo": true
|
|
172
|
+
]
|
|
162
173
|
}
|
|
@@ -86,10 +86,22 @@
|
|
|
86
86
|
"language": "tsx"
|
|
87
87
|
}
|
|
88
88
|
],
|
|
89
|
-
"status": "
|
|
89
|
+
"status": "stable",
|
|
90
90
|
"url": "/docs/components/verdict-row",
|
|
91
91
|
"mdUrl": "/docs/components/verdict-row.md",
|
|
92
92
|
"jsonUrl": "/r/components/verdict-row.json",
|
|
93
|
+
"whenToUse": [
|
|
94
|
+
"Any scorer with an answer — a critic model, a test run, a linter. `title` defaults to `Verification` rather than `Critic` precisely so the same row fits all three.",
|
|
95
|
+
"The problems a scorer thinks are likely, each with how sure it is. Order is the caller's, and most likely first reads best."
|
|
96
|
+
],
|
|
97
|
+
"whenNotToUse": [
|
|
98
|
+
"A score that does not live on a 0-1 scale. `score` is `0`-`1` and clamped, and a non-finite score is worth no stars."
|
|
99
|
+
],
|
|
100
|
+
"commonMistakes": [
|
|
101
|
+
"Sanitising the score before passing it. Scores arrive from a model, so `NaN`, `Infinity` and out-of-range values are normal traffic and all of them clamp — the row will not render `NaN out of 5`.",
|
|
102
|
+
"Restyling the tone from a prop. `data-verdict` carries it, from OpenHands' thresholds (`ok` at 0.6, `warn` at 0.4, `danger` below), and the issue chips take theirs from the probability (`danger` at 0.7, `warn` at 0.5).",
|
|
103
|
+
"Worrying the stars will be read out one at a time. They are one `role=\"img\"` with the rating as its accessible name."
|
|
104
|
+
],
|
|
93
105
|
"specimens": [
|
|
94
106
|
{
|
|
95
107
|
"title": "VerdictRow",
|
|
@@ -101,6 +113,5 @@
|
|
|
101
113
|
"note": "What the run thought of its own work, attached to the turn that did it. A finished turn says what it changed and how long it took; whether it is any good is the question the reader actually has, and every runtime that runs a critic, a test suite or a self-review already has an answer. The scorer is unnamed on purpose — the same row fits a critic model, a linter and a second pair of eyes. The stars are the shape and the percentage is the number, because 0.58 against 0.62 is a decision and rounding it away hides the thing that moved the colour.",
|
|
102
114
|
"interaction": "none, but every number is defended: scores arrive from a model over a network, so NaN, Infinity and out-of-range values all clamp rather than reaching the DOM. The rating is one role=img with `Rated 4 out of 5` as its name, not five glyphs read out one at a time."
|
|
103
115
|
}
|
|
104
|
-
]
|
|
105
|
-
"todo": true
|
|
116
|
+
]
|
|
106
117
|
}
|
|
@@ -121,10 +121,21 @@
|
|
|
121
121
|
"language": "tsx"
|
|
122
122
|
}
|
|
123
123
|
],
|
|
124
|
-
"status": "
|
|
124
|
+
"status": "stable",
|
|
125
125
|
"url": "/docs/components/voice-conversation",
|
|
126
126
|
"mdUrl": "/docs/components/voice-conversation.md",
|
|
127
127
|
"jsonUrl": "/r/components/voice-conversation.json",
|
|
128
|
+
"whenToUse": [
|
|
129
|
+
"A live voice session, with `amplitude` fed from the analyser node — only `listening` and `speaking` react to it."
|
|
130
|
+
],
|
|
131
|
+
"whenNotToUse": [
|
|
132
|
+
"Playback of a finished answer. This is the call itself, with `connecting`, `listening`, `thinking` and `speaking` as its modes."
|
|
133
|
+
],
|
|
134
|
+
"commonMistakes": [
|
|
135
|
+
"Clamping `amplitude` before passing it. It is 0 to 1 and clamped internally.",
|
|
136
|
+
"Expecting the orb to interrupt in every mode. It is inert except while the assistant is speaking, so the caption only offers the interrupt when one is possible.",
|
|
137
|
+
"Driving `muted` from the hardware alone. It marks the mic control as engaged and swaps the hint, and `onToggleMute` reports the press."
|
|
138
|
+
],
|
|
128
139
|
"specimens": [
|
|
129
140
|
{
|
|
130
141
|
"title": "VoiceConversation",
|
|
@@ -136,6 +147,5 @@
|
|
|
136
147
|
"note": "A live call as a surface of its own: the orb tracks your voice, the caption names the turn, and the transcript follows underneath. Only `listening` and `speaking` react to amplitude — a connecting or thinking orb pulses on its own, because pretending to track a level nobody is producing is a lie the eye catches. The transcript keeps a minimum height so the card does not grow as the call goes on.",
|
|
137
148
|
"interaction": "the orb is only pressable while the assistant is speaking, and the hint under the caption says so (`Tap to interrupt`) — an inert orb offers nothing rather than looking pressable and doing nothing."
|
|
138
149
|
}
|
|
139
|
-
]
|
|
140
|
-
"todo": true
|
|
150
|
+
]
|
|
141
151
|
}
|
|
@@ -85,10 +85,21 @@
|
|
|
85
85
|
"language": "tsx"
|
|
86
86
|
}
|
|
87
87
|
],
|
|
88
|
-
"status": "
|
|
88
|
+
"status": "stable",
|
|
89
89
|
"url": "/docs/components/web-preview",
|
|
90
90
|
"mdUrl": "/docs/components/web-preview.md",
|
|
91
91
|
"jsonUrl": "/r/components/web-preview.json",
|
|
92
|
+
"whenToUse": [
|
|
93
|
+
"Framing a sandboxed preview an agent produced, with the sandbox origin in the bar so the isolation is legible."
|
|
94
|
+
],
|
|
95
|
+
"whenNotToUse": [
|
|
96
|
+
"Anything that needs this component to provide isolation. It renders `children` as given and enforces none of its own — the caller passes an already-sandboxed frame."
|
|
97
|
+
],
|
|
98
|
+
"commonMistakes": [
|
|
99
|
+
"Showing your own host in `origin`. Show the sandbox origin; displaying it does not create the isolation, and the wrong one misstates it.",
|
|
100
|
+
"Passing inline markup as `children` in production, where the child should be a sandboxed iframe.",
|
|
101
|
+
"Leaving `loading` true after the sandbox is up, so the frame stays faded behind a shimmering status."
|
|
102
|
+
],
|
|
92
103
|
"specimens": [
|
|
93
104
|
{
|
|
94
105
|
"title": "WebPreview",
|
|
@@ -100,6 +111,5 @@
|
|
|
100
111
|
"note": "Chrome around a page the agent opened: origin, reload, open-in-new. It renders whatever you hand it and isolates nothing of its own — an `iframe` here has to arrive already sandboxed, and that is the caller's job, not the element's.",
|
|
101
112
|
"interaction": "reload and open-in-new are named buttons; while `loading` the reload glyph spins, the frame is hidden from assistive tech, and a shimmering label sits in its place."
|
|
102
113
|
}
|
|
103
|
-
]
|
|
104
|
-
"todo": true
|
|
114
|
+
]
|
|
105
115
|
}
|
|
@@ -88,10 +88,21 @@
|
|
|
88
88
|
"language": "tsx"
|
|
89
89
|
}
|
|
90
90
|
],
|
|
91
|
-
"status": "
|
|
91
|
+
"status": "stable",
|
|
92
92
|
"url": "/docs/components/web-search",
|
|
93
93
|
"mdUrl": "/docs/components/web-search.md",
|
|
94
94
|
"jsonUrl": "/r/components/web-search.json",
|
|
95
|
+
"whenToUse": [
|
|
96
|
+
"A web search inside a turn, with result cards revealed as they are read."
|
|
97
|
+
],
|
|
98
|
+
"whenNotToUse": [
|
|
99
|
+
"Scored passages behind a retrieval answer. This shows result cards for a query and ranks nothing."
|
|
100
|
+
],
|
|
101
|
+
"commonMistakes": [
|
|
102
|
+
"Appending to `results` as they arrive instead of moving `visibleResults`. The array is everything available to reveal.",
|
|
103
|
+
"Leaving `cycle` constant between searches. It is the identity key that remounts the list so the entrance animation can replay.",
|
|
104
|
+
"Leaving `searching` true once results have landed, so the shimmering Searching label keeps replacing the result count."
|
|
105
|
+
],
|
|
95
106
|
"specimens": [
|
|
96
107
|
{
|
|
97
108
|
"title": "WebSearch",
|
|
@@ -103,6 +114,5 @@
|
|
|
103
114
|
"note": "The query as a pill, then the pages landing under it one at a time as they are read. It is the counterpart to `RetrievalChunks`: the same shape of answer, from outside rather than from the corpus, and the same rule that the caller advances the count.",
|
|
104
115
|
"interaction": "none. `cycle` keys the rows, so a new search re-runs the entrance instead of mutating three lines in place."
|
|
105
116
|
}
|
|
106
|
-
]
|
|
107
|
-
"todo": true
|
|
117
|
+
]
|
|
108
118
|
}
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"--cue-surface-1",
|
|
98
98
|
"--cue-text-ui"
|
|
99
99
|
],
|
|
100
|
-
"summary": "A finished run, folded into one row:
|
|
100
|
+
"summary": "A finished run, folded into one row: worked for so long and made so many tool calls.",
|
|
101
101
|
"examples": [
|
|
102
102
|
{
|
|
103
103
|
"title": "Usage",
|
|
@@ -105,10 +105,22 @@
|
|
|
105
105
|
"language": "tsx"
|
|
106
106
|
}
|
|
107
107
|
],
|
|
108
|
-
"status": "
|
|
108
|
+
"status": "stable",
|
|
109
109
|
"url": "/docs/components/work-collapse",
|
|
110
110
|
"mdUrl": "/docs/components/work-collapse.md",
|
|
111
111
|
"jsonUrl": "/r/components/work-collapse.json",
|
|
112
|
+
"whenToUse": [
|
|
113
|
+
"Fourteen rows of tool calls and reasoning nobody needs any more, folded to one line — still there, one click away, in their original order.",
|
|
114
|
+
"A collapsed run that is still going: `running` puts the label in the present tense and runs the sweep, so a folded live run cannot claim to be finished."
|
|
115
|
+
],
|
|
116
|
+
"whenNotToUse": [
|
|
117
|
+
"Saying what is happening while it happens. That is `TailStatus`, of which this is the counterpart."
|
|
118
|
+
],
|
|
119
|
+
"commonMistakes": [
|
|
120
|
+
"Wrapping the children in a rail, an indent or a border. The expanded body draws none deliberately: the rows inside already carry their own nesting when they open, and a second level makes a transcript that steps rightwards every time it explains itself.",
|
|
121
|
+
"Owning `open` inside. It is a prop, so a scripted replay is a caller changing it; a component that owned the disclosure could not be replayed at all.",
|
|
122
|
+
"Trying to compose a category summary out of `durationMs` and `toolCalls`. Pass `label` instead - `Explored 3 files, ran 5 commands` is a sentence no formatter over a duration and a count could produce."
|
|
123
|
+
],
|
|
112
124
|
"specimens": [
|
|
113
125
|
{
|
|
114
126
|
"title": "WorkCollapse",
|
|
@@ -120,6 +132,5 @@
|
|
|
120
132
|
"note": "Fourteen rows of work, folded into the one sentence a reader wants: Worked for 4m 12s and made 14 tool calls. It is the counterpart to TailStatus — that one narrates while it happens, this one is what the narration becomes once nobody needs it — and the open body deliberately draws no rail and no indent, because the rows inside already nest themselves when they open. formatWorkLabel has an answer for every combination including the empty one, since a trigger labelled undefined is a row nobody can decide whether to open.",
|
|
121
133
|
"interaction": "the summary line is the whole trigger and carries aria-expanded. Open it and the calls come back at transcript level, each still its own disclosure; a live run keeps the present tense and sweeps the label instead."
|
|
122
134
|
}
|
|
123
|
-
]
|
|
124
|
-
"todo": true
|
|
135
|
+
]
|
|
125
136
|
}
|