@cueplusplus/ui 0.3.0 → 0.6.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 +2263 -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/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/_drag.js +59 -0
- package/dist/chrome/_status-bar-item.js +85 -0
- package/dist/chrome/_status-bar.d.ts +15 -0
- package/dist/chrome/_status-bar.js +171 -0
- package/dist/chrome/app-shell.d.ts +120 -2
- package/dist/chrome/app-shell.js +107 -8
- package/dist/chrome/index.d.ts +4 -3
- package/dist/chrome/status-bar.d.ts +87 -4
- package/dist/chrome/status-bar.js +80 -16
- package/dist/chrome/title-bar.d.ts +11 -1
- package/dist/chrome/title-bar.js +1 -3
- package/dist/configurator/_export.js +3 -2
- package/dist/configurator/_overrides.d.ts +1 -1
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/_segments.js +52 -6
- 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/forms/_chassis.d.ts +104 -4
- package/dist/forms/_chassis.js +104 -4
- package/dist/forms/input-group.d.ts +8 -3
- package/dist/forms/input-group.js +8 -3
- package/dist/forms/number-field.d.ts +3 -2
- package/dist/forms/number-field.js +3 -2
- 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 +12 -6
- package/dist/index.js +5 -1
- package/dist/instruments/_data-row.js +118 -0
- package/dist/instruments/data-row.d.ts +94 -0
- package/dist/instruments/data-row.js +151 -0
- package/dist/instruments/data-tree.d.ts +126 -0
- package/dist/instruments/data-tree.js +303 -0
- package/dist/instruments/index.d.ts +5 -2
- package/dist/instruments/index.js +4 -1
- package/dist/instruments/ledger.d.ts +105 -0
- package/dist/instruments/ledger.js +114 -0
- package/dist/instruments/table.d.ts +70 -2
- package/dist/instruments/table.js +133 -39
- 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 +35 -9
- package/dist/primitives/chip.js +97 -11
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +19 -5
- package/dist/system/theme-provider.js +54 -9
- 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 +74 -11
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +6 -2
- package/dist/theming/create-theme.js +32 -5
- package/dist/theming/serialize.d.ts +10 -1
- package/dist/theming/serialize.js +62 -8
- 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-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 +1 -1
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-shell.json +142 -9
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/autocomplete.json +2 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/button.json +1 -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/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-released-icon.json +52 -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/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +24 -12
- 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/color-field.json +2 -0
- package/manifest/components/color-picker.json +2 -0
- package/manifest/components/combobox.json +2 -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 +2 -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/context-breakdown.json +65 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-portal-frame.json +1 -1
- package/manifest/components/data-row.json +203 -0
- package/manifest/components/data-tree.json +151 -0
- package/manifest/components/date-field.json +2 -0
- package/manifest/components/date-picker.json +2 -0
- package/manifest/components/date-range-picker.json +2 -0
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +1 -1
- package/manifest/components/density.json +1 -1
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +1 -1
- package/manifest/components/dropdown-menu.json +1 -1
- 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/end-of-turn-summary.json +77 -0
- package/manifest/components/env-var-input.json +2 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -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/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +1 -1
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +1 -1
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/input-group.json +4 -2
- package/manifest/components/input.json +3 -1
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/ledger.json +187 -0
- package/manifest/components/live-region-announcer.json +79 -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/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 +1 -1
- 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/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/multi-select.json +2 -0
- package/manifest/components/musical-time-input.json +2 -0
- package/manifest/components/node-card.json +1 -1
- package/manifest/components/node-handle.json +1 -1
- package/manifest/components/number-field.json +3 -1
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +9 -7
- package/manifest/components/password-input.json +2 -0
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/popover.json +1 -1
- 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/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/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/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 +7 -7
- package/manifest/components/scrub-input.json +2 -0
- package/manifest/components/search-input.json +9 -7
- package/manifest/components/segmented-control.json +21 -21
- package/manifest/components/select.json +1 -0
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +1 -1
- package/manifest/components/status-bar.json +146 -12
- package/manifest/components/status-dot.json +1 -1
- 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/table-scroll-region.json +6 -0
- package/manifest/components/table.json +88 -4
- package/manifest/components/tags-input.json +2 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/textarea.json +3 -1
- package/manifest/components/theme-provider.json +2 -2
- 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 +2 -2
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/time-field.json +2 -0
- package/manifest/components/timeline.json +1 -1
- package/manifest/components/title-bar.json +1 -1
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +9 -7
- package/manifest/components/toggle.json +2 -0
- package/manifest/components/token-editor.json +1 -1
- 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 +7 -7
- package/manifest/components/tooltip.json +1 -1
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +1 -1
- 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 +2736 -60
- package/manifest/tokens.json +22 -1
- package/package.json +44 -2
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "BranchPicker",
|
|
3
|
+
"slug": "branch-picker",
|
|
4
|
+
"group": "agent-runtime",
|
|
5
|
+
"importPath": "@cueplusplus/ui/agent-runtime",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "The `‹ 2 / 3 ›` stepper that walks a turn's regenerated siblings.\n\nIt keeps a segmented control's two promises — exactly one branch is on show,\nand the set cannot be emptied — without being one. A row of N numbered\nsegments is the wrong shape for a count that is usually 2 and occasionally 9,\nand a segmented control's recessed frame fights the message bubble it sits\nin. Two ghost icon buttons around a mono readout stay quiet until the reader\nhas a reason to look at them.\n\nA single branch is not a choice, so below two branches this renders nothing\nat all: the host can hand it every turn's `branch` without deciding which\nturns deserve a control. It belongs in an agent turn's `footer` — a user\nbubble is a solid accent fill, and a stepper drawn on it is unreadable.\n\nThe picker never moves the thread itself. It reports a direction and the host\nasks the runtime; under an ExternalStore runtime the switch arrives back at\nthe adapter's `setMessages`, which is the host's to write.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "index",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "1-based position of the branch on show — what the readout prints."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "count",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "How many sibling branches exist. Below 2 the picker renders nothing."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "onNavigate",
|
|
26
|
+
"type": "(direction: BranchDirection) => void",
|
|
27
|
+
"required": true,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Called with the direction to move in. Never called past either end."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "previousLabel",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "Previous branch",
|
|
36
|
+
"description": "Accessible name of the previous button. Defaults to `\"Previous branch\"`."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "nextLabel",
|
|
40
|
+
"type": "string",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "Next branch",
|
|
43
|
+
"description": "Accessible name of the next button. Defaults to `\"Next branch\"`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "disabled",
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Block both buttons — a run is in flight and the runtime cannot switch mid-run."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "aria-label",
|
|
54
|
+
"type": "string",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": "Branches",
|
|
57
|
+
"description": "Accessible name for the group. Defaults to `\"Branches\"`."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"typeReferences": [
|
|
61
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\" | \"children\">"
|
|
62
|
+
],
|
|
63
|
+
"subcomponents": [],
|
|
64
|
+
"parts": [],
|
|
65
|
+
"variants": {},
|
|
66
|
+
"defaultVariants": {},
|
|
67
|
+
"tokensUsed": [
|
|
68
|
+
"--cue-fg-subtle",
|
|
69
|
+
"--cue-font-mono",
|
|
70
|
+
"--cue-space-1",
|
|
71
|
+
"--cue-text-micro"
|
|
72
|
+
],
|
|
73
|
+
"summary": "The `‹ 2 / 3 ›` stepper over a turn's regenerated siblings, and nothing at all below two.",
|
|
74
|
+
"examples": [
|
|
75
|
+
{
|
|
76
|
+
"title": "Usage",
|
|
77
|
+
"code": "<Message agent=\"planner\" footer={<BranchPicker index={2} count={3} onNavigate={go} disabled={busy} />}>…</Message>",
|
|
78
|
+
"language": "tsx"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"status": "stable",
|
|
82
|
+
"url": "/docs/components/branch-picker",
|
|
83
|
+
"mdUrl": "/docs/components/branch-picker.md",
|
|
84
|
+
"jsonUrl": "/r/components/branch-picker.json",
|
|
85
|
+
"whenToUse": [
|
|
86
|
+
"An agent turn's `footer`, once a regenerate has given the turn a sibling.",
|
|
87
|
+
"Any host that can move between branches: it reports a direction and lets you ask the runtime."
|
|
88
|
+
],
|
|
89
|
+
"whenNotToUse": [
|
|
90
|
+
"A single branch. It renders nothing, on purpose, so a host can hand it every turn.",
|
|
91
|
+
"Picking between views or modes. That is `SegmentedControl`, which shows every option at once.",
|
|
92
|
+
"Paging through a list. That is `Pagination`; a branch set is one answer with alternatives, not a sequence.",
|
|
93
|
+
"Regenerating. The picker only moves between branches that exist; `useAgentThread().regenerate` makes a new one, and the host draws that control — a ghost `Button` in a turn's footer, as the demo does."
|
|
94
|
+
],
|
|
95
|
+
"commonMistakes": [
|
|
96
|
+
"Putting it in a user bubble's footer. That bubble is a solid accent fill and a ghost stepper on it is unreadable.",
|
|
97
|
+
"Wiring `onNavigate` to a state setter without clamping, when the runtime is the one that knows the count.",
|
|
98
|
+
"Leaving it enabled during a run. Pass `disabled` while the thread is busy, because the runtime will not switch mid-run."
|
|
99
|
+
],
|
|
100
|
+
"specimens": [
|
|
101
|
+
{
|
|
102
|
+
"title": "useAgentThread / ToolCallCard / BranchPicker",
|
|
103
|
+
"group": "agent-runtime",
|
|
104
|
+
"components": [
|
|
105
|
+
"useAgentThread",
|
|
106
|
+
"ToolCallCard",
|
|
107
|
+
"BranchPicker"
|
|
108
|
+
],
|
|
109
|
+
"code": "<ScriptedThread />",
|
|
110
|
+
"note": "The hook reads an assistant-ui runtime and hands back the props the Chat group already takes: `busy`, `disabled`, `onSend` and `onStop` for the composer, `role`, `agent` and `pending` for each turn, `toolCalls` for the cards, `branch` and `switchBranch` for the stepper. No provider is mounted and no borrowed DOM is rendered, so every pixel here is this library's. The thread below plays a fixed script, because a docs page has no model behind it.",
|
|
111
|
+
"interaction": "the script streams once and stops on its own; Stop cancels it mid-sentence, Regenerate answers again under the same question, and the stepper that then appears walks the two answers."
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"title": "BranchPicker",
|
|
115
|
+
"group": "agent-runtime",
|
|
116
|
+
"components": [
|
|
117
|
+
"BranchPicker"
|
|
118
|
+
],
|
|
119
|
+
"code": "<div className=\"flex w-full max-w-[42rem] flex-col gap-(--cue-space-4)\">\n <StatefulPicker />\n <Message\n agent=\"reviewer\"\n author=\"Reviewer\"\n footer={<BranchPicker index={1} count={2} onNavigate={() => {}} disabled />}\n >\n Blocked while a run is in flight: the runtime cannot switch branches mid-run.\n </Message>\n</div>",
|
|
120
|
+
"note": "A stepper rather than a segmented row of numbers: a branch count is usually 2 and occasionally 9, and a segmented frame fights the bubble it sits in. It keeps the two promises that matter, which are that exactly one branch is on show and that the set cannot be emptied, and it renders nothing at all below two branches. It belongs in an agent turn's footer, never a user bubble's.",
|
|
121
|
+
"interaction": "each end button disables itself at its end of the run, and the position is read aloud as well as drawn."
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplitBody",
|
|
3
|
+
"slug": "canvas-split-body",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The document's text, scrolling on its own, with a caret while it is still being\nwritten.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "writing",
|
|
14
|
+
"type": "boolean",
|
|
15
|
+
"required": false,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Trails a caret after the last line while the document is still being written."
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"typeReferences": [
|
|
21
|
+
"ComponentProps<\"div\"> & {\n /** Trails a caret after the last line while the document is still being written. */\n writing?: boolean;\n}"
|
|
22
|
+
],
|
|
23
|
+
"subcomponents": [],
|
|
24
|
+
"parts": [],
|
|
25
|
+
"variants": {},
|
|
26
|
+
"defaultVariants": {},
|
|
27
|
+
"tokensUsed": [
|
|
28
|
+
"--cue-accent",
|
|
29
|
+
"--cue-border",
|
|
30
|
+
"--cue-fg",
|
|
31
|
+
"--cue-fg-muted",
|
|
32
|
+
"--cue-fg-subtle",
|
|
33
|
+
"--cue-ok",
|
|
34
|
+
"--cue-radius-overlay",
|
|
35
|
+
"--cue-text-body"
|
|
36
|
+
],
|
|
37
|
+
"summary": "The document's text, scrolling on its own, with a caret while it is still being written.",
|
|
38
|
+
"examples": [],
|
|
39
|
+
"status": "todo-docs",
|
|
40
|
+
"url": "/docs/components/canvas-split-body",
|
|
41
|
+
"mdUrl": "/docs/components/canvas-split-body.md",
|
|
42
|
+
"jsonUrl": "/r/components/canvas-split-body.json",
|
|
43
|
+
"specimens": [
|
|
44
|
+
{
|
|
45
|
+
"title": "CanvasSplit",
|
|
46
|
+
"group": "elements-knowledge",
|
|
47
|
+
"components": [
|
|
48
|
+
"CanvasSplit",
|
|
49
|
+
"CanvasSplitThread",
|
|
50
|
+
"CanvasSplitMessage",
|
|
51
|
+
"CanvasSplitDocument",
|
|
52
|
+
"CanvasSplitHeader",
|
|
53
|
+
"CanvasSplitBody",
|
|
54
|
+
"CanvasSplitLine"
|
|
55
|
+
],
|
|
56
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
57
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
58
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"todo": true
|
|
62
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplitDocument",
|
|
3
|
+
"slug": "canvas-split-document",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The document half of the split: the header, and the body under it.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"div\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-accent",
|
|
21
|
+
"--cue-border",
|
|
22
|
+
"--cue-fg",
|
|
23
|
+
"--cue-fg-muted",
|
|
24
|
+
"--cue-fg-subtle",
|
|
25
|
+
"--cue-ok",
|
|
26
|
+
"--cue-radius-overlay",
|
|
27
|
+
"--cue-text-body"
|
|
28
|
+
],
|
|
29
|
+
"summary": "The document half of the split: the header, and the body under it.",
|
|
30
|
+
"examples": [],
|
|
31
|
+
"status": "todo-docs",
|
|
32
|
+
"url": "/docs/components/canvas-split-document",
|
|
33
|
+
"mdUrl": "/docs/components/canvas-split-document.md",
|
|
34
|
+
"jsonUrl": "/r/components/canvas-split-document.json",
|
|
35
|
+
"specimens": [
|
|
36
|
+
{
|
|
37
|
+
"title": "CanvasSplit",
|
|
38
|
+
"group": "elements-knowledge",
|
|
39
|
+
"components": [
|
|
40
|
+
"CanvasSplit",
|
|
41
|
+
"CanvasSplitThread",
|
|
42
|
+
"CanvasSplitMessage",
|
|
43
|
+
"CanvasSplitDocument",
|
|
44
|
+
"CanvasSplitHeader",
|
|
45
|
+
"CanvasSplitBody",
|
|
46
|
+
"CanvasSplitLine"
|
|
47
|
+
],
|
|
48
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
49
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
50
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"todo": true
|
|
54
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplitHeader",
|
|
3
|
+
"slug": "canvas-split-header",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "What the document is, which version this is, and whether it has been written down\nyet — with copy and close beside them.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "title",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Document name."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "version",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Which revision is on screen."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "saved",
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Swaps the status between editing and saved."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onClose",
|
|
35
|
+
"type": "(() => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called when the canvas is dismissed."
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"typeReferences": [
|
|
42
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"title\"> & {\n /** Document name. */\n title: string;\n /** Which revision is on screen. */\n version: number;\n /** Swaps the status between editing and saved. */\n saved: boolean;\n /** Called from the copy action. Omit it and the control renders disabled. */\n onCopy?: () => void;\n /** Called when the canvas is dismissed. */\n onClose?: () => void;\n}"
|
|
43
|
+
],
|
|
44
|
+
"subcomponents": [],
|
|
45
|
+
"parts": [],
|
|
46
|
+
"variants": {},
|
|
47
|
+
"defaultVariants": {},
|
|
48
|
+
"tokensUsed": [
|
|
49
|
+
"--cue-accent",
|
|
50
|
+
"--cue-border",
|
|
51
|
+
"--cue-fg",
|
|
52
|
+
"--cue-fg-muted",
|
|
53
|
+
"--cue-fg-subtle",
|
|
54
|
+
"--cue-ok",
|
|
55
|
+
"--cue-radius-overlay",
|
|
56
|
+
"--cue-text-body"
|
|
57
|
+
],
|
|
58
|
+
"summary": "What the document is, which version this is, and whether it has been written down yet — with copy and close beside them.",
|
|
59
|
+
"examples": [],
|
|
60
|
+
"status": "todo-docs",
|
|
61
|
+
"url": "/docs/components/canvas-split-header",
|
|
62
|
+
"mdUrl": "/docs/components/canvas-split-header.md",
|
|
63
|
+
"jsonUrl": "/r/components/canvas-split-header.json",
|
|
64
|
+
"specimens": [
|
|
65
|
+
{
|
|
66
|
+
"title": "CanvasSplit",
|
|
67
|
+
"group": "elements-knowledge",
|
|
68
|
+
"components": [
|
|
69
|
+
"CanvasSplit",
|
|
70
|
+
"CanvasSplitThread",
|
|
71
|
+
"CanvasSplitMessage",
|
|
72
|
+
"CanvasSplitDocument",
|
|
73
|
+
"CanvasSplitHeader",
|
|
74
|
+
"CanvasSplitBody",
|
|
75
|
+
"CanvasSplitLine"
|
|
76
|
+
],
|
|
77
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
78
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
79
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"todo": true
|
|
83
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplitLine",
|
|
3
|
+
"slug": "canvas-split-line",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "One line of the document, arriving as it is written. `heading` sets it apart.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "heading",
|
|
14
|
+
"type": "boolean",
|
|
15
|
+
"required": false,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Renders the line as a heading rather than body text."
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"typeReferences": [
|
|
21
|
+
"ComponentProps<\"p\"> & {\n /** Renders the line as a heading rather than body text. */\n heading?: boolean;\n}"
|
|
22
|
+
],
|
|
23
|
+
"subcomponents": [],
|
|
24
|
+
"parts": [],
|
|
25
|
+
"variants": {},
|
|
26
|
+
"defaultVariants": {},
|
|
27
|
+
"tokensUsed": [
|
|
28
|
+
"--cue-accent",
|
|
29
|
+
"--cue-border",
|
|
30
|
+
"--cue-fg",
|
|
31
|
+
"--cue-fg-muted",
|
|
32
|
+
"--cue-fg-subtle",
|
|
33
|
+
"--cue-ok",
|
|
34
|
+
"--cue-radius-overlay",
|
|
35
|
+
"--cue-text-body"
|
|
36
|
+
],
|
|
37
|
+
"summary": "One line of the document, arriving as it is written.",
|
|
38
|
+
"examples": [],
|
|
39
|
+
"status": "todo-docs",
|
|
40
|
+
"url": "/docs/components/canvas-split-line",
|
|
41
|
+
"mdUrl": "/docs/components/canvas-split-line.md",
|
|
42
|
+
"jsonUrl": "/r/components/canvas-split-line.json",
|
|
43
|
+
"specimens": [
|
|
44
|
+
{
|
|
45
|
+
"title": "CanvasSplit",
|
|
46
|
+
"group": "elements-knowledge",
|
|
47
|
+
"components": [
|
|
48
|
+
"CanvasSplit",
|
|
49
|
+
"CanvasSplitThread",
|
|
50
|
+
"CanvasSplitMessage",
|
|
51
|
+
"CanvasSplitDocument",
|
|
52
|
+
"CanvasSplitHeader",
|
|
53
|
+
"CanvasSplitBody",
|
|
54
|
+
"CanvasSplitLine"
|
|
55
|
+
],
|
|
56
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
57
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
58
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"todo": true
|
|
62
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplitMessage",
|
|
3
|
+
"slug": "canvas-split-message",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "One turn inside the rail — a filled bubble for the person, plain text for the model.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "speaker",
|
|
14
|
+
"type": "\"user\" | \"assistant\"",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "User turns sit right in a bubble, assistant turns run flush left. Emitted as\ndata-speaker for styling from outside; it is deliberately not called role, so the\nARIA attribute stays yours to set."
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"typeReferences": [
|
|
21
|
+
"ComponentProps<\"div\"> & {\n /**\n * User turns sit right in a bubble, assistant turns run flush left. Emitted as\n * data-speaker for styling from outside; it is deliberately not called role, so the\n * ARIA attribute stays yours to set.\n */\n speaker: \"user\" | \"assistant\";\n}"
|
|
22
|
+
],
|
|
23
|
+
"subcomponents": [],
|
|
24
|
+
"parts": [],
|
|
25
|
+
"variants": {},
|
|
26
|
+
"defaultVariants": {},
|
|
27
|
+
"tokensUsed": [
|
|
28
|
+
"--cue-accent",
|
|
29
|
+
"--cue-border",
|
|
30
|
+
"--cue-fg",
|
|
31
|
+
"--cue-fg-muted",
|
|
32
|
+
"--cue-fg-subtle",
|
|
33
|
+
"--cue-ok",
|
|
34
|
+
"--cue-radius-overlay",
|
|
35
|
+
"--cue-text-body"
|
|
36
|
+
],
|
|
37
|
+
"summary": "One turn inside the rail — a filled bubble for the person, plain text for the model.",
|
|
38
|
+
"examples": [],
|
|
39
|
+
"status": "todo-docs",
|
|
40
|
+
"url": "/docs/components/canvas-split-message",
|
|
41
|
+
"mdUrl": "/docs/components/canvas-split-message.md",
|
|
42
|
+
"jsonUrl": "/r/components/canvas-split-message.json",
|
|
43
|
+
"specimens": [
|
|
44
|
+
{
|
|
45
|
+
"title": "CanvasSplit",
|
|
46
|
+
"group": "elements-knowledge",
|
|
47
|
+
"components": [
|
|
48
|
+
"CanvasSplit",
|
|
49
|
+
"CanvasSplitThread",
|
|
50
|
+
"CanvasSplitMessage",
|
|
51
|
+
"CanvasSplitDocument",
|
|
52
|
+
"CanvasSplitHeader",
|
|
53
|
+
"CanvasSplitBody",
|
|
54
|
+
"CanvasSplitLine"
|
|
55
|
+
],
|
|
56
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
57
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
58
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"todo": true
|
|
62
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplitThread",
|
|
3
|
+
"slug": "canvas-split-thread",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The conversation, narrowed to a rail beside the document. It keeps scrolling while\nthe document is written, so the turn that asked for the artifact stays in view.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"div\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-accent",
|
|
21
|
+
"--cue-border",
|
|
22
|
+
"--cue-fg",
|
|
23
|
+
"--cue-fg-muted",
|
|
24
|
+
"--cue-fg-subtle",
|
|
25
|
+
"--cue-ok",
|
|
26
|
+
"--cue-radius-overlay",
|
|
27
|
+
"--cue-text-body"
|
|
28
|
+
],
|
|
29
|
+
"summary": "The conversation, narrowed to a rail beside the document.",
|
|
30
|
+
"examples": [],
|
|
31
|
+
"status": "todo-docs",
|
|
32
|
+
"url": "/docs/components/canvas-split-thread",
|
|
33
|
+
"mdUrl": "/docs/components/canvas-split-thread.md",
|
|
34
|
+
"jsonUrl": "/r/components/canvas-split-thread.json",
|
|
35
|
+
"specimens": [
|
|
36
|
+
{
|
|
37
|
+
"title": "CanvasSplit",
|
|
38
|
+
"group": "elements-knowledge",
|
|
39
|
+
"components": [
|
|
40
|
+
"CanvasSplit",
|
|
41
|
+
"CanvasSplitThread",
|
|
42
|
+
"CanvasSplitMessage",
|
|
43
|
+
"CanvasSplitDocument",
|
|
44
|
+
"CanvasSplitHeader",
|
|
45
|
+
"CanvasSplitBody",
|
|
46
|
+
"CanvasSplitLine"
|
|
47
|
+
],
|
|
48
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
49
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
50
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"todo": true
|
|
54
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CanvasSplit",
|
|
3
|
+
"slug": "canvas-split",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The thread steps aside and the document takes the room, still being written as you\nread.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"div\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-accent",
|
|
21
|
+
"--cue-border",
|
|
22
|
+
"--cue-fg",
|
|
23
|
+
"--cue-fg-muted",
|
|
24
|
+
"--cue-fg-subtle",
|
|
25
|
+
"--cue-ok",
|
|
26
|
+
"--cue-radius-overlay",
|
|
27
|
+
"--cue-text-body"
|
|
28
|
+
],
|
|
29
|
+
"summary": "The thread steps aside and the document takes the room, still being written as you read.",
|
|
30
|
+
"examples": [
|
|
31
|
+
{
|
|
32
|
+
"title": "Usage",
|
|
33
|
+
"code": "import {\n CanvasSplit,\n CanvasSplitBody,\n CanvasSplitDocument,\n CanvasSplitHeader,\n CanvasSplitLine,\n CanvasSplitMessage,\n CanvasSplitThread,\n} from \"@cueplusplus/ui/elements\";\n\n<CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Draft the note</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"note.md\" version={3} saved onCopy={copy} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Migrating to 0.14</CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n</CanvasSplit>",
|
|
34
|
+
"language": "tsx"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"status": "todo-docs",
|
|
38
|
+
"url": "/docs/components/canvas-split",
|
|
39
|
+
"mdUrl": "/docs/components/canvas-split.md",
|
|
40
|
+
"jsonUrl": "/r/components/canvas-split.json",
|
|
41
|
+
"specimens": [
|
|
42
|
+
{
|
|
43
|
+
"title": "CanvasSplit",
|
|
44
|
+
"group": "elements-knowledge",
|
|
45
|
+
"components": [
|
|
46
|
+
"CanvasSplit",
|
|
47
|
+
"CanvasSplitThread",
|
|
48
|
+
"CanvasSplitMessage",
|
|
49
|
+
"CanvasSplitDocument",
|
|
50
|
+
"CanvasSplitHeader",
|
|
51
|
+
"CanvasSplitBody",
|
|
52
|
+
"CanvasSplitLine"
|
|
53
|
+
],
|
|
54
|
+
"code": "<Specimens>\n <Specimen label=\"still writing\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">\n Write up the fixture decision for the front truss.\n </CanvasSplitMessage>\n <CanvasSplitMessage speaker=\"assistant\">\n Drafting it now — spec, power and the load check.\n </CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader title=\"Front truss — fixture spec\" version={3} saved={false} />\n <CanvasSplitBody writing>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n <CanvasSplitLine heading>Power</CanvasSplitLine>\n <CanvasSplitLine>\n 1,180 W each brings the FOH leg to 29.1 A of the 32 A available.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n <Specimen label=\"saved\" wide>\n <CanvasSplit>\n <CanvasSplitThread>\n <CanvasSplitMessage speaker=\"user\">Looks right. Keep it.</CanvasSplitMessage>\n </CanvasSplitThread>\n <CanvasSplitDocument>\n <CanvasSplitHeader\n title=\"Front truss — fixture spec\"\n version={3}\n saved\n onCopy={() => undefined}\n onClose={() => undefined}\n />\n <CanvasSplitBody>\n <CanvasSplitLine heading>Fixture</CanvasSplitLine>\n <CanvasSplitLine>\n Six Robe ESPRITEs on 3.2 m centres, 8.4 m trim, mode 1 at 8 channels each.\n </CanvasSplitLine>\n </CanvasSplitBody>\n </CanvasSplitDocument>\n </CanvasSplit>\n </Specimen>\n</Specimens>",
|
|
55
|
+
"note": "The thread steps aside and the document takes the room. Seven parts: the split itself, a narrowed conversation rail, and a document half with its own header, body and lines — still being written while you read it, which is what the caret at the end of the body is for. On a narrow viewport the two halves stack instead of shrinking.",
|
|
56
|
+
"interaction": "copy and close are named buttons and disable themselves without a handler. `saved` is the only state the header animates, and it swaps a word for a check rather than moving anything."
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"todo": true
|
|
60
|
+
}
|