@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
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"--cue-text-micro",
|
|
55
55
|
"--cue-text-ui"
|
|
56
56
|
],
|
|
57
|
-
"summary": "Section 3
|
|
57
|
+
"summary": "Section 3 of the configurator — geometry and type, which belong to the density axis rather than the theme.",
|
|
58
58
|
"examples": [
|
|
59
59
|
{
|
|
60
60
|
"title": "Usage",
|
|
@@ -62,9 +62,17 @@
|
|
|
62
62
|
"language": "tsx"
|
|
63
63
|
}
|
|
64
64
|
],
|
|
65
|
-
"status": "
|
|
65
|
+
"status": "stable",
|
|
66
66
|
"url": "/docs/components/shape-section",
|
|
67
67
|
"mdUrl": "/docs/components/shape-section.md",
|
|
68
68
|
"jsonUrl": "/r/components/shape-section.json",
|
|
69
|
-
"
|
|
69
|
+
"whenToUse": [
|
|
70
|
+
"Inside `ThemeConfigurator`, for radius, type and the published `--cue-density` escape hatch."
|
|
71
|
+
],
|
|
72
|
+
"whenNotToUse": [
|
|
73
|
+
"Theme colour work. That is `ColorsSection`."
|
|
74
|
+
],
|
|
75
|
+
"commonMistakes": [
|
|
76
|
+
"Expecting a multiplier to flatten the ladder. Both are crossed with the density ladder when written, so nudging the radius keeps `ultra-compact` tighter than `large`."
|
|
77
|
+
]
|
|
70
78
|
}
|
|
@@ -87,10 +87,20 @@
|
|
|
87
87
|
"language": "tsx"
|
|
88
88
|
}
|
|
89
89
|
],
|
|
90
|
-
"status": "
|
|
90
|
+
"status": "stable",
|
|
91
91
|
"url": "/docs/components/shared-conversation",
|
|
92
92
|
"mdUrl": "/docs/components/shared-conversation.md",
|
|
93
93
|
"jsonUrl": "/r/components/shared-conversation.json",
|
|
94
|
+
"whenToUse": [
|
|
95
|
+
"The landing view for a shared link: who shared it, when, and the turns as they stood."
|
|
96
|
+
],
|
|
97
|
+
"whenNotToUse": [
|
|
98
|
+
"A transcript the reader can add to in place. The turns are read only, and `onContinue` forks rather than appends."
|
|
99
|
+
],
|
|
100
|
+
"commonMistakes": [
|
|
101
|
+
"Computing `sharedAt` inside. It is pre-formatted — `2 days ago`.",
|
|
102
|
+
"Wiring `onContinue` to write back into the shared thread. It forks the transcript into the reader's own."
|
|
103
|
+
],
|
|
94
104
|
"specimens": [
|
|
95
105
|
{
|
|
96
106
|
"title": "SharedConversation",
|
|
@@ -102,6 +112,5 @@
|
|
|
102
112
|
"note": "A read-only transcript somebody sent you, with the one action a reader ever wants: pick it up yourself. The header says who shared it and when, because a published thread with no attribution is a screenshot. Turns render verbatim — this is somebody else's conversation, and it is not the place to start interpreting markdown.",
|
|
103
113
|
"interaction": "continuing forks the transcript into the reader's own thread rather than joining the original, which is why the action is offered and not implied by clicking a turn."
|
|
104
114
|
}
|
|
105
|
-
]
|
|
106
|
-
"todo": true
|
|
115
|
+
]
|
|
107
116
|
}
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"--cue-text-label",
|
|
183
183
|
"--cue-text-ui"
|
|
184
184
|
],
|
|
185
|
-
"summary": "A modal panel that slides in from an edge: an inspector, a filter drawer, a details pane
|
|
185
|
+
"summary": "A modal panel that slides in from an edge: an inspector, a filter drawer, a details pane.",
|
|
186
186
|
"examples": [
|
|
187
187
|
{
|
|
188
188
|
"title": "Usage",
|
|
@@ -190,10 +190,21 @@
|
|
|
190
190
|
"language": "tsx"
|
|
191
191
|
}
|
|
192
192
|
],
|
|
193
|
-
"status": "
|
|
193
|
+
"status": "stable",
|
|
194
194
|
"url": "/docs/components/sheet",
|
|
195
195
|
"mdUrl": "/docs/components/sheet.md",
|
|
196
196
|
"jsonUrl": "/r/components/sheet.json",
|
|
197
|
+
"whenToUse": [
|
|
198
|
+
"Content that is a *side channel* to the page rather than an interruption of it.",
|
|
199
|
+
"A pane too wide for a popover but not worth a route."
|
|
200
|
+
],
|
|
201
|
+
"whenNotToUse": [
|
|
202
|
+
"A task that must be finished before anything else. That is a `Dialog`.",
|
|
203
|
+
"Touch-first, swipe-dismissable panels. Use `Drawer`."
|
|
204
|
+
],
|
|
205
|
+
"commonMistakes": [
|
|
206
|
+
"Using it for a question. A sheet is a place to work; an interruption belongs in a dialog."
|
|
207
|
+
],
|
|
197
208
|
"specimens": [
|
|
198
209
|
{
|
|
199
210
|
"title": "Sheet",
|
|
@@ -205,6 +216,5 @@
|
|
|
205
216
|
"note": "A dialog anchored to an edge. Three sides, each with its own translate transition.",
|
|
206
217
|
"interaction": "the transition is driven by Base UI's data attributes and CSS, and switches off under prefers-reduced-motion."
|
|
207
218
|
}
|
|
208
|
-
]
|
|
209
|
-
"todo": true
|
|
219
|
+
]
|
|
210
220
|
}
|
|
@@ -41,10 +41,20 @@
|
|
|
41
41
|
],
|
|
42
42
|
"summary": "A label that sweeps while something is still happening.",
|
|
43
43
|
"examples": [],
|
|
44
|
-
"status": "
|
|
44
|
+
"status": "stable",
|
|
45
45
|
"url": "/docs/components/shimmer-label",
|
|
46
46
|
"mdUrl": "/docs/components/shimmer-label.md",
|
|
47
47
|
"jsonUrl": "/r/components/shimmer-label.json",
|
|
48
|
+
"whenToUse": [
|
|
49
|
+
"A live label that should read as still-working, with `active` turned off when it settles."
|
|
50
|
+
],
|
|
51
|
+
"whenNotToUse": [
|
|
52
|
+
"A page that does not load `@cueplusplus/ui/elements.css`. The sweep and its keyframes are declared there, and without it the label simply sits still."
|
|
53
|
+
],
|
|
54
|
+
"commonMistakes": [
|
|
55
|
+
"Treating the sweep as the signal. It also does not run under `prefers-reduced-motion`, so the words have to say what is happening on their own.",
|
|
56
|
+
"Leaving `active` alone when the work finishes. It defaults to `true`, so the label keeps sweeping until you set it false."
|
|
57
|
+
],
|
|
48
58
|
"specimens": [
|
|
49
59
|
{
|
|
50
60
|
"title": "ShimmerLabel",
|
|
@@ -56,6 +66,5 @@
|
|
|
56
66
|
"note": "A band of full-strength ink travelling through a muted label, clipped to the glyphs. It is the family's one ambient animation and it means exactly one thing: this is happening now. A reader who asked for less motion gets the muted label and no sweep at all.",
|
|
57
67
|
"interaction": "none. It is text, and it stays selectable text."
|
|
58
68
|
}
|
|
59
|
-
]
|
|
60
|
-
"todo": true
|
|
69
|
+
]
|
|
61
70
|
}
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
"--cue-text-label",
|
|
218
218
|
"--cue-text-ui"
|
|
219
219
|
],
|
|
220
|
-
"summary": "The console's navigation column: sections of items,
|
|
220
|
+
"summary": "The console's navigation column: sections of items, its own scroller, and a rail that collapses it to icons.",
|
|
221
221
|
"examples": [
|
|
222
222
|
{
|
|
223
223
|
"title": "Usage",
|
|
@@ -225,10 +225,22 @@
|
|
|
225
225
|
"language": "tsx"
|
|
226
226
|
}
|
|
227
227
|
],
|
|
228
|
-
"status": "
|
|
228
|
+
"status": "stable",
|
|
229
229
|
"url": "/docs/components/sidebar",
|
|
230
230
|
"mdUrl": "/docs/components/sidebar.md",
|
|
231
231
|
"jsonUrl": "/r/components/sidebar.json",
|
|
232
|
+
"whenToUse": [
|
|
233
|
+
"The primary navigation of a console that has more destinations than a bar can hold.",
|
|
234
|
+
"Anywhere the column must survive a narrow viewport by collapsing to a rail rather than disappearing."
|
|
235
|
+
],
|
|
236
|
+
"whenNotToUse": [
|
|
237
|
+
"The site's top level. That is a bar question; a column answers what is inside one section.",
|
|
238
|
+
"A panel of controls. Use a panel — a sidebar is navigation."
|
|
239
|
+
],
|
|
240
|
+
"commonMistakes": [
|
|
241
|
+
"Giving it the page's scroller instead of its own, so the nav scrolls away with the content.",
|
|
242
|
+
"Concatenating every section into one column, which buries the section the reader came for under the others."
|
|
243
|
+
],
|
|
232
244
|
"specimens": [
|
|
233
245
|
{
|
|
234
246
|
"title": "Sidebar",
|
|
@@ -240,6 +252,5 @@
|
|
|
240
252
|
"note": "Sections of items and a 4px rail that collapses the column to icons. The label goes `sr-only` while collapsed rather than being unmounted, because an icon-only button with no name is a WCAG 4.1.2 failure.",
|
|
241
253
|
"interaction": "the rail is invisible until hovered, and is a real button with an `aria-expanded` state."
|
|
242
254
|
}
|
|
243
|
-
]
|
|
244
|
-
"todo": true
|
|
255
|
+
]
|
|
245
256
|
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"--cue-ok",
|
|
27
27
|
"--cue-warn"
|
|
28
28
|
],
|
|
29
|
-
"summary": "A wire between two nodes, drawn as three paths.",
|
|
29
|
+
"summary": "A wire between two nodes, drawn as three paths: the wire, the hit path, and the pulse.",
|
|
30
30
|
"examples": [
|
|
31
31
|
{
|
|
32
32
|
"title": "Usage",
|
|
@@ -34,10 +34,20 @@
|
|
|
34
34
|
"language": "tsx"
|
|
35
35
|
}
|
|
36
36
|
],
|
|
37
|
-
"status": "
|
|
37
|
+
"status": "stable",
|
|
38
38
|
"url": "/docs/components/signal-edge",
|
|
39
39
|
"mdUrl": "/docs/components/signal-edge.md",
|
|
40
40
|
"jsonUrl": "/r/components/signal-edge.json",
|
|
41
|
+
"whenToUse": [
|
|
42
|
+
"Any edge on a signal graph.",
|
|
43
|
+
"Live signal: the pulse overlay draws only while `data.live`."
|
|
44
|
+
],
|
|
45
|
+
"whenNotToUse": [
|
|
46
|
+
"A plain connector with no state. React Flow's own edge is enough."
|
|
47
|
+
],
|
|
48
|
+
"commonMistakes": [
|
|
49
|
+
"Dropping the hit path to save a path. It is sixteen invisible pixels because nobody can click 1.6px."
|
|
50
|
+
],
|
|
41
51
|
"specimens": [
|
|
42
52
|
{
|
|
43
53
|
"title": "useFlowTheme / FlowControls / FlowBackground / SignalEdge",
|
|
@@ -51,6 +61,5 @@
|
|
|
51
61
|
"note": "The hook returns the `--xy-*` token map plus stable `edgeTypes` and `defaultEdgeOptions` identities. Every part also publishes the map on its own root, so the group is correct before flow.css is imported and correct again after.",
|
|
52
62
|
"interaction": "the controls capsule is an overlay surface; a live wire animates its dash overlay and stops under prefers-reduced-motion."
|
|
53
63
|
}
|
|
54
|
-
]
|
|
55
|
-
"todo": true
|
|
64
|
+
]
|
|
56
65
|
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"--cue-radius-control",
|
|
19
19
|
"--cue-surface-2"
|
|
20
20
|
],
|
|
21
|
-
"summary": "A loading placeholder block.",
|
|
21
|
+
"summary": "A loading placeholder block. It carries no intrinsic size — give it the shape of what is arriving.",
|
|
22
22
|
"examples": [
|
|
23
23
|
{
|
|
24
24
|
"title": "Usage",
|
|
@@ -26,10 +26,23 @@
|
|
|
26
26
|
"language": "tsx"
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
|
-
"status": "
|
|
29
|
+
"status": "stable",
|
|
30
30
|
"url": "/docs/components/skeleton",
|
|
31
31
|
"mdUrl": "/docs/components/skeleton.md",
|
|
32
32
|
"jsonUrl": "/r/components/skeleton.json",
|
|
33
|
+
"whenToUse": [
|
|
34
|
+
"Content whose layout you already know, so the page does not jump when it lands: a row of cells, an avatar and two lines of text.",
|
|
35
|
+
"Waits long enough to notice but short enough that a spinner would feel heavier than the content itself."
|
|
36
|
+
],
|
|
37
|
+
"whenNotToUse": [
|
|
38
|
+
"An indeterminate wait with no known shape. Use `Spinner`.",
|
|
39
|
+
"An empty result. Nothing is arriving, so say so — a skeleton promises content that never comes."
|
|
40
|
+
],
|
|
41
|
+
"commonMistakes": [
|
|
42
|
+
"Rendering one with no `className`. It has no size of its own and collapses to nothing.",
|
|
43
|
+
"Sizing it differently from the real content, which turns the skeleton into the layout shift it exists to prevent.",
|
|
44
|
+
"Adding your own `aria-label`. It is `aria-hidden` on purpose — the surrounding live region should say 'loading', not a fleet of empty boxes."
|
|
45
|
+
],
|
|
33
46
|
"specimens": [
|
|
34
47
|
{
|
|
35
48
|
"title": "Skeleton",
|
|
@@ -41,6 +54,5 @@
|
|
|
41
54
|
"note": "The shape of content that has not arrived. Sized by the caller, because only the caller knows the shape.",
|
|
42
55
|
"interaction": "the shimmer stills under prefers-reduced-motion."
|
|
43
56
|
}
|
|
44
|
-
]
|
|
45
|
-
"todo": true
|
|
57
|
+
]
|
|
46
58
|
}
|
|
@@ -17,10 +17,20 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "A skill: the thing every other container in this set holds.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/skill-icon",
|
|
22
22
|
"mdUrl": "/docs/components/skill-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/skill-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"Marking a capability an agent gains — in a catalogue row, a stack, a search result."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"The file a skill travels in. That is an implementation detail, not the thing.",
|
|
29
|
+
"A container of skills. Use `FolderIcon`, `StackIcon` or `CatalogueIcon`."
|
|
30
|
+
],
|
|
31
|
+
"commonMistakes": [
|
|
32
|
+
"Substituting a page or document glyph, which makes the catalogue look like a folder of documents rather than a list of things an agent can now do."
|
|
33
|
+
],
|
|
24
34
|
"specimens": [
|
|
25
35
|
{
|
|
26
36
|
"title": "The container icon set",
|
|
@@ -41,6 +51,5 @@
|
|
|
41
51
|
"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
52
|
"interaction": "none. They are decorative by default: aria-hidden, announced by nothing, because the row they mark already carries its name."
|
|
43
53
|
}
|
|
44
|
-
]
|
|
45
|
-
"todo": true
|
|
54
|
+
]
|
|
46
55
|
}
|
|
@@ -86,10 +86,22 @@
|
|
|
86
86
|
"language": "tsx"
|
|
87
87
|
}
|
|
88
88
|
],
|
|
89
|
-
"status": "
|
|
89
|
+
"status": "stable",
|
|
90
90
|
"url": "/docs/components/slider",
|
|
91
91
|
"mdUrl": "/docs/components/slider.md",
|
|
92
92
|
"jsonUrl": "/r/components/slider.json",
|
|
93
|
+
"whenToUse": [
|
|
94
|
+
"A value judged by feel against its range — intensity, a fade time, a threshold.",
|
|
95
|
+
"Anywhere the shape of the range matters as much as the number."
|
|
96
|
+
],
|
|
97
|
+
"whenNotToUse": [
|
|
98
|
+
"A number that must be exact. Use `NumberField`; a 2px rail is a readout first and a grab target second.",
|
|
99
|
+
"A value with no meaningful minimum or maximum."
|
|
100
|
+
],
|
|
101
|
+
"commonMistakes": [
|
|
102
|
+
"Writing every `onValueChange` into undo history. `onCommit` is the important half of this API — it is what lets a whole drag coalesce into one undo entry instead of hundreds.",
|
|
103
|
+
"Adding a separate number readout instead of `showValue`."
|
|
104
|
+
],
|
|
93
105
|
"specimens": [
|
|
94
106
|
{
|
|
95
107
|
"title": "Slider / RangeSlider",
|
|
@@ -101,6 +113,5 @@
|
|
|
101
113
|
"note": "One thumb or two. `onCommit` fires once at the end of a drag, which is the undo-coalescing contract the consoles need.",
|
|
102
114
|
"interaction": "the thumb grows while dragging; arrow keys step, Page Up and Page Down jump."
|
|
103
115
|
}
|
|
104
|
-
]
|
|
105
|
-
"todo": true
|
|
116
|
+
]
|
|
106
117
|
}
|
|
@@ -77,10 +77,20 @@
|
|
|
77
77
|
"language": "tsx"
|
|
78
78
|
}
|
|
79
79
|
],
|
|
80
|
-
"status": "
|
|
80
|
+
"status": "stable",
|
|
81
81
|
"url": "/docs/components/sources",
|
|
82
82
|
"mdUrl": "/docs/components/sources.md",
|
|
83
83
|
"jsonUrl": "/r/components/sources.json",
|
|
84
|
+
"whenToUse": [
|
|
85
|
+
"Citations under an answer, out of the way until the reader wants them."
|
|
86
|
+
],
|
|
87
|
+
"whenNotToUse": [
|
|
88
|
+
"A component expected to own its own disclosure. `open` and `onOpenChange` are both required."
|
|
89
|
+
],
|
|
90
|
+
"commonMistakes": [
|
|
91
|
+
"Passing `open` and no `onOpenChange`, or the reverse. Both are required and the pill does not toggle itself.",
|
|
92
|
+
"Rendering the source cards separately and using this only for the pill. The cards are the expanded state of the same component."
|
|
93
|
+
],
|
|
84
94
|
"specimens": [
|
|
85
95
|
{
|
|
86
96
|
"title": "Sources",
|
|
@@ -92,6 +102,5 @@
|
|
|
92
102
|
"note": "Citations folded into a pill until somebody wants them. Collapsed it is a count — four sources, no argument; open it is a scannable grid of cards, one per site, each lifting a pixel under the pointer. The count is the whole affordance: it says provenance exists without spending a paragraph on it.",
|
|
93
103
|
"interaction": "the pill is the trigger and takes cue's focus ring; the chevron turns with the panel, which animates its own height through Base UI rather than a max-height guess."
|
|
94
104
|
}
|
|
95
|
-
]
|
|
96
|
-
"todo": true
|
|
105
|
+
]
|
|
97
106
|
}
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"--cue-danger",
|
|
62
62
|
"--cue-warn"
|
|
63
63
|
],
|
|
64
|
-
"summary": "A tiny unlabelled trace:
|
|
64
|
+
"summary": "A tiny unlabelled trace: 'is this climbing, or did it just reset?'",
|
|
65
65
|
"examples": [
|
|
66
66
|
{
|
|
67
67
|
"title": "Usage",
|
|
@@ -69,10 +69,21 @@
|
|
|
69
69
|
"language": "tsx"
|
|
70
70
|
}
|
|
71
71
|
],
|
|
72
|
-
"status": "
|
|
72
|
+
"status": "stable",
|
|
73
73
|
"url": "/docs/components/sparkline",
|
|
74
74
|
"mdUrl": "/docs/components/sparkline.md",
|
|
75
75
|
"jsonUrl": "/r/components/sparkline.json",
|
|
76
|
+
"whenToUse": [
|
|
77
|
+
"Direction and shape beside a number that already carries the magnitude.",
|
|
78
|
+
"A dense row or tile where a real chart would not fit and would not be read."
|
|
79
|
+
],
|
|
80
|
+
"whenNotToUse": [
|
|
81
|
+
"A value the reader must quantify. It answers nothing but shape — the numbers belong to the `Stat` or the row above it.",
|
|
82
|
+
"A series with a meaningful ceiling other than 100."
|
|
83
|
+
],
|
|
84
|
+
"commonMistakes": [
|
|
85
|
+
"Auto-scaling it to its own range. The scale is always 0–100 on purpose: a trace scaled to itself makes a flat 3% look identical to a flat 95%, which is the exact misreading a sparkline exists to prevent."
|
|
86
|
+
],
|
|
76
87
|
"specimens": [
|
|
77
88
|
{
|
|
78
89
|
"title": "Sparkline",
|
|
@@ -84,6 +95,5 @@
|
|
|
84
95
|
"note": "A trend at row height, drawn as one path with no axes and no tooltip. When it needs either, reach for UsageChart.",
|
|
85
96
|
"interaction": "none."
|
|
86
97
|
}
|
|
87
|
-
]
|
|
88
|
-
"todo": true
|
|
98
|
+
]
|
|
89
99
|
}
|
|
@@ -46,10 +46,19 @@
|
|
|
46
46
|
"language": "tsx"
|
|
47
47
|
}
|
|
48
48
|
],
|
|
49
|
-
"status": "
|
|
49
|
+
"status": "stable",
|
|
50
50
|
"url": "/docs/components/speaker-identity",
|
|
51
51
|
"mdUrl": "/docs/components/speaker-identity.md",
|
|
52
52
|
"jsonUrl": "/r/components/speaker-identity.json",
|
|
53
|
+
"whenToUse": [
|
|
54
|
+
"A transcript with more than two participants — several models, several agents — where each turn has to name who produced it."
|
|
55
|
+
],
|
|
56
|
+
"whenNotToUse": [
|
|
57
|
+
"A plain user-and-assistant exchange, where naming every turn is noise."
|
|
58
|
+
],
|
|
59
|
+
"commonMistakes": [
|
|
60
|
+
"Passing turns out of order. The prop is turns in order, each naming its own speaker, and the component derives nothing else."
|
|
61
|
+
],
|
|
53
62
|
"specimens": [
|
|
54
63
|
{
|
|
55
64
|
"title": "SpeakerIdentity",
|
|
@@ -61,6 +70,5 @@
|
|
|
61
70
|
"note": "Who is talking, once a thread holds more than a user and one model. Four kinds — you, the agent, a subagent it delegated to, and a tool that answered — with the subagent's badge rounded so a delegated turn reads as delegated at a glance. `detail` is the second fact the name needs: which model spoke, or how long the tool took.",
|
|
62
71
|
"interaction": "none. It is a transcript, not a control; the badges are the only thing distinguishing four voices that would otherwise be four paragraphs."
|
|
63
72
|
}
|
|
64
|
-
]
|
|
65
|
-
"todo": true
|
|
73
|
+
]
|
|
66
74
|
}
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"--cue-text-body",
|
|
66
66
|
"--cue-text-ui"
|
|
67
67
|
],
|
|
68
|
-
"summary": "The most common structured answer after a table: one object,
|
|
68
|
+
"summary": "The most common structured answer after a table: one object, labelled.",
|
|
69
69
|
"examples": [
|
|
70
70
|
{
|
|
71
71
|
"title": "Usage",
|
|
@@ -73,10 +73,20 @@
|
|
|
73
73
|
"language": "tsx"
|
|
74
74
|
}
|
|
75
75
|
],
|
|
76
|
-
"status": "
|
|
76
|
+
"status": "stable",
|
|
77
77
|
"url": "/docs/components/spec-sheet",
|
|
78
78
|
"mdUrl": "/docs/components/spec-sheet.md",
|
|
79
79
|
"jsonUrl": "/r/components/spec-sheet.json",
|
|
80
|
+
"whenToUse": [
|
|
81
|
+
"One object's attributes as an answer — a model, a SKU, a version — with `subtitle` carrying the identifier."
|
|
82
|
+
],
|
|
83
|
+
"whenNotToUse": [
|
|
84
|
+
"Several objects compared side by side. This is one object, as label and value pairs."
|
|
85
|
+
],
|
|
86
|
+
"commonMistakes": [
|
|
87
|
+
"Passing raw numbers and expecting formatting. Values are pre-formatted and right-aligned on tabular figures.",
|
|
88
|
+
"Slicing `rows` to what has landed. `visibleCount` is that, and `rows` is the whole sheet."
|
|
89
|
+
],
|
|
80
90
|
"specimens": [
|
|
81
91
|
{
|
|
82
92
|
"title": "SpecSheet",
|
|
@@ -88,6 +98,5 @@
|
|
|
88
98
|
"note": "One object, labelled — the commonest structured answer after a table. Labels sit in mono on the leading edge and values in tabular figures on the trailing one, so a column of numbers lines up even though nothing here is a table. `emphasis` promotes the one row that answers the question.",
|
|
89
99
|
"interaction": "none. `visibleCount` is what makes it arrive a row at a time instead of appearing whole."
|
|
90
100
|
}
|
|
91
|
-
]
|
|
92
|
-
"todo": true
|
|
101
|
+
]
|
|
93
102
|
}
|
|
@@ -127,10 +127,19 @@
|
|
|
127
127
|
"language": "tsx"
|
|
128
128
|
}
|
|
129
129
|
],
|
|
130
|
-
"status": "
|
|
130
|
+
"status": "stable",
|
|
131
131
|
"url": "/docs/components/spectrum-visualizer",
|
|
132
132
|
"mdUrl": "/docs/components/spectrum-visualizer.md",
|
|
133
133
|
"jsonUrl": "/r/components/spectrum-visualizer.json",
|
|
134
|
+
"whenToUse": [
|
|
135
|
+
"Any live audio analyser."
|
|
136
|
+
],
|
|
137
|
+
"whenNotToUse": [
|
|
138
|
+
"A waveform or a level meter — a spectrum answers frequency, not amplitude over time."
|
|
139
|
+
],
|
|
140
|
+
"commonMistakes": [
|
|
141
|
+
"Passing a colour per band. Colours are deliberately off the caller's hands: the original API asked for one and defaulted to `#00FF00` when it did not get one, which is how an audio tool ends up with two different greens for the same band in two different panels."
|
|
142
|
+
],
|
|
134
143
|
"specimens": [
|
|
135
144
|
{
|
|
136
145
|
"title": "SpectrumVisualizer",
|
|
@@ -142,6 +151,5 @@
|
|
|
142
151
|
"note": "Bars or line, with band colours taken from the /charts ramps. Those are literals on purpose: a listener who has learnt `bass is red` must not relearn it because the console switched accent.",
|
|
143
152
|
"interaction": "a selection dims the bands outside it rather than hiding them; thresholds are dashed rules per band."
|
|
144
153
|
}
|
|
145
|
-
]
|
|
146
|
-
"todo": true
|
|
154
|
+
]
|
|
147
155
|
}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"--cue-icon-md",
|
|
44
44
|
"--cue-icon-sm"
|
|
45
45
|
],
|
|
46
|
-
"summary": "An indeterminate progress ring, drawn in CSS only — no SVG, no animation library
|
|
46
|
+
"summary": "An indeterminate progress ring, drawn in CSS only — one element, no SVG, no animation library.",
|
|
47
47
|
"examples": [
|
|
48
48
|
{
|
|
49
49
|
"title": "Usage",
|
|
@@ -51,10 +51,23 @@
|
|
|
51
51
|
"language": "tsx"
|
|
52
52
|
}
|
|
53
53
|
],
|
|
54
|
-
"status": "
|
|
54
|
+
"status": "stable",
|
|
55
55
|
"url": "/docs/components/spinner",
|
|
56
56
|
"mdUrl": "/docs/components/spinner.md",
|
|
57
57
|
"jsonUrl": "/r/components/spinner.json",
|
|
58
|
+
"whenToUse": [
|
|
59
|
+
"A wait whose length and shape you cannot predict: a request in flight, a job whose progress is not reported.",
|
|
60
|
+
"Inside another control. It inks with `currentColor`, so a spinner in a `danger` button is red without being told."
|
|
61
|
+
],
|
|
62
|
+
"whenNotToUse": [
|
|
63
|
+
"A wait with known structure. Use `Skeleton`, which holds the layout as well as the attention.",
|
|
64
|
+
"Progress you can actually measure. A ring that spins forever tells a reader less than a bar that moves."
|
|
65
|
+
],
|
|
66
|
+
"commonMistakes": [
|
|
67
|
+
"Colouring it directly instead of letting it inherit. `currentColor` is the whole reason it works in every context.",
|
|
68
|
+
"Overriding `label` with something the surrounding live region already says, which announces the wait twice.",
|
|
69
|
+
"Assuming reduced motion hides it. The rotation stops and the ring stays as a static arc — the wait is still visible."
|
|
70
|
+
],
|
|
58
71
|
"specimens": [
|
|
59
72
|
{
|
|
60
73
|
"title": "Spinner",
|
|
@@ -66,6 +79,5 @@
|
|
|
66
79
|
"note": "Two sizes. Carries a visually hidden label so a screen reader is told the wait, not left with a spinning div.",
|
|
67
80
|
"interaction": "stills under prefers-reduced-motion."
|
|
68
81
|
}
|
|
69
|
-
]
|
|
70
|
-
"todo": true
|
|
82
|
+
]
|
|
71
83
|
}
|
|
@@ -17,10 +17,20 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "One person's stack: the set of things they have actually installed.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/stack-icon",
|
|
22
22
|
"mdUrl": "/docs/components/stack-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/stack-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"An accumulation — where the order things went in is part of what it is."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"A container things are filed into. Use `FolderIcon`.",
|
|
29
|
+
"Every stack at once. Use `StacksMatrixIcon`."
|
|
30
|
+
],
|
|
31
|
+
"commonMistakes": [
|
|
32
|
+
"Drawing it as a box. The plates seen edge-on are the layers idiom, and a stack is an accumulation rather than a container."
|
|
33
|
+
],
|
|
24
34
|
"specimens": [
|
|
25
35
|
{
|
|
26
36
|
"title": "The container icon set",
|
|
@@ -41,6 +51,5 @@
|
|
|
41
51
|
"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
52
|
"interaction": "none. They are decorative by default: aria-hidden, announced by nothing, because the row they mark already carries its name."
|
|
43
53
|
}
|
|
44
|
-
]
|
|
45
|
-
"todo": true
|
|
54
|
+
]
|
|
46
55
|
}
|
|
@@ -123,10 +123,22 @@
|
|
|
123
123
|
"language": "tsx"
|
|
124
124
|
}
|
|
125
125
|
],
|
|
126
|
-
"status": "
|
|
126
|
+
"status": "stable",
|
|
127
127
|
"url": "/docs/components/stack",
|
|
128
128
|
"mdUrl": "/docs/components/stack.md",
|
|
129
129
|
"jsonUrl": "/r/components/stack.json",
|
|
130
|
+
"whenToUse": [
|
|
131
|
+
"Any run of siblings that needs consistent spacing — which is almost every layout in the system.",
|
|
132
|
+
"Anywhere spacing should track density: `gap={4}` is 8px at normal and 6px at ultra-compact without touching the markup."
|
|
133
|
+
],
|
|
134
|
+
"whenNotToUse": [
|
|
135
|
+
"Two-dimensional layout. Use `Grid`.",
|
|
136
|
+
"A single child. The wrapper buys nothing."
|
|
137
|
+
],
|
|
138
|
+
"commonMistakes": [
|
|
139
|
+
"Writing `flex gap-2` by hand instead. That is the exact opt-out this exists to prevent — it pins the spacing to a pixel value and stops tracking the density ladder.",
|
|
140
|
+
"Reaching for `gap` values outside the ladder, which reintroduces the per-call-site guess."
|
|
141
|
+
],
|
|
130
142
|
"specimens": [
|
|
131
143
|
{
|
|
132
144
|
"title": "Stack",
|
|
@@ -138,6 +150,5 @@
|
|
|
138
150
|
"note": "Flex with the gap taken from a rung of the density ladder, never a length. That is what makes a layout tighten with the rest of the console.",
|
|
139
151
|
"interaction": "none."
|
|
140
152
|
}
|
|
141
|
-
]
|
|
142
|
-
"todo": true
|
|
153
|
+
]
|
|
143
154
|
}
|
|
@@ -17,10 +17,19 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "Every stack at once, one column each: who has what, read across.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/stacks-matrix-icon",
|
|
22
22
|
"mdUrl": "/docs/components/stacks-matrix-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/stacks-matrix-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"A two-axis question — 'which of these does that person not have'."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"One stack. Use `StackIcon`."
|
|
29
|
+
],
|
|
30
|
+
"commonMistakes": [
|
|
31
|
+
"Drawing more plates instead. The head rule and the name column are what make it a matrix rather than a grid, and the question it answers has two axes."
|
|
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
|
}
|
|
@@ -91,10 +91,22 @@
|
|
|
91
91
|
"language": "tsx"
|
|
92
92
|
}
|
|
93
93
|
],
|
|
94
|
-
"status": "
|
|
94
|
+
"status": "stable",
|
|
95
95
|
"url": "/docs/components/stat",
|
|
96
96
|
"mdUrl": "/docs/components/stat.md",
|
|
97
97
|
"jsonUrl": "/r/components/stat.json",
|
|
98
|
+
"whenToUse": [
|
|
99
|
+
"A reading that deserves its own tile, in a row that scans as a list of captions with values underneath.",
|
|
100
|
+
"Numbers that change in place — the value is `tabular-nums` mono, so a ticking figure does not shuffle the layout."
|
|
101
|
+
],
|
|
102
|
+
"whenNotToUse": [
|
|
103
|
+
"A table of numbers. Use a data table; a wall of tiles is harder to compare than a column.",
|
|
104
|
+
"A trend. Pair it with `Sparkline`, which answers direction, not magnitude."
|
|
105
|
+
],
|
|
106
|
+
"commonMistakes": [
|
|
107
|
+
"Tinting the caption as well as the value. Only the value takes the tone — tinting both turns a red tile into an alarm rather than a reading.",
|
|
108
|
+
"Leading with the number. It reads label-first on purpose."
|
|
109
|
+
],
|
|
98
110
|
"specimens": [
|
|
99
111
|
{
|
|
100
112
|
"title": "Stat",
|
|
@@ -106,6 +118,5 @@
|
|
|
106
118
|
"note": "A label, a figure and a detail line. Figures are mono `tabular-nums`, so a changing digit never shifts the column.",
|
|
107
119
|
"interaction": "none."
|
|
108
120
|
}
|
|
109
|
-
]
|
|
110
|
-
"todo": true
|
|
121
|
+
]
|
|
111
122
|
}
|