@cueplusplus/ui 0.2.0 → 0.5.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 +2250 -0
- package/dist/agent-runtime/_glyphs.js +43 -0
- package/dist/agent-runtime/branch-picker.d.ts +45 -0
- package/dist/agent-runtime/branch-picker.js +87 -0
- package/dist/agent-runtime/index.d.ts +4 -0
- package/dist/agent-runtime/index.js +4 -0
- package/dist/agent-runtime/tool-call-card.d.ts +69 -0
- package/dist/agent-runtime/tool-call-card.js +187 -0
- package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
- package/dist/agent-runtime/use-agent-thread.js +251 -0
- package/dist/brand/_chassis.d.ts +1 -1
- package/dist/brand/cue-mark.d.ts +1 -1
- package/dist/brand/cue-mark.js +1 -1
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/message-list.d.ts +6 -0
- package/dist/chat/message-list.js +35 -0
- package/dist/chrome/_edge-scroller.js +12 -1
- package/dist/chrome/_tabs-scroll.d.ts +1 -1
- package/dist/chrome/_tabs-scroll.js +1 -1
- package/dist/chrome/app-shell.d.ts +52 -2
- package/dist/chrome/app-shell.js +80 -8
- package/dist/chrome/index.d.ts +2 -2
- package/dist/configurator/_export.js +3 -2
- package/dist/configurator/_overrides.d.ts +1 -1
- package/dist/configurator/_overrides.js +18 -6
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/_segments.js +37 -2
- package/dist/elements/activity-graph.d.ts +40 -0
- package/dist/elements/activity-graph.js +81 -0
- package/dist/elements/agent-card.d.ts +49 -0
- package/dist/elements/agent-card.js +91 -0
- package/dist/elements/agent-handoff.d.ts +24 -0
- package/dist/elements/agent-handoff.js +53 -0
- package/dist/elements/agent-mode-badge.d.ts +72 -0
- package/dist/elements/agent-mode-badge.js +110 -0
- package/dist/elements/agent-plan.d.ts +24 -0
- package/dist/elements/agent-plan.js +74 -0
- package/dist/elements/agent-status.d.ts +29 -0
- package/dist/elements/agent-status.js +46 -0
- package/dist/elements/agent-surface.d.ts +65 -0
- package/dist/elements/agent-surface.js +68 -0
- package/dist/elements/animated-number.d.ts +86 -0
- package/dist/elements/animated-number.js +118 -0
- package/dist/elements/approval-card.d.ts +40 -0
- package/dist/elements/approval-card.js +78 -0
- package/dist/elements/artifact-card.d.ts +30 -0
- package/dist/elements/artifact-card.js +58 -0
- package/dist/elements/background-inbox.d.ts +39 -0
- package/dist/elements/background-inbox.js +60 -0
- package/dist/elements/canvas-split.d.ts +77 -0
- package/dist/elements/canvas-split.js +138 -0
- package/dist/elements/chart.d.ts +41 -0
- package/dist/elements/chart.js +117 -0
- package/dist/elements/chat-panel.d.ts +46 -0
- package/dist/elements/chat-panel.js +104 -0
- package/dist/elements/checkpoint-history.d.ts +31 -0
- package/dist/elements/checkpoint-history.js +65 -0
- package/dist/elements/clamp.d.ts +90 -0
- package/dist/elements/clamp.js +109 -0
- package/dist/elements/code-diff.d.ts +42 -0
- package/dist/elements/code-diff.js +69 -0
- package/dist/elements/code-runner.d.ts +38 -0
- package/dist/elements/code-runner.js +84 -0
- package/dist/elements/command-palette.d.ts +48 -0
- package/dist/elements/command-palette.js +129 -0
- package/dist/elements/compaction-row.d.ts +63 -0
- package/dist/elements/compaction-row.js +110 -0
- package/dist/elements/comparison-card.d.ts +47 -0
- package/dist/elements/comparison-card.js +69 -0
- package/dist/elements/composer.d.ts +274 -0
- package/dist/elements/composer.js +505 -0
- package/dist/elements/computer-use.d.ts +40 -0
- package/dist/elements/computer-use.js +92 -0
- package/dist/elements/confidence-marker.d.ts +39 -0
- package/dist/elements/confidence-marker.js +64 -0
- package/dist/elements/connection-state.d.ts +29 -0
- package/dist/elements/connection-state.js +66 -0
- package/dist/elements/context-breakdown.d.ts +30 -0
- package/dist/elements/context-breakdown.js +86 -0
- package/dist/elements/context-usage.d.ts +99 -0
- package/dist/elements/context-usage.js +225 -0
- package/dist/elements/conversation-search.d.ts +48 -0
- package/dist/elements/conversation-search.js +88 -0
- package/dist/elements/cost-meter.d.ts +33 -0
- package/dist/elements/cost-meter.js +75 -0
- package/dist/elements/data-table.d.ts +31 -0
- package/dist/elements/data-table.js +67 -0
- package/dist/elements/day-separator.d.ts +34 -0
- package/dist/elements/day-separator.js +50 -0
- package/dist/elements/diagram.d.ts +34 -0
- package/dist/elements/diagram.js +75 -0
- package/dist/elements/document-reference.d.ts +37 -0
- package/dist/elements/document-reference.js +66 -0
- package/dist/elements/draft-restore.d.ts +27 -0
- package/dist/elements/draft-restore.js +54 -0
- package/dist/elements/edit-message.d.ts +36 -0
- package/dist/elements/edit-message.js +77 -0
- package/dist/elements/elements.css +459 -0
- package/dist/elements/elicitation-form.d.ts +48 -0
- package/dist/elements/elicitation-form.js +106 -0
- package/dist/elements/empty-state.d.ts +52 -0
- package/dist/elements/empty-state.js +98 -0
- package/dist/elements/end-of-turn-summary.d.ts +60 -0
- package/dist/elements/end-of-turn-summary.js +75 -0
- package/dist/elements/error-state.d.ts +29 -0
- package/dist/elements/error-state.js +55 -0
- package/dist/elements/feedback-dialog.d.ts +36 -0
- package/dist/elements/feedback-dialog.js +81 -0
- package/dist/elements/file-tree.d.ts +45 -0
- package/dist/elements/file-tree.js +84 -0
- package/dist/elements/flow-graph.d.ts +45 -0
- package/dist/elements/flow-graph.js +78 -0
- package/dist/elements/generative/chart.js +200 -0
- package/dist/elements/generative/faults.js +111 -0
- package/dist/elements/generative/icons.d.ts +41 -0
- package/dist/elements/generative/icons.js +190 -0
- package/dist/elements/generative/intrinsics.js +483 -0
- package/dist/elements/generative/spec.d.ts +110 -0
- package/dist/elements/generative/spec.js +366 -0
- package/dist/elements/generative.css +1145 -0
- package/dist/elements/generative.d.ts +144 -0
- package/dist/elements/generative.js +126 -0
- package/dist/elements/guardrail-notice.d.ts +29 -0
- package/dist/elements/guardrail-notice.js +63 -0
- package/dist/elements/image-generation.d.ts +18 -0
- package/dist/elements/image-generation.js +64 -0
- package/dist/elements/index.d.ts +116 -0
- package/dist/elements/index.js +115 -0
- package/dist/elements/inline-citation.d.ts +43 -0
- package/dist/elements/inline-citation.js +93 -0
- package/dist/elements/job-progress.d.ts +49 -0
- package/dist/elements/job-progress.js +74 -0
- package/dist/elements/launcher-bubble.d.ts +34 -0
- package/dist/elements/launcher-bubble.js +72 -0
- package/dist/elements/live-region-announcer.d.ts +130 -0
- package/dist/elements/live-region-announcer.js +230 -0
- package/dist/elements/loading-state.d.ts +27 -0
- package/dist/elements/loading-state.js +36 -0
- package/dist/elements/map-answer.d.ts +38 -0
- package/dist/elements/map-answer.js +93 -0
- package/dist/elements/markdown.d.ts +131 -0
- package/dist/elements/markdown.js +528 -0
- package/dist/elements/math-block.d.ts +51 -0
- package/dist/elements/math-block.js +70 -0
- package/dist/elements/mcp-server-panel.d.ts +41 -0
- package/dist/elements/mcp-server-panel.js +115 -0
- package/dist/elements/memory-chips.d.ts +30 -0
- package/dist/elements/memory-chips.js +43 -0
- package/dist/elements/message-actions.d.ts +38 -0
- package/dist/elements/message-actions.js +71 -0
- package/dist/elements/message-attachment.d.ts +48 -0
- package/dist/elements/message-attachment.js +63 -0
- package/dist/elements/message-branches.d.ts +25 -0
- package/dist/elements/message-branches.js +65 -0
- package/dist/elements/message-pair.d.ts +33 -0
- package/dist/elements/message-pair.js +65 -0
- package/dist/elements/message-queue.d.ts +31 -0
- package/dist/elements/message-queue.js +80 -0
- package/dist/elements/message-timing.d.ts +33 -0
- package/dist/elements/message-timing.js +37 -0
- package/dist/elements/mobile-composer.d.ts +44 -0
- package/dist/elements/mobile-composer.js +88 -0
- package/dist/elements/model-picker.d.ts +38 -0
- package/dist/elements/model-picker.js +69 -0
- package/dist/elements/number-ticker.d.ts +18 -0
- package/dist/elements/number-ticker.js +47 -0
- package/dist/elements/onboarding.d.ts +30 -0
- package/dist/elements/onboarding.js +75 -0
- package/dist/elements/permission-grant.d.ts +35 -0
- package/dist/elements/permission-grant.js +86 -0
- package/dist/elements/permission-scopes.d.ts +215 -0
- package/dist/elements/permission-scopes.js +249 -0
- package/dist/elements/prompt-library.d.ts +43 -0
- package/dist/elements/prompt-library.js +117 -0
- package/dist/elements/queue-dock.d.ts +101 -0
- package/dist/elements/queue-dock.js +132 -0
- package/dist/elements/quota-banner.d.ts +26 -0
- package/dist/elements/quota-banner.js +66 -0
- package/dist/elements/quote-reply.d.ts +44 -0
- package/dist/elements/quote-reply.js +79 -0
- package/dist/elements/range.d.ts +29 -0
- package/dist/elements/range.js +45 -0
- package/dist/elements/read-aloud.d.ts +45 -0
- package/dist/elements/read-aloud.js +75 -0
- package/dist/elements/reasoning-effort.d.ts +36 -0
- package/dist/elements/reasoning-effort.js +67 -0
- package/dist/elements/reasoning-panel.d.ts +46 -0
- package/dist/elements/reasoning-panel.js +75 -0
- package/dist/elements/recommendation-card.d.ts +45 -0
- package/dist/elements/recommendation-card.js +83 -0
- package/dist/elements/regenerate-menu.d.ts +45 -0
- package/dist/elements/regenerate-menu.js +51 -0
- package/dist/elements/replay.d.ts +217 -0
- package/dist/elements/replay.js +498 -0
- package/dist/elements/research-report.d.ts +38 -0
- package/dist/elements/research-report.js +69 -0
- package/dist/elements/retrieval-chunks.d.ts +43 -0
- package/dist/elements/retrieval-chunks.js +81 -0
- package/dist/elements/revert-dock.d.ts +159 -0
- package/dist/elements/revert-dock.js +327 -0
- package/dist/elements/reviewable-diff.d.ts +45 -0
- package/dist/elements/reviewable-diff.js +110 -0
- package/dist/elements/risk-badge.d.ts +52 -0
- package/dist/elements/risk-badge.js +91 -0
- package/dist/elements/schedule-card.d.ts +42 -0
- package/dist/elements/schedule-card.js +90 -0
- package/dist/elements/score-breakdown.d.ts +47 -0
- package/dist/elements/score-breakdown.js +82 -0
- package/dist/elements/scroll-anchor.d.ts +32 -0
- package/dist/elements/scroll-anchor.js +121 -0
- package/dist/elements/settings-panel.d.ts +52 -0
- package/dist/elements/settings-panel.js +107 -0
- package/dist/elements/shared-conversation.d.ts +39 -0
- package/dist/elements/shared-conversation.js +68 -0
- package/dist/elements/sources.d.ts +33 -0
- package/dist/elements/sources.js +61 -0
- package/dist/elements/speaker-identity.d.ts +32 -0
- package/dist/elements/speaker-identity.js +51 -0
- package/dist/elements/spec-sheet.d.ts +31 -0
- package/dist/elements/spec-sheet.js +45 -0
- package/dist/elements/stopped-run.d.ts +22 -0
- package/dist/elements/stopped-run.js +50 -0
- package/dist/elements/streaming-text.d.ts +31 -0
- package/dist/elements/streaming-text.js +45 -0
- package/dist/elements/subagent-list.d.ts +37 -0
- package/dist/elements/subagent-list.js +79 -0
- package/dist/elements/suggestions.d.ts +30 -0
- package/dist/elements/suggestions.js +36 -0
- package/dist/elements/surfaces.d.ts +85 -0
- package/dist/elements/surfaces.js +107 -0
- package/dist/elements/tail-status.d.ts +131 -0
- package/dist/elements/tail-status.js +94 -0
- package/dist/elements/terminal-block.d.ts +29 -0
- package/dist/elements/terminal-block.js +54 -0
- package/dist/elements/thinking-indicator.d.ts +18 -0
- package/dist/elements/thinking-indicator.js +36 -0
- package/dist/elements/thread-list.d.ts +35 -0
- package/dist/elements/thread-list.js +68 -0
- package/dist/elements/thread-search.d.ts +42 -0
- package/dist/elements/thread-search.js +99 -0
- package/dist/elements/timeline.d.ts +37 -0
- package/dist/elements/timeline.js +46 -0
- package/dist/elements/todo-list.d.ts +42 -0
- package/dist/elements/todo-list.js +59 -0
- package/dist/elements/tool-call.d.ts +41 -0
- package/dist/elements/tool-call.js +85 -0
- package/dist/elements/tool-error.d.ts +39 -0
- package/dist/elements/tool-error.js +76 -0
- package/dist/elements/tool-group.d.ts +45 -0
- package/dist/elements/tool-group.js +71 -0
- package/dist/elements/tool-timeline.d.ts +65 -0
- package/dist/elements/tool-timeline.js +88 -0
- package/dist/elements/trace-waterfall.d.ts +37 -0
- package/dist/elements/trace-waterfall.js +69 -0
- package/dist/elements/transcript-rules.d.ts +67 -0
- package/dist/elements/transcript-rules.js +95 -0
- package/dist/elements/turn-footer.d.ts +74 -0
- package/dist/elements/turn-footer.js +101 -0
- package/dist/elements/typing-indicator.d.ts +16 -0
- package/dist/elements/typing-indicator.js +51 -0
- package/dist/elements/verdict-row.d.ts +89 -0
- package/dist/elements/verdict-row.js +150 -0
- package/dist/elements/vocabulary.d.ts +612 -0
- package/dist/elements/vocabulary.js +611 -0
- package/dist/elements/voice-conversation.d.ts +49 -0
- package/dist/elements/voice-conversation.js +123 -0
- package/dist/elements/web-preview.d.ts +32 -0
- package/dist/elements/web-preview.js +66 -0
- package/dist/elements/web-search.d.ts +37 -0
- package/dist/elements/web-search.js +66 -0
- package/dist/elements/work-collapse.d.ts +103 -0
- package/dist/elements/work-collapse.js +131 -0
- package/dist/icons/containers.d.ts +89 -0
- package/dist/icons/containers.js +295 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +9 -7
- package/dist/index.js +3 -2
- package/dist/instruments/index.d.ts +2 -2
- package/dist/instruments/index.js +2 -2
- package/dist/instruments/table.d.ts +14 -1
- package/dist/instruments/table.js +20 -1
- package/dist/instruments/two-step-button.js +25 -6
- package/dist/layout/sidebar.d.ts +19 -1
- package/dist/layout/sidebar.js +19 -1
- package/dist/primitives/button.js +11 -1
- package/dist/primitives/chip.d.ts +34 -8
- package/dist/primitives/chip.js +97 -11
- package/dist/styles.css +11 -1
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/index.d.ts +3 -3
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +36 -8
- package/dist/system/prepaint.d.ts +20 -2
- package/dist/system/prepaint.js +39 -33
- package/dist/system/theme-provider.d.ts +13 -2
- package/dist/system/theme-provider.js +107 -26
- package/dist/system/use-density.d.ts +9 -0
- package/dist/system/use-density.js +9 -0
- package/dist/system/use-isomorphic-layout-effect.js +19 -1
- package/dist/theming/_presets.d.ts +1 -1
- package/dist/theming/_presets.js +124 -8
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +8 -4
- package/dist/theming/create-theme.js +56 -20
- package/dist/theming/serialize.d.ts +11 -2
- package/dist/theming/serialize.js +87 -9
- package/manifest/components/accordion.json +154 -0
- package/manifest/components/activity-graph.json +88 -0
- package/manifest/components/agent-card.json +120 -0
- package/manifest/components/agent-handoff.json +87 -0
- package/manifest/components/agent-mode-badge.json +84 -0
- package/manifest/components/agent-pile.json +116 -0
- package/manifest/components/agent-plan.json +67 -0
- package/manifest/components/agent-status.json +73 -0
- package/manifest/components/agent-surface.json +78 -0
- package/manifest/components/alert-dialog.json +190 -0
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-bar.json +244 -0
- package/manifest/components/app-shell.json +383 -0
- package/manifest/components/app-window-frame.json +102 -0
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/ask-box.json +209 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/autocomplete.json +197 -0
- package/manifest/components/avatar-group.json +72 -0
- package/manifest/components/avatar.json +95 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/breadcrumb.json +74 -0
- package/manifest/components/button-group.json +74 -0
- package/manifest/components/button.json +126 -0
- package/manifest/components/calendar.json +65 -0
- package/manifest/components/canvas-split-body.json +62 -0
- package/manifest/components/canvas-split-document.json +54 -0
- package/manifest/components/canvas-split-header.json +83 -0
- package/manifest/components/canvas-split-line.json +62 -0
- package/manifest/components/canvas-split-message.json +62 -0
- package/manifest/components/canvas-split-thread.json +54 -0
- package/manifest/components/canvas-split.json +60 -0
- package/manifest/components/card.json +140 -0
- package/manifest/components/carousel.json +200 -0
- package/manifest/components/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-matrix.json +173 -0
- package/manifest/components/channel-released-icon.json +52 -0
- package/manifest/components/chart-container.json +111 -0
- package/manifest/components/chart-ramp.json +72 -0
- package/manifest/components/chart-swatch.json +65 -0
- package/manifest/components/chart-tooltip-content.json +114 -0
- package/manifest/components/chart.json +93 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +51 -0
- package/manifest/components/chat-panel-composer.json +66 -0
- package/manifest/components/chat-panel-messages.json +51 -0
- package/manifest/components/chat-panel-typing.json +51 -0
- package/manifest/components/chat-panel-user-message.json +51 -0
- package/manifest/components/chat-panel.json +57 -0
- package/manifest/components/checkbox-group.json +68 -0
- package/manifest/components/checkbox.json +93 -0
- package/manifest/components/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +144 -0
- package/manifest/components/clamp.json +102 -0
- package/manifest/components/cli-tool-icon.json +52 -0
- package/manifest/components/code-diff.json +87 -0
- package/manifest/components/code-runner.json +97 -0
- package/manifest/components/collapsible.json +120 -0
- package/manifest/components/color-area.json +59 -0
- package/manifest/components/color-field.json +79 -0
- package/manifest/components/color-picker.json +175 -0
- package/manifest/components/color-slider.json +75 -0
- package/manifest/components/color-swatch.json +68 -0
- package/manifest/components/colors-section.json +66 -0
- package/manifest/components/combobox.json +198 -0
- package/manifest/components/command-palette.json +177 -0
- package/manifest/components/compaction-row.json +100 -0
- package/manifest/components/comparison-card.json +83 -0
- package/manifest/components/composer-actions.json +65 -0
- package/manifest/components/composer-attach-button.json +65 -0
- package/manifest/components/composer-attachment-chip.json +75 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +73 -0
- package/manifest/components/composer-command-item.json +79 -0
- package/manifest/components/composer-context.json +67 -0
- package/manifest/components/composer-input.json +73 -0
- package/manifest/components/composer-menu-item.json +72 -0
- package/manifest/components/composer-menu.json +79 -0
- package/manifest/components/composer-model-item.json +75 -0
- package/manifest/components/composer-model-trigger.json +75 -0
- package/manifest/components/composer-person-item.json +79 -0
- package/manifest/components/composer-send.json +80 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +68 -0
- package/manifest/components/composer-voice.json +75 -0
- package/manifest/components/composer.json +176 -0
- package/manifest/components/computer-use.json +84 -0
- package/manifest/components/confidence-marker.json +74 -0
- package/manifest/components/connection-state.json +84 -0
- package/manifest/components/container.json +60 -0
- package/manifest/components/context-breakdown.json +65 -0
- package/manifest/components/context-menu.json +121 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/copy-button.json +93 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-logotype.json +96 -0
- package/manifest/components/cue-mark.json +97 -0
- package/manifest/components/cue-portal-frame.json +55 -0
- package/manifest/components/data-table-pagination.json +83 -0
- package/manifest/components/data-table-toolbar.json +104 -0
- package/manifest/components/date-field.json +80 -0
- package/manifest/components/date-picker.json +191 -0
- package/manifest/components/date-range-picker.json +191 -0
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +144 -0
- package/manifest/components/density.json +58 -0
- package/manifest/components/description-list.json +84 -0
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/dialog.json +198 -0
- package/manifest/components/disclosure.json +109 -0
- package/manifest/components/dmx-bar.json +94 -0
- package/manifest/components/dmx-strip.json +101 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +179 -0
- package/manifest/components/dropdown-menu.json +229 -0
- package/manifest/components/edit-message.json +105 -0
- package/manifest/components/elements-command-palette.json +100 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +68 -0
- package/manifest/components/elements-timeline.json +69 -0
- package/manifest/components/elicitation-form.json +103 -0
- package/manifest/components/empty-state-composer.json +64 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +57 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/empty-state.json +90 -0
- package/manifest/components/end-of-turn-summary.json +77 -0
- package/manifest/components/env-var-input.json +150 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/export-dialog.json +84 -0
- package/manifest/components/eyebrow.json +56 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/field-description.json +63 -0
- package/manifest/components/field-error.json +77 -0
- package/manifest/components/field-label.json +63 -0
- package/manifest/components/field.json +79 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/file-upload.json +159 -0
- package/manifest/components/flow-background.json +50 -0
- package/manifest/components/flow-controls.json +50 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -0
- package/manifest/components/footer.json +112 -0
- package/manifest/components/frac.json +59 -0
- package/manifest/components/generation-loader.json +64 -0
- package/manifest/components/generative-ui.json +93 -0
- package/manifest/components/grid.json +81 -0
- package/manifest/components/group-bar.json +102 -0
- package/manifest/components/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +151 -0
- package/manifest/components/icon-button.json +88 -0
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +98 -0
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/input-group.json +91 -0
- package/manifest/components/input.json +89 -0
- package/manifest/components/item.json +129 -0
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/kbd.json +52 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/link.json +81 -0
- package/manifest/components/live-region-announcer.json +79 -0
- package/manifest/components/log-viewer.json +139 -0
- package/manifest/components/map-answer.json +83 -0
- package/manifest/components/markdown-text.json +94 -0
- package/manifest/components/math-block.json +74 -0
- package/manifest/components/mcp-server-icon.json +52 -0
- package/manifest/components/mcp-server-panel.json +87 -0
- package/manifest/components/memory-chips.json +65 -0
- package/manifest/components/menubar.json +157 -0
- package/manifest/components/message-actions.json +99 -0
- package/manifest/components/message-attachments.json +63 -0
- package/manifest/components/message-branches.json +71 -0
- package/manifest/components/message-list.json +100 -0
- package/manifest/components/message-pair.json +86 -0
- package/manifest/components/message-queue.json +74 -0
- package/manifest/components/message-timing.json +62 -0
- package/manifest/components/message.json +116 -0
- package/manifest/components/meter.json +114 -0
- package/manifest/components/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/multi-select.json +190 -0
- package/manifest/components/musical-time-input.json +113 -0
- package/manifest/components/navigation-menu.json +226 -0
- package/manifest/components/node-card.json +109 -0
- package/manifest/components/node-handle.json +69 -0
- package/manifest/components/number-field.json +107 -0
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +128 -0
- package/manifest/components/page-shell.json +96 -0
- package/manifest/components/pagination.json +92 -0
- package/manifest/components/panel-header.json +77 -0
- package/manifest/components/panel.json +71 -0
- package/manifest/components/password-input.json +119 -0
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/piano-keyboard.json +120 -0
- package/manifest/components/plussie.json +111 -0
- package/manifest/components/popover.json +193 -0
- package/manifest/components/preset-section.json +73 -0
- package/manifest/components/progress.json +95 -0
- package/manifest/components/prompt-library.json +99 -0
- package/manifest/components/queue-dock.json +110 -0
- package/manifest/components/quota-banner.json +94 -0
- package/manifest/components/quote-reply.json +105 -0
- package/manifest/components/radio-group.json +73 -0
- package/manifest/components/radio.json +80 -0
- package/manifest/components/rating.json +141 -0
- package/manifest/components/read-aloud.json +111 -0
- package/manifest/components/reasoning-effort.json +81 -0
- package/manifest/components/reasoning-panel.json +108 -0
- package/manifest/components/recommendation-card.json +107 -0
- package/manifest/components/regenerate-menu.json +89 -0
- package/manifest/components/replay-player.json +102 -0
- package/manifest/components/research-report.json +76 -0
- package/manifest/components/resizable.json +88 -0
- package/manifest/components/retrieval-chunks.json +84 -0
- package/manifest/components/revert-dock.json +150 -0
- package/manifest/components/reviewable-diff.json +93 -0
- package/manifest/components/risk-badge.json +74 -0
- package/manifest/components/row.json +109 -0
- package/manifest/components/schedule-card.json +101 -0
- package/manifest/components/score-breakdown.json +91 -0
- package/manifest/components/scroll-anchor.json +72 -0
- package/manifest/components/scroll-area.json +91 -0
- package/manifest/components/scrollable-tabs-list.json +83 -0
- package/manifest/components/scrub-input.json +200 -0
- package/manifest/components/seam-cell.json +75 -0
- package/manifest/components/seam-grid.json +75 -0
- package/manifest/components/seam-list.json +56 -0
- package/manifest/components/search-input.json +134 -0
- package/manifest/components/section-header.json +112 -0
- package/manifest/components/segmented-control.json +138 -0
- package/manifest/components/select.json +194 -0
- package/manifest/components/separator.json +53 -0
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shape-section.json +66 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/sheet.json +186 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/sidebar.json +198 -0
- package/manifest/components/signal-edge.json +56 -0
- package/manifest/components/skeleton.json +46 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/slider.json +89 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/sparkline.json +76 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/spectrum-visualizer.json +115 -0
- package/manifest/components/spinner.json +61 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stack.json +96 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +87 -0
- package/manifest/components/status-bar.json +58 -0
- package/manifest/components/status-dot.json +78 -0
- package/manifest/components/stepper.json +89 -0
- package/manifest/components/stopped-run.json +81 -0
- package/manifest/components/streaming-text.json +71 -0
- package/manifest/components/sub.json +44 -0
- package/manifest/components/subagent-list.json +88 -0
- package/manifest/components/suggestions.json +84 -0
- package/manifest/components/sup.json +44 -0
- package/manifest/components/swap-label.json +71 -0
- package/manifest/components/switch.json +87 -0
- package/manifest/components/table-scroll-region.json +69 -0
- package/manifest/components/table.json +155 -0
- package/manifest/components/tabs.json +145 -0
- package/manifest/components/tags-input.json +190 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/terminal-frame.json +119 -0
- package/manifest/components/textarea.json +76 -0
- package/manifest/components/theme-configurator.json +124 -0
- package/manifest/components/theme-provider.json +134 -0
- package/manifest/components/thinking-indicator.json +63 -0
- package/manifest/components/thread-list.json +76 -0
- package/manifest/components/thread-search.json +90 -0
- package/manifest/components/threshold-rail.json +160 -0
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/time-field.json +80 -0
- package/manifest/components/timeline-ruler.json +139 -0
- package/manifest/components/timeline.json +115 -0
- package/manifest/components/title-bar.json +82 -0
- package/manifest/components/toast.json +130 -0
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +106 -0
- package/manifest/components/toggle.json +109 -0
- package/manifest/components/token-editor.json +90 -0
- package/manifest/components/tool-call-card.json +200 -0
- package/manifest/components/tool-call.json +119 -0
- package/manifest/components/tool-error.json +114 -0
- package/manifest/components/tool-group.json +83 -0
- package/manifest/components/tool-timeline.json +119 -0
- package/manifest/components/toolbar.json +163 -0
- package/manifest/components/tooltip.json +164 -0
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/tree-visibility-toggle.json +84 -0
- package/manifest/components/tree.json +140 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/two-step-button.json +113 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/universe-grid.json +127 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +124 -0
- package/manifest/components/verdict-row.json +91 -0
- package/manifest/components/voice-conversation.json +109 -0
- package/manifest/components/web-preview.json +87 -0
- package/manifest/components/web-search.json +92 -0
- package/manifest/components/work-collapse.json +102 -0
- package/manifest/manifest.json +4779 -0
- package/manifest/tokens.json +159 -0
- package/package.json +54 -5
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChartRamp",
|
|
3
|
+
"slug": "chart-ramp",
|
|
4
|
+
"group": "charts",
|
|
5
|
+
"importPath": "@cueplusplus/ui/charts",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "A ramp drawn as a strip: equal cells, no gaps, in order.\n\nEqual cells rather than a CSS gradient, because a ramp *is* discrete — a\ngradient would show steps the data cannot address, and would quietly disagree\nwith the same ramp used to fill bars. No seams either, for the same reason the\ncells are equal: a seam reads as a category boundary, and a sequential scale\nhas none.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "colors",
|
|
12
|
+
"type": "readonly string[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The ramp, in order. Any CSS colours."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "label",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "What the ramp encodes. Required: it is the strip's accessible name."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "height",
|
|
26
|
+
"type": "number",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "8",
|
|
29
|
+
"description": "Strip height in px at the 16px root, emitted as `rem`. Defaults to `8`."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-accent",
|
|
41
|
+
"--cue-fg-muted",
|
|
42
|
+
"--cue-font-mono",
|
|
43
|
+
"--cue-radius-control",
|
|
44
|
+
"--cue-space-2",
|
|
45
|
+
"--cue-text-label"
|
|
46
|
+
],
|
|
47
|
+
"summary": "A ramp drawn as a strip: equal cells, no gaps, in order.",
|
|
48
|
+
"examples": [
|
|
49
|
+
{
|
|
50
|
+
"title": "Usage",
|
|
51
|
+
"code": "<ChartRamp label=\"Density\" colors={accentRamp()} />",
|
|
52
|
+
"language": "tsx"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"status": "todo-docs",
|
|
56
|
+
"url": "/docs/components/chart-ramp",
|
|
57
|
+
"mdUrl": "/docs/components/chart-ramp.md",
|
|
58
|
+
"jsonUrl": "/r/components/chart-ramp.json",
|
|
59
|
+
"specimens": [
|
|
60
|
+
{
|
|
61
|
+
"title": "RAMPS / accentRamp()",
|
|
62
|
+
"group": "charts",
|
|
63
|
+
"components": [
|
|
64
|
+
"ChartRamp"
|
|
65
|
+
],
|
|
66
|
+
"code": "<div className=\"flex w-full flex-col gap-(--cue-space-4)\">\n {RAMP_NAMES.map((name) => (\n <ChartRamp\n key={name}\n label={name}\n colors={RAMPS[name].map((band) => band.color)}\n />\n ))}\n {ramp.length === 0 ? null : <ChartRamp label=\"accent, 9 steps\" colors={ramp} />}\n</div>",
|
|
67
|
+
"note": "Ordered scales rather than categorical ones: four ported frequency ramps that never re-hue (a listener who has learnt `bass is red` must not relearn it), and one sequential ramp derived from the live accent.",
|
|
68
|
+
"interaction": "none."
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"todo": true
|
|
72
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChartSwatch",
|
|
3
|
+
"slug": "chart-swatch",
|
|
4
|
+
"group": "charts",
|
|
5
|
+
"importPath": "@cueplusplus/ui/charts",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "One colour and what it means: the atom a chart legend is built from.\n\nThe chip is `aria-hidden` and the label is plain text, so the meaning survives\nwithout colour vision (WCAG 1.4.1). A swatch with no label is decoration and\nannounces nothing at all, which is the honest reading of a colour with no\ncaption.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "color",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The colour to show. Any CSS colour, including a `var()` reference."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "label",
|
|
19
|
+
"type": "ReactNode",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "What the colour stands for. Omit for a bare chip."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"typeReferences": [
|
|
26
|
+
"Omit<React.ComponentPropsWithoutRef<\"span\">, \"children\" | \"color\">"
|
|
27
|
+
],
|
|
28
|
+
"subcomponents": [],
|
|
29
|
+
"parts": [],
|
|
30
|
+
"variants": {},
|
|
31
|
+
"defaultVariants": {},
|
|
32
|
+
"tokensUsed": [
|
|
33
|
+
"--cue-accent",
|
|
34
|
+
"--cue-fg-muted",
|
|
35
|
+
"--cue-font-mono",
|
|
36
|
+
"--cue-radius-control",
|
|
37
|
+
"--cue-space-2",
|
|
38
|
+
"--cue-text-label"
|
|
39
|
+
],
|
|
40
|
+
"summary": "One colour and what it means: the atom a chart legend is built from.",
|
|
41
|
+
"examples": [
|
|
42
|
+
{
|
|
43
|
+
"title": "Usage",
|
|
44
|
+
"code": "{BANDS_7.map((band) => <ChartSwatch key={band.id} color={band.color} label={band.label} />)}",
|
|
45
|
+
"language": "tsx"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"status": "todo-docs",
|
|
49
|
+
"url": "/docs/components/chart-swatch",
|
|
50
|
+
"mdUrl": "/docs/components/chart-swatch.md",
|
|
51
|
+
"jsonUrl": "/r/components/chart-swatch.json",
|
|
52
|
+
"specimens": [
|
|
53
|
+
{
|
|
54
|
+
"title": "chartTones() / ChartSwatch",
|
|
55
|
+
"group": "charts",
|
|
56
|
+
"components": [
|
|
57
|
+
"ChartSwatch"
|
|
58
|
+
],
|
|
59
|
+
"code": "<Panel className=\"flex w-full flex-wrap gap-(--cue-space-4) p-(--cue-space-4)\">\n {CHART_TONE_TOKENS.map((token, index) => (\n <ChartSwatch key={token} color={chartToneVar(index)} label={token} />\n ))}\n {Array.from({ length: 9 }, (_, index) => (\n <ChartSwatch\n key={`extended-${index}`}\n color={chartToneVar(CHART_TONE_TOKENS.length + index)}\n label={`hue ${index + 1}`}\n />\n ))}\n</Panel>",
|
|
60
|
+
"note": "The categorical palette: the theme's six status colours first, then nine generated oklch hues at fixed lightness and chroma for when six run out. Resolved at render, so switching theme reharmonises every chart on the page without a subscription.",
|
|
61
|
+
"interaction": "none. A swatch is a readout."
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"todo": true
|
|
65
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChartTooltipContent",
|
|
3
|
+
"slug": "chart-tooltip-content",
|
|
4
|
+
"group": "charts",
|
|
5
|
+
"importPath": "@cueplusplus/ui/charts",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "The tooltip surface: an overlay, styled like every other overlay.\n\nA chart tooltip *is* a floating surface, so it gets exactly what a Popover\ngets — `surface-2` fill, the overlay rim, one soft shadow — from\n`_surface.ts` rather than from a second, chart-only recipe that would drift.\nWhat it adds is the reading discipline the rest of the system uses for\nnumbers: mono, tabular figures, values right-aligned so a column of them lines\nup under the pointer.\n\nReturns `null` when the pointer is off the plot or the payload is empty,\nbecause recharts keeps the content mounted between hovers.\n\n`formatter` and `labelFormatter` may equally be set on the `<Tooltip>` itself:\nrecharts forwards its own configuration into cloned content, so both spellings\nland here. Everything else in that configuration is dropped rather than\nrendered — see {@link domProps} — which also means a handler passed to this\ncomponent does not reach the surface. Nothing would fire on it anyway: the\ntooltip is drawn under the pointer, not in its path.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "active",
|
|
12
|
+
"type": "boolean",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Whether the pointer is on the plot. Recharts supplies this."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "payload",
|
|
19
|
+
"type": "readonly ChartTooltipEntry[]",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "One entry per series at the hovered index. Recharts supplies this."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "label",
|
|
26
|
+
"type": "ReactNode",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "The hovered category — the x value. Recharts supplies this."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "hideLabel",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "false",
|
|
36
|
+
"description": "Drop the label line, for a chart whose x axis needs no restating."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "hideIndicator",
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "false",
|
|
43
|
+
"description": "Drop the per-row colour chips, for a single-series chart."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "labelFormatter",
|
|
47
|
+
"type": "((label: ReactNode, payload: readonly ChartTooltipEntry[]) => ReactNode)",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Format the label line."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "formatter",
|
|
54
|
+
"type": "((value: string | number | readonly (string | number)[], name: ReactNode, entry: ChartTooltipEntry, index: number) => ReactNode)",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": null,
|
|
57
|
+
"description": "Format one row's value. Return the unit too if you want to own it."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"typeReferences": [
|
|
61
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\" | \"content\">"
|
|
62
|
+
],
|
|
63
|
+
"subcomponents": [],
|
|
64
|
+
"parts": [],
|
|
65
|
+
"variants": {},
|
|
66
|
+
"defaultVariants": {},
|
|
67
|
+
"tokensUsed": [
|
|
68
|
+
"--cue-accent-soft",
|
|
69
|
+
"--cue-bg",
|
|
70
|
+
"--cue-border",
|
|
71
|
+
"--cue-border-overlay",
|
|
72
|
+
"--cue-control-sm",
|
|
73
|
+
"--cue-danger",
|
|
74
|
+
"--cue-fg",
|
|
75
|
+
"--cue-fg-muted",
|
|
76
|
+
"--cue-fg-subtle",
|
|
77
|
+
"--cue-font-mono",
|
|
78
|
+
"--cue-radius-control",
|
|
79
|
+
"--cue-radius-overlay",
|
|
80
|
+
"--cue-scrim",
|
|
81
|
+
"--cue-space-1",
|
|
82
|
+
"--cue-space-2",
|
|
83
|
+
"--cue-space-3",
|
|
84
|
+
"--cue-surface-2",
|
|
85
|
+
"--cue-text-emphasis",
|
|
86
|
+
"--cue-text-label",
|
|
87
|
+
"--cue-text-ui"
|
|
88
|
+
],
|
|
89
|
+
"summary": "The tooltip surface: an overlay, styled like every other overlay.",
|
|
90
|
+
"examples": [
|
|
91
|
+
{
|
|
92
|
+
"title": "Usage",
|
|
93
|
+
"code": "<Tooltip cursor={chartTooltipCursor} content={<ChartTooltipContent />} />",
|
|
94
|
+
"language": "tsx"
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"status": "todo-docs",
|
|
98
|
+
"url": "/docs/components/chart-tooltip-content",
|
|
99
|
+
"mdUrl": "/docs/components/chart-tooltip-content.md",
|
|
100
|
+
"jsonUrl": "/r/components/chart-tooltip-content.json",
|
|
101
|
+
"specimens": [
|
|
102
|
+
{
|
|
103
|
+
"title": "ChartTooltipContent",
|
|
104
|
+
"group": "charts",
|
|
105
|
+
"components": [
|
|
106
|
+
"ChartTooltipContent"
|
|
107
|
+
],
|
|
108
|
+
"code": "<div className=\"w-fit\">\n <ChartTooltipContent\n active\n label=\"19:30\"\n payload={[\n { name: \"output\", value: 68, color: \"var(--cue-accent)\", unit: \"%\" },\n { name: \"dropped\", value: 3, color: \"var(--cue-danger)\", unit: \"%\" },\n ]}\n />\n</div>",
|
|
109
|
+
"note": "The tooltip surface on its own, so a chart drawn from raw recharts parts can still wear it. Shown here mounted rather than hovered.",
|
|
110
|
+
"interaction": "in a chart it is positioned by recharts; the styling is the same either way."
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"todo": true
|
|
114
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Chart",
|
|
3
|
+
"slug": "chart",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Area, line, and bars, with points landing one at a time as the series streams in.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "label",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "What the series measures."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "value",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "The headline figure, pre-formatted. The chart never formats numbers itself."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "delta",
|
|
26
|
+
"type": "string",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Change against the previous window. Renders green unless it starts with a minus sign."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "points",
|
|
33
|
+
"type": "readonly number[]",
|
|
34
|
+
"required": true,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "The full series. The scale is computed from all of it, so the axis does not jump\nwhile streaming."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "visibleCount",
|
|
40
|
+
"type": "number",
|
|
41
|
+
"required": true,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "How many points have arrived."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "variant",
|
|
47
|
+
"type": "\"area\" | \"line\" | \"bars\"",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": "area",
|
|
50
|
+
"description": "Mark type. The last point stays emphasized in all three."
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"typeReferences": [
|
|
54
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"label\"\n | \"value\"\n | \"delta\"\n | \"points\"\n | \"visibleCount\"\n | \"variant\"\n> & {\n /** What the series measures. */\n label: string;\n /** The headline figure, pre-formatted. The chart never formats numbers itself. */\n value: string;\n /** Change against the previous window. Renders green unless it starts with a minus sign. */\n delta?: string;\n /**\n * The full series. The scale is computed from all of it, so the axis does not jump\n * while streaming.\n */\n points: readonly number[];\n /** How many points have arrived. */\n visibleCount: number;\n /** Mark type. The last point stays emphasized in all three. */\n variant?: ChartVariant;\n}"
|
|
55
|
+
],
|
|
56
|
+
"subcomponents": [],
|
|
57
|
+
"parts": [],
|
|
58
|
+
"variants": {},
|
|
59
|
+
"defaultVariants": {},
|
|
60
|
+
"tokensUsed": [
|
|
61
|
+
"--cue-danger",
|
|
62
|
+
"--cue-fg-subtle",
|
|
63
|
+
"--cue-ok",
|
|
64
|
+
"--cue-radius-overlay",
|
|
65
|
+
"--cue-stream",
|
|
66
|
+
"--cue-text-title"
|
|
67
|
+
],
|
|
68
|
+
"summary": "Area, line, and bars, with points landing one at a time as the series streams in.",
|
|
69
|
+
"examples": [
|
|
70
|
+
{
|
|
71
|
+
"title": "Usage",
|
|
72
|
+
"code": "import { Chart } from \"@cueplusplus/ui/elements\";\n\n<Chart\n label=\"Runs this week\"\n value=\"92\"\n delta=\"+34%\"\n points={points}\n visibleCount={points.length}\n variant=\"area\"\n/>",
|
|
73
|
+
"language": "tsx"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"status": "todo-docs",
|
|
77
|
+
"url": "/docs/components/chart",
|
|
78
|
+
"mdUrl": "/docs/components/chart.md",
|
|
79
|
+
"jsonUrl": "/r/components/chart.json",
|
|
80
|
+
"specimens": [
|
|
81
|
+
{
|
|
82
|
+
"title": "Chart",
|
|
83
|
+
"group": "elements-knowledge",
|
|
84
|
+
"components": [
|
|
85
|
+
"Chart"
|
|
86
|
+
],
|
|
87
|
+
"code": "<Specimens>\n <Specimen label=\"area\" wide>\n <Chart\n label=\"FOH leg\"\n value=\"29.1 A\"\n delta=\"+18.1\"\n points={LOAD}\n visibleCount={LOAD.length}\n />\n </Specimen>\n <Specimen label=\"line, still arriving\" wide>\n <Chart label=\"FOH leg\" value=\"17.4 A\" points={LOAD} visibleCount={4} variant=\"line\" />\n </Specimen>\n <Specimen label=\"bars, falling\" wide>\n <Chart\n label=\"Headroom\"\n value=\"2.9 A\"\n delta=\"−8.1\"\n points={[...LOAD].reverse()}\n visibleCount={LOAD.length}\n variant=\"bars\"\n />\n </Specimen>\n</Specimens>",
|
|
88
|
+
"note": "One series, three ways, on one scale: an area, a bare line, or bars with the newest one lit. It draws its own SVG at a fixed viewBox and stretches — there is no charting library under this, which is the point of it being an element rather than an instrument.",
|
|
89
|
+
"interaction": "none, and it is not a substitute for the charts group: no axes, no legend, no tooltip. The `<svg>` carries role='img' and a label built from the figure beside it."
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"todo": true
|
|
93
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChatEmptyState",
|
|
3
|
+
"slug": "chat-empty-state",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The first screen: a greeting, three ways in, and the composer front and center.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"div\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-accent",
|
|
21
|
+
"--cue-fg-subtle",
|
|
22
|
+
"--cue-text-body",
|
|
23
|
+
"--cue-text-emphasis",
|
|
24
|
+
"--cue-text-title"
|
|
25
|
+
],
|
|
26
|
+
"summary": "The first screen: a greeting, three ways in, and the composer front and center.",
|
|
27
|
+
"examples": [
|
|
28
|
+
{
|
|
29
|
+
"title": "Usage",
|
|
30
|
+
"code": "import {\n EmptyState,\n EmptyStateComposer,\n EmptyStateGreeting,\n EmptyStateSuggestion,\n EmptyStateSuggestions,\n} from \"@cueplusplus/ui/elements\";\n\n<EmptyState>\n <EmptyStateGreeting>What are we building?</EmptyStateGreeting>\n <EmptyStateSuggestions>\n {items.map((item, i) => (\n <EmptyStateSuggestion key={item} index={i} onClick={() => send(item)}>\n {item}\n </EmptyStateSuggestion>\n ))}\n </EmptyStateSuggestions>\n <EmptyStateComposer placeholder=\"Ask anything\" onSend={send} />\n</EmptyState>",
|
|
31
|
+
"language": "tsx"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"status": "todo-docs",
|
|
35
|
+
"url": "/docs/components/chat-empty-state",
|
|
36
|
+
"mdUrl": "/docs/components/chat-empty-state.md",
|
|
37
|
+
"jsonUrl": "/r/components/chat-empty-state.json",
|
|
38
|
+
"specimens": [
|
|
39
|
+
{
|
|
40
|
+
"title": "ChatEmptyState",
|
|
41
|
+
"group": "elements-composer",
|
|
42
|
+
"components": [
|
|
43
|
+
"ChatEmptyState",
|
|
44
|
+
"EmptyStateGreeting",
|
|
45
|
+
"EmptyStateSuggestions",
|
|
46
|
+
"EmptyStateSuggestion",
|
|
47
|
+
"EmptyStateComposer"
|
|
48
|
+
],
|
|
49
|
+
"code": "<Specimens>\n <Specimen label=\"greeting, ways in, composer\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>What is the rig doing tonight?</EmptyStateGreeting>\n <EmptyStateSuggestions>\n {OPENERS.map((opener, index) => (\n <EmptyStateSuggestion key={opener} index={index}>\n {opener}\n </EmptyStateSuggestion>\n ))}\n </EmptyStateSuggestions>\n <EmptyStateComposer placeholder=\"Ask about the rig\" onSend={() => undefined} />\n </ChatEmptyState>\n </Specimen>\n <Specimen label=\"greeting only\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>Ready when you are.</EmptyStateGreeting>\n <EmptyStateComposer placeholder=\"Ask about the rig\" />\n </ChatEmptyState>\n </Specimen>\n</Specimens>",
|
|
50
|
+
"note": "The first screen, composed rather than configured: a greeting, some ways in, and a composer-shaped invitation. `EmptyStateComposer` is a display and not a working input — the placeholder is a string and send takes a handler — for the screen whose real composer is somewhere else. The suggestions stagger their entrance from `index`, so the row arrives left to right instead of all at once. Named `ChatEmptyState` because cue already publishes a layout `EmptyState`.",
|
|
51
|
+
"interaction": "each suggestion is a button with cue's focus ring; the greeting is an `h2`, so a screen reader lands on the sentence rather than the pills."
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"todo": true
|
|
55
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChatPanelAssistantMessage",
|
|
3
|
+
"slug": "chat-panel-assistant-message",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "One message from the model: plain text on the leading edge, no bubble.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"p\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-fg-muted",
|
|
21
|
+
"--cue-fg-subtle",
|
|
22
|
+
"--cue-radius-overlay",
|
|
23
|
+
"--cue-surface-3",
|
|
24
|
+
"--cue-text-body",
|
|
25
|
+
"--cue-text-ui"
|
|
26
|
+
],
|
|
27
|
+
"summary": "One message from the model: plain text on the leading edge, no bubble.",
|
|
28
|
+
"examples": [],
|
|
29
|
+
"status": "todo-docs",
|
|
30
|
+
"url": "/docs/components/chat-panel-assistant-message",
|
|
31
|
+
"mdUrl": "/docs/components/chat-panel-assistant-message.md",
|
|
32
|
+
"jsonUrl": "/r/components/chat-panel-assistant-message.json",
|
|
33
|
+
"specimens": [
|
|
34
|
+
{
|
|
35
|
+
"title": "ChatPanel",
|
|
36
|
+
"group": "elements",
|
|
37
|
+
"components": [
|
|
38
|
+
"ChatPanel",
|
|
39
|
+
"ChatPanelMessages",
|
|
40
|
+
"ChatPanelUserMessage",
|
|
41
|
+
"ChatPanelAssistantMessage",
|
|
42
|
+
"ChatPanelTyping",
|
|
43
|
+
"ChatPanelComposer"
|
|
44
|
+
],
|
|
45
|
+
"code": "<Specimens>\n <Specimen label=\"a turn\" wide>\n <ChatPanel>\n <ChatPanelMessages>\n <ChatPanelUserMessage>\n Patch the front truss on universe 3 and tell me what moved.\n </ChatPanelUserMessage>\n {replied ? (\n <ChatPanelAssistantMessage>\n 6 fixtures on channels 1 to 48. Cue 1 holds at 3.0s.\n </ChatPanelAssistantMessage>\n ) : (\n <ChatPanelTyping />\n )}\n </ChatPanelMessages>\n <ChatPanelComposer\n placeholder=\"Ask the rig\"\n onSend={() => setReplied((was) => !was)}\n />\n </ChatPanel>\n </Specimen>\n</Specimens>",
|
|
46
|
+
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
47
|
+
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"todo": true
|
|
51
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChatPanelComposer",
|
|
3
|
+
"slug": "chat-panel-composer",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The panel's composer row. It is a display of a composer rather than a working one —\nthe placeholder is a string and the send button takes a handler.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "placeholder",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Resting text in the input bar."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "onSend",
|
|
21
|
+
"type": "(() => void)",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Called from the send control. Omit it and the control renders disabled."
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"typeReferences": [
|
|
28
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"placeholder\"> & {\n /** Resting text in the input bar. */\n placeholder: string;\n /** Called from the send control. Omit it and the control renders disabled. */\n onSend?: () => void;\n}"
|
|
29
|
+
],
|
|
30
|
+
"subcomponents": [],
|
|
31
|
+
"parts": [],
|
|
32
|
+
"variants": {},
|
|
33
|
+
"defaultVariants": {},
|
|
34
|
+
"tokensUsed": [
|
|
35
|
+
"--cue-fg-muted",
|
|
36
|
+
"--cue-fg-subtle",
|
|
37
|
+
"--cue-radius-overlay",
|
|
38
|
+
"--cue-surface-3",
|
|
39
|
+
"--cue-text-body",
|
|
40
|
+
"--cue-text-ui"
|
|
41
|
+
],
|
|
42
|
+
"summary": "The panel's composer row.",
|
|
43
|
+
"examples": [],
|
|
44
|
+
"status": "todo-docs",
|
|
45
|
+
"url": "/docs/components/chat-panel-composer",
|
|
46
|
+
"mdUrl": "/docs/components/chat-panel-composer.md",
|
|
47
|
+
"jsonUrl": "/r/components/chat-panel-composer.json",
|
|
48
|
+
"specimens": [
|
|
49
|
+
{
|
|
50
|
+
"title": "ChatPanel",
|
|
51
|
+
"group": "elements",
|
|
52
|
+
"components": [
|
|
53
|
+
"ChatPanel",
|
|
54
|
+
"ChatPanelMessages",
|
|
55
|
+
"ChatPanelUserMessage",
|
|
56
|
+
"ChatPanelAssistantMessage",
|
|
57
|
+
"ChatPanelTyping",
|
|
58
|
+
"ChatPanelComposer"
|
|
59
|
+
],
|
|
60
|
+
"code": "<Specimens>\n <Specimen label=\"a turn\" wide>\n <ChatPanel>\n <ChatPanelMessages>\n <ChatPanelUserMessage>\n Patch the front truss on universe 3 and tell me what moved.\n </ChatPanelUserMessage>\n {replied ? (\n <ChatPanelAssistantMessage>\n 6 fixtures on channels 1 to 48. Cue 1 holds at 3.0s.\n </ChatPanelAssistantMessage>\n ) : (\n <ChatPanelTyping />\n )}\n </ChatPanelMessages>\n <ChatPanelComposer\n placeholder=\"Ask the rig\"\n onSend={() => setReplied((was) => !was)}\n />\n </ChatPanel>\n </Specimen>\n</Specimens>",
|
|
61
|
+
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
62
|
+
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"todo": true
|
|
66
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChatPanelMessages",
|
|
3
|
+
"slug": "chat-panel-messages",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The scrolling transcript inside a `ChatPanel`. Bottom-aligned, so a short\nconversation sits on the composer rather than floating at the top of the panel.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"div\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-fg-muted",
|
|
21
|
+
"--cue-fg-subtle",
|
|
22
|
+
"--cue-radius-overlay",
|
|
23
|
+
"--cue-surface-3",
|
|
24
|
+
"--cue-text-body",
|
|
25
|
+
"--cue-text-ui"
|
|
26
|
+
],
|
|
27
|
+
"summary": "The scrolling transcript inside a `ChatPanel`.",
|
|
28
|
+
"examples": [],
|
|
29
|
+
"status": "todo-docs",
|
|
30
|
+
"url": "/docs/components/chat-panel-messages",
|
|
31
|
+
"mdUrl": "/docs/components/chat-panel-messages.md",
|
|
32
|
+
"jsonUrl": "/r/components/chat-panel-messages.json",
|
|
33
|
+
"specimens": [
|
|
34
|
+
{
|
|
35
|
+
"title": "ChatPanel",
|
|
36
|
+
"group": "elements",
|
|
37
|
+
"components": [
|
|
38
|
+
"ChatPanel",
|
|
39
|
+
"ChatPanelMessages",
|
|
40
|
+
"ChatPanelUserMessage",
|
|
41
|
+
"ChatPanelAssistantMessage",
|
|
42
|
+
"ChatPanelTyping",
|
|
43
|
+
"ChatPanelComposer"
|
|
44
|
+
],
|
|
45
|
+
"code": "<Specimens>\n <Specimen label=\"a turn\" wide>\n <ChatPanel>\n <ChatPanelMessages>\n <ChatPanelUserMessage>\n Patch the front truss on universe 3 and tell me what moved.\n </ChatPanelUserMessage>\n {replied ? (\n <ChatPanelAssistantMessage>\n 6 fixtures on channels 1 to 48. Cue 1 holds at 3.0s.\n </ChatPanelAssistantMessage>\n ) : (\n <ChatPanelTyping />\n )}\n </ChatPanelMessages>\n <ChatPanelComposer\n placeholder=\"Ask the rig\"\n onSend={() => setReplied((was) => !was)}\n />\n </ChatPanel>\n </Specimen>\n</Specimens>",
|
|
46
|
+
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
47
|
+
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"todo": true
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ChatPanelTyping",
|
|
3
|
+
"slug": "chat-panel-typing",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The three-dot rest state, for the gap between sending and the first token.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"Omit<ComponentProps<\"div\">, \"children\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-fg-muted",
|
|
21
|
+
"--cue-fg-subtle",
|
|
22
|
+
"--cue-radius-overlay",
|
|
23
|
+
"--cue-surface-3",
|
|
24
|
+
"--cue-text-body",
|
|
25
|
+
"--cue-text-ui"
|
|
26
|
+
],
|
|
27
|
+
"summary": "The three-dot rest state, for the gap between sending and the first token.",
|
|
28
|
+
"examples": [],
|
|
29
|
+
"status": "todo-docs",
|
|
30
|
+
"url": "/docs/components/chat-panel-typing",
|
|
31
|
+
"mdUrl": "/docs/components/chat-panel-typing.md",
|
|
32
|
+
"jsonUrl": "/r/components/chat-panel-typing.json",
|
|
33
|
+
"specimens": [
|
|
34
|
+
{
|
|
35
|
+
"title": "ChatPanel",
|
|
36
|
+
"group": "elements",
|
|
37
|
+
"components": [
|
|
38
|
+
"ChatPanel",
|
|
39
|
+
"ChatPanelMessages",
|
|
40
|
+
"ChatPanelUserMessage",
|
|
41
|
+
"ChatPanelAssistantMessage",
|
|
42
|
+
"ChatPanelTyping",
|
|
43
|
+
"ChatPanelComposer"
|
|
44
|
+
],
|
|
45
|
+
"code": "<Specimens>\n <Specimen label=\"a turn\" wide>\n <ChatPanel>\n <ChatPanelMessages>\n <ChatPanelUserMessage>\n Patch the front truss on universe 3 and tell me what moved.\n </ChatPanelUserMessage>\n {replied ? (\n <ChatPanelAssistantMessage>\n 6 fixtures on channels 1 to 48. Cue 1 holds at 3.0s.\n </ChatPanelAssistantMessage>\n ) : (\n <ChatPanelTyping />\n )}\n </ChatPanelMessages>\n <ChatPanelComposer\n placeholder=\"Ask the rig\"\n onSend={() => setReplied((was) => !was)}\n />\n </ChatPanel>\n </Specimen>\n</Specimens>",
|
|
46
|
+
"note": "The six parts working together, which is what the whole family is for. The person's turn is a filled bubble on the trailing edge, the model's is plain text on the leading one, and the transcript is bottom-aligned so a short conversation sits on the composer rather than floating.",
|
|
47
|
+
"interaction": "the send control is the only live thing here; use it and the reply is replaced by the three-dot pause, then comes back."
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"todo": true
|
|
51
|
+
}
|