@cueplusplus/ui 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +307 -0
- package/README.md +2 -19
- package/dist/index.d.ts +2 -2
- package/dist/layout/frames.d.ts +19 -1
- package/dist/layout/frames.js +21 -7
- package/dist/layout/index.d.ts +2 -2
- package/dist/primitives/chip.d.ts +1 -1
- package/dist/system/theme-provider.d.ts +46 -1
- package/dist/system/theme-provider.js +29 -3
- package/manifest/components/accordion.json +16 -4
- package/manifest/components/activity-graph.json +15 -3
- package/manifest/components/agent-card.json +15 -3
- package/manifest/components/agent-handoff.json +14 -3
- package/manifest/components/agent-mode-badge.json +12 -3
- package/manifest/components/agent-pile.json +13 -3
- package/manifest/components/agent-plan.json +13 -3
- package/manifest/components/agent-status.json +14 -3
- package/manifest/components/agent-surface.json +12 -3
- package/manifest/components/alert-dialog.json +14 -3
- package/manifest/components/animated-number.json +12 -3
- package/manifest/components/app-window-frame.json +13 -3
- package/manifest/components/approval-card.json +14 -3
- package/manifest/components/artifact-card.json +14 -3
- package/manifest/components/ask-box.json +13 -3
- package/manifest/components/audience-icon.json +11 -3
- package/manifest/components/autocomplete.json +15 -3
- package/manifest/components/avatar-group.json +15 -4
- package/manifest/components/avatar.json +16 -4
- package/manifest/components/background-inbox.json +14 -3
- package/manifest/components/band.json +14 -4
- package/manifest/components/breadcrumb.json +14 -3
- package/manifest/components/button-group.json +13 -3
- package/manifest/components/calendar.json +15 -4
- package/manifest/components/canvas-split-body.json +13 -3
- package/manifest/components/canvas-split-document.json +11 -3
- package/manifest/components/canvas-split-header.json +13 -3
- package/manifest/components/canvas-split-line.json +13 -3
- package/manifest/components/canvas-split-message.json +13 -3
- package/manifest/components/canvas-split-thread.json +11 -3
- package/manifest/components/canvas-split.json +13 -3
- package/manifest/components/card.json +14 -3
- package/manifest/components/carousel.json +12 -3
- package/manifest/components/catalogue-icon.json +11 -3
- package/manifest/components/channel-beta-icon.json +11 -3
- package/manifest/components/channel-matrix.json +11 -3
- package/manifest/components/channel-released-icon.json +11 -3
- package/manifest/components/chart-container.json +11 -3
- package/manifest/components/chart-ramp.json +12 -3
- package/manifest/components/chart-swatch.json +11 -3
- package/manifest/components/chart-tooltip-content.json +12 -4
- package/manifest/components/chart.json +14 -3
- package/manifest/components/chat-empty-state.json +13 -3
- package/manifest/components/chat-panel-assistant-message.json +11 -3
- package/manifest/components/chat-panel-composer.json +11 -3
- package/manifest/components/chat-panel-messages.json +11 -3
- package/manifest/components/chat-panel-typing.json +11 -3
- package/manifest/components/chat-panel-user-message.json +11 -3
- package/manifest/components/chat-panel.json +13 -3
- package/manifest/components/checkbox-group.json +15 -4
- package/manifest/components/checkpoint-history.json +13 -3
- package/manifest/components/clamp.json +12 -3
- package/manifest/components/cli-tool-icon.json +11 -3
- package/manifest/components/code-diff.json +14 -3
- package/manifest/components/code-runner.json +13 -3
- package/manifest/components/collapsible.json +13 -3
- package/manifest/components/color-area.json +12 -4
- package/manifest/components/color-field.json +12 -3
- package/manifest/components/color-picker.json +14 -4
- package/manifest/components/color-slider.json +12 -3
- package/manifest/components/color-swatch.json +13 -3
- package/manifest/components/colors-section.json +11 -3
- package/manifest/components/combobox.json +15 -4
- package/manifest/components/compaction-row.json +12 -3
- package/manifest/components/comparison-card.json +12 -3
- package/manifest/components/composer-actions.json +11 -3
- package/manifest/components/composer-attach-button.json +11 -3
- package/manifest/components/composer-attachment-chip.json +13 -3
- package/manifest/components/composer-attachments.json +11 -3
- package/manifest/components/composer-bar.json +12 -3
- package/manifest/components/composer-command-item.json +13 -3
- package/manifest/components/composer-context.json +13 -3
- package/manifest/components/composer-input.json +11 -3
- package/manifest/components/composer-menu-item.json +12 -3
- package/manifest/components/composer-menu.json +13 -3
- package/manifest/components/composer-model-item.json +13 -3
- package/manifest/components/composer-model-trigger.json +13 -3
- package/manifest/components/composer-person-item.json +13 -3
- package/manifest/components/composer-send.json +13 -3
- package/manifest/components/composer-toolbar.json +11 -3
- package/manifest/components/composer-voice-button.json +11 -3
- package/manifest/components/composer-voice.json +13 -3
- package/manifest/components/composer.json +14 -4
- package/manifest/components/computer-use.json +13 -3
- package/manifest/components/confidence-marker.json +11 -3
- package/manifest/components/connection-state.json +12 -3
- package/manifest/components/container.json +12 -3
- package/manifest/components/context-breakdown.json +12 -4
- package/manifest/components/context-menu.json +14 -4
- package/manifest/components/context-usage.json +14 -4
- package/manifest/components/conversation-search.json +13 -3
- package/manifest/components/copy-button.json +14 -3
- package/manifest/components/cost-meter.json +12 -3
- package/manifest/components/cue-portal-frame.json +12 -3
- package/manifest/components/data-table-pagination.json +13 -3
- package/manifest/components/data-table-toolbar.json +12 -3
- package/manifest/components/date-field.json +12 -3
- package/manifest/components/date-picker.json +13 -3
- package/manifest/components/date-range-picker.json +11 -3
- package/manifest/components/day-separator.json +12 -3
- package/manifest/components/delegation-card.json +14 -4
- package/manifest/components/density.json +12 -2
- package/manifest/components/description-list.json +15 -4
- package/manifest/components/diagram.json +13 -3
- package/manifest/components/disclosure.json +15 -4
- package/manifest/components/dmx-bar.json +12 -3
- package/manifest/components/dmx-strip.json +11 -3
- package/manifest/components/document-reference.json +13 -3
- package/manifest/components/draft-restore.json +13 -3
- package/manifest/components/drawer.json +13 -4
- package/manifest/components/edit-message.json +13 -3
- package/manifest/components/elements-command-palette.json +13 -3
- package/manifest/components/elements-composer.json +13 -3
- package/manifest/components/elements-data-table.json +11 -3
- package/manifest/components/elements-timeline.json +13 -3
- package/manifest/components/elicitation-form.json +13 -3
- package/manifest/components/empty-state-composer.json +11 -3
- package/manifest/components/empty-state-greeting.json +11 -3
- package/manifest/components/empty-state-suggestion.json +11 -3
- package/manifest/components/empty-state-suggestions.json +11 -3
- package/manifest/components/empty-state.json +15 -4
- package/manifest/components/end-of-turn-summary.json +14 -3
- package/manifest/components/env-var-input.json +15 -4
- package/manifest/components/error-state.json +13 -3
- package/manifest/components/export-dialog.json +10 -2
- package/manifest/components/eyebrow.json +14 -4
- package/manifest/components/feedback-dialog.json +13 -3
- package/manifest/components/field-description.json +15 -4
- package/manifest/components/field-error.json +15 -4
- package/manifest/components/field-label.json +15 -4
- package/manifest/components/file-tree.json +13 -3
- package/manifest/components/file-upload.json +14 -4
- package/manifest/components/flow-background.json +11 -3
- package/manifest/components/flow-controls.json +11 -3
- package/manifest/components/flow-graph.json +13 -3
- package/manifest/components/folder-icon.json +12 -3
- package/manifest/components/frac.json +11 -3
- package/manifest/components/frames.json +14 -0
- package/manifest/components/generation-loader.json +13 -3
- package/manifest/components/generative-ui.json +16 -4
- package/manifest/components/grid.json +14 -3
- package/manifest/components/group-bar.json +13 -3
- package/manifest/components/guardrail-notice.json +13 -3
- package/manifest/components/hover-card.json +14 -4
- package/manifest/components/icon-button.json +15 -3
- package/manifest/components/image-generation.json +13 -3
- package/manifest/components/info-tip.json +15 -4
- package/manifest/components/inline-citation.json +13 -3
- package/manifest/components/input-group.json +15 -4
- package/manifest/components/item.json +15 -4
- package/manifest/components/job-progress.json +14 -3
- package/manifest/components/kbd.json +14 -3
- package/manifest/components/launcher-bubble.json +14 -3
- package/manifest/components/link.json +13 -3
- package/manifest/components/live-region-announcer.json +16 -4
- package/manifest/components/log-viewer.json +15 -3
- package/manifest/components/map-answer.json +13 -3
- package/manifest/components/markdown-text.json +16 -4
- package/manifest/components/math-block.json +13 -3
- package/manifest/components/mcp-server-icon.json +12 -3
- package/manifest/components/mcp-server-panel.json +13 -3
- package/manifest/components/memory-chips.json +12 -3
- package/manifest/components/menubar.json +13 -3
- package/manifest/components/message-actions.json +14 -4
- package/manifest/components/message-attachments.json +12 -3
- package/manifest/components/message-branches.json +12 -3
- package/manifest/components/message-list.json +12 -3
- package/manifest/components/message-pair.json +12 -3
- package/manifest/components/message-queue.json +13 -3
- package/manifest/components/message-timing.json +13 -3
- package/manifest/components/message.json +12 -3
- package/manifest/components/mobile-composer.json +14 -3
- package/manifest/components/model-picker.json +12 -3
- package/manifest/components/multi-select.json +16 -4
- package/manifest/components/musical-time-input.json +11 -3
- package/manifest/components/navigation-menu.json +13 -3
- package/manifest/components/node-card.json +11 -3
- package/manifest/components/node-handle.json +11 -3
- package/manifest/components/number-field.json +15 -3
- package/manifest/components/number-ticker.json +12 -3
- package/manifest/components/onboarding.json +12 -3
- package/manifest/components/otp-field.json +14 -3
- package/manifest/components/page-shell.json +14 -4
- package/manifest/components/pagination.json +14 -3
- package/manifest/components/panel-header.json +14 -4
- package/manifest/components/password-input.json +15 -4
- package/manifest/components/permission-grant.json +13 -3
- package/manifest/components/permission-scopes.json +14 -3
- package/manifest/components/piano-keyboard.json +11 -3
- package/manifest/components/preset-section.json +11 -3
- package/manifest/components/progress.json +14 -3
- package/manifest/components/prompt-library.json +12 -3
- package/manifest/components/queue-dock.json +14 -3
- package/manifest/components/quota-banner.json +12 -3
- package/manifest/components/quote-reply.json +12 -3
- package/manifest/components/radio-group.json +15 -4
- package/manifest/components/radio.json +15 -4
- package/manifest/components/rating.json +15 -4
- package/manifest/components/read-aloud.json +13 -3
- package/manifest/components/reasoning-effort.json +12 -3
- package/manifest/components/reasoning-panel.json +13 -3
- package/manifest/components/recommendation-card.json +12 -3
- package/manifest/components/regenerate-menu.json +12 -3
- package/manifest/components/replay-player.json +14 -3
- package/manifest/components/research-report.json +12 -3
- package/manifest/components/resizable.json +13 -3
- package/manifest/components/retrieval-chunks.json +13 -3
- package/manifest/components/revert-dock.json +14 -3
- package/manifest/components/reviewable-diff.json +12 -3
- package/manifest/components/risk-badge.json +14 -3
- package/manifest/components/schedule-card.json +12 -3
- package/manifest/components/score-breakdown.json +13 -3
- package/manifest/components/scroll-anchor.json +12 -3
- package/manifest/components/scroll-area.json +13 -3
- package/manifest/components/scrollable-tabs-list.json +14 -4
- package/manifest/components/seam-cell.json +13 -4
- package/manifest/components/seam-grid.json +14 -3
- package/manifest/components/seam-list.json +13 -3
- package/manifest/components/search-input.json +15 -4
- package/manifest/components/section-header.json +14 -3
- package/manifest/components/segmented-control.json +15 -3
- package/manifest/components/separator.json +14 -3
- package/manifest/components/settings-panel.json +13 -3
- package/manifest/components/shape-section.json +11 -3
- package/manifest/components/shared-conversation.json +12 -3
- package/manifest/components/sheet.json +14 -4
- package/manifest/components/shimmer-label.json +12 -3
- package/manifest/components/sidebar.json +15 -4
- package/manifest/components/signal-edge.json +13 -4
- package/manifest/components/skeleton.json +16 -4
- package/manifest/components/skill-icon.json +12 -3
- package/manifest/components/slider.json +14 -3
- package/manifest/components/sources.json +12 -3
- package/manifest/components/sparkline.json +14 -4
- package/manifest/components/speaker-identity.json +11 -3
- package/manifest/components/spec-sheet.json +13 -4
- package/manifest/components/spectrum-visualizer.json +11 -3
- package/manifest/components/spinner.json +16 -4
- package/manifest/components/stack-icon.json +12 -3
- package/manifest/components/stack.json +14 -3
- package/manifest/components/stacks-matrix-icon.json +11 -3
- package/manifest/components/stat.json +14 -3
- package/manifest/components/status-dot.json +16 -4
- package/manifest/components/stepper.json +15 -4
- package/manifest/components/stopped-run.json +13 -4
- package/manifest/components/streaming-text.json +12 -3
- package/manifest/components/sub.json +11 -3
- package/manifest/components/subagent-list.json +13 -3
- package/manifest/components/suggestions.json +12 -3
- package/manifest/components/sup.json +11 -3
- package/manifest/components/swap-label.json +12 -3
- package/manifest/components/tags-input.json +15 -4
- package/manifest/components/tail-status.json +14 -3
- package/manifest/components/terminal-block.json +13 -3
- package/manifest/components/terminal-frame.json +14 -3
- package/manifest/components/textarea.json +15 -4
- package/manifest/components/theme-configurator.json +12 -3
- package/manifest/components/theme-provider.json +10 -0
- package/manifest/components/thinking-indicator.json +12 -3
- package/manifest/components/thread-list.json +12 -3
- package/manifest/components/thread-search.json +12 -3
- package/manifest/components/threshold-rail.json +13 -3
- package/manifest/components/time-boundary.json +13 -3
- package/manifest/components/time-field.json +15 -4
- package/manifest/components/timeline-ruler.json +13 -3
- package/manifest/components/timeline.json +13 -3
- package/manifest/components/title-bar.json +13 -3
- package/manifest/components/todo-list.json +12 -3
- package/manifest/components/toggle-group.json +15 -4
- package/manifest/components/toggle.json +15 -4
- package/manifest/components/token-editor.json +12 -3
- package/manifest/components/tool-call.json +13 -3
- package/manifest/components/tool-error.json +14 -4
- package/manifest/components/tool-group.json +12 -3
- package/manifest/components/tool-timeline.json +14 -4
- package/manifest/components/toolbar.json +14 -4
- package/manifest/components/trace-waterfall.json +12 -3
- package/manifest/components/tree-visibility-toggle.json +13 -3
- package/manifest/components/tree.json +14 -3
- package/manifest/components/turn-footer.json +14 -3
- package/manifest/components/two-step-button.json +14 -3
- package/manifest/components/typing-indicator.json +12 -3
- package/manifest/components/universe-grid.json +14 -4
- package/manifest/components/unread-divider.json +14 -4
- package/manifest/components/usage-chart.json +14 -3
- package/manifest/components/verdict-row.json +14 -3
- package/manifest/components/voice-conversation.json +13 -3
- package/manifest/components/web-preview.json +13 -3
- package/manifest/components/web-search.json +13 -3
- package/manifest/components/work-collapse.json +15 -4
- package/manifest/manifest.json +651 -651
- package/manifest/tokens.json +1 -1
- package/package.json +5 -5
|
@@ -106,10 +106,20 @@
|
|
|
106
106
|
"language": "tsx"
|
|
107
107
|
}
|
|
108
108
|
],
|
|
109
|
-
"status": "
|
|
109
|
+
"status": "stable",
|
|
110
110
|
"url": "/docs/components/data-table-toolbar",
|
|
111
111
|
"mdUrl": "/docs/components/data-table-toolbar.md",
|
|
112
112
|
"jsonUrl": "/r/components/data-table-toolbar.json",
|
|
113
|
+
"whenToUse": [
|
|
114
|
+
"Any filterable table.",
|
|
115
|
+
"Anywhere the reader needs to tell an empty table from an over-tight filter — that is what `count`/`total` is for."
|
|
116
|
+
],
|
|
117
|
+
"whenNotToUse": [
|
|
118
|
+
"A table with nothing to filter or act on."
|
|
119
|
+
],
|
|
120
|
+
"commonMistakes": [
|
|
121
|
+
"Leaving out the count. '12/340' beside a filter box is the difference between 'the table is empty' and 'the filter is too tight', and it is the first thing a hand-rolled toolbar drops."
|
|
122
|
+
],
|
|
113
123
|
"specimens": [
|
|
114
124
|
{
|
|
115
125
|
"title": "DataTable recipe",
|
|
@@ -122,6 +132,5 @@
|
|
|
122
132
|
"note": "Not a component: `useCueTable` wires four TanStack v9 features, `DataTableToolbar` and `DataTablePagination` supply the chrome, and the markup stays at the call site. Rendered through the same Table above.",
|
|
123
133
|
"interaction": "the header cells are buttons that toggle sorting; the pager disables at the ends rather than hiding."
|
|
124
134
|
}
|
|
125
|
-
]
|
|
126
|
-
"todo": true
|
|
135
|
+
]
|
|
127
136
|
}
|
|
@@ -73,10 +73,20 @@
|
|
|
73
73
|
"language": "tsx"
|
|
74
74
|
}
|
|
75
75
|
],
|
|
76
|
-
"status": "
|
|
76
|
+
"status": "stable",
|
|
77
77
|
"url": "/docs/components/date-field",
|
|
78
78
|
"mdUrl": "/docs/components/date-field.md",
|
|
79
79
|
"jsonUrl": "/r/components/date-field.json",
|
|
80
|
+
"whenToUse": [
|
|
81
|
+
"A date the user already knows. Typing is faster than three clicks.",
|
|
82
|
+
"Anywhere `03/04` must not be ambiguous — segments cannot produce it."
|
|
83
|
+
],
|
|
84
|
+
"whenNotToUse": [
|
|
85
|
+
"A date the user needs to *find*. Use `DatePicker`, which shows the month."
|
|
86
|
+
],
|
|
87
|
+
"commonMistakes": [
|
|
88
|
+
"Rebuilding it from three number inputs, which loses locale-aware segment order, overflow between segments and the `spinbutton` ARIA."
|
|
89
|
+
],
|
|
80
90
|
"specimens": [
|
|
81
91
|
{
|
|
82
92
|
"title": "DateField",
|
|
@@ -88,6 +98,5 @@
|
|
|
88
98
|
"note": "Typed, one segment at a time, with no calendar. Values are `@internationalized/date` objects, which can hold a day without a timezone attached.",
|
|
89
99
|
"interaction": "each segment is a `spinbutton`: arrow keys step it, typing overflows into the next one."
|
|
90
100
|
}
|
|
91
|
-
]
|
|
92
|
-
"todo": true
|
|
101
|
+
]
|
|
93
102
|
}
|
|
@@ -235,10 +235,21 @@
|
|
|
235
235
|
"language": "tsx"
|
|
236
236
|
}
|
|
237
237
|
],
|
|
238
|
-
"status": "
|
|
238
|
+
"status": "stable",
|
|
239
239
|
"url": "/docs/components/date-picker",
|
|
240
240
|
"mdUrl": "/docs/components/date-picker.md",
|
|
241
241
|
"jsonUrl": "/r/components/date-picker.json",
|
|
242
|
+
"whenToUse": [
|
|
243
|
+
"A date the user wants to see in context — weekends, a month's shape.",
|
|
244
|
+
"Anywhere the trigger must line up with the inputs beside it: it is a control-chassis button at every density."
|
|
245
|
+
],
|
|
246
|
+
"whenNotToUse": [
|
|
247
|
+
"A known date. Use `DateField`.",
|
|
248
|
+
"A span. Use `DateRangePicker`."
|
|
249
|
+
],
|
|
250
|
+
"commonMistakes": [
|
|
251
|
+
"Rendering the calendar outside the kit's `Popover`, which drops it out of the portal contract and renders it at the wrong theme and density."
|
|
252
|
+
],
|
|
242
253
|
"specimens": [
|
|
243
254
|
{
|
|
244
255
|
"title": "DatePicker",
|
|
@@ -250,6 +261,5 @@
|
|
|
250
261
|
"note": "The calendar inside a popover, on the form chassis. The trigger prints the formatted date, or the placeholder when there is none.",
|
|
251
262
|
"interaction": "the popup is portalled through the stamping contract, so it keeps the theme and density of the island it was opened from."
|
|
252
263
|
}
|
|
253
|
-
]
|
|
254
|
-
"todo": true
|
|
264
|
+
]
|
|
255
265
|
}
|
|
@@ -235,10 +235,19 @@
|
|
|
235
235
|
"language": "tsx"
|
|
236
236
|
}
|
|
237
237
|
],
|
|
238
|
-
"status": "
|
|
238
|
+
"status": "stable",
|
|
239
239
|
"url": "/docs/components/date-range-picker",
|
|
240
240
|
"mdUrl": "/docs/components/date-range-picker.md",
|
|
241
241
|
"jsonUrl": "/r/components/date-range-picker.json",
|
|
242
|
+
"whenToUse": [
|
|
243
|
+
"A from/to range — a report window, a run of shows."
|
|
244
|
+
],
|
|
245
|
+
"whenNotToUse": [
|
|
246
|
+
"One day. Use `DatePicker`."
|
|
247
|
+
],
|
|
248
|
+
"commonMistakes": [
|
|
249
|
+
"Expecting it to dismiss like `DatePicker`. A range takes two clicks, so the popup stays open through the first and the caller hears about both — close it from `onValueChange` when `to` arrives if a one-shot flow suits the page."
|
|
250
|
+
],
|
|
242
251
|
"specimens": [
|
|
243
252
|
{
|
|
244
253
|
"title": "DateRangePicker",
|
|
@@ -250,6 +259,5 @@
|
|
|
250
259
|
"note": "Two days in one control, formatted as one string.",
|
|
251
260
|
"interaction": "the first click sets the start, the second the end; clicking before the start restarts the range."
|
|
252
261
|
}
|
|
253
|
-
]
|
|
254
|
-
"todo": true
|
|
262
|
+
]
|
|
255
263
|
}
|
|
@@ -43,10 +43,20 @@
|
|
|
43
43
|
"language": "tsx"
|
|
44
44
|
}
|
|
45
45
|
],
|
|
46
|
-
"status": "
|
|
46
|
+
"status": "stable",
|
|
47
47
|
"url": "/docs/components/day-separator",
|
|
48
48
|
"mdUrl": "/docs/components/day-separator.md",
|
|
49
49
|
"jsonUrl": "/r/components/day-separator.json",
|
|
50
|
+
"whenToUse": [
|
|
51
|
+
"Threads long enough that 'when' stops being obvious."
|
|
52
|
+
],
|
|
53
|
+
"whenNotToUse": [
|
|
54
|
+
"A compaction. Use `CompactionRow`.",
|
|
55
|
+
"A short conversation, where every message is clearly from the same sitting."
|
|
56
|
+
],
|
|
57
|
+
"commonMistakes": [
|
|
58
|
+
"Stamping every message with a full date, which is the noise this replaces."
|
|
59
|
+
],
|
|
50
60
|
"specimens": [
|
|
51
61
|
{
|
|
52
62
|
"title": "DaySeparator",
|
|
@@ -58,6 +68,5 @@
|
|
|
58
68
|
"note": "Chronology in a thread long enough to have some: a rule wherever the day changes, and per-message times that only appear when you go looking. The caller pre-formats both — the element compares the day strings and does no date arithmetic at all.",
|
|
59
69
|
"interaction": "hover a turn and its timestamp fades up beside it. The rules are decorative; nothing here is a control."
|
|
60
70
|
}
|
|
61
|
-
]
|
|
62
|
-
"todo": true
|
|
71
|
+
]
|
|
63
72
|
}
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
"--cue-text-micro",
|
|
169
169
|
"--cue-text-ui"
|
|
170
170
|
],
|
|
171
|
-
"summary": "One delegation, folded into a card.",
|
|
171
|
+
"summary": "One delegation, folded into a card: who was asked, what for, and their transcript behind a disclosure.",
|
|
172
172
|
"examples": [
|
|
173
173
|
{
|
|
174
174
|
"title": "Usage",
|
|
@@ -176,10 +176,21 @@
|
|
|
176
176
|
"language": "tsx"
|
|
177
177
|
}
|
|
178
178
|
],
|
|
179
|
-
"status": "
|
|
179
|
+
"status": "stable",
|
|
180
180
|
"url": "/docs/components/delegation-card",
|
|
181
181
|
"mdUrl": "/docs/components/delegation-card.md",
|
|
182
182
|
"jsonUrl": "/r/components/delegation-card.json",
|
|
183
|
+
"whenToUse": [
|
|
184
|
+
"Any multi-agent run. A tree rendered flat is what turns a transcript into noise.",
|
|
185
|
+
"Anywhere nesting depth must stay legible — the rail takes the sub-agent's colour."
|
|
186
|
+
],
|
|
187
|
+
"whenNotToUse": [
|
|
188
|
+
"A single-agent conversation. Use `Message`."
|
|
189
|
+
],
|
|
190
|
+
"commonMistakes": [
|
|
191
|
+
"Rendering sub-agent turns inline beside the parent's, which loses which turns belong to whom and how deep they are.",
|
|
192
|
+
"Opening every delegation by default, which undoes the fold."
|
|
193
|
+
],
|
|
183
194
|
"specimens": [
|
|
184
195
|
{
|
|
185
196
|
"title": "DelegationCard",
|
|
@@ -191,6 +202,5 @@
|
|
|
191
202
|
"note": "A nested transcript with a per-agent left rail in that agent's colour. Collapsible, because a delegation is usually a detail.",
|
|
192
203
|
"interaction": "the header row is the toggle; the status is spelled out as well as tinted."
|
|
193
204
|
}
|
|
194
|
-
]
|
|
195
|
-
"todo": true
|
|
205
|
+
]
|
|
196
206
|
}
|
|
@@ -85,9 +85,19 @@
|
|
|
85
85
|
"language": "tsx"
|
|
86
86
|
}
|
|
87
87
|
],
|
|
88
|
-
"status": "
|
|
88
|
+
"status": "stable",
|
|
89
89
|
"url": "/docs/components/density",
|
|
90
90
|
"mdUrl": "/docs/components/density.md",
|
|
91
91
|
"jsonUrl": "/r/components/density.json",
|
|
92
|
-
"
|
|
92
|
+
"whenToUse": [
|
|
93
|
+
"A region that should be denser or roomier than the page around it — a compact table inside a comfortable page.",
|
|
94
|
+
"Anywhere nesting must be free: it renders a plain `<div>` and the geometry properties inherit down, so no JS runs."
|
|
95
|
+
],
|
|
96
|
+
"whenNotToUse": [
|
|
97
|
+
"The whole document. Set density on the provider.",
|
|
98
|
+
"One control's height. Use that control's `size`."
|
|
99
|
+
],
|
|
100
|
+
"commonMistakes": [
|
|
101
|
+
"Reading the React context to style something. The DOM attributes are the source of truth; the context exists for the rare JS reads like portal stamping."
|
|
102
|
+
]
|
|
93
103
|
}
|
|
@@ -69,12 +69,24 @@
|
|
|
69
69
|
"--cue-text-label",
|
|
70
70
|
"--cue-text-ui"
|
|
71
71
|
],
|
|
72
|
-
"summary": "The `<dl>` family:
|
|
72
|
+
"summary": "The `<dl>` family: a root, `Term` and `Detail`.",
|
|
73
73
|
"examples": [],
|
|
74
|
-
"status": "
|
|
74
|
+
"status": "stable",
|
|
75
75
|
"url": "/docs/components/description-list",
|
|
76
76
|
"mdUrl": "/docs/components/description-list.md",
|
|
77
77
|
"jsonUrl": "/r/components/description-list.json",
|
|
78
|
+
"whenToUse": [
|
|
79
|
+
"Name/value pairs that belong together: metadata, a settings summary, a specification.",
|
|
80
|
+
"Anywhere the pairing should exist in the accessibility tree rather than only in the layout."
|
|
81
|
+
],
|
|
82
|
+
"whenNotToUse": [
|
|
83
|
+
"Tabular data with more than one value per row. Use a table.",
|
|
84
|
+
"A form. A description list shows values; it does not edit them."
|
|
85
|
+
],
|
|
86
|
+
"commonMistakes": [
|
|
87
|
+
"Faking it with a two-column `Grid`, which loses the `<dl>` semantics that make the pairing real.",
|
|
88
|
+
"Putting a `Detail` with no `Term`, which leaves a value nothing names."
|
|
89
|
+
],
|
|
78
90
|
"specimens": [
|
|
79
91
|
{
|
|
80
92
|
"title": "DescriptionList",
|
|
@@ -86,6 +98,5 @@
|
|
|
86
98
|
"note": "Two layouts: inline pairs for a sidebar, stacked for a page.",
|
|
87
99
|
"interaction": "none."
|
|
88
100
|
}
|
|
89
|
-
]
|
|
90
|
-
"todo": true
|
|
101
|
+
]
|
|
91
102
|
}
|
|
@@ -106,10 +106,21 @@
|
|
|
106
106
|
"language": "tsx"
|
|
107
107
|
}
|
|
108
108
|
],
|
|
109
|
-
"status": "
|
|
109
|
+
"status": "stable",
|
|
110
110
|
"url": "/docs/components/diagram",
|
|
111
111
|
"mdUrl": "/docs/components/diagram.md",
|
|
112
112
|
"jsonUrl": "/r/components/diagram.json",
|
|
113
|
+
"whenToUse": [
|
|
114
|
+
"A rendered graphic that needs a titled frame with zoom, reset and expand around it.",
|
|
115
|
+
"A drawing small enough to sit inline but worth opening full screen, through `onExpand`."
|
|
116
|
+
],
|
|
117
|
+
"whenNotToUse": [
|
|
118
|
+
"Markup you want the element to parse. It never parses or injects markup itself, so whatever renders your chart stays your choice."
|
|
119
|
+
],
|
|
120
|
+
"commonMistakes": [
|
|
121
|
+
"Expecting the zoom controls to clamp. `onZoomIn` and `onZoomOut` only report the press — clamp the range yourself.",
|
|
122
|
+
"Passing `zoom` as a percentage. 1 is fit, and the header prints the percentage for you."
|
|
123
|
+
],
|
|
113
124
|
"specimens": [
|
|
114
125
|
{
|
|
115
126
|
"title": "Diagram",
|
|
@@ -121,6 +132,5 @@
|
|
|
121
132
|
"note": "A drawn answer with a viewport around it: zoom, reset, full-bleed. The graphic is yours — the element supplies the frame, the percentage readout and the transform, and never parses or renders anything itself.",
|
|
122
133
|
"interaction": "four named icon buttons; expand disables itself when no handler is given, which is the honest state for a bench with nowhere to expand to. The scale transition stops under reduced motion."
|
|
123
134
|
}
|
|
124
|
-
]
|
|
125
|
-
"todo": true
|
|
135
|
+
]
|
|
126
136
|
}
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"--cue-text-micro",
|
|
107
107
|
"--cue-text-ui"
|
|
108
108
|
],
|
|
109
|
-
"summary": "The
|
|
109
|
+
"summary": "The 'advanced' idiom: a chromeless `▸ advanced` toggle over the fields most users never touch.",
|
|
110
110
|
"examples": [
|
|
111
111
|
{
|
|
112
112
|
"title": "Usage",
|
|
@@ -114,10 +114,22 @@
|
|
|
114
114
|
"language": "tsx"
|
|
115
115
|
}
|
|
116
116
|
],
|
|
117
|
-
"status": "
|
|
117
|
+
"status": "stable",
|
|
118
118
|
"url": "/docs/components/disclosure",
|
|
119
119
|
"mdUrl": "/docs/components/disclosure.md",
|
|
120
120
|
"jsonUrl": "/r/components/disclosure.json",
|
|
121
|
+
"whenToUse": [
|
|
122
|
+
"Optional fields inside a form — the ones that matter to a few people and would otherwise lengthen the page for everyone.",
|
|
123
|
+
"Anywhere the toggle should read as an annotation on the form rather than a division of it."
|
|
124
|
+
],
|
|
125
|
+
"whenNotToUse": [
|
|
126
|
+
"A section that peers with the sections around it. Use `Collapsible`.",
|
|
127
|
+
"Content the user is expected to read. Progressive disclosure hides it; if it matters, show it."
|
|
128
|
+
],
|
|
129
|
+
"commonMistakes": [
|
|
130
|
+
"Reaching for `Collapsible` instead. It is deliberately not one: giving these fields a summary row that looks like a section header is what makes forms read as twice as long as they are.",
|
|
131
|
+
"Dressing it up with a rim or a fill. It is drawn as quietly as the system can draw anything — one triangle and micro caption ink."
|
|
132
|
+
],
|
|
121
133
|
"specimens": [
|
|
122
134
|
{
|
|
123
135
|
"title": "Disclosure",
|
|
@@ -129,6 +141,5 @@
|
|
|
129
141
|
"note": "The `advanced` idiom: a chromeless mono `▸ label` toggle for the settings most people never open.",
|
|
130
142
|
"interaction": "the caret rotates; nothing else moves."
|
|
131
143
|
}
|
|
132
|
-
]
|
|
133
|
-
"todo": true
|
|
144
|
+
]
|
|
134
145
|
}
|
|
@@ -87,10 +87,20 @@
|
|
|
87
87
|
"language": "tsx"
|
|
88
88
|
}
|
|
89
89
|
],
|
|
90
|
-
"status": "
|
|
90
|
+
"status": "stable",
|
|
91
91
|
"url": "/docs/components/dmx-bar",
|
|
92
92
|
"mdUrl": "/docs/components/dmx-bar.md",
|
|
93
93
|
"jsonUrl": "/r/components/dmx-bar.json",
|
|
94
|
+
"whenToUse": [
|
|
95
|
+
"A live universe readout that must stay cheap enough to leave running at wire rate.",
|
|
96
|
+
"Under a node in a routing graph, where the shape of the output is the reading."
|
|
97
|
+
],
|
|
98
|
+
"whenNotToUse": [
|
|
99
|
+
"Per-channel inspection. Use `ChannelMatrix`."
|
|
100
|
+
],
|
|
101
|
+
"commonMistakes": [
|
|
102
|
+
"Re-rendering it from React state per frame. The whole design is about what happens *between* frames."
|
|
103
|
+
],
|
|
94
104
|
"specimens": [
|
|
95
105
|
{
|
|
96
106
|
"title": "DmxBar",
|
|
@@ -102,6 +112,5 @@
|
|
|
102
112
|
"note": "The whole universe as one 512×1 texture, scaled up with `image-rendering: pixelated` on a true-black ground. Interpolating between two channels would draw levels nobody sent.",
|
|
103
113
|
"interaction": "hovering reports `CH n · v` through a portaled readout, positioned by percentage so it survives a scaled container; the number is written to a span through a ref rather than re-rendering at 40 Hz."
|
|
104
114
|
}
|
|
105
|
-
]
|
|
106
|
-
"todo": true
|
|
115
|
+
]
|
|
107
116
|
}
|
|
@@ -97,10 +97,19 @@
|
|
|
97
97
|
"language": "tsx"
|
|
98
98
|
}
|
|
99
99
|
],
|
|
100
|
-
"status": "
|
|
100
|
+
"status": "stable",
|
|
101
101
|
"url": "/docs/components/dmx-strip",
|
|
102
102
|
"mdUrl": "/docs/components/dmx-strip.md",
|
|
103
103
|
"jsonUrl": "/r/components/dmx-strip.json",
|
|
104
|
+
"whenToUse": [
|
|
105
|
+
"Marketing and docs, where the device should look alive without a wire behind it."
|
|
106
|
+
],
|
|
107
|
+
"whenNotToUse": [
|
|
108
|
+
"Real output. Use `DmxBar`, which draws actual channel data."
|
|
109
|
+
],
|
|
110
|
+
"commonMistakes": [
|
|
111
|
+
"Presenting it as live data. It is a model of a plausible rig — the same canvas the bridge uses, driven by a simulation."
|
|
112
|
+
],
|
|
104
113
|
"specimens": [
|
|
105
114
|
{
|
|
106
115
|
"title": "DmxStrip",
|
|
@@ -112,6 +121,5 @@
|
|
|
112
121
|
"note": "A seeded fixture simulation: mulberry32 from the `seed` prop, so the same seed draws the same rig every time. Values ramp rather than jump.",
|
|
113
122
|
"interaction": "the readout updates through a ref; under prefers-reduced-motion the strip paints one static frame instead of animating."
|
|
114
123
|
}
|
|
115
|
-
]
|
|
116
|
-
"todo": true
|
|
124
|
+
]
|
|
117
125
|
}
|
|
@@ -88,10 +88,21 @@
|
|
|
88
88
|
"language": "tsx"
|
|
89
89
|
}
|
|
90
90
|
],
|
|
91
|
-
"status": "
|
|
91
|
+
"status": "stable",
|
|
92
92
|
"url": "/docs/components/document-reference",
|
|
93
93
|
"mdUrl": "/docs/components/document-reference.md",
|
|
94
94
|
"jsonUrl": "/r/components/document-reference.json",
|
|
95
|
+
"whenToUse": [
|
|
96
|
+
"Showing which passages of a source the answer drew on, each pinned to a page.",
|
|
97
|
+
"Sending the reader to the page an anchor sits on, through `onJump`."
|
|
98
|
+
],
|
|
99
|
+
"whenNotToUse": [
|
|
100
|
+
"A source with no page structure. `pages` and per-page anchors are the shape of the element."
|
|
101
|
+
],
|
|
102
|
+
"commonMistakes": [
|
|
103
|
+
"Assuming every page highlights something. A page with no anchor highlights nothing.",
|
|
104
|
+
"Expecting `onJump` to move `activePage` for you. It reports the page to open; the state stays yours."
|
|
105
|
+
],
|
|
95
106
|
"specimens": [
|
|
96
107
|
{
|
|
97
108
|
"title": "DocumentReference",
|
|
@@ -103,6 +114,5 @@
|
|
|
103
114
|
"note": "One document the answer leans on, with the passages it quoted and the page each is on. Several anchors can cite one page — two of these are both page 31 — so the current one is marked by `aria-current` rather than by matching the number, which is what stops the wrong row lighting up.",
|
|
104
115
|
"interaction": "every quote is a button that reports its page to `onJump`; the active row takes the recessed field ground, the others only on hover."
|
|
105
116
|
}
|
|
106
|
-
]
|
|
107
|
-
"todo": true
|
|
117
|
+
]
|
|
108
118
|
}
|
|
@@ -76,10 +76,21 @@
|
|
|
76
76
|
"language": "tsx"
|
|
77
77
|
}
|
|
78
78
|
],
|
|
79
|
-
"status": "
|
|
79
|
+
"status": "stable",
|
|
80
80
|
"url": "/docs/components/draft-restore",
|
|
81
81
|
"mdUrl": "/docs/components/draft-restore.md",
|
|
82
82
|
"jsonUrl": "/r/components/draft-restore.json",
|
|
83
|
+
"whenToUse": [
|
|
84
|
+
"Returning to a thread that has unsent composer text saved against it.",
|
|
85
|
+
"A one-line preview of that text with when it was last touched beside it."
|
|
86
|
+
],
|
|
87
|
+
"whenNotToUse": [
|
|
88
|
+
"A long draft you want shown in full. `draft` is truncated to one line."
|
|
89
|
+
],
|
|
90
|
+
"commonMistakes": [
|
|
91
|
+
"Passing a timestamp to `savedAt`. It is printed as given, so pre-format it.",
|
|
92
|
+
"Wiring only `onRestore`. Without `onDiscard` the prompt has no way to go away for good."
|
|
93
|
+
],
|
|
83
94
|
"specimens": [
|
|
84
95
|
{
|
|
85
96
|
"title": "DraftRestore",
|
|
@@ -91,6 +102,5 @@
|
|
|
91
102
|
"note": "Come back to a thread and the sentence you never sent is still sitting there. One line of what it was, when it was saved, and the two answers anybody ever has for it. `savedAt` is pre-formatted like every other time in this family — the element does no date maths, so a server-rendered draft and a client-rendered one cannot disagree.",
|
|
92
103
|
"interaction": "restore is a worded button and discard is a labelled icon (`Discard the draft`): the destructive one is the one that has to be aimed at."
|
|
93
104
|
}
|
|
94
|
-
]
|
|
95
|
-
"todo": true
|
|
105
|
+
]
|
|
96
106
|
}
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
"--cue-text-label",
|
|
177
177
|
"--cue-text-ui"
|
|
178
178
|
],
|
|
179
|
-
"summary": "A swipe-dismissable edge panel — the touch-first cousin of
|
|
179
|
+
"summary": "A swipe-dismissable edge panel — the touch-first cousin of `Sheet`.",
|
|
180
180
|
"examples": [
|
|
181
181
|
{
|
|
182
182
|
"title": "Usage",
|
|
@@ -184,10 +184,20 @@
|
|
|
184
184
|
"language": "tsx"
|
|
185
185
|
}
|
|
186
186
|
],
|
|
187
|
-
"status": "
|
|
187
|
+
"status": "stable",
|
|
188
188
|
"url": "/docs/components/drawer",
|
|
189
189
|
"mdUrl": "/docs/components/drawer.md",
|
|
190
190
|
"jsonUrl": "/r/components/drawer.json",
|
|
191
|
+
"whenToUse": [
|
|
192
|
+
"Touch surfaces, where dragging a panel away is the natural dismissal.",
|
|
193
|
+
"Stacked panels: nested-drawer stacking comes from the primitive."
|
|
194
|
+
],
|
|
195
|
+
"whenNotToUse": [
|
|
196
|
+
"Pointer-first consoles. Use `Sheet`."
|
|
197
|
+
],
|
|
198
|
+
"commonMistakes": [
|
|
199
|
+
"Setting the edge and the gesture separately. `swipeDirection` picks both together on purpose, so a drawer can never be dragged in a direction that does not dismiss it."
|
|
200
|
+
],
|
|
191
201
|
"specimens": [
|
|
192
202
|
{
|
|
193
203
|
"title": "Drawer",
|
|
@@ -199,6 +209,5 @@
|
|
|
199
209
|
"note": "The touch-first sheet: a grab handle and a swipe direction.",
|
|
200
210
|
"interaction": "drag the handle to dismiss; on a pointer device it behaves as an ordinary sheet."
|
|
201
211
|
}
|
|
202
|
-
]
|
|
203
|
-
"todo": true
|
|
212
|
+
]
|
|
204
213
|
}
|
|
@@ -111,10 +111,21 @@
|
|
|
111
111
|
"language": "tsx"
|
|
112
112
|
}
|
|
113
113
|
],
|
|
114
|
-
"status": "
|
|
114
|
+
"status": "stable",
|
|
115
115
|
"url": "/docs/components/edit-message",
|
|
116
116
|
"mdUrl": "/docs/components/edit-message.md",
|
|
117
117
|
"jsonUrl": "/r/components/edit-message.json",
|
|
118
|
+
"whenToUse": [
|
|
119
|
+
"Editing a message already in the transcript, where the cost — the replies after it — should be stated before sending.",
|
|
120
|
+
"A turn that reads as a plain bubble until it is clicked, with `onStartEdit` opening the composer."
|
|
121
|
+
],
|
|
122
|
+
"whenNotToUse": [
|
|
123
|
+
"Composing a new message. This swaps between a resting bubble and an edit composer for a turn that already exists."
|
|
124
|
+
],
|
|
125
|
+
"commonMistakes": [
|
|
126
|
+
"Expecting `onCancel` to put the old text back. Restore the original yourself.",
|
|
127
|
+
"Passing `discardedReplies={0}` while replies exist. The warning hides at zero, which silently removes the one thing the element is for."
|
|
128
|
+
],
|
|
118
129
|
"specimens": [
|
|
119
130
|
{
|
|
120
131
|
"title": "EditMessage",
|
|
@@ -126,6 +137,5 @@
|
|
|
126
137
|
"note": "Rewriting a turn you already sent, told up front what it throws away. The count is the point: editing the third message of a thread discards everything after it, and a control that hid that would be a data-loss trap wearing a pencil icon.",
|
|
127
138
|
"interaction": "resting, the whole bubble is the button that starts an edit. Editing, the textarea is labelled and takes cue's focus ring; Send leads and Cancel is a ghost."
|
|
128
139
|
}
|
|
129
|
-
]
|
|
130
|
-
"todo": true
|
|
140
|
+
]
|
|
131
141
|
}
|
|
@@ -102,10 +102,21 @@
|
|
|
102
102
|
"language": "tsx"
|
|
103
103
|
}
|
|
104
104
|
],
|
|
105
|
-
"status": "
|
|
105
|
+
"status": "stable",
|
|
106
106
|
"url": "/docs/components/elements-command-palette",
|
|
107
107
|
"mdUrl": "/docs/components/elements-command-palette.md",
|
|
108
108
|
"jsonUrl": "/r/components/elements-command-palette.json",
|
|
109
|
+
"whenToUse": [
|
|
110
|
+
"A keystroke-away list of every runnable command in the app.",
|
|
111
|
+
"A list where the arrow keys and Enter should already work, because the element owns the key handling."
|
|
112
|
+
],
|
|
113
|
+
"whenNotToUse": [
|
|
114
|
+
"A menu whose grouping you want to control. Groups are derived from the entries and keep first-seen order."
|
|
115
|
+
],
|
|
116
|
+
"commonMistakes": [
|
|
117
|
+
"Adding your own arrow-key and Enter handling. The element owns the key handling and reports where it landed through `onActiveChange`.",
|
|
118
|
+
"Treating `activeId` as the element's own state. It stays yours to hold; the element only reports the move."
|
|
119
|
+
],
|
|
109
120
|
"specimens": [
|
|
110
121
|
{
|
|
111
122
|
"title": "ElementsCommandPalette",
|
|
@@ -117,6 +128,5 @@
|
|
|
117
128
|
"note": "Everything the console can do, one keystroke away and grouped by where it acts. The element owns the arrow keys and reports where they landed, so the highlighted row stays the caller's state — and `aria-activedescendant` moves the highlight without moving focus, which is what keeps typing and walking the list the same gesture. Groups are derived from the commands and keep first-seen order, so the palette cannot be re-ordered by accident.",
|
|
118
129
|
"interaction": "the input is a combobox over a listbox; arrows walk, Enter runs, and a query that filters the active row out drops the descendant reference rather than pointing at nothing."
|
|
119
130
|
}
|
|
120
|
-
]
|
|
121
|
-
"todo": true
|
|
131
|
+
]
|
|
122
132
|
}
|
|
@@ -45,10 +45,21 @@
|
|
|
45
45
|
"language": "tsx"
|
|
46
46
|
}
|
|
47
47
|
],
|
|
48
|
-
"status": "
|
|
48
|
+
"status": "stable",
|
|
49
49
|
"url": "/docs/components/elements-composer",
|
|
50
50
|
"mdUrl": "/docs/components/elements-composer.md",
|
|
51
51
|
"jsonUrl": "/r/components/elements-composer.json",
|
|
52
|
+
"whenToUse": [
|
|
53
|
+
"A full message input that needs attachments, slash commands, mentions, a model picker, voice and context usage together.",
|
|
54
|
+
"A composer that has to show how much of the context window is gone alongside the input itself."
|
|
55
|
+
],
|
|
56
|
+
"whenNotToUse": [
|
|
57
|
+
"A screen that only needs the shape of a composer rather than a working one."
|
|
58
|
+
],
|
|
59
|
+
"commonMistakes": [
|
|
60
|
+
"Putting `ComposerInput` outside `ComposerBar`. The bar is the surface the input, the attachments and the toolbar sit on.",
|
|
61
|
+
"Hanging controls straight off `ComposerToolbar`. They go in `ComposerActions` clusters, one at each end."
|
|
62
|
+
],
|
|
52
63
|
"specimens": [
|
|
53
64
|
{
|
|
54
65
|
"title": "ElementsComposer / ComposerBar / ComposerInput / ComposerToolbar",
|
|
@@ -66,6 +77,5 @@
|
|
|
66
77
|
"note": "The composer assembled from its parts, which is the only way it exists — there is no root that configures it. `ElementsComposer` positions, `ComposerBar` is the paper, and everything between the input and the send button is a facet you either compose in or leave out, so a composer with no attachments carries no attachment code. `ComposerSend` is dim while the input is empty and becomes a stop square while the model is streaming; it is the same button either way, because there is never a moment when both are wanted.",
|
|
67
78
|
"interaction": "`ComposerAttachButton` disables itself when no handler is given rather than rendering a control that does nothing. The send button is labelled by state — `Send message` or `Stop generating` — so the swap is announced and not just drawn."
|
|
68
79
|
}
|
|
69
|
-
]
|
|
70
|
-
"todo": true
|
|
80
|
+
]
|
|
71
81
|
}
|
|
@@ -55,10 +55,19 @@
|
|
|
55
55
|
"language": "tsx"
|
|
56
56
|
}
|
|
57
57
|
],
|
|
58
|
-
"status": "
|
|
58
|
+
"status": "stable",
|
|
59
59
|
"url": "/docs/components/elements-data-table",
|
|
60
60
|
"mdUrl": "/docs/components/elements-data-table.md",
|
|
61
61
|
"jsonUrl": "/r/components/elements-data-table.json",
|
|
62
|
+
"whenToUse": [
|
|
63
|
+
"A short comparison the model produced as part of an answer — model name, context window and cost."
|
|
64
|
+
],
|
|
65
|
+
"whenNotToUse": [
|
|
66
|
+
"A sortable, paginated dataset. `rows` is a small `ModelUsage[]` shaped for an answer."
|
|
67
|
+
],
|
|
68
|
+
"commonMistakes": [
|
|
69
|
+
"Holding `cycle` constant and expecting the row entrance to replay. It is an identity key that remounts the body."
|
|
70
|
+
],
|
|
62
71
|
"specimens": [
|
|
63
72
|
{
|
|
64
73
|
"title": "ElementsDataTable",
|
|
@@ -70,6 +79,5 @@
|
|
|
70
79
|
"note": "A small table the model can answer with directly — three columns, no sorting, no virtualisation, no header menu. It is `ElementsDataTable` because the package already sells a real one at `@cueplusplus/ui/instruments`: that one is a data grid, this one is a paragraph shaped like a grid, and the rename keeps a consumer from reaching for the wrong one.",
|
|
71
80
|
"interaction": "none. `cycle` remounts the body, so a new answer's rows stagger in rather than mutating in place."
|
|
72
81
|
}
|
|
73
|
-
]
|
|
74
|
-
"todo": true
|
|
82
|
+
]
|
|
75
83
|
}
|
|
@@ -57,10 +57,21 @@
|
|
|
57
57
|
"language": "tsx"
|
|
58
58
|
}
|
|
59
59
|
],
|
|
60
|
-
"status": "
|
|
60
|
+
"status": "stable",
|
|
61
61
|
"url": "/docs/components/elements-timeline",
|
|
62
62
|
"mdUrl": "/docs/components/elements-timeline.md",
|
|
63
63
|
"jsonUrl": "/r/components/elements-timeline.json",
|
|
64
|
+
"whenToUse": [
|
|
65
|
+
"Past and scheduled events shown together on one axis.",
|
|
66
|
+
"A run where the scheduled events should be visible before they resolve, with `visibleCount` moving as they do."
|
|
67
|
+
],
|
|
68
|
+
"whenNotToUse": [
|
|
69
|
+
"Work that branches and rejoins rather than running along a single axis."
|
|
70
|
+
],
|
|
71
|
+
"commonMistakes": [
|
|
72
|
+
"Passing only the resolved events. `events` holds past and scheduled together, and `visibleCount` says how many have resolved.",
|
|
73
|
+
"Ordering by resolution rather than chronologically. The events are expected in chronological order."
|
|
74
|
+
],
|
|
64
75
|
"specimens": [
|
|
65
76
|
{
|
|
66
77
|
"title": "ElementsTimeline",
|
|
@@ -72,6 +83,5 @@
|
|
|
72
83
|
"note": "Events on one axis, with what already happened and what is still coming in the same list — `past`, `now` and `future` are one union, so a schedule and a history are the same component. It publishes as `ElementsTimeline` because cue already sells a `Timeline`; the spec asked for `ToolTimeline`, which turned out to be the next bench's name.",
|
|
73
84
|
"interaction": "none. The now marker is the only one that pulses, and it holds still for a reader who asked for less motion."
|
|
74
85
|
}
|
|
75
|
-
]
|
|
76
|
-
"todo": true
|
|
86
|
+
]
|
|
77
87
|
}
|