@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
|
@@ -55,10 +55,20 @@
|
|
|
55
55
|
"language": "tsx"
|
|
56
56
|
}
|
|
57
57
|
],
|
|
58
|
-
"status": "
|
|
58
|
+
"status": "stable",
|
|
59
59
|
"url": "/docs/components/animated-number",
|
|
60
60
|
"mdUrl": "/docs/components/animated-number.md",
|
|
61
61
|
"jsonUrl": "/r/components/animated-number.json",
|
|
62
|
+
"whenToUse": [
|
|
63
|
+
"A value that is the same fact moving — a token count, a cost, a duration, a file tally."
|
|
64
|
+
],
|
|
65
|
+
"whenNotToUse": [
|
|
66
|
+
"A value that is a new fact each time. A number that steps says 'this is different'; one that counts says 'this is the same thing, changed'."
|
|
67
|
+
],
|
|
68
|
+
"commonMistakes": [
|
|
69
|
+
"Dropping the `tabular-nums`. A proportional `1` is narrower than a `0`, so a stepping counter nudges everything to its right on every update.",
|
|
70
|
+
"Tweening something that jumps for a real reason, which implies continuity that is not there."
|
|
71
|
+
],
|
|
62
72
|
"specimens": [
|
|
63
73
|
{
|
|
64
74
|
"title": "AnimatedNumber",
|
|
@@ -70,6 +80,5 @@
|
|
|
70
80
|
"note": "A number that counts to its new value instead of jumping to it, in tabular numerals so the digits do not jitter on the way. Both halves are one teardown's: the reference eases its live token estimate from the previous value to the new one and paints it in font-variant-numeric tabular-nums, because a proportional 1 is narrower than a 0 and a stepping counter nudges everything to its right on every update. A value that steps reads as a new fact; a value that counts reads as the same fact moving, which is what a token, a cost and a duration actually are.",
|
|
71
81
|
"interaction": "press the button and watch the digits rather than the box — nothing to the right of the number moves. Under prefers-reduced-motion the new value simply arrives: stillness for a counter has to mean landing on the number, because a readout that stopped where it was would be wrong rather than still. Mid-tween the digits are aria-hidden and the settled value is carried beside them, so a screen reader reads what the run reported and never a frame of the animation."
|
|
72
82
|
}
|
|
73
|
-
]
|
|
74
|
-
"todo": true
|
|
83
|
+
]
|
|
75
84
|
}
|
|
@@ -104,10 +104,21 @@
|
|
|
104
104
|
"language": "tsx"
|
|
105
105
|
}
|
|
106
106
|
],
|
|
107
|
-
"status": "
|
|
107
|
+
"status": "stable",
|
|
108
108
|
"url": "/docs/components/app-window-frame",
|
|
109
109
|
"mdUrl": "/docs/components/app-window-frame.md",
|
|
110
110
|
"jsonUrl": "/r/components/app-window-frame.json",
|
|
111
|
+
"whenToUse": [
|
|
112
|
+
"A marketing hero or a docs illustration that should re-theme with the site and stay legible at any zoom.",
|
|
113
|
+
"Anywhere a real screenshot would go stale the week after a redesign."
|
|
114
|
+
],
|
|
115
|
+
"whenNotToUse": [
|
|
116
|
+
"Application chrome. This is a depiction of a window, not one — use `TitleBar` and `StatusBar` directly."
|
|
117
|
+
],
|
|
118
|
+
"commonMistakes": [
|
|
119
|
+
"Reaching for a PNG. Because the contents are components, the depiction and the real thing cannot drift — it is built from the real `TitleBar` and `StatusBar`.",
|
|
120
|
+
"Filling it with fake markup. The point is that it holds the components it is advertising."
|
|
121
|
+
],
|
|
111
122
|
"specimens": [
|
|
112
123
|
{
|
|
113
124
|
"title": "AppWindowFrame",
|
|
@@ -119,6 +130,5 @@
|
|
|
119
130
|
"note": "The marketing device: a window with traffic lights, a toolbar slot and a status bar slot, so a screenshot of a product looks like a product.",
|
|
120
131
|
"interaction": "none. The frame is scenery."
|
|
121
132
|
}
|
|
122
|
-
]
|
|
123
|
-
"todo": true
|
|
133
|
+
]
|
|
124
134
|
}
|
|
@@ -116,10 +116,22 @@
|
|
|
116
116
|
"language": "tsx"
|
|
117
117
|
}
|
|
118
118
|
],
|
|
119
|
-
"status": "
|
|
119
|
+
"status": "stable",
|
|
120
120
|
"url": "/docs/components/approval-card",
|
|
121
121
|
"mdUrl": "/docs/components/approval-card.md",
|
|
122
122
|
"jsonUrl": "/r/components/approval-card.json",
|
|
123
|
+
"whenToUse": [
|
|
124
|
+
"A command with side effects that must not run until someone says so.",
|
|
125
|
+
"Carrying that request through its whole lifecycle, since one card covers request, running, done and denied."
|
|
126
|
+
],
|
|
127
|
+
"whenNotToUse": [
|
|
128
|
+
"A decision with no command behind it. `command` is required and is shown in a mono field.",
|
|
129
|
+
"Reporting a command that failed. The four states are request, running, done and denied; a failure needs somewhere else to go."
|
|
130
|
+
],
|
|
131
|
+
"commonMistakes": [
|
|
132
|
+
"Leaving `state=\"request\"` after the user has answered, so Allow and Deny stay pressable on a command that already ran.",
|
|
133
|
+
"Folding the explanation into `title`. `title` names the action that needs approval; `subtitle` is the supporting line that explains it."
|
|
134
|
+
],
|
|
123
135
|
"specimens": [
|
|
124
136
|
{
|
|
125
137
|
"title": "ApprovalCard",
|
|
@@ -131,6 +143,5 @@
|
|
|
131
143
|
"note": "Human in the loop for one action: the command in mono exactly as it will run, and three answers. The four specimens are the four states of the union, and the first one is live: answer it and it moves.",
|
|
132
144
|
"interaction": "Allow once and Always allow are separate answers, never one control with a modifier. Denying settles the card rather than hiding it."
|
|
133
145
|
}
|
|
134
|
-
]
|
|
135
|
-
"todo": true
|
|
146
|
+
]
|
|
136
147
|
}
|
|
@@ -73,10 +73,22 @@
|
|
|
73
73
|
"language": "tsx"
|
|
74
74
|
}
|
|
75
75
|
],
|
|
76
|
-
"status": "
|
|
76
|
+
"status": "stable",
|
|
77
77
|
"url": "/docs/components/artifact-card",
|
|
78
78
|
"mdUrl": "/docs/components/artifact-card.md",
|
|
79
79
|
"jsonUrl": "/r/components/artifact-card.json",
|
|
80
|
+
"whenToUse": [
|
|
81
|
+
"A document the model produced, standing in the transcript as an object with its kind, version and recency.",
|
|
82
|
+
"The live phase of that writing, where `generating` pulses the icon and shows a word count with a shimmer."
|
|
83
|
+
],
|
|
84
|
+
"whenNotToUse": [
|
|
85
|
+
"A file the person attached rather than one the model generated.",
|
|
86
|
+
"Showing the document's text. The card stands for the artifact; it does not render its body."
|
|
87
|
+
],
|
|
88
|
+
"commonMistakes": [
|
|
89
|
+
"Passing `words` without `generating`. The live word count only replaces the meta line while generation is running.",
|
|
90
|
+
"Splitting the resting line across props. `meta` is one pre-formatted string — kind, version and recency together."
|
|
91
|
+
],
|
|
80
92
|
"specimens": [
|
|
81
93
|
{
|
|
82
94
|
"title": "ArtifactCard",
|
|
@@ -88,6 +100,5 @@
|
|
|
88
100
|
"note": "The document the answer produced, as an object you can pick up. While it is being written the icon pulses, the label shimmers and the word count climbs; when it lands, the meta line blurs in with its size and version. It is the handle — the document itself opens in a canvas.",
|
|
89
101
|
"interaction": "the whole card is the target and lifts a pixel under the pointer; the arrow only appears on hover, so a resting card is quiet."
|
|
90
102
|
}
|
|
91
|
-
]
|
|
92
|
-
"todo": true
|
|
103
|
+
]
|
|
93
104
|
}
|
|
@@ -268,10 +268,21 @@
|
|
|
268
268
|
"language": "tsx"
|
|
269
269
|
}
|
|
270
270
|
],
|
|
271
|
-
"status": "
|
|
271
|
+
"status": "stable",
|
|
272
272
|
"url": "/docs/components/ask-box",
|
|
273
273
|
"mdUrl": "/docs/components/ask-box.md",
|
|
274
274
|
"jsonUrl": "/r/components/ask-box.json",
|
|
275
|
+
"whenToUse": [
|
|
276
|
+
"A run that cannot proceed without a person — a confirmation, a value, a choice between options.",
|
|
277
|
+
"Anywhere the answer must be recorded by the host, not by the UI."
|
|
278
|
+
],
|
|
279
|
+
"whenNotToUse": [
|
|
280
|
+
"A form. This is a single question inside a transcript.",
|
|
281
|
+
"Something the agent can decide. An ask that did not need asking is an interruption."
|
|
282
|
+
],
|
|
283
|
+
"commonMistakes": [
|
|
284
|
+
"Letting the component own whether it has been answered. It holds the *draft* only; the fact of having answered comes back as `answer` once the host has recorded it. Anything else makes local state the source of truth for a decision the run depends on — which survives exactly until the pane unmounts."
|
|
285
|
+
],
|
|
275
286
|
"specimens": [
|
|
276
287
|
{
|
|
277
288
|
"title": "AskBox",
|
|
@@ -283,6 +294,5 @@
|
|
|
283
294
|
"note": "The HITL question widget: five kinds, three danger levels, and a collapsed `question · answer ✓` summary once it is answered. Controlled through `onAnswer`, because the host owns the run.",
|
|
284
295
|
"interaction": "the danger chip is text as well as colour; an answered box collapses but stays expandable."
|
|
285
296
|
}
|
|
286
|
-
]
|
|
287
|
-
"todo": true
|
|
297
|
+
]
|
|
288
298
|
}
|
|
@@ -17,10 +17,19 @@
|
|
|
17
17
|
"tokensUsed": [],
|
|
18
18
|
"summary": "An audience: a named group of people something is published to.",
|
|
19
19
|
"examples": [],
|
|
20
|
-
"status": "
|
|
20
|
+
"status": "stable",
|
|
21
21
|
"url": "/docs/components/audience-icon",
|
|
22
22
|
"mdUrl": "/docs/components/audience-icon.md",
|
|
23
23
|
"jsonUrl": "/r/components/audience-icon.json",
|
|
24
|
+
"whenToUse": [
|
|
25
|
+
"Choosing or showing who something is published to."
|
|
26
|
+
],
|
|
27
|
+
"whenNotToUse": [
|
|
28
|
+
"A container of artefacts. Use `FolderIcon` or `CatalogueIcon`."
|
|
29
|
+
],
|
|
30
|
+
"commonMistakes": [
|
|
31
|
+
"Drawing it as a diamond or a tag, which files it with the folders — exactly the mistake a reader makes when deciding where to publish something. It is people, not an abstract shape."
|
|
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
|
}
|
|
@@ -232,7 +232,8 @@
|
|
|
232
232
|
"--cue-text-body",
|
|
233
233
|
"--cue-text-emphasis",
|
|
234
234
|
"--cue-text-label",
|
|
235
|
-
"--cue-text-ui"
|
|
235
|
+
"--cue-text-ui",
|
|
236
|
+
"--cue-tracking-caps"
|
|
236
237
|
],
|
|
237
238
|
"summary": "A text field that suggests as you type — and accepts what you typed anyway.",
|
|
238
239
|
"examples": [
|
|
@@ -242,10 +243,23 @@
|
|
|
242
243
|
"language": "tsx"
|
|
243
244
|
}
|
|
244
245
|
],
|
|
245
|
-
"status": "
|
|
246
|
+
"status": "stable",
|
|
246
247
|
"url": "/docs/components/autocomplete",
|
|
247
248
|
"mdUrl": "/docs/components/autocomplete.md",
|
|
248
249
|
"jsonUrl": "/r/components/autocomplete.json",
|
|
250
|
+
"whenToUse": [
|
|
251
|
+
"A value the product cannot enumerate: a name, a search term, a hostname. The suggestions are a shortcut, not the set of legal answers.",
|
|
252
|
+
"Anywhere typing something unlisted must survive blur rather than being silently discarded."
|
|
253
|
+
],
|
|
254
|
+
"whenNotToUse": [
|
|
255
|
+
"A value that must come from a known set. Use `Combobox`, whose text is a filter and whose value is always one of `items`.",
|
|
256
|
+
"Several values at once. Use `TagsInput` for free-form, `MultiSelect` for a known set."
|
|
257
|
+
],
|
|
258
|
+
"commonMistakes": [
|
|
259
|
+
"Reaching for it because it looks like `Combobox`. Pick on the contract, not the shape: ask what happens downstream to a value nobody suggested.",
|
|
260
|
+
"Passing objects as `items`. Suggestions are plain strings, because an autocomplete has no identity to attach to a value it did not supply.",
|
|
261
|
+
"Validating only against the suggestions. The whole point is that the typed value wins, so the typed value is what needs checking."
|
|
262
|
+
],
|
|
249
263
|
"specimens": [
|
|
250
264
|
{
|
|
251
265
|
"title": "Autocomplete",
|
|
@@ -257,6 +271,5 @@
|
|
|
257
271
|
"note": "Suggestions over free text: the field keeps whatever was typed, and the list only offers.",
|
|
258
272
|
"interaction": "the list opens on input, not on focus; `autoHighlight` pre-selects the first match."
|
|
259
273
|
}
|
|
260
|
-
]
|
|
261
|
-
"todo": true
|
|
274
|
+
]
|
|
262
275
|
}
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"--cue-text-micro",
|
|
56
56
|
"--cue-text-ui"
|
|
57
57
|
],
|
|
58
|
-
"summary": "An overlapping stack of
|
|
58
|
+
"summary": "An overlapping stack of avatars with a `+N` overflow chip.",
|
|
59
59
|
"examples": [
|
|
60
60
|
{
|
|
61
61
|
"title": "Usage",
|
|
@@ -63,10 +63,22 @@
|
|
|
63
63
|
"language": "tsx"
|
|
64
64
|
}
|
|
65
65
|
],
|
|
66
|
-
"status": "
|
|
66
|
+
"status": "stable",
|
|
67
67
|
"url": "/docs/components/avatar-group",
|
|
68
68
|
"mdUrl": "/docs/components/avatar-group.md",
|
|
69
69
|
"jsonUrl": "/r/components/avatar-group.json",
|
|
70
|
+
"whenToUse": [
|
|
71
|
+
"Several participants where the count matters more than any one face: attendees, reviewers, a thread's contributors.",
|
|
72
|
+
"A fixed-width slot. `max` caps the faces and collapses the rest into `+N`, so the stack cannot grow past what you budgeted."
|
|
73
|
+
],
|
|
74
|
+
"whenNotToUse": [
|
|
75
|
+
"One person. Use `Avatar` — the overlap ring is a visual cost with nothing to overlap.",
|
|
76
|
+
"A list people need to read or act on. A stack is a summary; give them a real list."
|
|
77
|
+
],
|
|
78
|
+
"commonMistakes": [
|
|
79
|
+
"Setting `size` here and a different `size` on the `Avatar`s passed in. This prop sizes only the `+N` chip; match it to the avatars yourself.",
|
|
80
|
+
"Expecting `max` to default to something. Omit it and every avatar renders, however many arrive."
|
|
81
|
+
],
|
|
70
82
|
"specimens": [
|
|
71
83
|
{
|
|
72
84
|
"title": "AvatarGroup",
|
|
@@ -78,6 +90,5 @@
|
|
|
78
90
|
"note": "Overlapping faces with an overflow count.",
|
|
79
91
|
"interaction": "none."
|
|
80
92
|
}
|
|
81
|
-
]
|
|
82
|
-
"todo": true
|
|
93
|
+
]
|
|
83
94
|
}
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"--cue-text-micro",
|
|
86
86
|
"--cue-text-ui"
|
|
87
87
|
],
|
|
88
|
-
"summary": "A round user
|
|
88
|
+
"summary": "A round user or entity avatar, sized off the density control ladder so it lines up with the buttons beside it.",
|
|
89
89
|
"examples": [
|
|
90
90
|
{
|
|
91
91
|
"title": "Usage",
|
|
@@ -93,10 +93,23 @@
|
|
|
93
93
|
"language": "tsx"
|
|
94
94
|
}
|
|
95
95
|
],
|
|
96
|
-
"status": "
|
|
96
|
+
"status": "stable",
|
|
97
97
|
"url": "/docs/components/avatar",
|
|
98
98
|
"mdUrl": "/docs/components/avatar.md",
|
|
99
99
|
"jsonUrl": "/r/components/avatar.json",
|
|
100
|
+
"whenToUse": [
|
|
101
|
+
"Identifying a person or an entity beside their name: a message author, an assignee, an audit row.",
|
|
102
|
+
"A slot that must hold something even when there is no image. `fallback` shows immediately and returns if the image errors, so the row never reflows."
|
|
103
|
+
],
|
|
104
|
+
"whenNotToUse": [
|
|
105
|
+
"Several people at once. Use `AvatarGroup`, which handles the overlap and the `+N` overflow.",
|
|
106
|
+
"A state or a category rather than an identity. Use `StatusDot` or `Chip`."
|
|
107
|
+
],
|
|
108
|
+
"commonMistakes": [
|
|
109
|
+
"Leaving `alt` empty. It is both the image's alt text and the source of the default initials, so an empty one costs the fallback as well as the screen reader.",
|
|
110
|
+
"Sizing with `className=\"h-8 w-8\"` instead of `size`, which stops the avatar tracking density and breaks its alignment with the controls on its row.",
|
|
111
|
+
"Assuming a missing `src` is an error case. Omit it deliberately and the fallback is the whole design."
|
|
112
|
+
],
|
|
100
113
|
"specimens": [
|
|
101
114
|
{
|
|
102
115
|
"title": "Avatar",
|
|
@@ -108,6 +121,5 @@
|
|
|
108
121
|
"note": "Initials fall back when there is no image; the ring is drawn in the background colour so a pile reads as separate faces.",
|
|
109
122
|
"interaction": "none."
|
|
110
123
|
}
|
|
111
|
-
]
|
|
112
|
-
"todo": true
|
|
124
|
+
]
|
|
113
125
|
}
|
|
@@ -59,10 +59,22 @@
|
|
|
59
59
|
"language": "tsx"
|
|
60
60
|
}
|
|
61
61
|
],
|
|
62
|
-
"status": "
|
|
62
|
+
"status": "stable",
|
|
63
63
|
"url": "/docs/components/background-inbox",
|
|
64
64
|
"mdUrl": "/docs/components/background-inbox.md",
|
|
65
65
|
"jsonUrl": "/r/components/background-inbox.json",
|
|
66
|
+
"whenToUse": [
|
|
67
|
+
"Detached runs that finished away from the thread and now need pulling back into it.",
|
|
68
|
+
"A header count of what is ready, which is what needs the user rather than what is still in flight."
|
|
69
|
+
],
|
|
70
|
+
"whenNotToUse": [
|
|
71
|
+
"A run happening in the thread you are already looking at.",
|
|
72
|
+
"A list where every row should be pressable. Running rows are not clickable."
|
|
73
|
+
],
|
|
74
|
+
"commonMistakes": [
|
|
75
|
+
"Expecting the header to count everything. It counts what is ready, deliberately, not what is running.",
|
|
76
|
+
"Omitting `onCollect`, which leaves finished runs with no way back into the thread."
|
|
77
|
+
],
|
|
66
78
|
"specimens": [
|
|
67
79
|
{
|
|
68
80
|
"title": "BackgroundInbox",
|
|
@@ -74,6 +86,5 @@
|
|
|
74
86
|
"note": "Work that left the conversation and is still going somewhere else. The header counts what is *ready* rather than what is in flight, because ready is the half that needs a person; a running row is not clickable at all, so there is nothing to press before there is something to collect.",
|
|
75
87
|
"interaction": "a ready or failed row is a button and takes cue's focus ring; a running one is `disabled`, which is what makes the spinner mean wait rather than try again."
|
|
76
88
|
}
|
|
77
|
-
]
|
|
78
|
-
"todo": true
|
|
89
|
+
]
|
|
79
90
|
}
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
"tokensUsed": [
|
|
73
73
|
"--cue-band-ground",
|
|
74
74
|
"--cue-band-rule",
|
|
75
|
+
"--cue-band-rule-color",
|
|
75
76
|
"--cue-band-y",
|
|
76
|
-
"--cue-border",
|
|
77
77
|
"--cue-measure-prose"
|
|
78
78
|
],
|
|
79
|
-
"summary": "A full-bleed horizontal section: the
|
|
79
|
+
"summary": "A full-bleed horizontal section: a rule to the window's edge, a column at the measure.",
|
|
80
80
|
"examples": [
|
|
81
81
|
{
|
|
82
82
|
"title": "Usage",
|
|
@@ -84,10 +84,21 @@
|
|
|
84
84
|
"language": "tsx"
|
|
85
85
|
}
|
|
86
86
|
],
|
|
87
|
-
"status": "
|
|
87
|
+
"status": "stable",
|
|
88
88
|
"url": "/docs/components/band",
|
|
89
89
|
"mdUrl": "/docs/components/band.md",
|
|
90
90
|
"jsonUrl": "/r/components/band.json",
|
|
91
|
+
"whenToUse": [
|
|
92
|
+
"A page section that needs separation running edge to edge while its words stop at the reading measure.",
|
|
93
|
+
"Anywhere the page's vertical rhythm should come from one recipe rather than a per-section guess."
|
|
94
|
+
],
|
|
95
|
+
"whenNotToUse": [
|
|
96
|
+
"Content inside an existing column. Use `Container` or `Stack`; a band inside a measure has no edge to reach.",
|
|
97
|
+
"A footer. Use `Footer`, which is built on this — the recipe exists once, and reimplementing it forks it."
|
|
98
|
+
],
|
|
99
|
+
"commonMistakes": [
|
|
100
|
+
"Putting the separation on the inner column, which stops the rule at the measure and leaves the page looking unfinished at both margins."
|
|
101
|
+
],
|
|
91
102
|
"specimens": [
|
|
92
103
|
{
|
|
93
104
|
"title": "Band",
|
|
@@ -99,6 +110,5 @@
|
|
|
99
110
|
"note": "A page's horizontal section: the rhythm, the separation and the column, all three off the style axis. Four separations — a rule, a ground, a full bleed with no column, and rhythm alone. Under no style set this is exactly what Footer draws above its links.",
|
|
100
111
|
"interaction": "none; what changes it is the [data-style] attribute above it, not a pointer."
|
|
101
112
|
}
|
|
102
|
-
]
|
|
103
|
-
"todo": true
|
|
113
|
+
]
|
|
104
114
|
}
|
|
@@ -65,10 +65,22 @@
|
|
|
65
65
|
"language": "tsx"
|
|
66
66
|
}
|
|
67
67
|
],
|
|
68
|
-
"status": "
|
|
68
|
+
"status": "stable",
|
|
69
69
|
"url": "/docs/components/breadcrumb",
|
|
70
70
|
"mdUrl": "/docs/components/breadcrumb.md",
|
|
71
71
|
"jsonUrl": "/r/components/breadcrumb.json",
|
|
72
|
+
"whenToUse": [
|
|
73
|
+
"A route nested deep enough that the path is not obvious from the page itself.",
|
|
74
|
+
"Anywhere the trail should have one visible end: the last crumb is the page you are on, never a link."
|
|
75
|
+
],
|
|
76
|
+
"whenNotToUse": [
|
|
77
|
+
"A flat site, where every crumb but the last is the same one link.",
|
|
78
|
+
"A sequence of steps. Use `Stepper` — a breadcrumb is a location, not a progress."
|
|
79
|
+
],
|
|
80
|
+
"commonMistakes": [
|
|
81
|
+
"Making the last crumb a link to the current page. It carries `aria-current=\"page\"` and full-strength ink precisely because it is not one.",
|
|
82
|
+
"Giving the separators text a screen reader will read. They are `aria-hidden`: announcing 'console slash patch slash universe 1' reads punctuation, not structure."
|
|
83
|
+
],
|
|
72
84
|
"specimens": [
|
|
73
85
|
{
|
|
74
86
|
"title": "Breadcrumb",
|
|
@@ -80,6 +92,5 @@
|
|
|
80
92
|
"note": "Where you are, with `aria-hidden` punctuation between the crumbs and the last one marked current.",
|
|
81
93
|
"interaction": "every crumb but the last is a link; the last is plain text."
|
|
82
94
|
}
|
|
83
|
-
]
|
|
84
|
-
"todo": true
|
|
95
|
+
]
|
|
85
96
|
}
|
|
@@ -71,10 +71,21 @@
|
|
|
71
71
|
"language": "tsx"
|
|
72
72
|
}
|
|
73
73
|
],
|
|
74
|
-
"status": "
|
|
74
|
+
"status": "stable",
|
|
75
75
|
"url": "/docs/components/button-group",
|
|
76
76
|
"mdUrl": "/docs/components/button-group.md",
|
|
77
77
|
"jsonUrl": "/r/components/button-group.json",
|
|
78
|
+
"whenToUse": [
|
|
79
|
+
"Actions that belong together: save and save-as, run and run-to-here.",
|
|
80
|
+
"Anywhere the shared rim is presentational only — each member stays independently reachable by Tab."
|
|
81
|
+
],
|
|
82
|
+
"whenNotToUse": [
|
|
83
|
+
"A choice rather than actions. Use `ToggleGroup` (several or none) or `SegmentedControl` (exactly one), which carry the pressed-state ARIA a row of plain buttons must not fake."
|
|
84
|
+
],
|
|
85
|
+
"commonMistakes": [
|
|
86
|
+
"Expecting roving focus. It owns no state and imposes none, because its members are actions.",
|
|
87
|
+
"Using it to show which option is selected, which is the case it explicitly does not handle."
|
|
88
|
+
],
|
|
78
89
|
"specimens": [
|
|
79
90
|
{
|
|
80
91
|
"title": "ButtonGroup",
|
|
@@ -86,6 +97,5 @@
|
|
|
86
97
|
"note": "Buttons welded into one control, horizontally or vertically.",
|
|
87
98
|
"interaction": "each button keeps its own focus ring; only the outer corners are rounded."
|
|
88
99
|
}
|
|
89
|
-
]
|
|
90
|
-
"todo": true
|
|
100
|
+
]
|
|
91
101
|
}
|
|
@@ -35,9 +35,11 @@
|
|
|
35
35
|
"--cue-surface-3",
|
|
36
36
|
"--cue-text-label",
|
|
37
37
|
"--cue-text-micro",
|
|
38
|
-
"--cue-text-ui"
|
|
38
|
+
"--cue-text-ui",
|
|
39
|
+
"--cue-tracking-caps",
|
|
40
|
+
"--cue-tracking-caps-tight"
|
|
39
41
|
],
|
|
40
|
-
"summary": "A month grid, on react-day-picker
|
|
42
|
+
"summary": "A month grid, on react-day-picker.",
|
|
41
43
|
"examples": [
|
|
42
44
|
{
|
|
43
45
|
"title": "Usage",
|
|
@@ -45,10 +47,22 @@
|
|
|
45
47
|
"language": "tsx"
|
|
46
48
|
}
|
|
47
49
|
],
|
|
48
|
-
"status": "
|
|
50
|
+
"status": "stable",
|
|
49
51
|
"url": "/docs/components/calendar",
|
|
50
52
|
"mdUrl": "/docs/components/calendar.md",
|
|
51
53
|
"jsonUrl": "/r/components/calendar.json",
|
|
54
|
+
"whenToUse": [
|
|
55
|
+
"Picking a day from a month the user wants to see — a schedule, a show date.",
|
|
56
|
+
"Inline, where a popover would be an extra click."
|
|
57
|
+
],
|
|
58
|
+
"whenNotToUse": [
|
|
59
|
+
"A date the user already knows. Use `DateField`: typing `08172026` beats three clicks.",
|
|
60
|
+
"A range. Use `DateRangePicker`."
|
|
61
|
+
],
|
|
62
|
+
"commonMistakes": [
|
|
63
|
+
"Re-deriving behaviour when upgrading. Selection modes, keyboard navigation, the ARIA grid wiring and the date maths are the library's; this layer supplies the token skin and nothing else.",
|
|
64
|
+
"Replacing a `classNames` slot rather than adding to it. Caller slots merge *over* the defaults."
|
|
65
|
+
],
|
|
52
66
|
"specimens": [
|
|
53
67
|
{
|
|
54
68
|
"title": "Calendar",
|
|
@@ -60,6 +74,5 @@
|
|
|
60
74
|
"note": "react-day-picker's month grid, restyled from tokens. Speaks plain `Date`, because that is what a show file holds.",
|
|
61
75
|
"interaction": "arrow keys walk the grid, Page Up and Page Down change month; the selected day is accent-soft, today is ringed."
|
|
62
76
|
}
|
|
63
|
-
]
|
|
64
|
-
"todo": true
|
|
77
|
+
]
|
|
65
78
|
}
|
|
@@ -40,10 +40,21 @@
|
|
|
40
40
|
],
|
|
41
41
|
"summary": "The document's text, scrolling on its own, with a caret while it is still being written.",
|
|
42
42
|
"examples": [],
|
|
43
|
-
"status": "
|
|
43
|
+
"status": "stable",
|
|
44
44
|
"url": "/docs/components/canvas-split-body",
|
|
45
45
|
"mdUrl": "/docs/components/canvas-split-body.md",
|
|
46
46
|
"jsonUrl": "/r/components/canvas-split-body.json",
|
|
47
|
+
"whenToUse": [
|
|
48
|
+
"The scrolling text of the document half, under its header.",
|
|
49
|
+
"A document still streaming, where `writing` trails a caret after the last line."
|
|
50
|
+
],
|
|
51
|
+
"whenNotToUse": [
|
|
52
|
+
"The document's title, version or save state, which sit in the header above it."
|
|
53
|
+
],
|
|
54
|
+
"commonMistakes": [
|
|
55
|
+
"Leaving `writing` true after the last line has landed, so a finished document keeps a caret at the end of it.",
|
|
56
|
+
"Adding your own scroll container around it. It scrolls on its own."
|
|
57
|
+
],
|
|
47
58
|
"specimens": [
|
|
48
59
|
{
|
|
49
60
|
"title": "CanvasSplit",
|
|
@@ -61,6 +72,5 @@
|
|
|
61
72
|
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
62
73
|
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
63
74
|
}
|
|
64
|
-
]
|
|
65
|
-
"todo": true
|
|
75
|
+
]
|
|
66
76
|
}
|
|
@@ -29,10 +29,19 @@
|
|
|
29
29
|
],
|
|
30
30
|
"summary": "The document half of the split: the header, and the body under it.",
|
|
31
31
|
"examples": [],
|
|
32
|
-
"status": "
|
|
32
|
+
"status": "stable",
|
|
33
33
|
"url": "/docs/components/canvas-split-document",
|
|
34
34
|
"mdUrl": "/docs/components/canvas-split-document.md",
|
|
35
35
|
"jsonUrl": "/r/components/canvas-split-document.json",
|
|
36
|
+
"whenToUse": [
|
|
37
|
+
"Wrapping the header and the body so the document sits opposite the conversation rail."
|
|
38
|
+
],
|
|
39
|
+
"whenNotToUse": [
|
|
40
|
+
"Anything on the conversation side of the split."
|
|
41
|
+
],
|
|
42
|
+
"commonMistakes": [
|
|
43
|
+
"Making it the scroll container. The body scrolls on its own beneath the header."
|
|
44
|
+
],
|
|
36
45
|
"specimens": [
|
|
37
46
|
{
|
|
38
47
|
"title": "CanvasSplit",
|
|
@@ -50,6 +59,5 @@
|
|
|
50
59
|
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
51
60
|
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
52
61
|
}
|
|
53
|
-
]
|
|
54
|
-
"todo": true
|
|
62
|
+
]
|
|
55
63
|
}
|
|
@@ -71,10 +71,21 @@
|
|
|
71
71
|
],
|
|
72
72
|
"summary": "What the document is, which version this is, and whether it has been written down yet — with copy and close beside them.",
|
|
73
73
|
"examples": [],
|
|
74
|
-
"status": "
|
|
74
|
+
"status": "stable",
|
|
75
75
|
"url": "/docs/components/canvas-split-header",
|
|
76
76
|
"mdUrl": "/docs/components/canvas-split-header.md",
|
|
77
77
|
"jsonUrl": "/r/components/canvas-split-header.json",
|
|
78
|
+
"whenToUse": [
|
|
79
|
+
"Naming the document on screen and stating which revision is showing.",
|
|
80
|
+
"Giving the canvas a dismiss path, through `onClose`."
|
|
81
|
+
],
|
|
82
|
+
"whenNotToUse": [
|
|
83
|
+
"Document text, which belongs in the body under it."
|
|
84
|
+
],
|
|
85
|
+
"commonMistakes": [
|
|
86
|
+
"Rendering your own saved indicator. `saved` already swaps the status between editing and saved.",
|
|
87
|
+
"Passing `version` as a string. It is a number — which revision is on screen."
|
|
88
|
+
],
|
|
78
89
|
"specimens": [
|
|
79
90
|
{
|
|
80
91
|
"title": "CanvasSplit",
|
|
@@ -92,6 +103,5 @@
|
|
|
92
103
|
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
93
104
|
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
94
105
|
}
|
|
95
|
-
]
|
|
96
|
-
"todo": true
|
|
106
|
+
]
|
|
97
107
|
}
|
|
@@ -40,10 +40,21 @@
|
|
|
40
40
|
],
|
|
41
41
|
"summary": "One line of the document, arriving as it is written.",
|
|
42
42
|
"examples": [],
|
|
43
|
-
"status": "
|
|
43
|
+
"status": "stable",
|
|
44
44
|
"url": "/docs/components/canvas-split-line",
|
|
45
45
|
"mdUrl": "/docs/components/canvas-split-line.md",
|
|
46
46
|
"jsonUrl": "/r/components/canvas-split-line.json",
|
|
47
|
+
"whenToUse": [
|
|
48
|
+
"Each line of a streamed document, so lines arrive one at a time rather than as one block.",
|
|
49
|
+
"A section title inside the document, with `heading`."
|
|
50
|
+
],
|
|
51
|
+
"whenNotToUse": [
|
|
52
|
+
"A block of prose you want reflowed as one unit. This is one line."
|
|
53
|
+
],
|
|
54
|
+
"commonMistakes": [
|
|
55
|
+
"Styling a line to look like a heading by hand instead of setting `heading`, which is what sets it apart.",
|
|
56
|
+
"Pushing a whole block of text through one line, which loses the line-by-line arrival the element exists for."
|
|
57
|
+
],
|
|
47
58
|
"specimens": [
|
|
48
59
|
{
|
|
49
60
|
"title": "CanvasSplit",
|
|
@@ -61,6 +72,5 @@
|
|
|
61
72
|
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
62
73
|
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
63
74
|
}
|
|
64
|
-
]
|
|
65
|
-
"todo": true
|
|
75
|
+
]
|
|
66
76
|
}
|