@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
|
@@ -29,10 +29,19 @@
|
|
|
29
29
|
],
|
|
30
30
|
"summary": "The conversation, narrowed to a rail beside the document.",
|
|
31
31
|
"examples": [],
|
|
32
|
-
"status": "
|
|
32
|
+
"status": "stable",
|
|
33
33
|
"url": "/docs/components/canvas-split-thread",
|
|
34
34
|
"mdUrl": "/docs/components/canvas-split-thread.md",
|
|
35
35
|
"jsonUrl": "/r/components/canvas-split-thread.json",
|
|
36
|
+
"whenToUse": [
|
|
37
|
+
"Holding the turns while the document is written, so the turn that asked for the artifact stays in view."
|
|
38
|
+
],
|
|
39
|
+
"whenNotToUse": [
|
|
40
|
+
"A full-width transcript. This is the narrowed rail, not the main conversation surface."
|
|
41
|
+
],
|
|
42
|
+
"commonMistakes": [
|
|
43
|
+
"Freezing its scroll while the document streams. It keeps scrolling, which is what keeps the requesting turn visible."
|
|
44
|
+
],
|
|
36
45
|
"specimens": [
|
|
37
46
|
{
|
|
38
47
|
"title": "CanvasSplit",
|
|
@@ -50,6 +59,5 @@
|
|
|
50
59
|
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
51
60
|
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
52
61
|
}
|
|
53
|
-
]
|
|
54
|
-
"todo": true
|
|
62
|
+
]
|
|
55
63
|
}
|
|
@@ -35,10 +35,21 @@
|
|
|
35
35
|
"language": "tsx"
|
|
36
36
|
}
|
|
37
37
|
],
|
|
38
|
-
"status": "
|
|
38
|
+
"status": "stable",
|
|
39
39
|
"url": "/docs/components/canvas-split",
|
|
40
40
|
"mdUrl": "/docs/components/canvas-split.md",
|
|
41
41
|
"jsonUrl": "/r/components/canvas-split.json",
|
|
42
|
+
"whenToUse": [
|
|
43
|
+
"A generated document long enough to deserve its own column beside a narrowed conversation.",
|
|
44
|
+
"A document that keeps being written while the person reads it."
|
|
45
|
+
],
|
|
46
|
+
"whenNotToUse": [
|
|
47
|
+
"A short artifact that belongs inline in the transcript."
|
|
48
|
+
],
|
|
49
|
+
"commonMistakes": [
|
|
50
|
+
"Putting the header inside `CanvasSplitBody`. `CanvasSplitHeader` and `CanvasSplitBody` are siblings inside `CanvasSplitDocument`.",
|
|
51
|
+
"Rendering turns outside `CanvasSplitThread`, which is the rail the conversation narrows into beside the document."
|
|
52
|
+
],
|
|
42
53
|
"specimens": [
|
|
43
54
|
{
|
|
44
55
|
"title": "CanvasSplit",
|
|
@@ -56,6 +67,5 @@
|
|
|
56
67
|
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
57
68
|
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
58
69
|
}
|
|
59
|
-
]
|
|
60
|
-
"todo": true
|
|
70
|
+
]
|
|
61
71
|
}
|
|
@@ -132,10 +132,22 @@
|
|
|
132
132
|
"language": "tsx"
|
|
133
133
|
}
|
|
134
134
|
],
|
|
135
|
-
"status": "
|
|
135
|
+
"status": "stable",
|
|
136
136
|
"url": "/docs/components/card",
|
|
137
137
|
"mdUrl": "/docs/components/card.md",
|
|
138
138
|
"jsonUrl": "/r/components/card.json",
|
|
139
|
+
"whenToUse": [
|
|
140
|
+
"One coherent object that deserves its own ground and edge.",
|
|
141
|
+
"Anywhere the root may later switch to the seam idiom — every section paints its own `surface-1`, so the parts need not know."
|
|
142
|
+
],
|
|
143
|
+
"whenNotToUse": [
|
|
144
|
+
"Every block on the page. Border, fill and radius each say 'separate object'; stamping them everywhere flattens the hierarchy they exist to create.",
|
|
145
|
+
"A list row. Use `Item`, or `Row` inside a hairline table."
|
|
146
|
+
],
|
|
147
|
+
"commonMistakes": [
|
|
148
|
+
"Nesting cards, which gives two competing grounds and no hierarchy.",
|
|
149
|
+
"Repainting a section's ground by hand instead of letting it paint its own, which is what breaks the seam switch."
|
|
150
|
+
],
|
|
139
151
|
"specimens": [
|
|
140
152
|
{
|
|
141
153
|
"title": "Card",
|
|
@@ -147,6 +159,5 @@
|
|
|
147
159
|
"note": "A panel with body padding and a title family. `seam` swaps the hairline separation for the 1px-gap idiom.",
|
|
148
160
|
"interaction": "none by default; wrap the header in a button if the card is a link."
|
|
149
161
|
}
|
|
150
|
-
]
|
|
151
|
-
"todo": true
|
|
162
|
+
]
|
|
152
163
|
}
|
|
@@ -222,10 +222,20 @@
|
|
|
222
222
|
"language": "tsx"
|
|
223
223
|
}
|
|
224
224
|
],
|
|
225
|
-
"status": "
|
|
225
|
+
"status": "stable",
|
|
226
226
|
"url": "/docs/components/carousel",
|
|
227
227
|
"mdUrl": "/docs/components/carousel.md",
|
|
228
228
|
"jsonUrl": "/r/components/carousel.json",
|
|
229
|
+
"whenToUse": [
|
|
230
|
+
"Peer items in a horizontal run the user browses rather than compares — screenshots, presets, a gallery."
|
|
231
|
+
],
|
|
232
|
+
"whenNotToUse": [
|
|
233
|
+
"Content the user must not miss. Anything off-screen in a carousel is content most readers never see.",
|
|
234
|
+
"Two or three items that would fit side by side. Use `Grid`."
|
|
235
|
+
],
|
|
236
|
+
"commonMistakes": [
|
|
237
|
+
"Importing it from the core barrel. `embla-carousel-react` is an **optional peer** — import from `@cueplusplus/ui/layout/carousel` so an app that ships no carousel never installs one."
|
|
238
|
+
],
|
|
229
239
|
"specimens": [
|
|
230
240
|
{
|
|
231
241
|
"title": "Carousel",
|
|
@@ -237,6 +247,5 @@
|
|
|
237
247
|
"note": "Embla, wearing the tokens. An optional peer, so it ships from @cueplusplus/ui/layout/carousel rather than the core barrel.",
|
|
238
248
|
"interaction": "drag or use the two controls; the dots are buttons and each says which slide it goes to."
|
|
239
249
|
}
|
|
240
|
-
]
|
|
241
|
-
"todo": true
|
|
250
|
+
]
|
|
242
251
|
}
|
|
@@ -17,10 +17,19 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "The catalogue itself: everything there is, before anything has been narrowed.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/catalogue-icon",
|
|
22
22
|
"mdUrl": "/docs/components/catalogue-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/catalogue-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"The row that *undoes* a filter — 'all of it'."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"A filtered view or a curated set. Use `FolderIcon`."
|
|
29
|
+
],
|
|
30
|
+
"commonMistakes": [
|
|
31
|
+
"Using a list glyph, which promises an ordering the row does not have. The 2×2 of one repeated tile says 'all of it' is a shape, not a sequence."
|
|
32
|
+
],
|
|
24
33
|
"specimens": [
|
|
25
34
|
{
|
|
26
35
|
"title": "The container icon set",
|
|
@@ -41,6 +50,5 @@
|
|
|
41
50
|
"note": "One grid and one weight across all ten, at size-icon-md — the size a navigation row draws them at. Each is a plain <svg> that takes every SVG prop.",
|
|
42
51
|
"interaction": "none. They are decorative by default: aria-hidden, announced by nothing, because the row they mark already carries its name."
|
|
43
52
|
}
|
|
44
|
-
]
|
|
45
|
-
"todo": true
|
|
53
|
+
]
|
|
46
54
|
}
|
|
@@ -17,10 +17,19 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "The beta channel: the same things, one merge earlier.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/channel-beta-icon",
|
|
22
22
|
"mdUrl": "/docs/components/channel-beta-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/channel-beta-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"Marking a pre-release channel beside its released pair."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"An empty or unpopulated channel."
|
|
29
|
+
],
|
|
30
|
+
"commonMistakes": [
|
|
31
|
+
"Drawing the ring empty. Half rather than empty because a beta is not an absence of a release — it is a release that has not finished happening, and an empty ring reads as 'nothing here yet'."
|
|
32
|
+
],
|
|
24
33
|
"specimens": [
|
|
25
34
|
{
|
|
26
35
|
"title": "The container icon set",
|
|
@@ -41,6 +50,5 @@
|
|
|
41
50
|
"note": "One grid and one weight across all ten, at size-icon-md — the size a navigation row draws them at. Each is a plain <svg> that takes every SVG prop.",
|
|
42
51
|
"interaction": "none. They are decorative by default: aria-hidden, announced by nothing, because the row they mark already carries its name."
|
|
43
52
|
}
|
|
44
|
-
]
|
|
45
|
-
"todo": true
|
|
53
|
+
]
|
|
46
54
|
}
|
|
@@ -219,10 +219,19 @@
|
|
|
219
219
|
"language": "tsx"
|
|
220
220
|
}
|
|
221
221
|
],
|
|
222
|
-
"status": "
|
|
222
|
+
"status": "stable",
|
|
223
223
|
"url": "/docs/components/channel-matrix",
|
|
224
224
|
"mdUrl": "/docs/components/channel-matrix.md",
|
|
225
225
|
"jsonUrl": "/r/components/channel-matrix.json",
|
|
226
|
+
"whenToUse": [
|
|
227
|
+
"Inspecting individual channels while a universe is running."
|
|
228
|
+
],
|
|
229
|
+
"whenNotToUse": [
|
|
230
|
+
"An overview. Use `DmxBar`."
|
|
231
|
+
],
|
|
232
|
+
"commonMistakes": [
|
|
233
|
+
"Rendering the cells from React state. Five hundred and twelve elements re-rendered forty times a second is a locked tab — the grid renders once and never re-renders, and an animation loop repaints it."
|
|
234
|
+
],
|
|
226
235
|
"specimens": [
|
|
227
236
|
{
|
|
228
237
|
"title": "ChannelMatrix",
|
|
@@ -234,6 +243,5 @@
|
|
|
234
243
|
"note": "A 32×16 grid repainted inside an animation frame against a previous-value cache, with the colour ramps precomputed to a Uint8Array. Two ramps, and an overview mode that drills into one universe.",
|
|
235
244
|
"interaction": "the controls switch universe, mode and ramp; the grid itself reports its occupancy in words."
|
|
236
245
|
}
|
|
237
|
-
]
|
|
238
|
-
"todo": true
|
|
246
|
+
]
|
|
239
247
|
}
|
|
@@ -17,10 +17,19 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "The released channel: what a colleague gets when they install without asking for anything in particular.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/channel-released-icon",
|
|
22
22
|
"mdUrl": "/docs/components/channel-released-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/channel-released-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"Marking the default, finished channel."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"A pre-release. Use `ChannelBetaIcon`, which is the same ring filled halfway."
|
|
29
|
+
],
|
|
30
|
+
"commonMistakes": [
|
|
31
|
+
"Pairing it with an unrelated glyph for beta. The two are one mark told twice, so a reader never has to learn which of two pictures means 'finished'."
|
|
32
|
+
],
|
|
24
33
|
"specimens": [
|
|
25
34
|
{
|
|
26
35
|
"title": "The container icon set",
|
|
@@ -41,6 +50,5 @@
|
|
|
41
50
|
"note": "One grid and one weight across all ten, at size-icon-md — the size a navigation row draws them at. Each is a plain <svg> that takes every SVG prop.",
|
|
42
51
|
"interaction": "none. They are decorative by default: aria-hidden, announced by nothing, because the row they mark already carries its name."
|
|
43
52
|
}
|
|
44
|
-
]
|
|
45
|
-
"todo": true
|
|
53
|
+
]
|
|
46
54
|
}
|
|
@@ -87,10 +87,19 @@
|
|
|
87
87
|
"language": "tsx"
|
|
88
88
|
}
|
|
89
89
|
],
|
|
90
|
-
"status": "
|
|
90
|
+
"status": "stable",
|
|
91
91
|
"url": "/docs/components/chart-container",
|
|
92
92
|
"mdUrl": "/docs/components/chart-container.md",
|
|
93
93
|
"jsonUrl": "/r/components/chart-container.json",
|
|
94
|
+
"whenToUse": [
|
|
95
|
+
"Around any chart, so the palette arrives as `--chart-1`…`--chart-N` custom properties."
|
|
96
|
+
],
|
|
97
|
+
"whenNotToUse": [
|
|
98
|
+
"Around a `Sparkline` or `UsageChart`, which draw themselves and need no palette."
|
|
99
|
+
],
|
|
100
|
+
"commonMistakes": [
|
|
101
|
+
"Hard-coding chart colours. The properties carry `var(--cue-accent)`, `var(--cue-info)` and the rest *by reference*, so a theme change reaches the chart without the chart knowing."
|
|
102
|
+
],
|
|
94
103
|
"specimens": [
|
|
95
104
|
{
|
|
96
105
|
"title": "ChartContainer — line",
|
|
@@ -122,6 +131,5 @@
|
|
|
122
131
|
"note": "An area with an explicit tone list, which overrides the default palette for this chart only.",
|
|
123
132
|
"interaction": "none beyond the tooltip."
|
|
124
133
|
}
|
|
125
|
-
]
|
|
126
|
-
"todo": true
|
|
134
|
+
]
|
|
127
135
|
}
|
|
@@ -62,10 +62,20 @@
|
|
|
62
62
|
"language": "tsx"
|
|
63
63
|
}
|
|
64
64
|
],
|
|
65
|
-
"status": "
|
|
65
|
+
"status": "stable",
|
|
66
66
|
"url": "/docs/components/chart-ramp",
|
|
67
67
|
"mdUrl": "/docs/components/chart-ramp.md",
|
|
68
68
|
"jsonUrl": "/r/components/chart-ramp.json",
|
|
69
|
+
"whenToUse": [
|
|
70
|
+
"Showing a sequential scale beside the chart that uses it."
|
|
71
|
+
],
|
|
72
|
+
"whenNotToUse": [
|
|
73
|
+
"A categorical legend. Use `ChartSwatch` per category."
|
|
74
|
+
],
|
|
75
|
+
"commonMistakes": [
|
|
76
|
+
"Drawing it as a CSS gradient. A ramp *is* discrete — a gradient shows steps the data cannot address and quietly disagrees with the same ramp filling the bars.",
|
|
77
|
+
"Adding seams between cells, which read as category boundaries in a scale that has none."
|
|
78
|
+
],
|
|
69
79
|
"specimens": [
|
|
70
80
|
{
|
|
71
81
|
"title": "RAMPS / accentRamp()",
|
|
@@ -77,6 +87,5 @@
|
|
|
77
87
|
"note": "Ordered scales rather than categorical ones: four ported frequency ramps that never re-hue (a listener who has learnt `bass is red` must not relearn it), and one sequential ramp derived from the live accent.",
|
|
78
88
|
"interaction": "none."
|
|
79
89
|
}
|
|
80
|
-
]
|
|
81
|
-
"todo": true
|
|
90
|
+
]
|
|
82
91
|
}
|
|
@@ -52,10 +52,19 @@
|
|
|
52
52
|
"language": "tsx"
|
|
53
53
|
}
|
|
54
54
|
],
|
|
55
|
-
"status": "
|
|
55
|
+
"status": "stable",
|
|
56
56
|
"url": "/docs/components/chart-swatch",
|
|
57
57
|
"mdUrl": "/docs/components/chart-swatch.md",
|
|
58
58
|
"jsonUrl": "/r/components/chart-swatch.json",
|
|
59
|
+
"whenToUse": [
|
|
60
|
+
"Every entry in a legend."
|
|
61
|
+
],
|
|
62
|
+
"whenNotToUse": [
|
|
63
|
+
"A continuous scale. Use `ChartRamp`."
|
|
64
|
+
],
|
|
65
|
+
"commonMistakes": [
|
|
66
|
+
"Rendering it without a label. The chip is `aria-hidden` and the label is the meaning — a swatch with no label is decoration and announces nothing, which is the honest reading of a colour with no caption (WCAG 1.4.1)."
|
|
67
|
+
],
|
|
59
68
|
"specimens": [
|
|
60
69
|
{
|
|
61
70
|
"title": "chartTones() / ChartSwatch",
|
|
@@ -67,6 +76,5 @@
|
|
|
67
76
|
"note": "The categorical palette: the theme's six status colours first, then nine generated oklch hues at fixed lightness and chroma for when six run out. Resolved at render, so switching theme reharmonises every chart on the page without a subscription.",
|
|
68
77
|
"interaction": "none. A swatch is a readout."
|
|
69
78
|
}
|
|
70
|
-
]
|
|
71
|
-
"todo": true
|
|
79
|
+
]
|
|
72
80
|
}
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"--cue-text-label",
|
|
113
113
|
"--cue-text-ui"
|
|
114
114
|
],
|
|
115
|
-
"summary": "The tooltip surface: an overlay, styled like every other overlay.",
|
|
115
|
+
"summary": "The chart tooltip surface: an overlay, styled like every other overlay.",
|
|
116
116
|
"examples": [
|
|
117
117
|
{
|
|
118
118
|
"title": "Usage",
|
|
@@ -120,10 +120,19 @@
|
|
|
120
120
|
"language": "tsx"
|
|
121
121
|
}
|
|
122
122
|
],
|
|
123
|
-
"status": "
|
|
123
|
+
"status": "stable",
|
|
124
124
|
"url": "/docs/components/chart-tooltip-content",
|
|
125
125
|
"mdUrl": "/docs/components/chart-tooltip-content.md",
|
|
126
126
|
"jsonUrl": "/r/components/chart-tooltip-content.json",
|
|
127
|
+
"whenToUse": [
|
|
128
|
+
"Inside a chart's tooltip, so it gets what a popover gets — `surface-2`, the overlay rim, one soft shadow."
|
|
129
|
+
],
|
|
130
|
+
"whenNotToUse": [
|
|
131
|
+
"Outside a chart. Use `Tooltip` or `Popover`."
|
|
132
|
+
],
|
|
133
|
+
"commonMistakes": [
|
|
134
|
+
"Writing a chart-only surface recipe, which is a second source of truth that drifts from `_surface.ts`."
|
|
135
|
+
],
|
|
127
136
|
"specimens": [
|
|
128
137
|
{
|
|
129
138
|
"title": "ChartTooltipContent",
|
|
@@ -135,6 +144,5 @@
|
|
|
135
144
|
"note": "The tooltip surface on its own, so a chart drawn from raw recharts parts can still wear it. Shown here mounted rather than hovered.",
|
|
136
145
|
"interaction": "in a chart it is positioned by recharts; the styling is the same either way."
|
|
137
146
|
}
|
|
138
|
-
]
|
|
139
|
-
"todo": true
|
|
147
|
+
]
|
|
140
148
|
}
|
|
@@ -97,10 +97,22 @@
|
|
|
97
97
|
"language": "tsx"
|
|
98
98
|
}
|
|
99
99
|
],
|
|
100
|
-
"status": "
|
|
100
|
+
"status": "stable",
|
|
101
101
|
"url": "/docs/components/chart",
|
|
102
102
|
"mdUrl": "/docs/components/chart.md",
|
|
103
103
|
"jsonUrl": "/r/components/chart.json",
|
|
104
|
+
"whenToUse": [
|
|
105
|
+
"A series that arrives over time, where `visibleCount` walks forward as points land.",
|
|
106
|
+
"A headline figure with a change against the previous window beside the marks."
|
|
107
|
+
],
|
|
108
|
+
"whenNotToUse": [
|
|
109
|
+
"A series whose numbers still need formatting. The chart never formats numbers itself — `value` and `delta` are pre-formatted strings.",
|
|
110
|
+
"A dataset with no natural last point. The last point stays emphasised in all three variants."
|
|
111
|
+
],
|
|
112
|
+
"commonMistakes": [
|
|
113
|
+
"Passing only the points that have arrived. Pass the whole series in `points` and move `visibleCount`, because the scale is computed from all of it so the axis does not jump while streaming.",
|
|
114
|
+
"Expecting `delta` to be coloured by your own sign logic. It renders green unless it starts with a minus sign."
|
|
115
|
+
],
|
|
104
116
|
"specimens": [
|
|
105
117
|
{
|
|
106
118
|
"title": "Chart",
|
|
@@ -112,6 +124,5 @@
|
|
|
112
124
|
"note": "One series, three ways, on one scale: an area, a bare line, or bars with the newest one lit. It draws its own SVG at a fixed viewBox and stretches — there is no charting library under this, which is the point of it being an element rather than an instrument.",
|
|
113
125
|
"interaction": "none, and it is not a substitute for the charts group: no axes, no legend, no tooltip. The `<svg>` carries role='img' and a label built from the figure beside it."
|
|
114
126
|
}
|
|
115
|
-
]
|
|
116
|
-
"todo": true
|
|
127
|
+
]
|
|
117
128
|
}
|
|
@@ -31,10 +31,21 @@
|
|
|
31
31
|
"language": "tsx"
|
|
32
32
|
}
|
|
33
33
|
],
|
|
34
|
-
"status": "
|
|
34
|
+
"status": "stable",
|
|
35
35
|
"url": "/docs/components/chat-empty-state",
|
|
36
36
|
"mdUrl": "/docs/components/chat-empty-state.md",
|
|
37
37
|
"jsonUrl": "/r/components/chat-empty-state.json",
|
|
38
|
+
"whenToUse": [
|
|
39
|
+
"A thread with no messages yet, where the greeting, the suggestions and a composer are the whole screen.",
|
|
40
|
+
"A row of starter pills that should arrive in order, which `EmptyStateSuggestion` staggers from its `index`."
|
|
41
|
+
],
|
|
42
|
+
"whenNotToUse": [
|
|
43
|
+
"A thread that already has turns in it."
|
|
44
|
+
],
|
|
45
|
+
"commonMistakes": [
|
|
46
|
+
"Scattering the suggestion pills outside `EmptyStateSuggestions`, which is the row they belong in.",
|
|
47
|
+
"Expecting `EmptyStateComposer` to hold text. It takes a `placeholder` string and an `onSend` handler."
|
|
48
|
+
],
|
|
38
49
|
"specimens": [
|
|
39
50
|
{
|
|
40
51
|
"title": "ChatEmptyState",
|
|
@@ -50,6 +61,5 @@
|
|
|
50
61
|
"note": "The first screen, composed rather than configured: a greeting, some ways in, and a composer-shaped invitation. `EmptyStateComposer` is a display and not a working input — the placeholder is a string and send takes a handler — for the screen whose real composer is somewhere else. The suggestions stagger their entrance from `index`, so the row arrives left to right instead of all at once. Named `ChatEmptyState` because cue already publishes a layout `EmptyState`.",
|
|
51
62
|
"interaction": "each suggestion is a button with cue's focus ring; the greeting is an `h2`, so a screen reader lands on the sentence rather than the pills."
|
|
52
63
|
}
|
|
53
|
-
]
|
|
54
|
-
"todo": true
|
|
64
|
+
]
|
|
55
65
|
}
|
|
@@ -27,10 +27,19 @@
|
|
|
27
27
|
],
|
|
28
28
|
"summary": "One message from the model: plain text on the leading edge, no bubble.",
|
|
29
29
|
"examples": [],
|
|
30
|
-
"status": "
|
|
30
|
+
"status": "stable",
|
|
31
31
|
"url": "/docs/components/chat-panel-assistant-message",
|
|
32
32
|
"mdUrl": "/docs/components/chat-panel-assistant-message.md",
|
|
33
33
|
"jsonUrl": "/r/components/chat-panel-assistant-message.json",
|
|
34
|
+
"whenToUse": [
|
|
35
|
+
"Model turns in a panel transcript."
|
|
36
|
+
],
|
|
37
|
+
"whenNotToUse": [
|
|
38
|
+
"A turn from the person, which is drawn as a filled bubble on the trailing edge instead."
|
|
39
|
+
],
|
|
40
|
+
"commonMistakes": [
|
|
41
|
+
"Wrapping it in a bubble to match the user's turns. The asymmetry is the point: the model's text runs plain on the leading edge."
|
|
42
|
+
],
|
|
34
43
|
"specimens": [
|
|
35
44
|
{
|
|
36
45
|
"title": "ChatPanel",
|
|
@@ -47,6 +56,5 @@
|
|
|
47
56
|
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
48
57
|
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
49
58
|
}
|
|
50
|
-
]
|
|
51
|
-
"todo": true
|
|
59
|
+
]
|
|
52
60
|
}
|
|
@@ -49,10 +49,19 @@
|
|
|
49
49
|
],
|
|
50
50
|
"summary": "The panel's composer row.",
|
|
51
51
|
"examples": [],
|
|
52
|
-
"status": "
|
|
52
|
+
"status": "stable",
|
|
53
53
|
"url": "/docs/components/chat-panel-composer",
|
|
54
54
|
"mdUrl": "/docs/components/chat-panel-composer.md",
|
|
55
55
|
"jsonUrl": "/r/components/chat-panel-composer.json",
|
|
56
|
+
"whenToUse": [
|
|
57
|
+
"The input row at the foot of a panel, when the screen needs the shape of a composer rather than a live one."
|
|
58
|
+
],
|
|
59
|
+
"whenNotToUse": [
|
|
60
|
+
"A working input. It is a display of a composer — `placeholder` is a string, not a value."
|
|
61
|
+
],
|
|
62
|
+
"commonMistakes": [
|
|
63
|
+
"Omitting `onSend` and expecting a live control. Without a handler the send control renders disabled."
|
|
64
|
+
],
|
|
56
65
|
"specimens": [
|
|
57
66
|
{
|
|
58
67
|
"title": "ChatPanel",
|
|
@@ -69,6 +78,5 @@
|
|
|
69
78
|
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
70
79
|
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
71
80
|
}
|
|
72
|
-
]
|
|
73
|
-
"todo": true
|
|
81
|
+
]
|
|
74
82
|
}
|
|
@@ -27,10 +27,19 @@
|
|
|
27
27
|
],
|
|
28
28
|
"summary": "The scrolling transcript inside a `ChatPanel`.",
|
|
29
29
|
"examples": [],
|
|
30
|
-
"status": "
|
|
30
|
+
"status": "stable",
|
|
31
31
|
"url": "/docs/components/chat-panel-messages",
|
|
32
32
|
"mdUrl": "/docs/components/chat-panel-messages.md",
|
|
33
33
|
"jsonUrl": "/r/components/chat-panel-messages.json",
|
|
34
|
+
"whenToUse": [
|
|
35
|
+
"Holding the turns of a panel conversation."
|
|
36
|
+
],
|
|
37
|
+
"whenNotToUse": [
|
|
38
|
+
"Content outside a `ChatPanel`. It is that frame's transcript slot."
|
|
39
|
+
],
|
|
40
|
+
"commonMistakes": [
|
|
41
|
+
"Adding your own top alignment or spacer. It is bottom-aligned, so a short conversation sits on the composer rather than floating at the top of the panel."
|
|
42
|
+
],
|
|
34
43
|
"specimens": [
|
|
35
44
|
{
|
|
36
45
|
"title": "ChatPanel",
|
|
@@ -47,6 +56,5 @@
|
|
|
47
56
|
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
48
57
|
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
49
58
|
}
|
|
50
|
-
]
|
|
51
|
-
"todo": true
|
|
59
|
+
]
|
|
52
60
|
}
|
|
@@ -27,10 +27,19 @@
|
|
|
27
27
|
],
|
|
28
28
|
"summary": "The three-dot rest state, for the gap between sending and the first token.",
|
|
29
29
|
"examples": [],
|
|
30
|
-
"status": "
|
|
30
|
+
"status": "stable",
|
|
31
31
|
"url": "/docs/components/chat-panel-typing",
|
|
32
32
|
"mdUrl": "/docs/components/chat-panel-typing.md",
|
|
33
33
|
"jsonUrl": "/r/components/chat-panel-typing.json",
|
|
34
|
+
"whenToUse": [
|
|
35
|
+
"The pause after a message is sent and before the first token arrives."
|
|
36
|
+
],
|
|
37
|
+
"whenNotToUse": [
|
|
38
|
+
"Any wait that outlasts that gap. It is a rest state, not a progress indicator."
|
|
39
|
+
],
|
|
40
|
+
"commonMistakes": [
|
|
41
|
+
"Leaving it mounted once tokens are streaming, which shows the model as still silent while it is already replying."
|
|
42
|
+
],
|
|
34
43
|
"specimens": [
|
|
35
44
|
{
|
|
36
45
|
"title": "ChatPanel",
|
|
@@ -47,6 +56,5 @@
|
|
|
47
56
|
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
48
57
|
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
49
58
|
}
|
|
50
|
-
]
|
|
51
|
-
"todo": true
|
|
59
|
+
]
|
|
52
60
|
}
|
|
@@ -27,10 +27,19 @@
|
|
|
27
27
|
],
|
|
28
28
|
"summary": "One message from the person, drawn as a filled bubble on the trailing edge.",
|
|
29
29
|
"examples": [],
|
|
30
|
-
"status": "
|
|
30
|
+
"status": "stable",
|
|
31
31
|
"url": "/docs/components/chat-panel-user-message",
|
|
32
32
|
"mdUrl": "/docs/components/chat-panel-user-message.md",
|
|
33
33
|
"jsonUrl": "/r/components/chat-panel-user-message.json",
|
|
34
|
+
"whenToUse": [
|
|
35
|
+
"Turns from the person in a panel transcript."
|
|
36
|
+
],
|
|
37
|
+
"whenNotToUse": [
|
|
38
|
+
"A model turn, which runs as plain text on the leading edge rather than in a bubble."
|
|
39
|
+
],
|
|
40
|
+
"commonMistakes": [
|
|
41
|
+
"Overriding the alignment to match the model's turns. The trailing edge and the fill are what tell the two apart at a glance."
|
|
42
|
+
],
|
|
34
43
|
"specimens": [
|
|
35
44
|
{
|
|
36
45
|
"title": "ChatPanel",
|
|
@@ -47,6 +56,5 @@
|
|
|
47
56
|
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
48
57
|
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
49
58
|
}
|
|
50
|
-
]
|
|
51
|
-
"todo": true
|
|
59
|
+
]
|
|
52
60
|
}
|
|
@@ -33,10 +33,21 @@
|
|
|
33
33
|
"language": "tsx"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
|
-
"status": "
|
|
36
|
+
"status": "stable",
|
|
37
37
|
"url": "/docs/components/chat-panel",
|
|
38
38
|
"mdUrl": "/docs/components/chat-panel.md",
|
|
39
39
|
"jsonUrl": "/r/components/chat-panel.json",
|
|
40
|
+
"whenToUse": [
|
|
41
|
+
"A compact chat surface that needs a transcript and a composer in one frame.",
|
|
42
|
+
"A transcript where the pause before the first token has a rest state of its own, via `ChatPanelTyping`."
|
|
43
|
+
],
|
|
44
|
+
"whenNotToUse": [
|
|
45
|
+
"A single message on its own. The panel is the frame around the transcript and the composer, not a message wrapper."
|
|
46
|
+
],
|
|
47
|
+
"commonMistakes": [
|
|
48
|
+
"Rendering turns directly inside `ChatPanel`. They go in `ChatPanelMessages`.",
|
|
49
|
+
"Leaving `ChatPanelTyping` mounted once tokens arrive — it stands for the pause before the reply, not the reply."
|
|
50
|
+
],
|
|
40
51
|
"specimens": [
|
|
41
52
|
{
|
|
42
53
|
"title": "ChatPanel",
|
|
@@ -53,6 +64,5 @@
|
|
|
53
64
|
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
54
65
|
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
55
66
|
}
|
|
56
|
-
]
|
|
57
|
-
"todo": true
|
|
67
|
+
]
|
|
58
68
|
}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"--cue-sunken",
|
|
42
42
|
"--cue-text-ui"
|
|
43
43
|
],
|
|
44
|
-
"summary": "Shared state for a set of
|
|
44
|
+
"summary": "Shared state for a set of checkboxes: one `value` array in, one out.",
|
|
45
45
|
"examples": [
|
|
46
46
|
{
|
|
47
47
|
"title": "Usage",
|
|
@@ -49,10 +49,22 @@
|
|
|
49
49
|
"language": "tsx"
|
|
50
50
|
}
|
|
51
51
|
],
|
|
52
|
-
"status": "
|
|
52
|
+
"status": "stable",
|
|
53
53
|
"url": "/docs/components/checkbox-group",
|
|
54
54
|
"mdUrl": "/docs/components/checkbox-group.md",
|
|
55
55
|
"jsonUrl": "/r/components/checkbox-group.json",
|
|
56
|
+
"whenToUse": [
|
|
57
|
+
"Any number of options, including none — filters, permissions, capabilities.",
|
|
58
|
+
"Anywhere the selected set should be read and written as one array rather than N booleans."
|
|
59
|
+
],
|
|
60
|
+
"whenNotToUse": [
|
|
61
|
+
"Exactly one answer. Use `RadioGroup`.",
|
|
62
|
+
"A single independent toggle. Use `Checkbox`, or `Switch` for a setting."
|
|
63
|
+
],
|
|
64
|
+
"commonMistakes": [
|
|
65
|
+
"Leaving it unnamed. A group of checkboxes with no accessible name is a list of unrelated toggles as far as a screen reader is concerned.",
|
|
66
|
+
"Keeping a separate boolean per option beside the group's array, which gives two sources of truth that drift."
|
|
67
|
+
],
|
|
56
68
|
"specimens": [
|
|
57
69
|
{
|
|
58
70
|
"title": "Checkbox / CheckboxGroup",
|
|
@@ -65,6 +77,5 @@
|
|
|
65
77
|
"note": "Two sizes and a real indeterminate state, wired as a parent of its group.",
|
|
66
78
|
"interaction": "Space toggles; the group's parent box drives and reflects its children."
|
|
67
79
|
}
|
|
68
|
-
]
|
|
69
|
-
"todo": true
|
|
80
|
+
]
|
|
70
81
|
}
|