@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
|
@@ -88,10 +88,21 @@
|
|
|
88
88
|
"language": "tsx"
|
|
89
89
|
}
|
|
90
90
|
],
|
|
91
|
-
"status": "
|
|
91
|
+
"status": "stable",
|
|
92
92
|
"url": "/docs/components/score-breakdown",
|
|
93
93
|
"mdUrl": "/docs/components/score-breakdown.md",
|
|
94
94
|
"jsonUrl": "/r/components/score-breakdown.json",
|
|
95
|
+
"whenToUse": [
|
|
96
|
+
"A judged result where the reader should be able to argue with the number, because the criteria that produced it are on screen."
|
|
97
|
+
],
|
|
98
|
+
"whenNotToUse": [
|
|
99
|
+
"A bare score. Without criteria there is no arithmetic to show, which is the whole of this component."
|
|
100
|
+
],
|
|
101
|
+
"commonMistakes": [
|
|
102
|
+
"Scaling each criterion to its own maximum. `outOf` is the maximum for the headline and for every criterion bar.",
|
|
103
|
+
"Tinting the verdict yourself. Its tint follows `total` over `outOf`.",
|
|
104
|
+
"Slicing `criteria` to those scored so far. `visibleCount` is that, and `criteria` is the full set."
|
|
105
|
+
],
|
|
95
106
|
"specimens": [
|
|
96
107
|
{
|
|
97
108
|
"title": "ScoreBreakdown",
|
|
@@ -103,6 +114,5 @@
|
|
|
103
114
|
"note": "A verdict with its working shown. The number leads, the badge names it in words, and every criterion carries its weight and the note that explains a low mark — which is what makes a 7.8 arguable instead of oracular. The badge's three bands are the element's own thresholds at three quarters and a half.",
|
|
104
115
|
"interaction": "none. The bars animate their width, and hold still for a reader who asked for less motion."
|
|
105
116
|
}
|
|
106
|
-
]
|
|
107
|
-
"todo": true
|
|
117
|
+
]
|
|
108
118
|
}
|
|
@@ -64,10 +64,20 @@
|
|
|
64
64
|
"language": "tsx"
|
|
65
65
|
}
|
|
66
66
|
],
|
|
67
|
-
"status": "
|
|
67
|
+
"status": "stable",
|
|
68
68
|
"url": "/docs/components/scroll-anchor",
|
|
69
69
|
"mdUrl": "/docs/components/scroll-anchor.md",
|
|
70
70
|
"jsonUrl": "/r/components/scroll-anchor.json",
|
|
71
|
+
"whenToUse": [
|
|
72
|
+
"A transcript viewport where messages arrive while the reader may have scrolled up — it pins only when they are already at the bottom."
|
|
73
|
+
],
|
|
74
|
+
"whenNotToUse": [
|
|
75
|
+
"A scene you need to rewind through a prop. Replay happens by remounting; `paused` only freezes it where it is."
|
|
76
|
+
],
|
|
77
|
+
"commonMistakes": [
|
|
78
|
+
"Expecting `paused` to restart the scene. It freezes; the way back to the start is a remount.",
|
|
79
|
+
"Wiring `onSettled` as a per-message callback. It fires once every message has landed and the viewport is pinned."
|
|
80
|
+
],
|
|
71
81
|
"specimens": [
|
|
72
82
|
{
|
|
73
83
|
"title": "ScrollAnchor",
|
|
@@ -79,6 +89,5 @@
|
|
|
79
89
|
"note": "The rule every transcript needs and few get: streaming may only move the viewport if you were already at the bottom of it. Scroll up to read something and the answer keeps arriving behind you; a pill counts what landed and takes you back down. It is the family's one element that runs a clock of its own — the turns append on a timer so the behaviour can be seen standing still.",
|
|
80
90
|
"interaction": "the pill is a button. Both scrolls are CSS `scroll-smooth`, not `scrollTo({ behavior })`, because only the declarative one can be withdrawn: `motion-reduce:scroll-auto` makes them instant, and the timer stops outright, painting the finished transcript in one go."
|
|
81
91
|
}
|
|
82
|
-
]
|
|
83
|
-
"todo": true
|
|
92
|
+
]
|
|
84
93
|
}
|
|
@@ -94,10 +94,21 @@
|
|
|
94
94
|
"language": "tsx"
|
|
95
95
|
}
|
|
96
96
|
],
|
|
97
|
-
"status": "
|
|
97
|
+
"status": "stable",
|
|
98
98
|
"url": "/docs/components/scroll-area",
|
|
99
99
|
"mdUrl": "/docs/components/scroll-area.md",
|
|
100
100
|
"jsonUrl": "/r/components/scroll-area.json",
|
|
101
|
+
"whenToUse": [
|
|
102
|
+
"A pane whose scrollbar should match the console rather than the OS.",
|
|
103
|
+
"Anywhere native scrolling must be kept — it re-skins the bar only, so momentum, keyboard and trackpad behaviour stay the browser's."
|
|
104
|
+
],
|
|
105
|
+
"whenNotToUse": [
|
|
106
|
+
"The document itself. The page's own scroller is not this component's job."
|
|
107
|
+
],
|
|
108
|
+
"commonMistakes": [
|
|
109
|
+
"Forgetting to bound its height. The frame needs `h-full` inside a flex parent or an explicit height — without one there is nothing to scroll and the component looks broken.",
|
|
110
|
+
"Reimplementing scrolling with transforms, which throws away exactly the native behaviour this keeps."
|
|
111
|
+
],
|
|
101
112
|
"specimens": [
|
|
102
113
|
{
|
|
103
114
|
"title": "ScrollArea",
|
|
@@ -109,6 +120,5 @@
|
|
|
109
120
|
"note": "A themed scroller in either axis, so an overflowing panel does not fall back to the platform bar.",
|
|
110
121
|
"interaction": "the thumb fades in on hover over the area and stays while dragging."
|
|
111
122
|
}
|
|
112
|
-
]
|
|
113
|
-
"todo": true
|
|
123
|
+
]
|
|
114
124
|
}
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"--cue-surface-2",
|
|
64
64
|
"--cue-text-ui"
|
|
65
65
|
],
|
|
66
|
-
"summary": "A
|
|
66
|
+
"summary": "A tabs list that scrolls when its tabs do not fit, and says so.",
|
|
67
67
|
"examples": [
|
|
68
68
|
{
|
|
69
69
|
"title": "Usage",
|
|
@@ -71,10 +71,21 @@
|
|
|
71
71
|
"language": "tsx"
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
|
-
"status": "
|
|
74
|
+
"status": "stable",
|
|
75
75
|
"url": "/docs/components/scrollable-tabs-list",
|
|
76
76
|
"mdUrl": "/docs/components/scrollable-tabs-list.md",
|
|
77
77
|
"jsonUrl": "/r/components/scrollable-tabs-list.json",
|
|
78
|
+
"whenToUse": [
|
|
79
|
+
"Any tab strip whose count can outgrow its container.",
|
|
80
|
+
"Anywhere clipping would read as a layout bug: a plain flex row renders \"SETTINGS\" as \"INGS\"."
|
|
81
|
+
],
|
|
82
|
+
"whenNotToUse": [
|
|
83
|
+
"A fixed, small set of tabs that always fits. `Tabs.List` is simpler."
|
|
84
|
+
],
|
|
85
|
+
"commonMistakes": [
|
|
86
|
+
"Keeping `Tabs.List` because it looks fine today. The failure only appears at the tab count or the viewport you did not test.",
|
|
87
|
+
"Dropping the chevrons and keeping only the mask. The affordance is both halves — the mask says there is more, the buttons are how a pointer user gets there."
|
|
88
|
+
],
|
|
78
89
|
"specimens": [
|
|
79
90
|
{
|
|
80
91
|
"title": "ScrollableTabsList",
|
|
@@ -86,6 +97,5 @@
|
|
|
86
97
|
"note": "The same list when it does not fit: a mask fade at each overflowing edge, plus chevron buttons.",
|
|
87
98
|
"interaction": "the chevrons appear only on the side that actually overflows."
|
|
88
99
|
}
|
|
89
|
-
]
|
|
90
|
-
"todo": true
|
|
100
|
+
]
|
|
91
101
|
}
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"--cue-surface-2",
|
|
63
63
|
"--cue-surface-3"
|
|
64
64
|
],
|
|
65
|
-
"summary": "One filled cell of a
|
|
65
|
+
"summary": "One filled cell of a `SeamGrid` — or of a `SeamList`.",
|
|
66
66
|
"examples": [
|
|
67
67
|
{
|
|
68
68
|
"title": "Usage",
|
|
@@ -70,10 +70,20 @@
|
|
|
70
70
|
"language": "tsx"
|
|
71
71
|
}
|
|
72
72
|
],
|
|
73
|
-
"status": "
|
|
73
|
+
"status": "stable",
|
|
74
74
|
"url": "/docs/components/seam-cell",
|
|
75
75
|
"mdUrl": "/docs/components/seam-cell.md",
|
|
76
76
|
"jsonUrl": "/r/components/seam-cell.json",
|
|
77
|
+
"whenToUse": [
|
|
78
|
+
"Every child of a seam container.",
|
|
79
|
+
"Anywhere the cell needs its own ground, an interactive state, or to sit flush against the container edge."
|
|
80
|
+
],
|
|
81
|
+
"whenNotToUse": [
|
|
82
|
+
"Outside a seam container, where the fill has no seam to protect."
|
|
83
|
+
],
|
|
84
|
+
"commonMistakes": [
|
|
85
|
+
"Making the fill transparent. The fill is the load-bearing part: without it the container's border colour shows through everywhere and the seam stops being a hairline."
|
|
86
|
+
],
|
|
77
87
|
"specimens": [
|
|
78
88
|
{
|
|
79
89
|
"title": "SeamGrid / SeamCell",
|
|
@@ -86,6 +96,5 @@
|
|
|
86
96
|
"note": "The 1px-gap hairline idiom as a two-dimensional component: the grid's own background shows through the gaps.",
|
|
87
97
|
"interaction": "`interactive` cells take a hover ground and a focus ring."
|
|
88
98
|
}
|
|
89
|
-
]
|
|
90
|
-
"todo": true
|
|
99
|
+
]
|
|
91
100
|
}
|
|
@@ -63,10 +63,22 @@
|
|
|
63
63
|
"language": "tsx"
|
|
64
64
|
}
|
|
65
65
|
],
|
|
66
|
-
"status": "
|
|
66
|
+
"status": "stable",
|
|
67
67
|
"url": "/docs/components/seam-grid",
|
|
68
68
|
"mdUrl": "/docs/components/seam-grid.md",
|
|
69
69
|
"jsonUrl": "/r/components/seam-grid.json",
|
|
70
|
+
"whenToUse": [
|
|
71
|
+
"A grid of cells that must be divided by a perfect hairline at every corner.",
|
|
72
|
+
"Anywhere borders would double up or disagree — the gap is 1px over the border colour, so there is nothing to double."
|
|
73
|
+
],
|
|
74
|
+
"whenNotToUse": [
|
|
75
|
+
"A plain grid with spacing. Use `Grid`.",
|
|
76
|
+
"A one-dimensional run. Use `SeamList`."
|
|
77
|
+
],
|
|
78
|
+
"commonMistakes": [
|
|
79
|
+
"Using cells that do not paint their own ground. Pair with `SeamCell` — an unfilled cell lets the container's border colour through everywhere, not just at the gap, and the seam disappears into a solid block.",
|
|
80
|
+
"Inlining the idiom by hand. It was inlined at eighteen call sites before it was a component."
|
|
81
|
+
],
|
|
70
82
|
"specimens": [
|
|
71
83
|
{
|
|
72
84
|
"title": "SeamGrid / SeamCell",
|
|
@@ -79,6 +91,5 @@
|
|
|
79
91
|
"note": "The 1px-gap hairline idiom as a two-dimensional component: the grid's own background shows through the gaps.",
|
|
80
92
|
"interaction": "`interactive` cells take a hover ground and a focus ring."
|
|
81
93
|
}
|
|
82
|
-
]
|
|
83
|
-
"todo": true
|
|
94
|
+
]
|
|
84
95
|
}
|
|
@@ -35,10 +35,21 @@
|
|
|
35
35
|
"language": "tsx"
|
|
36
36
|
}
|
|
37
37
|
],
|
|
38
|
-
"status": "
|
|
38
|
+
"status": "stable",
|
|
39
39
|
"url": "/docs/components/seam-list",
|
|
40
40
|
"mdUrl": "/docs/components/seam-list.md",
|
|
41
41
|
"jsonUrl": "/r/components/seam-list.json",
|
|
42
|
+
"whenToUse": [
|
|
43
|
+
"Rows that are cards in their own right, where a border would double up with the row's own.",
|
|
44
|
+
"Anywhere a hairline must stay exactly one pixel and must not disagree with a rounded corner."
|
|
45
|
+
],
|
|
46
|
+
"whenNotToUse": [
|
|
47
|
+
"A plain list of text. A `Stack` with a `gap` is simpler and says the same thing."
|
|
48
|
+
],
|
|
49
|
+
"commonMistakes": [
|
|
50
|
+
"Giving the children a transparent fill. Each child must paint its own opaque fill — that is what makes the 1px gap read as a hairline instead of showing the container's border colour through the row.",
|
|
51
|
+
"Pairing it with rows that draw their own borders. Use `<Row seam>`."
|
|
52
|
+
],
|
|
42
53
|
"specimens": [
|
|
43
54
|
{
|
|
44
55
|
"title": "Row / SeamList",
|
|
@@ -51,6 +62,5 @@
|
|
|
51
62
|
"note": "Hairline rows, and the 1px-gap variant where the gaps themselves are the rule.",
|
|
52
63
|
"interaction": "pass `interactive` for a hover ground and a focus ring; `disabled` dims and stops pointer events."
|
|
53
64
|
}
|
|
54
|
-
]
|
|
55
|
-
"todo": true
|
|
65
|
+
]
|
|
56
66
|
}
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"--cue-text-label",
|
|
168
168
|
"--cue-text-ui"
|
|
169
169
|
],
|
|
170
|
-
"summary": "A filter box: leading magnifier, Escape to clear, and a debounced change callback
|
|
170
|
+
"summary": "A filter box: leading magnifier, Escape to clear, and a debounced change callback.",
|
|
171
171
|
"examples": [
|
|
172
172
|
{
|
|
173
173
|
"title": "Usage",
|
|
@@ -175,10 +175,22 @@
|
|
|
175
175
|
"language": "tsx"
|
|
176
176
|
}
|
|
177
177
|
],
|
|
178
|
-
"status": "
|
|
178
|
+
"status": "stable",
|
|
179
179
|
"url": "/docs/components/search-input",
|
|
180
180
|
"mdUrl": "/docs/components/search-input.md",
|
|
181
181
|
"jsonUrl": "/r/components/search-input.json",
|
|
182
|
+
"whenToUse": [
|
|
183
|
+
"Any console filter. Escape-to-clear is the behaviour every one needs and every hand-rolled box forgets.",
|
|
184
|
+
"A query that drives expensive work — `debounce` and `onDebouncedChange` exist so it is not run per keystroke."
|
|
185
|
+
],
|
|
186
|
+
"whenNotToUse": [
|
|
187
|
+
"A value that is submitted rather than applied as you type. That is an `Input` in a form.",
|
|
188
|
+
"Choosing from a known set. Use `Combobox`."
|
|
189
|
+
],
|
|
190
|
+
"commonMistakes": [
|
|
191
|
+
"Rebuilding it from `Input` plus an icon, which loses Escape-to-clear and its stopPropagation — without that the key bubbles into the surrounding dialog and closes it underneath the user.",
|
|
192
|
+
"Wiring expensive work to `onValueChange` instead of `onDebouncedChange`."
|
|
193
|
+
],
|
|
182
194
|
"specimens": [
|
|
183
195
|
{
|
|
184
196
|
"title": "SearchInput",
|
|
@@ -190,6 +202,5 @@
|
|
|
190
202
|
"note": "A magnifier, a clear button that appears once there is something to clear, and an optional debounce.",
|
|
191
203
|
"interaction": "Escape clears; the clear button is a real button with a name, not an icon glued to the rim."
|
|
192
204
|
}
|
|
193
|
-
]
|
|
194
|
-
"todo": true
|
|
205
|
+
]
|
|
195
206
|
}
|
|
@@ -110,7 +110,8 @@
|
|
|
110
110
|
"--cue-space-2",
|
|
111
111
|
"--cue-space-3",
|
|
112
112
|
"--cue-space-4",
|
|
113
|
-
"--cue-text-label"
|
|
113
|
+
"--cue-text-label",
|
|
114
|
+
"--cue-tracking-caps"
|
|
114
115
|
],
|
|
115
116
|
"summary": "A faint label with a rule running off it — the heading for a group of rows.",
|
|
116
117
|
"examples": [
|
|
@@ -120,10 +121,22 @@
|
|
|
120
121
|
"language": "tsx"
|
|
121
122
|
}
|
|
122
123
|
],
|
|
123
|
-
"status": "
|
|
124
|
+
"status": "stable",
|
|
124
125
|
"url": "/docs/components/section-header",
|
|
125
126
|
"mdUrl": "/docs/components/section-header.md",
|
|
126
127
|
"jsonUrl": "/r/components/section-header.json",
|
|
128
|
+
"whenToUse": [
|
|
129
|
+
"Titling a group inside a panel, where the heading must not read as another object.",
|
|
130
|
+
"A group that can be folded away: `collapsible` puts the disclosure on the header itself."
|
|
131
|
+
],
|
|
132
|
+
"whenNotToUse": [
|
|
133
|
+
"A page title. Use `PageShell`'s header.",
|
|
134
|
+
"A row. This names rows; it is not one of them."
|
|
135
|
+
],
|
|
136
|
+
"commonMistakes": [
|
|
137
|
+
"Boxing it — giving the heading a rim and a fill. A heading that is itself a panel competes with the panels underneath it and reads as another object rather than as their title.",
|
|
138
|
+
"Sizing the rule by hand. It is a `flex-1` block so it always fills exactly what the label and the count leave."
|
|
139
|
+
],
|
|
127
140
|
"specimens": [
|
|
128
141
|
{
|
|
129
142
|
"title": "SectionHeader",
|
|
@@ -135,6 +148,5 @@
|
|
|
135
148
|
"note": "A label, a rule, an optional count and an action slot. Collapsible when the section under it is.",
|
|
136
149
|
"interaction": "the collapsible variant is a button: hover tints the label, Enter and Space toggle."
|
|
137
150
|
}
|
|
138
|
-
]
|
|
139
|
-
"todo": true
|
|
151
|
+
]
|
|
140
152
|
}
|
|
@@ -158,10 +158,23 @@
|
|
|
158
158
|
"language": "tsx"
|
|
159
159
|
}
|
|
160
160
|
],
|
|
161
|
-
"status": "
|
|
161
|
+
"status": "stable",
|
|
162
162
|
"url": "/docs/components/segmented-control",
|
|
163
163
|
"mdUrl": "/docs/components/segmented-control.md",
|
|
164
164
|
"jsonUrl": "/r/components/segmented-control.json",
|
|
165
|
+
"whenToUse": [
|
|
166
|
+
"A choice between a small number of views where the answer is always one of them.",
|
|
167
|
+
"Anywhere clicking the active option must be a no-op rather than a way to end up with nothing."
|
|
168
|
+
],
|
|
169
|
+
"whenNotToUse": [
|
|
170
|
+
"A filter that may be cleared. Use `ToggleGroup`, which can be emptied — that difference is the whole distinction.",
|
|
171
|
+
"Actions. Use `ButtonGroup`.",
|
|
172
|
+
"More options than fit comfortably. Use `Select`."
|
|
173
|
+
],
|
|
174
|
+
"commonMistakes": [
|
|
175
|
+
"Choosing between this and `ToggleGroup` on appearance. Ask whether 'none' is a legal answer.",
|
|
176
|
+
"Adding your own clear control, which reintroduces the empty state this refuses."
|
|
177
|
+
],
|
|
165
178
|
"specimens": [
|
|
166
179
|
{
|
|
167
180
|
"title": "SegmentedControl",
|
|
@@ -173,6 +186,5 @@
|
|
|
173
186
|
"note": "Three sizes. The active segment is `accent-soft`, on the same ruling as the active tab. The last specimen is five segments in 15rem: the rim and the height hold, the segments scroll inside them — the same overflow behaviour Toolbar and AppBar have, from the same module.",
|
|
174
187
|
"interaction": "arrow keys move the selection and reach the segments off-screen; the whole control is one tab stop. A chevron appears at whichever edge still hides one."
|
|
175
188
|
}
|
|
176
|
-
]
|
|
177
|
-
"todo": true
|
|
189
|
+
]
|
|
178
190
|
}
|
|
@@ -36,10 +36,22 @@
|
|
|
36
36
|
"language": "tsx"
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
|
-
"status": "
|
|
39
|
+
"status": "stable",
|
|
40
40
|
"url": "/docs/components/separator",
|
|
41
41
|
"mdUrl": "/docs/components/separator.md",
|
|
42
42
|
"jsonUrl": "/r/components/separator.json",
|
|
43
|
+
"whenToUse": [
|
|
44
|
+
"Dividing groups that are genuinely separate: a menu's sections, a toolbar's clusters, a panel's header from its body.",
|
|
45
|
+
"Anywhere the division needs to exist in the accessibility tree — it carries `role=\"separator\"` and `aria-orientation`."
|
|
46
|
+
],
|
|
47
|
+
"whenNotToUse": [
|
|
48
|
+
"Spacing. If the groups only need air, give them `gap`; a rule adds meaning that may not be there.",
|
|
49
|
+
"The outline of a surface. That is the card's own border, not a separator."
|
|
50
|
+
],
|
|
51
|
+
"commonMistakes": [
|
|
52
|
+
"Replacing it with `border-t` on the next element. The line here is a `h-px` block precisely because a bordered zero-height box collapses unpredictably inside flex rows.",
|
|
53
|
+
"Overriding the colour with a literal instead of letting the `border` token paint it, which breaks the moment a theme changes."
|
|
54
|
+
],
|
|
43
55
|
"specimens": [
|
|
44
56
|
{
|
|
45
57
|
"title": "Separator",
|
|
@@ -51,6 +63,5 @@
|
|
|
51
63
|
"note": "A hairline in either orientation.",
|
|
52
64
|
"interaction": "none."
|
|
53
65
|
}
|
|
54
|
-
]
|
|
55
|
-
"todo": true
|
|
66
|
+
]
|
|
56
67
|
}
|
|
@@ -132,10 +132,21 @@
|
|
|
132
132
|
"language": "tsx"
|
|
133
133
|
}
|
|
134
134
|
],
|
|
135
|
-
"status": "
|
|
135
|
+
"status": "stable",
|
|
136
136
|
"url": "/docs/components/settings-panel",
|
|
137
137
|
"mdUrl": "/docs/components/settings-panel.md",
|
|
138
138
|
"jsonUrl": "/r/components/settings-panel.json",
|
|
139
|
+
"whenToUse": [
|
|
140
|
+
"A compact settings surface for one thread: a few models, the system prompt, temperature and a handful of capability switches."
|
|
141
|
+
],
|
|
142
|
+
"whenNotToUse": [
|
|
143
|
+
"A long model list. `models` feeds a segmented control — keep it to a few; more wants the model picker."
|
|
144
|
+
],
|
|
145
|
+
"commonMistakes": [
|
|
146
|
+
"Driving `temperature` outside 0 to 2, which is the range the slider is built for.",
|
|
147
|
+
"Giving toggles with no explanation. Each switch carries a line saying what it turns on, which is what makes a capability list readable.",
|
|
148
|
+
"Passing `toggles` without `onToggle` and expecting the switches to move — the callback reports the switched capability's key and the state stays yours."
|
|
149
|
+
],
|
|
139
150
|
"specimens": [
|
|
140
151
|
{
|
|
141
152
|
"title": "SettingsPanel",
|
|
@@ -147,6 +158,5 @@
|
|
|
147
158
|
"note": "Model, system prompt, temperature, and what the assistant is allowed to do — the four settings a chat product actually has, on one card. The capability switches each carry a line saying what turning them on does, which is the difference between a settings page and a list of nouns. The panel holds none of it: every value here is the caller's.",
|
|
148
159
|
"interaction": "the segmented model control is a row of `aria-pressed` buttons, and both the prompt textarea and the temperature slider carry their own labels, so nothing on the card depends on the mono caption above it being read."
|
|
149
160
|
}
|
|
150
|
-
]
|
|
151
|
-
"todo": true
|
|
161
|
+
]
|
|
152
162
|
}
|
|
@@ -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 3
|
|
58
|
+
"summary": "Section 3 of the configurator — geometry and type, which belong to the density axis rather than the theme.",
|
|
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/shape-section",
|
|
67
68
|
"mdUrl": "/docs/components/shape-section.md",
|
|
68
69
|
"jsonUrl": "/r/components/shape-section.json",
|
|
69
|
-
"
|
|
70
|
+
"whenToUse": [
|
|
71
|
+
"Inside `ThemeConfigurator`, for radius, type and the published `--cue-density` escape hatch."
|
|
72
|
+
],
|
|
73
|
+
"whenNotToUse": [
|
|
74
|
+
"Theme colour work. That is `ColorsSection`."
|
|
75
|
+
],
|
|
76
|
+
"commonMistakes": [
|
|
77
|
+
"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`."
|
|
78
|
+
]
|
|
70
79
|
}
|
|
@@ -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
|
}
|
|
@@ -180,9 +180,10 @@
|
|
|
180
180
|
"--cue-surface-2",
|
|
181
181
|
"--cue-text-emphasis",
|
|
182
182
|
"--cue-text-label",
|
|
183
|
-
"--cue-text-ui"
|
|
183
|
+
"--cue-text-ui",
|
|
184
|
+
"--cue-tracking-caps"
|
|
184
185
|
],
|
|
185
|
-
"summary": "A modal panel that slides in from an edge: an inspector, a filter drawer, a details pane
|
|
186
|
+
"summary": "A modal panel that slides in from an edge: an inspector, a filter drawer, a details pane.",
|
|
186
187
|
"examples": [
|
|
187
188
|
{
|
|
188
189
|
"title": "Usage",
|
|
@@ -190,10 +191,21 @@
|
|
|
190
191
|
"language": "tsx"
|
|
191
192
|
}
|
|
192
193
|
],
|
|
193
|
-
"status": "
|
|
194
|
+
"status": "stable",
|
|
194
195
|
"url": "/docs/components/sheet",
|
|
195
196
|
"mdUrl": "/docs/components/sheet.md",
|
|
196
197
|
"jsonUrl": "/r/components/sheet.json",
|
|
198
|
+
"whenToUse": [
|
|
199
|
+
"Content that is a *side channel* to the page rather than an interruption of it.",
|
|
200
|
+
"A pane too wide for a popover but not worth a route."
|
|
201
|
+
],
|
|
202
|
+
"whenNotToUse": [
|
|
203
|
+
"A task that must be finished before anything else. That is a `Dialog`.",
|
|
204
|
+
"Touch-first, swipe-dismissable panels. Use `Drawer`."
|
|
205
|
+
],
|
|
206
|
+
"commonMistakes": [
|
|
207
|
+
"Using it for a question. A sheet is a place to work; an interruption belongs in a dialog."
|
|
208
|
+
],
|
|
197
209
|
"specimens": [
|
|
198
210
|
{
|
|
199
211
|
"title": "Sheet",
|
|
@@ -205,6 +217,5 @@
|
|
|
205
217
|
"note": "A dialog anchored to an edge. Three sides, each with its own translate transition.",
|
|
206
218
|
"interaction": "the transition is driven by Base UI's data attributes and CSS, and switches off under prefers-reduced-motion."
|
|
207
219
|
}
|
|
208
|
-
]
|
|
209
|
-
"todo": true
|
|
220
|
+
]
|
|
210
221
|
}
|
|
@@ -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
|
}
|
|
@@ -215,9 +215,10 @@
|
|
|
215
215
|
"--cue-surface-1",
|
|
216
216
|
"--cue-surface-2",
|
|
217
217
|
"--cue-text-label",
|
|
218
|
-
"--cue-text-ui"
|
|
218
|
+
"--cue-text-ui",
|
|
219
|
+
"--cue-tracking-caps"
|
|
219
220
|
],
|
|
220
|
-
"summary": "The console's navigation column: sections of items,
|
|
221
|
+
"summary": "The console's navigation column: sections of items, its own scroller, and a rail that collapses it to icons.",
|
|
221
222
|
"examples": [
|
|
222
223
|
{
|
|
223
224
|
"title": "Usage",
|
|
@@ -225,10 +226,22 @@
|
|
|
225
226
|
"language": "tsx"
|
|
226
227
|
}
|
|
227
228
|
],
|
|
228
|
-
"status": "
|
|
229
|
+
"status": "stable",
|
|
229
230
|
"url": "/docs/components/sidebar",
|
|
230
231
|
"mdUrl": "/docs/components/sidebar.md",
|
|
231
232
|
"jsonUrl": "/r/components/sidebar.json",
|
|
233
|
+
"whenToUse": [
|
|
234
|
+
"The primary navigation of a console that has more destinations than a bar can hold.",
|
|
235
|
+
"Anywhere the column must survive a narrow viewport by collapsing to a rail rather than disappearing."
|
|
236
|
+
],
|
|
237
|
+
"whenNotToUse": [
|
|
238
|
+
"The site's top level. That is a bar question; a column answers what is inside one section.",
|
|
239
|
+
"A panel of controls. Use a panel — a sidebar is navigation."
|
|
240
|
+
],
|
|
241
|
+
"commonMistakes": [
|
|
242
|
+
"Giving it the page's scroller instead of its own, so the nav scrolls away with the content.",
|
|
243
|
+
"Concatenating every section into one column, which buries the section the reader came for under the others."
|
|
244
|
+
],
|
|
232
245
|
"specimens": [
|
|
233
246
|
{
|
|
234
247
|
"title": "Sidebar",
|
|
@@ -240,6 +253,5 @@
|
|
|
240
253
|
"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
254
|
"interaction": "the rail is invisible until hovered, and is a real button with an `aria-expanded` state."
|
|
242
255
|
}
|
|
243
|
-
]
|
|
244
|
-
"todo": true
|
|
256
|
+
]
|
|
245
257
|
}
|
|
@@ -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
|
}
|