@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,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MessageAttachments",
|
|
3
|
+
"slug": "message-attachments",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The files a turn carried, as received rather than as staged. An image gets a preview\ntile that opens; anything else gets a row with its size and, for a document, its\npage count.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "attachments",
|
|
14
|
+
"type": "readonly MessageAttachmentItem[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Files carried by the message. Images render as a thumbnail row, everything else as\na chip."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "onOpen",
|
|
21
|
+
"type": "((id: string) => void)",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Called when an attachment is opened for preview."
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"typeReferences": [
|
|
28
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"attachments\" | \"onOpen\"> & {\n /**\n * Files carried by the message. Images render as a thumbnail row, everything else as\n * a chip.\n */\n attachments: readonly MessageAttachmentItem[];\n /** Called when an attachment is opened for preview. */\n onOpen?: (id: string) => void;\n}"
|
|
29
|
+
],
|
|
30
|
+
"subcomponents": [],
|
|
31
|
+
"parts": [],
|
|
32
|
+
"variants": {},
|
|
33
|
+
"defaultVariants": {},
|
|
34
|
+
"tokensUsed": [
|
|
35
|
+
"--cue-bg",
|
|
36
|
+
"--cue-fg",
|
|
37
|
+
"--cue-fg-muted",
|
|
38
|
+
"--cue-fg-subtle",
|
|
39
|
+
"--cue-radius-overlay",
|
|
40
|
+
"--cue-radius-surface",
|
|
41
|
+
"--cue-surface-2",
|
|
42
|
+
"--cue-text-body"
|
|
43
|
+
],
|
|
44
|
+
"summary": "The files a turn carried, as received rather than as staged.",
|
|
45
|
+
"examples": [],
|
|
46
|
+
"status": "todo-docs",
|
|
47
|
+
"url": "/docs/components/message-attachments",
|
|
48
|
+
"mdUrl": "/docs/components/message-attachments.md",
|
|
49
|
+
"jsonUrl": "/r/components/message-attachments.json",
|
|
50
|
+
"specimens": [
|
|
51
|
+
{
|
|
52
|
+
"title": "MessageAttachments",
|
|
53
|
+
"group": "elements-thread",
|
|
54
|
+
"components": [
|
|
55
|
+
"MessageAttachments"
|
|
56
|
+
],
|
|
57
|
+
"code": "<Specimens>\n <Specimen label=\"image, file, document\" wide>\n <MessageAttachments attachments={ATTACHMENTS} onOpen={() => undefined} />\n </Specimen>\n <Specimen label=\"one document\" wide>\n <MessageAttachments attachments={ATTACHMENTS.slice(2)} />\n </Specimen>\n</Specimens>",
|
|
58
|
+
"note": "Files as received, not as staged: an image gets a preview tile that opens, a document gets its page count, anything else gets its size. Upstream's uploader lives in the composer — this is the read-only other end of it.",
|
|
59
|
+
"interaction": "every row is one button with its name as the label; the image tile grows very slightly under the pointer, and holds still under reduced motion."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"todo": true
|
|
63
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MessageBranches",
|
|
3
|
+
"slug": "message-branches",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Navigate between regenerated versions of the same answer without losing your place.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "variants",
|
|
14
|
+
"type": "readonly string[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Alternate regenerated answers the user can step through."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "index",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Which variant is currently displayed."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onIndexChange",
|
|
28
|
+
"type": "(index: number) => void",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called when the previous or next branch control is pressed."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\"\n>"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg",
|
|
43
|
+
"--cue-fg-subtle",
|
|
44
|
+
"--cue-text-body"
|
|
45
|
+
],
|
|
46
|
+
"summary": "Navigate between regenerated versions of the same answer without losing your place.",
|
|
47
|
+
"examples": [
|
|
48
|
+
{
|
|
49
|
+
"title": "Usage",
|
|
50
|
+
"code": "import { MessageBranches } from \"@cueplusplus/ui/elements\";\n\n<MessageBranches\n variants={[\"First answer.\", \"Second answer.\"]}\n index={0}\n onIndexChange={setIndex}\n/>",
|
|
51
|
+
"language": "tsx"
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"status": "todo-docs",
|
|
55
|
+
"url": "/docs/components/message-branches",
|
|
56
|
+
"mdUrl": "/docs/components/message-branches.md",
|
|
57
|
+
"jsonUrl": "/r/components/message-branches.json",
|
|
58
|
+
"specimens": [
|
|
59
|
+
{
|
|
60
|
+
"title": "MessageBranches",
|
|
61
|
+
"group": "elements-thread",
|
|
62
|
+
"components": [
|
|
63
|
+
"MessageBranches"
|
|
64
|
+
],
|
|
65
|
+
"code": "<Specimens>\n <Specimen label=\"two versions\" wide>\n <MessageBranches variants={BRANCHES} index={branch} onIndexChange={setBranch} />\n </Specimen>\n <Specimen label=\"one version — nowhere to go\" wide>\n <MessageBranches\n variants={BRANCHES.slice(0, 1)}\n index={0}\n onIndexChange={() => undefined}\n />\n </Specimen>\n</Specimens>",
|
|
66
|
+
"note": "Two answers to the same question, and a way through them that does not lose your place. The counter is the whole affordance — `2 / 2` is what tells you a second version exists at all — and it wraps at both ends rather than dead-ending.",
|
|
67
|
+
"interaction": "both arrows are named and go disabled when there is only one version, which is the honest state for a turn nobody has regenerated."
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"todo": true
|
|
71
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MessageList",
|
|
3
|
+
"slug": "message-list",
|
|
4
|
+
"group": "chat",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "The transcript scroller: sticks to the bottom, and stops fighting you the\nmoment you scroll up.\n\nFollowing is a *mode*, not a scroll position. While pinned to the bottom the\nview follows new turns; scroll up to read something and it lets go and offers\na \"jump to latest\" pill instead — because a stream that yanks the viewport\nmid-sentence is the single most common reason people stop reading a chat\npane. Coming back to the bottom re-arms it.\n\nIt follows a turn that is still growing, too — the items container is watched\nfor growth, so a streaming bubble keeps the bottom in view without the host\nadding anything, while something merely collapsing leaves the view alone. And\nwhen you have scrolled up, a turn that grows offers the pill instead of\npulling you down.\n\nDeliberately **not** virtualised. A virtualiser needs a measurable row height\nand chat turns are variable-height by nature; the cost of getting that wrong\n(jumping scrollbars) is worse than the cost of a few hundred DOM nodes. When\na thread really is unbounded, page it — do not virtualise it.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "children",
|
|
12
|
+
"type": "ReactNode",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The turns, oldest first — normally {@link Message }s."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "follow",
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "true",
|
|
22
|
+
"description": "Stick to the bottom as turns arrive. Defaults to `true`."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "height",
|
|
26
|
+
"type": "number",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Fixed height in px at the 16px root, emitted as rem. Omit to fill the parent."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "jumpLabel",
|
|
33
|
+
"type": "ReactNode",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "Jump to latest",
|
|
36
|
+
"description": "Label on the catch-up pill. Defaults to `\"Jump to latest\"`."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "emptyLabel",
|
|
40
|
+
"type": "ReactNode",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "No messages yet",
|
|
43
|
+
"description": "What to say before the first turn. Defaults to `\"No messages yet\"`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "aria-label",
|
|
47
|
+
"type": "string",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Accessible name for the transcript. Required in practice — name the thread."
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"typeReferences": [
|
|
54
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"onScroll\">"
|
|
55
|
+
],
|
|
56
|
+
"subcomponents": [],
|
|
57
|
+
"parts": [],
|
|
58
|
+
"variants": {},
|
|
59
|
+
"defaultVariants": {},
|
|
60
|
+
"tokensUsed": [
|
|
61
|
+
"--cue-accent",
|
|
62
|
+
"--cue-border-overlay",
|
|
63
|
+
"--cue-fg",
|
|
64
|
+
"--cue-fg-subtle",
|
|
65
|
+
"--cue-font-mono",
|
|
66
|
+
"--cue-icon-sm",
|
|
67
|
+
"--cue-radius-control",
|
|
68
|
+
"--cue-space-2",
|
|
69
|
+
"--cue-space-4",
|
|
70
|
+
"--cue-space-6",
|
|
71
|
+
"--cue-surface-2",
|
|
72
|
+
"--cue-text-label",
|
|
73
|
+
"--cue-text-ui"
|
|
74
|
+
],
|
|
75
|
+
"summary": "The transcript scroller: sticks to the bottom, and stops fighting you the moment you scroll up.",
|
|
76
|
+
"examples": [
|
|
77
|
+
{
|
|
78
|
+
"title": "Usage",
|
|
79
|
+
"code": "<MessageList aria-label=\"Thread\" height={480}>\n {turns.map((t) => <Message key={t.id} agent={t.agent}>{t.text}</Message>)}\n</MessageList>",
|
|
80
|
+
"language": "tsx"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"status": "todo-docs",
|
|
84
|
+
"url": "/docs/components/message-list",
|
|
85
|
+
"mdUrl": "/docs/components/message-list.md",
|
|
86
|
+
"jsonUrl": "/r/components/message-list.json",
|
|
87
|
+
"specimens": [
|
|
88
|
+
{
|
|
89
|
+
"title": "MessageList",
|
|
90
|
+
"group": "chat",
|
|
91
|
+
"components": [
|
|
92
|
+
"MessageList"
|
|
93
|
+
],
|
|
94
|
+
"code": "<MessageList height={220} follow className=\"w-full max-w-[42rem]\">\n {Array.from({ length: 14 }, (_, index) => (\n <Message\n key={index}\n role={index % 2 === 0 ? \"user\" : \"agent\"}\n agent={index % 2 === 0 ? undefined : \"patcher\"}\n author={index % 2 === 0 ? \"Criss\" : \"Patcher\"}\n >\n Frame {index}: 512 slots at 44 Hz.\n </Message>\n ))}\n</MessageList>",
|
|
95
|
+
"note": "A stick-to-bottom scroller. Scroll away and it offers to jump back to the latest rather than yanking you there.",
|
|
96
|
+
"interaction": "the jump control is a button, and it appears only once you have actually scrolled off the tail."
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"todo": true
|
|
100
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MessagePair",
|
|
3
|
+
"slug": "message-pair",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A user bubble and a streaming assistant reply, with actions that appear on hover.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "userMessage",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Text shown in the user bubble on the right."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "words",
|
|
21
|
+
"type": "readonly string[]",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Assistant reply broken into words for streaming."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "visibleWords",
|
|
28
|
+
"type": "number",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "How many assistant words are currently visible."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "streaming",
|
|
35
|
+
"type": "boolean",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "When true the newest assistant words tint blue as they arrive."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "variant",
|
|
42
|
+
"type": "\"flat\" | \"bubble\"",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": "bubble",
|
|
45
|
+
"description": "bubble wraps the user message in a surface; flat renders it as plain right-aligned\ntext."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\"\n>"
|
|
50
|
+
],
|
|
51
|
+
"subcomponents": [],
|
|
52
|
+
"parts": [],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-fg",
|
|
57
|
+
"--cue-radius-overlay",
|
|
58
|
+
"--cue-stream",
|
|
59
|
+
"--cue-text-body"
|
|
60
|
+
],
|
|
61
|
+
"summary": "A user bubble and a streaming assistant reply, with actions that appear on hover.",
|
|
62
|
+
"examples": [
|
|
63
|
+
{
|
|
64
|
+
"title": "Usage",
|
|
65
|
+
"code": "import { MessagePair } from \"@cueplusplus/ui/elements\";\n\n<MessagePair\n userMessage=\"Explain the composer.\"\n words={[\"Here\", \"is\", \"a\", \"short\", \"reply.\"]}\n visibleWords={5}\n streaming={false}\n/>",
|
|
66
|
+
"language": "tsx"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"status": "todo-docs",
|
|
70
|
+
"url": "/docs/components/message-pair",
|
|
71
|
+
"mdUrl": "/docs/components/message-pair.md",
|
|
72
|
+
"jsonUrl": "/r/components/message-pair.json",
|
|
73
|
+
"specimens": [
|
|
74
|
+
{
|
|
75
|
+
"title": "MessagePair",
|
|
76
|
+
"group": "elements-thread",
|
|
77
|
+
"components": [
|
|
78
|
+
"MessagePair"
|
|
79
|
+
],
|
|
80
|
+
"code": "<Specimens>\n <Specimen label=\"bubble · streaming\" wide>\n <MessagePair\n userMessage=\"Plot's in. Front truss, universe 3.\"\n words={SPOKEN}\n visibleWords={5}\n streaming\n />\n </Specimen>\n <Specimen label=\"flat · settled\" wide>\n <MessagePair\n userMessage=\"Plot's in. Front truss, universe 3.\"\n words={SPOKEN}\n visibleWords={SPOKEN.length}\n streaming={false}\n variant=\"flat\"\n />\n </Specimen>\n</Specimens>",
|
|
81
|
+
"note": "A whole turn in one element: what was asked, and the answer streaming under it with its actions waiting on hover. The two variants are the two house styles for a user turn — a bubble, or right-aligned text with no chrome at all.",
|
|
82
|
+
"interaction": "the action row is invisible until the turn is hovered *or* focused, which is what keeps a keyboard from losing it. Both buttons are named."
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"todo": true
|
|
86
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MessageQueue",
|
|
3
|
+
"slug": "message-queue",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Turns you typed while a run was in flight, stacked and cancelable until it finishes.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "running",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "The turn currently in flight, shown above the queue."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "queued",
|
|
21
|
+
"type": "readonly QueuedMessage[]",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Turns waiting to send, in the order they will drain once the run finishes."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onCancel",
|
|
28
|
+
"type": "((id: string) => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called when a queued turn is removed before it ever sends."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"running\" | \"queued\" | \"onCancel\"\n> & {\n /** The turn currently in flight, shown above the queue. */\n running: string;\n /** Turns waiting to send, in the order they will drain once the run finishes. */\n queued: readonly QueuedMessage[];\n /** Called when a queued turn is removed before it ever sends. */\n onCancel?: (id: string) => void;\n}"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg",
|
|
43
|
+
"--cue-fg-muted",
|
|
44
|
+
"--cue-fg-subtle",
|
|
45
|
+
"--cue-radius-overlay",
|
|
46
|
+
"--cue-stream",
|
|
47
|
+
"--cue-text-body"
|
|
48
|
+
],
|
|
49
|
+
"summary": "Turns you typed while a run was in flight, stacked and cancelable until it finishes.",
|
|
50
|
+
"examples": [
|
|
51
|
+
{
|
|
52
|
+
"title": "Usage",
|
|
53
|
+
"code": "import { MessageQueue } from \"@cueplusplus/ui/elements\";\n\n<MessageQueue\n running=\"Fix the converter and add a guard\"\n queued={[{ id: \"a\", text: \"Also add a changeset\" }]}\n onCancel={(id) => drop(id)}\n/>",
|
|
54
|
+
"language": "tsx"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"status": "todo-docs",
|
|
58
|
+
"url": "/docs/components/message-queue",
|
|
59
|
+
"mdUrl": "/docs/components/message-queue.md",
|
|
60
|
+
"jsonUrl": "/r/components/message-queue.json",
|
|
61
|
+
"specimens": [
|
|
62
|
+
{
|
|
63
|
+
"title": "MessageQueue",
|
|
64
|
+
"group": "elements-thread",
|
|
65
|
+
"components": [
|
|
66
|
+
"MessageQueue"
|
|
67
|
+
],
|
|
68
|
+
"code": "<Specimens>\n <Specimen label=\"one running, two queued\" wide>\n <MessageQueue\n running=\"Patching universe 3\"\n queued={queue}\n onCancel={(id) => setQueue((current) => current.filter((item) => item.id !== id))}\n />\n </Specimen>\n <Specimen label=\"nothing queued\" wide>\n <MessageQueue running=\"Patching universe 3\" queued={[]} />\n </Specimen>\n</Specimens>",
|
|
69
|
+
"note": "What you typed while the last run was still out. The turn in flight pings at the top; everything behind it is numbered, cancellable and explicitly told when it will go. A queue that did not say 'sends when this finishes' would look like a list of failures.",
|
|
70
|
+
"interaction": "each row's × is a named button — the message text is in the label, so five rows do not all read as 'Remove'."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"todo": true
|
|
74
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MessageTiming",
|
|
3
|
+
"slug": "message-timing",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "What the turn cost: time to first token, throughput, tokens, money.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "stats",
|
|
12
|
+
"type": "readonly TimingStat[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Label and value pairs, pre-formatted. Show fewer while streaming and the full set\nonce the turn settles."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "streaming",
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Tints the values blue while they are still moving."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"typeReferences": [
|
|
26
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"stats\" | \"streaming\"> & {\n /**\n * Label and value pairs, pre-formatted. Show fewer while streaming and the full set\n * once the turn settles.\n */\n stats: readonly TimingStat[];\n /** Tints the values blue while they are still moving. */\n streaming?: boolean;\n}"
|
|
27
|
+
],
|
|
28
|
+
"subcomponents": [],
|
|
29
|
+
"parts": [],
|
|
30
|
+
"variants": {},
|
|
31
|
+
"defaultVariants": {},
|
|
32
|
+
"tokensUsed": [
|
|
33
|
+
"--cue-fg-muted",
|
|
34
|
+
"--cue-fg-subtle",
|
|
35
|
+
"--cue-stream"
|
|
36
|
+
],
|
|
37
|
+
"summary": "What the turn cost: time to first token, throughput, tokens, money.",
|
|
38
|
+
"examples": [
|
|
39
|
+
{
|
|
40
|
+
"title": "Usage",
|
|
41
|
+
"code": "import { MessageTiming } from \"@cueplusplus/ui/elements\";\n\n<MessageTiming\n stats={[\n { label: \"ttft\", value: \"0.4s\" },\n { label: \"total\", value: \"2.6s\" },\n ]}\n/>",
|
|
42
|
+
"language": "tsx"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"status": "todo-docs",
|
|
46
|
+
"url": "/docs/components/message-timing",
|
|
47
|
+
"mdUrl": "/docs/components/message-timing.md",
|
|
48
|
+
"jsonUrl": "/r/components/message-timing.json",
|
|
49
|
+
"specimens": [
|
|
50
|
+
{
|
|
51
|
+
"title": "MessageTiming",
|
|
52
|
+
"group": "elements-thread",
|
|
53
|
+
"components": [
|
|
54
|
+
"MessageTiming"
|
|
55
|
+
],
|
|
56
|
+
"code": "<Specimens>\n <Specimen label=\"streaming\" wide>\n <MessageTiming stats={TIMING.slice(0, 2)} streaming />\n </Specimen>\n <Specimen label=\"settled\" wide>\n <MessageTiming stats={TIMING} />\n </Specimen>\n</Specimens>",
|
|
57
|
+
"note": "What the turn cost, in the footer where a reader can ignore it. The values are strings the caller already formatted; while the turn is still streaming they sit in the live hue and settle into ink when it lands, so the row doubles as a state.",
|
|
58
|
+
"interaction": "none. It is four label/value pairs in mono, tabular so the numbers do not jitter as they update."
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"todo": true
|
|
62
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Message",
|
|
3
|
+
"slug": "message",
|
|
4
|
+
"group": "chat",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "One turn in a conversation.\n\nContent is rendered as React nodes, verbatim: there is no markdown or HTML\npath here on purpose. Model output is untrusted text, and a component that\nquietly parsed it would make every consumer of this library one prompt away\nfrom an injection. Callers that want rich text pass their own renderer as\nchildren and own that decision.\n\nThe author line is mono micro and inked in the agent's own colour, so a\nmulti-agent thread is scannable by hue before it is readable by name.\n\nStatic markup — no `\"use client\"`; a transcript renders on the server.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "role",
|
|
12
|
+
"type": "\"agent\" | \"user\" | \"system\"",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": "agent",
|
|
15
|
+
"description": "Who is speaking. Defaults to `\"agent\"`."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "agent",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "The speaking agent's slug. Names the turn and inks the author line and the\n`--agent-color` custom property, which anything nested reads."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "rootAgent",
|
|
26
|
+
"type": "string",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Slug of the orchestrator, so its turns take the theme accent."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "author",
|
|
33
|
+
"type": "ReactNode",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Author line override. Defaults to `\"You\"` for the user and to `agent` otherwise."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "timestamp",
|
|
40
|
+
"type": "ReactNode",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "Rendered opposite the author — pass a formatted time, not a `Date`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "pending",
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": "false",
|
|
50
|
+
"description": "The turn is still streaming: shows a caret and announces it."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "footer",
|
|
54
|
+
"type": "ReactNode",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": null,
|
|
57
|
+
"description": "Slot under the body — attachments, warnings, retry actions."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "children",
|
|
61
|
+
"type": "ReactNode",
|
|
62
|
+
"required": false,
|
|
63
|
+
"defaultValue": null,
|
|
64
|
+
"description": "The turn itself."
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"typeReferences": [
|
|
68
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"role\">"
|
|
69
|
+
],
|
|
70
|
+
"subcomponents": [],
|
|
71
|
+
"parts": [],
|
|
72
|
+
"variants": {},
|
|
73
|
+
"defaultVariants": {},
|
|
74
|
+
"tokensUsed": [
|
|
75
|
+
"--cue-accent",
|
|
76
|
+
"--cue-accent-fg",
|
|
77
|
+
"--cue-border",
|
|
78
|
+
"--cue-fg",
|
|
79
|
+
"--cue-fg-subtle",
|
|
80
|
+
"--cue-font-mono",
|
|
81
|
+
"--cue-radius-control",
|
|
82
|
+
"--cue-radius-overlay",
|
|
83
|
+
"--cue-radius-scale",
|
|
84
|
+
"--cue-space-2",
|
|
85
|
+
"--cue-space-3",
|
|
86
|
+
"--cue-space-4",
|
|
87
|
+
"--cue-surface-1",
|
|
88
|
+
"--cue-text-body",
|
|
89
|
+
"--cue-text-micro"
|
|
90
|
+
],
|
|
91
|
+
"summary": "One turn in a conversation.",
|
|
92
|
+
"examples": [
|
|
93
|
+
{
|
|
94
|
+
"title": "Usage",
|
|
95
|
+
"code": "<Message agent=\"researcher\" timestamp=\"14:02\">Found three references.</Message>\n<Message role=\"user\">Patch universe 3.</Message>",
|
|
96
|
+
"language": "tsx"
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"status": "todo-docs",
|
|
100
|
+
"url": "/docs/components/message",
|
|
101
|
+
"mdUrl": "/docs/components/message.md",
|
|
102
|
+
"jsonUrl": "/r/components/message.json",
|
|
103
|
+
"specimens": [
|
|
104
|
+
{
|
|
105
|
+
"title": "Message",
|
|
106
|
+
"group": "chat",
|
|
107
|
+
"components": [
|
|
108
|
+
"Message"
|
|
109
|
+
],
|
|
110
|
+
"code": "<div className=\"flex w-full max-w-[42rem] flex-col gap-(--cue-space-4)\">\n <Message role=\"user\" author=\"Criss\" timestamp=\"18:04\">\n Patch the front truss on universe 1 and write a cue for house-to-half.\n </Message>\n <Message role=\"agent\" agent=\"patcher\" author=\"Patcher\" timestamp=\"18:04\">\n 6 fixtures patched to channels 1 to 48. Cue 1 written with a 3.0s fade.\n </Message>\n <Message role=\"agent\" agent=\"reviewer\" author=\"Reviewer\" pending>\n Checking the patch against the plot.\n </Message>\n <Message role=\"system\" timestamp=\"18:05\">\n Run paused: waiting on an answer.\n </Message>\n <Message\n role=\"agent\"\n agent=\"cue-writer\"\n author=\"Cue writer\"\n footer={<Chip tone=\"ok\">applied</Chip>}\n >\n Cue 2 follows cue 1 automatically.\n </Message>\n</div>",
|
|
111
|
+
"note": "Three roles. The bubble radii are asymmetric and mirrored by role, and the author line is mono micro. Nothing here parses markdown: model output is an untrusted string, and a component that rendered it as markup would make every consumer one prompt away from an injection.",
|
|
112
|
+
"interaction": "none. A message is a record."
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"todo": true
|
|
116
|
+
}
|