@cueplusplus/ui 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +340 -0
- package/dist/agent-runtime/tool-call-card.js +1 -1
- package/dist/chat/message.js +1 -1
- package/dist/chrome/band.js +10 -4
- package/dist/chrome/eyebrow.js +1 -1
- package/dist/chrome/footer.js +1 -1
- package/dist/chrome/section-header.js +1 -1
- package/dist/configurator/configurator.js +1 -1
- package/dist/configurator/export-dialog.js +1 -1
- package/dist/configurator/panel-sections.js +1 -1
- package/dist/configurator/token-editor.js +1 -1
- package/dist/date/calendar.js +2 -2
- package/dist/elements/context-usage.js +3 -3
- package/dist/elements/transcript-rules.js +1 -1
- package/dist/forms/field.js +1 -1
- package/dist/forms/slider.js +1 -1
- package/dist/instruments/code-block.js +1 -1
- package/dist/instruments/ledger.js +1 -1
- package/dist/instruments/progress.js +1 -1
- package/dist/instruments/stat.js +1 -1
- package/dist/instruments/table.js +2 -2
- package/dist/instruments/terminal-frame.js +1 -1
- package/dist/layout/_ground.js +1 -1
- package/dist/layout/collapsible.js +1 -1
- package/dist/layout/description-list.js +1 -1
- package/dist/layout/preview.d.ts +13 -1
- package/dist/layout/preview.js +16 -9
- package/dist/layout/sidebar.js +1 -1
- package/dist/layout/stepper.js +1 -1
- package/dist/overlays/_surface.d.ts +1 -1
- package/dist/overlays/_surface.js +1 -1
- package/dist/overlays/command-palette.js +1 -1
- package/dist/overlays/toast.js +1 -1
- package/dist/primitives/chip.d.ts +1 -1
- package/dist/primitives/chip.js +2 -2
- package/dist/system/density.d.ts +11 -2
- package/dist/system/density.js +29 -9
- package/dist/system/portal.js +8 -2
- package/dist/system/prepaint.d.ts +18 -1
- package/dist/system/prepaint.js +8 -2
- package/dist/system/theme-provider.d.ts +42 -5
- package/dist/system/theme-provider.js +84 -19
- package/dist/system/vocabulary.d.ts +1 -1
- package/dist/system/vocabulary.js +14 -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 +16 -4
- 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 +17 -4
- 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 +15 -5
- package/manifest/components/breadcrumb.json +14 -3
- package/manifest/components/button-group.json +13 -3
- package/manifest/components/calendar.json +18 -5
- 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 +13 -4
- 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 +14 -5
- 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/chip.json +1 -0
- package/manifest/components/clamp.json +12 -3
- package/manifest/components/cli-tool-icon.json +11 -3
- package/manifest/components/code-block.json +2 -1
- package/manifest/components/code-diff.json +14 -3
- package/manifest/components/code-runner.json +13 -3
- package/manifest/components/collapsible.json +15 -4
- 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 +13 -4
- package/manifest/components/combobox.json +17 -5
- package/manifest/components/command-palette.json +2 -1
- 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 +16 -5
- package/manifest/components/context-usage.json +15 -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 +25 -2
- package/manifest/components/description-list.json +17 -5
- package/manifest/components/diagram.json +13 -3
- package/manifest/components/dialog.json +2 -1
- package/manifest/components/disclosure.json +17 -5
- package/manifest/components/dmx-bar.json +14 -4
- package/manifest/components/dmx-strip.json +13 -4
- package/manifest/components/document-reference.json +13 -3
- package/manifest/components/draft-restore.json +13 -3
- package/manifest/components/drawer.json +15 -5
- package/manifest/components/dropdown-menu.json +2 -1
- 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 +12 -3
- package/manifest/components/eyebrow.json +16 -5
- package/manifest/components/feedback-dialog.json +13 -3
- package/manifest/components/field-description.json +17 -5
- package/manifest/components/field-error.json +17 -5
- package/manifest/components/field-label.json +17 -5
- package/manifest/components/field.json +2 -1
- 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/footer.json +1 -0
- package/manifest/components/frac.json +11 -3
- package/manifest/components/frames.json +2 -1
- 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 +16 -5
- 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/ledger.json +2 -1
- 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 +15 -4
- 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 +14 -4
- package/manifest/components/mobile-composer.json +14 -3
- package/manifest/components/model-picker.json +12 -3
- package/manifest/components/multi-select.json +18 -5
- package/manifest/components/musical-time-input.json +11 -3
- package/manifest/components/navigation-menu.json +15 -4
- 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/popover.json +2 -1
- package/manifest/components/preset-section.json +13 -4
- package/manifest/components/preview.json +15 -1
- package/manifest/components/progress.json +16 -4
- 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 +16 -4
- 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 +13 -4
- package/manifest/components/shared-conversation.json +12 -3
- package/manifest/components/sheet.json +16 -5
- package/manifest/components/shimmer-label.json +12 -3
- package/manifest/components/sidebar.json +17 -5
- 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 +16 -4
- 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 +15 -3
- package/manifest/components/status-dot.json +16 -4
- package/manifest/components/stepper.json +17 -5
- 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/table-scroll-region.json +2 -1
- package/manifest/components/table.json +2 -1
- package/manifest/components/tags-input.json +17 -5
- package/manifest/components/tail-status.json +14 -3
- package/manifest/components/terminal-block.json +13 -3
- package/manifest/components/terminal-frame.json +15 -3
- package/manifest/components/textarea.json +15 -4
- package/manifest/components/theme-configurator.json +14 -4
- package/manifest/components/theme-provider.json +14 -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 +15 -4
- 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/toast.json +2 -0
- 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 +14 -4
- package/manifest/components/tool-call-card.json +2 -1
- 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/tooltip.json +2 -1
- 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 +16 -5
- 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 +667 -667
- package/manifest/tokens.json +29 -2
- package/package.json +2 -2
|
@@ -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
|
}
|
|
@@ -71,10 +71,21 @@
|
|
|
71
71
|
"language": "tsx"
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
|
-
"status": "
|
|
74
|
+
"status": "stable",
|
|
75
75
|
"url": "/docs/components/checkpoint-history",
|
|
76
76
|
"mdUrl": "/docs/components/checkpoint-history.md",
|
|
77
77
|
"jsonUrl": "/r/components/checkpoint-history.json",
|
|
78
|
+
"whenToUse": [
|
|
79
|
+
"A run with restore points, where the user needs to see what returning to one would give back."
|
|
80
|
+
],
|
|
81
|
+
"whenNotToUse": [
|
|
82
|
+
"A plain event log with nothing to restore to.",
|
|
83
|
+
"Choosing between possible futures. These are points already behind the run, listed oldest first."
|
|
84
|
+
],
|
|
85
|
+
"commonMistakes": [
|
|
86
|
+
"Passing `checkpoints` newest first. They are expected oldest first.",
|
|
87
|
+
"Leaving `currentId` stale after a restore. Everything after it dims, because restoring would discard it."
|
|
88
|
+
],
|
|
78
89
|
"specimens": [
|
|
79
90
|
{
|
|
80
91
|
"title": "CheckpointHistory",
|
|
@@ -86,6 +97,5 @@
|
|
|
86
97
|
"note": "Points the run can be put back to, oldest first, each with what a fallback would cost in files. Everything after the current point dims, because restoring would discard it — the list is the undo stack drawn as a place rather than a count.",
|
|
87
98
|
"interaction": "each row carries a labelled restore button (`Restore to …`), so the control is named even though it draws as a glyph."
|
|
88
99
|
}
|
|
89
|
-
]
|
|
90
|
-
"todo": true
|
|
100
|
+
]
|
|
91
101
|
}
|
|
@@ -105,10 +105,20 @@
|
|
|
105
105
|
"language": "tsx"
|
|
106
106
|
}
|
|
107
107
|
],
|
|
108
|
-
"status": "
|
|
108
|
+
"status": "stable",
|
|
109
109
|
"url": "/docs/components/clamp",
|
|
110
110
|
"mdUrl": "/docs/components/clamp.md",
|
|
111
111
|
"jsonUrl": "/r/components/clamp.json",
|
|
112
|
+
"whenToUse": [
|
|
113
|
+
"Anything a transcript truncates: command output, a pasted file, a reasoning trace, a quoted message.",
|
|
114
|
+
"Anywhere the cut must look the same everywhere — the alternative is five slightly different cuts."
|
|
115
|
+
],
|
|
116
|
+
"whenNotToUse": [
|
|
117
|
+
"Content short enough to show. A fade over nothing is chrome."
|
|
118
|
+
],
|
|
119
|
+
"commonMistakes": [
|
|
120
|
+
"Painting a gradient of the surface colour over the content instead. The fade is a **mask**, so it needs no idea of what is behind it — the overlay version is the one that hard-codes a colour and breaks in light mode."
|
|
121
|
+
],
|
|
112
122
|
"specimens": [
|
|
113
123
|
{
|
|
114
124
|
"title": "Clamp",
|
|
@@ -120,6 +130,5 @@
|
|
|
120
130
|
"note": "The truncation trio as one element: a height, a dissolve of a fixed number of pixels at the cut, and a way back. The fixed depth is the part worth copying — ten pixels of dissolve is the same cut over a two-line row and a forty-line one, which is why the reference's five different truncations read as one idea. The fade is a mask rather than a gradient of the surface colour, which is the bug the reference shipped: its diff variant hard-codes a dark grey and smears on a light theme. A mask fades the content itself, so it has no colour to get wrong in any theme, either mode, or inside the island.",
|
|
121
131
|
"interaction": "the reveal is always present and always focusable; hover and focus decide only how loudly it is drawn, and Show less is never dimmed at all. That is the one place this does not copy the reference, whose Show more chip appears on hover only and is unreachable for anyone not holding a pointer. The height and the fade are published as custom properties on the root, and the mask is written in terms of them, so a height overridden in a stylesheet moves the dissolve with it."
|
|
122
132
|
}
|
|
123
|
-
]
|
|
124
|
-
"todo": true
|
|
133
|
+
]
|
|
125
134
|
}
|
|
@@ -17,10 +17,19 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "A CLI tool in the registry: a thing that runs in a terminal.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/cli-tool-icon",
|
|
22
22
|
"mdUrl": "/docs/components/cli-tool-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/cli-tool-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"A catalogue row for something invoked from a shell."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"A running service. Use `McpServerIcon`."
|
|
29
|
+
],
|
|
30
|
+
"commonMistakes": [
|
|
31
|
+
"Using a bare chevron. A chevron is a disclosure everywhere else in this library, and a navigation row that appeared to expand and then navigated instead is a worse failure than a slightly busier glyph at 10px."
|
|
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
|
}
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"--cue-space-4",
|
|
58
58
|
"--cue-sunken",
|
|
59
59
|
"--cue-text-micro",
|
|
60
|
-
"--cue-text-ui"
|
|
60
|
+
"--cue-text-ui",
|
|
61
|
+
"--cue-tracking-caps"
|
|
61
62
|
],
|
|
62
63
|
"summary": "A block of code with a copy button and no highlighter palette; `language=\"jsx\"` adds emphasis in three inks the theme already has.",
|
|
63
64
|
"examples": [
|
|
@@ -84,10 +84,22 @@
|
|
|
84
84
|
"language": "tsx"
|
|
85
85
|
}
|
|
86
86
|
],
|
|
87
|
-
"status": "
|
|
87
|
+
"status": "stable",
|
|
88
88
|
"url": "/docs/components/code-diff",
|
|
89
89
|
"mdUrl": "/docs/components/code-diff.md",
|
|
90
90
|
"jsonUrl": "/r/components/code-diff.json",
|
|
91
|
+
"whenToUse": [
|
|
92
|
+
"One file's unified diff inside a transcript, with its path and counts in the header.",
|
|
93
|
+
"A diff that should replay its entrance animation when the turn changes, by moving `cycle`."
|
|
94
|
+
],
|
|
95
|
+
"whenNotToUse": [
|
|
96
|
+
"A change spanning many files. This is one file, one `lines` array of context, added and removed.",
|
|
97
|
+
"A side-by-side comparison. `lines` is a single unified list."
|
|
98
|
+
],
|
|
99
|
+
"commonMistakes": [
|
|
100
|
+
"Deriving `additions` and `deletions` from `lines` and expecting them to agree. They are separate props and the header prints what you pass.",
|
|
101
|
+
"Holding `cycle` constant and wondering why the entrance animation never replays. It is an identity key that remounts the body."
|
|
102
|
+
],
|
|
91
103
|
"specimens": [
|
|
92
104
|
{
|
|
93
105
|
"title": "CodeDiff",
|
|
@@ -99,6 +111,5 @@
|
|
|
99
111
|
"note": "A unified diff sized for a chat column: added and removed rows carry both a gutter mark and a tint, so the diff survives being read in greyscale. Rows animate in on `cycle`, which is an identity rather than a trigger.",
|
|
100
112
|
"interaction": "none. Scrolls sideways rather than wrapping, because a wrapped diff line is a lie about the file."
|
|
101
113
|
}
|
|
102
|
-
]
|
|
103
|
-
"todo": true
|
|
114
|
+
]
|
|
104
115
|
}
|
|
@@ -104,10 +104,21 @@
|
|
|
104
104
|
"language": "tsx"
|
|
105
105
|
}
|
|
106
106
|
],
|
|
107
|
-
"status": "
|
|
107
|
+
"status": "stable",
|
|
108
108
|
"url": "/docs/components/code-runner",
|
|
109
109
|
"mdUrl": "/docs/components/code-runner.md",
|
|
110
110
|
"jsonUrl": "/r/components/code-runner.json",
|
|
111
|
+
"whenToUse": [
|
|
112
|
+
"Executable code in a transcript, with its output attached to it rather than in a second block.",
|
|
113
|
+
"A settled run, where `durationMs` prints how long it took."
|
|
114
|
+
],
|
|
115
|
+
"whenNotToUse": [
|
|
116
|
+
"Code that is only there to be read. The run control is the point of the element."
|
|
117
|
+
],
|
|
118
|
+
"commonMistakes": [
|
|
119
|
+
"Passing highlighted markup to `code`. It is rendered as plain mono; wrap it yourself for highlighting.",
|
|
120
|
+
"Using `state=\"idle\"` for a finished run that produced nothing. idle hides the output pane entirely."
|
|
121
|
+
],
|
|
111
122
|
"specimens": [
|
|
112
123
|
{
|
|
113
124
|
"title": "CodeRunner",
|
|
@@ -119,6 +130,5 @@
|
|
|
119
130
|
"note": "A snippet with a run button and the output it produced attached underneath, rather than in a console somewhere else. `idle` hides the output pane entirely — an empty black box is not a result — `error` tints what came back in the danger hue, and the duration prints once it settles.",
|
|
120
131
|
"interaction": "the run control is a labelled icon button (`Run this snippet`); while running it spins and the output arrives a line at a time."
|
|
121
132
|
}
|
|
122
|
-
]
|
|
123
|
-
"todo": true
|
|
133
|
+
]
|
|
124
134
|
}
|
|
@@ -103,7 +103,8 @@
|
|
|
103
103
|
"--cue-space-4",
|
|
104
104
|
"--cue-text-label",
|
|
105
105
|
"--cue-text-micro",
|
|
106
|
-
"--cue-text-ui"
|
|
106
|
+
"--cue-text-ui",
|
|
107
|
+
"--cue-tracking-caps"
|
|
107
108
|
],
|
|
108
109
|
"summary": "One section that opens and closes — an accordion of exactly one.",
|
|
109
110
|
"examples": [
|
|
@@ -113,10 +114,21 @@
|
|
|
113
114
|
"language": "tsx"
|
|
114
115
|
}
|
|
115
116
|
],
|
|
116
|
-
"status": "
|
|
117
|
+
"status": "stable",
|
|
117
118
|
"url": "/docs/components/collapsible",
|
|
118
119
|
"mdUrl": "/docs/components/collapsible.md",
|
|
119
120
|
"jsonUrl": "/r/components/collapsible.json",
|
|
121
|
+
"whenToUse": [
|
|
122
|
+
"A single section of a page that peers with the sections around it.",
|
|
123
|
+
"Anywhere it should look identical to a member of an `Accordion`, because it wears the same summary-row skin."
|
|
124
|
+
],
|
|
125
|
+
"whenNotToUse": [
|
|
126
|
+
"Several sections. Use `Accordion`, which coordinates which are open.",
|
|
127
|
+
"Advanced fields inside a form. Use `Disclosure` — this is a peer section, that is an annotation on the form."
|
|
128
|
+
],
|
|
129
|
+
"commonMistakes": [
|
|
130
|
+
"Using it for the 'advanced' idiom. The summary row is the tell: it announces a section where the form wanted a footnote."
|
|
131
|
+
],
|
|
120
132
|
"specimens": [
|
|
121
133
|
{
|
|
122
134
|
"title": "Collapsible",
|
|
@@ -128,6 +140,5 @@
|
|
|
128
140
|
"note": "One panel, one trigger, no grouping rules.",
|
|
129
141
|
"interaction": "same height animation as the accordion panel."
|
|
130
142
|
}
|
|
131
|
-
]
|
|
132
|
-
"todo": true
|
|
143
|
+
]
|
|
133
144
|
}
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"--cue-fg",
|
|
35
35
|
"--cue-radius-control"
|
|
36
36
|
],
|
|
37
|
-
"summary": "The two-axis colour field — saturation against brightness
|
|
37
|
+
"summary": "The two-axis colour field — saturation against brightness by default.",
|
|
38
38
|
"examples": [
|
|
39
39
|
{
|
|
40
40
|
"title": "Usage",
|
|
@@ -42,10 +42,19 @@
|
|
|
42
42
|
"language": "tsx"
|
|
43
43
|
}
|
|
44
44
|
],
|
|
45
|
-
"status": "
|
|
45
|
+
"status": "stable",
|
|
46
46
|
"url": "/docs/components/color-area",
|
|
47
47
|
"mdUrl": "/docs/components/color-area.md",
|
|
48
48
|
"jsonUrl": "/r/components/color-area.json",
|
|
49
|
+
"whenToUse": [
|
|
50
|
+
"Inside a colour picker, for the coarse visual pick."
|
|
51
|
+
],
|
|
52
|
+
"whenNotToUse": [
|
|
53
|
+
"On its own without a hue control, which leaves two of three dimensions unreachable."
|
|
54
|
+
],
|
|
55
|
+
"commonMistakes": [
|
|
56
|
+
"Rebuilding the pointer maths. The two hidden range inputs are what make it keyboard- and screen-reader-operable, and they come from the library."
|
|
57
|
+
],
|
|
49
58
|
"specimens": [
|
|
50
59
|
{
|
|
51
60
|
"title": "ColorArea",
|
|
@@ -57,6 +66,5 @@
|
|
|
57
66
|
"note": "The two-axis plane. Saturation across, brightness down, with a thumb that reports both.",
|
|
58
67
|
"interaction": "arrow keys move one axis at a time; the thumb keeps a ring in the background colour so it stays visible on any hue."
|
|
59
68
|
}
|
|
60
|
-
]
|
|
61
|
-
"todo": true
|
|
69
|
+
]
|
|
62
70
|
}
|
|
@@ -71,10 +71,20 @@
|
|
|
71
71
|
"language": "tsx"
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
|
-
"status": "
|
|
74
|
+
"status": "stable",
|
|
75
75
|
"url": "/docs/components/color-field",
|
|
76
76
|
"mdUrl": "/docs/components/color-field.md",
|
|
77
77
|
"jsonUrl": "/r/components/color-field.json",
|
|
78
|
+
"whenToUse": [
|
|
79
|
+
"An exact value the user knows or must paste.",
|
|
80
|
+
"Beside other text controls: it rides the same recessed chassis."
|
|
81
|
+
],
|
|
82
|
+
"whenNotToUse": [
|
|
83
|
+
"A visual pick. Use `ColorArea` or `ColorPicker`."
|
|
84
|
+
],
|
|
85
|
+
"commonMistakes": [
|
|
86
|
+
"Parsing the input yourself. Parsing, arrow-key stepping and commit-on-blur are the library's."
|
|
87
|
+
],
|
|
78
88
|
"specimens": [
|
|
79
89
|
{
|
|
80
90
|
"title": "ColorField",
|
|
@@ -86,6 +96,5 @@
|
|
|
86
96
|
"note": "The text half of the suite, on the form chassis. Invalid input is rejected rather than silently coerced.",
|
|
87
97
|
"interaction": "same rim and ring as Input; arrow keys step the channel under the caret."
|
|
88
98
|
}
|
|
89
|
-
]
|
|
90
|
-
"todo": true
|
|
99
|
+
]
|
|
91
100
|
}
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
"--cue-text-label",
|
|
208
208
|
"--cue-text-ui"
|
|
209
209
|
],
|
|
210
|
-
"summary": "A colour, edited in a popover:
|
|
210
|
+
"summary": "A colour, edited in a popover: area, hue rail, optional alpha, a hex/oklch field and an eyedropper where the browser has one.",
|
|
211
211
|
"examples": [
|
|
212
212
|
{
|
|
213
213
|
"title": "Usage",
|
|
@@ -215,10 +215,21 @@
|
|
|
215
215
|
"language": "tsx"
|
|
216
216
|
}
|
|
217
217
|
],
|
|
218
|
-
"status": "
|
|
218
|
+
"status": "stable",
|
|
219
219
|
"url": "/docs/components/color-picker",
|
|
220
220
|
"mdUrl": "/docs/components/color-picker.md",
|
|
221
221
|
"jsonUrl": "/r/components/color-picker.json",
|
|
222
|
+
"whenToUse": [
|
|
223
|
+
"Any full colour edit where the user needs both a visual pick and an exact value."
|
|
224
|
+
],
|
|
225
|
+
"whenNotToUse": [
|
|
226
|
+
"One channel. Use `ColorSlider`.",
|
|
227
|
+
"A typed value only. Use `ColorField`.",
|
|
228
|
+
"Showing a colour. Use `ColorSwatch`."
|
|
229
|
+
],
|
|
230
|
+
"commonMistakes": [
|
|
231
|
+
"Looking for a single primitive to wrap. It is composed from the React Aria colour parts because no primitive owns the combination."
|
|
232
|
+
],
|
|
222
233
|
"specimens": [
|
|
223
234
|
{
|
|
224
235
|
"title": "ColorPicker",
|
|
@@ -230,6 +241,5 @@
|
|
|
230
241
|
"note": "Swatch, popover, area, hue slider and a text field, in one control. Reads and writes hex or oklch, so a token authored in oklch survives a round trip unchanged.",
|
|
231
242
|
"interaction": "the swatch is the trigger; inside the popup, the area takes both arrow axes and the slider takes one."
|
|
232
243
|
}
|
|
233
|
-
]
|
|
234
|
-
"todo": true
|
|
244
|
+
]
|
|
235
245
|
}
|
|
@@ -64,10 +64,20 @@
|
|
|
64
64
|
"language": "tsx"
|
|
65
65
|
}
|
|
66
66
|
],
|
|
67
|
-
"status": "
|
|
67
|
+
"status": "stable",
|
|
68
68
|
"url": "/docs/components/color-slider",
|
|
69
69
|
"mdUrl": "/docs/components/color-slider.md",
|
|
70
70
|
"jsonUrl": "/r/components/color-slider.json",
|
|
71
|
+
"whenToUse": [
|
|
72
|
+
"A single channel the user adjusts directly.",
|
|
73
|
+
"Alpha — it gets the transparency checkerboard, without which 'half transparent' and 'half grey' look identical."
|
|
74
|
+
],
|
|
75
|
+
"whenNotToUse": [
|
|
76
|
+
"A whole colour. Use `ColorPicker`."
|
|
77
|
+
],
|
|
78
|
+
"commonMistakes": [
|
|
79
|
+
"Painting the gradient yourself. The library owns it along with the keyboard and pointer behaviour."
|
|
80
|
+
],
|
|
71
81
|
"specimens": [
|
|
72
82
|
{
|
|
73
83
|
"title": "ColorSlider",
|
|
@@ -79,6 +89,5 @@
|
|
|
79
89
|
"note": "One channel at a time. The track paints the gradient for the channel it controls.",
|
|
80
90
|
"interaction": "arrow keys step, Home and End jump to the channel bounds; the value is spoken as a colour, not a number."
|
|
81
91
|
}
|
|
82
|
-
]
|
|
83
|
-
"todo": true
|
|
92
|
+
]
|
|
84
93
|
}
|
|
@@ -59,10 +59,21 @@
|
|
|
59
59
|
"language": "tsx"
|
|
60
60
|
}
|
|
61
61
|
],
|
|
62
|
-
"status": "
|
|
62
|
+
"status": "stable",
|
|
63
63
|
"url": "/docs/components/color-swatch",
|
|
64
64
|
"mdUrl": "/docs/components/color-swatch.md",
|
|
65
65
|
"jsonUrl": "/r/components/color-swatch.json",
|
|
66
|
+
"whenToUse": [
|
|
67
|
+
"Displaying a colour — a legend, a palette row, a token value.",
|
|
68
|
+
"Anywhere transparency must read as transparency: the frame carries the checkerboard."
|
|
69
|
+
],
|
|
70
|
+
"whenNotToUse": [
|
|
71
|
+
"Editing. Use `ColorPicker`.",
|
|
72
|
+
"A chart legend. Use `ChartSwatch`, which pairs the colour with a label."
|
|
73
|
+
],
|
|
74
|
+
"commonMistakes": [
|
|
75
|
+
"Collapsing it to one element. It is two on purpose: the library writes the colour into inline `background-color`, which paints *behind* a background image, so one element cannot carry both the colour and the checkerboard."
|
|
76
|
+
],
|
|
66
77
|
"specimens": [
|
|
67
78
|
{
|
|
68
79
|
"title": "ColorSwatch",
|
|
@@ -74,6 +85,5 @@
|
|
|
74
85
|
"note": "A colour as a readable object: three sizes, a checkerboard behind anything translucent, and a spoken description of the colour.",
|
|
75
86
|
"interaction": "none. A swatch is a readout unless a picker wraps it."
|
|
76
87
|
}
|
|
77
|
-
]
|
|
78
|
-
"todo": true
|
|
88
|
+
]
|
|
79
89
|
}
|
|
@@ -52,9 +52,10 @@
|
|
|
52
52
|
"--cue-space-4",
|
|
53
53
|
"--cue-text-label",
|
|
54
54
|
"--cue-text-micro",
|
|
55
|
-
"--cue-text-ui"
|
|
55
|
+
"--cue-text-ui",
|
|
56
|
+
"--cue-tracking-caps"
|
|
56
57
|
],
|
|
57
|
-
"summary": "Section 2 — every colour the active theme declares, one row each.",
|
|
58
|
+
"summary": "Section 2 of the configurator — every colour the active theme declares, one row each.",
|
|
58
59
|
"examples": [
|
|
59
60
|
{
|
|
60
61
|
"title": "Usage",
|
|
@@ -62,9 +63,17 @@
|
|
|
62
63
|
"language": "tsx"
|
|
63
64
|
}
|
|
64
65
|
],
|
|
65
|
-
"status": "
|
|
66
|
+
"status": "stable",
|
|
66
67
|
"url": "/docs/components/colors-section",
|
|
67
68
|
"mdUrl": "/docs/components/colors-section.md",
|
|
68
69
|
"jsonUrl": "/r/components/colors-section.json",
|
|
69
|
-
"
|
|
70
|
+
"whenToUse": [
|
|
71
|
+
"Inside `ThemeConfigurator`, where the rows are grouped by what each colour does."
|
|
72
|
+
],
|
|
73
|
+
"whenNotToUse": [
|
|
74
|
+
"As a colour picker of your own. Use `TokenEditor`, which is the stateless, reusable half."
|
|
75
|
+
],
|
|
76
|
+
"commonMistakes": [
|
|
77
|
+
"Reimplementing the rows. The editing lives in `TokenEditor` precisely so anything else can reuse it."
|
|
78
|
+
]
|
|
70
79
|
}
|
|
@@ -235,9 +235,10 @@
|
|
|
235
235
|
"--cue-text-body",
|
|
236
236
|
"--cue-text-emphasis",
|
|
237
237
|
"--cue-text-label",
|
|
238
|
-
"--cue-text-ui"
|
|
238
|
+
"--cue-text-ui",
|
|
239
|
+
"--cue-tracking-caps"
|
|
239
240
|
],
|
|
240
|
-
"summary": "A
|
|
241
|
+
"summary": "A `Select` you can type into: one value out of a known, filterable set.",
|
|
241
242
|
"examples": [
|
|
242
243
|
{
|
|
243
244
|
"title": "Usage",
|
|
@@ -245,10 +246,22 @@
|
|
|
245
246
|
"language": "tsx"
|
|
246
247
|
}
|
|
247
248
|
],
|
|
248
|
-
"status": "
|
|
249
|
+
"status": "stable",
|
|
249
250
|
"url": "/docs/components/combobox",
|
|
250
251
|
"mdUrl": "/docs/components/combobox.md",
|
|
251
252
|
"jsonUrl": "/r/components/combobox.json",
|
|
253
|
+
"whenToUse": [
|
|
254
|
+
"A list too long to scroll comfortably — timezones, fixtures, users — where the value must still be one of the list.",
|
|
255
|
+
"Anywhere `Select` is right in contract but wrong in ergonomics."
|
|
256
|
+
],
|
|
257
|
+
"whenNotToUse": [
|
|
258
|
+
"A value the user may invent. Use `Autocomplete`; anything not in `items` cannot be chosen here.",
|
|
259
|
+
"A short list that fits on screen. `Select` costs the user nothing to open and nothing to learn."
|
|
260
|
+
],
|
|
261
|
+
"commonMistakes": [
|
|
262
|
+
"Treating the typed text as the value. It is a filter; the value is always an item.",
|
|
263
|
+
"Choosing between this and `Autocomplete` on appearance. They differ in what a value is allowed to be, which is the thing downstream code depends on."
|
|
264
|
+
],
|
|
252
265
|
"specimens": [
|
|
253
266
|
{
|
|
254
267
|
"title": "Combobox",
|
|
@@ -260,6 +273,5 @@
|
|
|
260
273
|
"note": "A filtered list with a committed value. An item can be disabled; the empty message is a real string, not a blank popup.",
|
|
261
274
|
"interaction": "arrow keys move the highlight, Enter commits, Escape reverts to the committed value."
|
|
262
275
|
}
|
|
263
|
-
]
|
|
264
|
-
"todo": true
|
|
276
|
+
]
|
|
265
277
|
}
|
|
@@ -108,10 +108,20 @@
|
|
|
108
108
|
"language": "tsx"
|
|
109
109
|
}
|
|
110
110
|
],
|
|
111
|
-
"status": "
|
|
111
|
+
"status": "stable",
|
|
112
112
|
"url": "/docs/components/compaction-row",
|
|
113
113
|
"mdUrl": "/docs/components/compaction-row.md",
|
|
114
114
|
"jsonUrl": "/r/components/compaction-row.json",
|
|
115
|
+
"whenToUse": [
|
|
116
|
+
"Marking a compaction in a transcript — the text above it is not the text below it any more.",
|
|
117
|
+
"Anywhere the reader needs to act on it: `128k → 24k tokens · 214 → 31 messages` explains why the model stopped remembering something."
|
|
118
|
+
],
|
|
119
|
+
"whenNotToUse": [
|
|
120
|
+
"A time gap. Use `TimeBoundary`, which is the same `role=\"separator\"` for a different break."
|
|
121
|
+
],
|
|
122
|
+
"commonMistakes": [
|
|
123
|
+
"Writing 'compacted' as prose. Alone it tells a reader nothing they can act on — the pair of numbers on both axes is the whole point."
|
|
124
|
+
],
|
|
115
125
|
"specimens": [
|
|
116
126
|
{
|
|
117
127
|
"title": "CompactionRow",
|
|
@@ -123,6 +133,5 @@
|
|
|
123
133
|
"note": "A rule like TimeBoundary, because that is what it is: the transcript above it is not the transcript below it any more. What makes it a component is the pair of numbers on both axes — 'compacted' alone tells a reader nothing they can act on, while 128k → 24k tokens · 214 → 31 messages tells them why the model stopped remembering the thing they mentioned an hour ago. Five states, which is two more than most implementations have and exactly the two that matter: failed leaves the window full, and skipped leaves it full on purpose.",
|
|
124
134
|
"interaction": "none. The whole rule is one accessible name, because a separator announces its label and never its children."
|
|
125
135
|
}
|
|
126
|
-
]
|
|
127
|
-
"todo": true
|
|
136
|
+
]
|
|
128
137
|
}
|
|
@@ -78,10 +78,20 @@
|
|
|
78
78
|
"language": "tsx"
|
|
79
79
|
}
|
|
80
80
|
],
|
|
81
|
-
"status": "
|
|
81
|
+
"status": "stable",
|
|
82
82
|
"url": "/docs/components/comparison-card",
|
|
83
83
|
"mdUrl": "/docs/components/comparison-card.md",
|
|
84
84
|
"jsonUrl": "/r/components/comparison-card.json",
|
|
85
|
+
"whenToUse": [
|
|
86
|
+
"A recommendation the reader may overrule — `recommendedId` names the pick and `reason` argues it."
|
|
87
|
+
],
|
|
88
|
+
"whenNotToUse": [
|
|
89
|
+
"More than two options. Use a table.",
|
|
90
|
+
"A choice with no recommendation. Then it is just a comparison."
|
|
91
|
+
],
|
|
92
|
+
"commonMistakes": [
|
|
93
|
+
"Naming a pick with no reason, which asks for trust instead of offering an argument."
|
|
94
|
+
],
|
|
85
95
|
"specimens": [
|
|
86
96
|
{
|
|
87
97
|
"title": "ComparisonCard",
|
|
@@ -93,6 +103,5 @@
|
|
|
93
103
|
"note": "Two options side by side with the pick named, argued, and tinted in the streaming hue — not left for the reader to infer from a longer column. A trait that is `false` collapses to the label in grey with a minus, so the absence lines up with the presences instead of leaving a hole.",
|
|
94
104
|
"interaction": "none. It is a read-only comparison; choosing is `RecommendationCard`'s job, one bench along."
|
|
95
105
|
}
|
|
96
|
-
]
|
|
97
|
-
"todo": true
|
|
106
|
+
]
|
|
98
107
|
}
|
|
@@ -39,10 +39,19 @@
|
|
|
39
39
|
],
|
|
40
40
|
"summary": "One cluster of controls in the toolbar.",
|
|
41
41
|
"examples": [],
|
|
42
|
-
"status": "
|
|
42
|
+
"status": "stable",
|
|
43
43
|
"url": "/docs/components/composer-actions",
|
|
44
44
|
"mdUrl": "/docs/components/composer-actions.md",
|
|
45
45
|
"jsonUrl": "/r/components/composer-actions.json",
|
|
46
|
+
"whenToUse": [
|
|
47
|
+
"Grouping the controls at one end of the composer toolbar."
|
|
48
|
+
],
|
|
49
|
+
"whenNotToUse": [
|
|
50
|
+
"A third cluster in the middle. There are two of them, one at each end."
|
|
51
|
+
],
|
|
52
|
+
"commonMistakes": [
|
|
53
|
+
"Putting every control into one cluster, which collapses the two-ended layout the toolbar is built around."
|
|
54
|
+
],
|
|
46
55
|
"specimens": [
|
|
47
56
|
{
|
|
48
57
|
"title": "ElementsComposer / ComposerBar / ComposerInput / ComposerToolbar",
|
|
@@ -60,6 +69,5 @@
|
|
|
60
69
|
"note": "The composer assembled from its parts, which is the only way it exists — there is no root that configures it. `ElementsComposer` positions, `ComposerBar` is the paper, and everything between the input and the send button is a facet you either compose in or leave out, so a composer with no attachments carries no attachment code. `ComposerSend` is dim while the input is empty and becomes a stop square while the model is streaming; it is the same button either way, because there is never a moment when both are wanted.",
|
|
61
70
|
"interaction": "`ComposerAttachButton` disables itself when no handler is given rather than rendering a control that does nothing. The send button is labelled by state — `Send message` or `Stop generating` — so the swap is announced and not just drawn."
|
|
62
71
|
}
|
|
63
|
-
]
|
|
64
|
-
"todo": true
|
|
72
|
+
]
|
|
65
73
|
}
|