@cueplusplus/ui 0.3.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 +2229 -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/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/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 +6 -4
- package/dist/index.js +2 -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 +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 +71 -8
- 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 +99 -7
- 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/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/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/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/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/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/job-progress.json +96 -0
- package/manifest/components/launcher-bubble.json +105 -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/node-card.json +1 -1
- package/manifest/components/node-handle.json +1 -1
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +7 -7
- 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/search-input.json +7 -7
- package/manifest/components/segmented-control.json +21 -21
- 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-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/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- 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/timeline.json +1 -1
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +7 -7
- 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 +2670 -33
- package/manifest/tokens.json +22 -1
- package/package.json +46 -4
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "EditMessage",
|
|
3
|
+
"slug": "edit-message",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Rewrite a turn in place, told up front how many replies the edit throws away.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "value",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "The message text, read when resting and edited when open."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "discardedReplies",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "How many replies sending would drop. The warning hides at zero."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "editing",
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Swaps between the resting bubble and the edit composer."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onValueChange",
|
|
35
|
+
"type": "((value: string) => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called as the message is edited."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onSave",
|
|
42
|
+
"type": "(() => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called when the edited message is sent."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onCancel",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called when the edit is abandoned. Restore the original yourself."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "onStartEdit",
|
|
56
|
+
"type": "(() => void)",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": null,
|
|
59
|
+
"description": "Called when the resting bubble is clicked."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"typeReferences": [
|
|
63
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"value\"\n | \"discardedReplies\"\n | \"editing\"\n | \"onValueChange\"\n | \"onSave\"\n | \"onCancel\"\n | \"onStartEdit\"\n> & {\n /** The message text, read when resting and edited when open. */\n value: string;\n /** How many replies sending would drop. The warning hides at zero. */\n discardedReplies: number;\n /** Swaps between the resting bubble and the edit composer. */\n editing: boolean;\n /** Called as the message is edited. */\n onValueChange?: (value: string) => void;\n /** Called when the edited message is sent. */\n onSave?: () => void;\n /** Called when the edit is abandoned. Restore the original yourself. */\n onCancel?: () => void;\n /** Called when the resting bubble is clicked. */\n onStartEdit?: () => void;\n}"
|
|
64
|
+
],
|
|
65
|
+
"subcomponents": [],
|
|
66
|
+
"parts": [],
|
|
67
|
+
"variants": {},
|
|
68
|
+
"defaultVariants": {},
|
|
69
|
+
"tokensUsed": [
|
|
70
|
+
"--cue-accent",
|
|
71
|
+
"--cue-fg",
|
|
72
|
+
"--cue-fg-muted",
|
|
73
|
+
"--cue-radius-overlay",
|
|
74
|
+
"--cue-radius-surface",
|
|
75
|
+
"--cue-surface-2",
|
|
76
|
+
"--cue-text-body",
|
|
77
|
+
"--cue-text-ui",
|
|
78
|
+
"--cue-warn"
|
|
79
|
+
],
|
|
80
|
+
"summary": "Rewrite a turn in place, told up front how many replies the edit throws away.",
|
|
81
|
+
"examples": [
|
|
82
|
+
{
|
|
83
|
+
"title": "Usage",
|
|
84
|
+
"code": "import { EditMessage } from \"@cueplusplus/ui/elements\";\n\n<EditMessage\n value={value}\n discardedReplies={3}\n editing={editing}\n onValueChange={setValue}\n onStartEdit={() => setEditing(true)}\n onCancel={cancel}\n onSave={save}\n/>",
|
|
85
|
+
"language": "tsx"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"status": "todo-docs",
|
|
89
|
+
"url": "/docs/components/edit-message",
|
|
90
|
+
"mdUrl": "/docs/components/edit-message.md",
|
|
91
|
+
"jsonUrl": "/r/components/edit-message.json",
|
|
92
|
+
"specimens": [
|
|
93
|
+
{
|
|
94
|
+
"title": "EditMessage",
|
|
95
|
+
"group": "elements-thread",
|
|
96
|
+
"components": [
|
|
97
|
+
"EditMessage"
|
|
98
|
+
],
|
|
99
|
+
"code": "<Specimens>\n <Specimen label=\"editing · 2 replies at stake\" wide>\n <EditMessage\n value={draft}\n discardedReplies={2}\n editing={editing}\n onValueChange={setDraft}\n onSave={() => setEditing(false)}\n onCancel={() => setEditing(false)}\n onStartEdit={() => setEditing(true)}\n />\n </Specimen>\n <Specimen label=\"editing · nothing at stake\" wide>\n <EditMessage value={draft} discardedReplies={0} editing onValueChange={setDraft} />\n </Specimen>\n <Specimen label=\"resting\" wide>\n <EditMessage\n value=\"Plot's in. Front truss, universe 3.\"\n discardedReplies={2}\n editing={false}\n onStartEdit={() => setEditing(true)}\n />\n </Specimen>\n</Specimens>",
|
|
100
|
+
"note": "Rewriting a turn you already sent, told up front what it throws away. The count is the point: editing the third message of a thread discards everything after it, and a control that hid that would be a data-loss trap wearing a pencil icon.",
|
|
101
|
+
"interaction": "resting, the whole bubble is the button that starts an edit. Editing, the textarea is labelled and takes cue's focus ring; Send leads and Cancel is a ghost."
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"todo": true
|
|
105
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ElementsCommandPalette",
|
|
3
|
+
"slug": "elements-command-palette",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Everything the app can do, one keystroke away and grouped by where it acts.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "commands",
|
|
14
|
+
"type": "readonly PaletteCommand[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Everything runnable. Groups are derived from the entries and keep first-seen order."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "query",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Current filter text."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "activeId",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Which row is highlighted. Arrow keys move it and Enter runs it, both handled by\nthe element; it reports the move through onActiveChange."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onQueryChange",
|
|
35
|
+
"type": "((query: string) => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called as the filter is typed."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onActiveChange",
|
|
42
|
+
"type": "((id: string) => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called as the arrow keys walk the list. The element owns the key handling and\nreports where it landed, so activeId stays yours to hold."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onRun",
|
|
49
|
+
"type": "((id: string) => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called when a command is chosen."
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"typeReferences": [
|
|
56
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"commands\"\n | \"query\"\n | \"activeId\"\n | \"onQueryChange\"\n | \"onActiveChange\"\n | \"onRun\"\n> & {\n /** Everything runnable. Groups are derived from the entries and keep first-seen order. */\n commands: readonly PaletteCommand[];\n /** Current filter text. */\n query: string;\n /**\n * Which row is highlighted. Arrow keys move it and Enter runs it, both handled by\n * the element; it reports the move through onActiveChange.\n */\n activeId: string;\n /** Called as the filter is typed. */\n onQueryChange?: (query: string) => void;\n /**\n * Called as the arrow keys walk the list. The element owns the key handling and\n * reports where it landed, so activeId stays yours to hold.\n */\n onActiveChange?: (id: string) => void;\n /** Called when a command is chosen. */\n onRun?: (id: string) => void;\n}"
|
|
57
|
+
],
|
|
58
|
+
"subcomponents": [],
|
|
59
|
+
"parts": [],
|
|
60
|
+
"variants": {},
|
|
61
|
+
"defaultVariants": {},
|
|
62
|
+
"tokensUsed": [
|
|
63
|
+
"--cue-accent",
|
|
64
|
+
"--cue-border",
|
|
65
|
+
"--cue-fg-muted",
|
|
66
|
+
"--cue-fg-subtle",
|
|
67
|
+
"--cue-radius-control",
|
|
68
|
+
"--cue-radius-overlay",
|
|
69
|
+
"--cue-radius-surface",
|
|
70
|
+
"--cue-surface-1",
|
|
71
|
+
"--cue-surface-2",
|
|
72
|
+
"--cue-text-body",
|
|
73
|
+
"--cue-text-ui"
|
|
74
|
+
],
|
|
75
|
+
"summary": "Everything the app can do, one keystroke away and grouped by where it acts.",
|
|
76
|
+
"examples": [
|
|
77
|
+
{
|
|
78
|
+
"title": "Usage",
|
|
79
|
+
"code": "import { CommandPalette } from \"@cueplusplus/ui/elements\";\n\n<CommandPalette\n commands={commands}\n query={query}\n activeId={activeId}\n onQueryChange={setQuery}\n onRun={run}\n/>",
|
|
80
|
+
"language": "tsx"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"status": "todo-docs",
|
|
84
|
+
"url": "/docs/components/elements-command-palette",
|
|
85
|
+
"mdUrl": "/docs/components/elements-command-palette.md",
|
|
86
|
+
"jsonUrl": "/r/components/elements-command-palette.json",
|
|
87
|
+
"specimens": [
|
|
88
|
+
{
|
|
89
|
+
"title": "ElementsCommandPalette",
|
|
90
|
+
"group": "elements-composer",
|
|
91
|
+
"components": [
|
|
92
|
+
"ElementsCommandPalette"
|
|
93
|
+
],
|
|
94
|
+
"code": "<Specimens>\n <Specimen label=\"everything\" wide>\n <ElementsCommandPalette\n commands={PALETTE}\n query={query}\n activeId={activeCommand}\n onQueryChange={setQuery}\n onActiveChange={setActiveCommand}\n onRun={setActiveCommand}\n />\n </Specimen>\n <Specimen label=\"filtered to one group\" wide>\n <ElementsCommandPalette commands={PALETTE} query=\"patch\" activeId=\"patch\" />\n </Specimen>\n <Specimen label=\"nothing matches\" wide>\n <ElementsCommandPalette commands={PALETTE} query=\"haze\" activeId=\"patch\" />\n </Specimen>\n</Specimens>",
|
|
95
|
+
"note": "Everything the console can do, one keystroke away and grouped by where it acts. The element owns the arrow keys and reports where they landed, so the highlighted row stays the caller's state — and `aria-activedescendant` moves the highlight without moving focus, which is what keeps typing and walking the list the same gesture. Groups are derived from the commands and keep first-seen order, so the palette cannot be re-ordered by accident.",
|
|
96
|
+
"interaction": "the input is a combobox over a listbox; arrows walk, Enter runs, and a query that filters the active row out drops the descendant reference rather than pointing at nothing."
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"todo": true
|
|
100
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ElementsComposer",
|
|
3
|
+
"slug": "elements-composer",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The unified input: attachments, commands, mentions, models, voice, and context in\none surface.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"div\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-accent",
|
|
21
|
+
"--cue-danger",
|
|
22
|
+
"--cue-fg",
|
|
23
|
+
"--cue-fg-muted",
|
|
24
|
+
"--cue-fg-subtle",
|
|
25
|
+
"--cue-font-mono",
|
|
26
|
+
"--cue-ok",
|
|
27
|
+
"--cue-radius-control",
|
|
28
|
+
"--cue-radius-overlay",
|
|
29
|
+
"--cue-radius-surface",
|
|
30
|
+
"--cue-stream",
|
|
31
|
+
"--cue-surface-1",
|
|
32
|
+
"--cue-surface-2",
|
|
33
|
+
"--cue-surface-3",
|
|
34
|
+
"--cue-text-body",
|
|
35
|
+
"--cue-text-emphasis",
|
|
36
|
+
"--cue-text-label",
|
|
37
|
+
"--cue-text-micro",
|
|
38
|
+
"--cue-text-ui"
|
|
39
|
+
],
|
|
40
|
+
"summary": "The unified input: attachments, commands, mentions, models, voice, and context in one surface.",
|
|
41
|
+
"examples": [
|
|
42
|
+
{
|
|
43
|
+
"title": "Usage",
|
|
44
|
+
"code": "import {\n Composer,\n ComposerActions,\n ComposerAttachButton,\n ComposerBar,\n ComposerInput,\n ComposerSend,\n ComposerToolbar,\n} from \"@cueplusplus/ui/elements\";\n\n<Composer>\n <ComposerBar>\n <ComposerInput value={value} placeholder=\"Ask anything\" onChange={onChange} onSubmit={send} />\n <ComposerToolbar>\n <ComposerActions><ComposerAttachButton onClick={pick} /></ComposerActions>\n <ComposerActions><ComposerSend streaming={false} idle={!value} onClick={send} /></ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n</Composer>",
|
|
45
|
+
"language": "tsx"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"status": "todo-docs",
|
|
49
|
+
"url": "/docs/components/elements-composer",
|
|
50
|
+
"mdUrl": "/docs/components/elements-composer.md",
|
|
51
|
+
"jsonUrl": "/r/components/elements-composer.json",
|
|
52
|
+
"specimens": [
|
|
53
|
+
{
|
|
54
|
+
"title": "ElementsComposer / ComposerBar / ComposerInput / ComposerToolbar",
|
|
55
|
+
"group": "elements-composer",
|
|
56
|
+
"components": [
|
|
57
|
+
"ElementsComposer",
|
|
58
|
+
"ComposerBar",
|
|
59
|
+
"ComposerInput",
|
|
60
|
+
"ComposerToolbar",
|
|
61
|
+
"ComposerActions",
|
|
62
|
+
"ComposerAttachButton",
|
|
63
|
+
"ComposerSend"
|
|
64
|
+
],
|
|
65
|
+
"code": "<Specimens>\n <Specimen label=\"empty\" wide>\n <ElementsComposer>\n <ComposerBar>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value=\"\"\n placeholder=\"Ask about the rig\"\n readOnly\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton onClick={() => undefined} />\n </ComposerActions>\n <ComposerActions>\n <ComposerSend streaming={false} idle />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n\n <Specimen label=\"typed\" wide>\n <ElementsComposer>\n <ComposerBar>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value={message}\n placeholder=\"Ask about the rig\"\n onChange={(event) => setMessage(event.target.value)}\n onSubmit={() => setMessage(\"\")}\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton onClick={() => undefined} />\n <ComposerModelTrigger model={model} open={false} />\n </ComposerActions>\n <ComposerActions>\n <ComposerContext usage={USAGE} />\n <ComposerVoiceButton active={false} />\n <ComposerSend streaming={false} idle={message === \"\"} />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n\n <Specimen label=\"streaming, file over the bar\" wide>\n <ElementsComposer>\n <ComposerBar dragActive>\n <ComposerInput\n aria-label=\"Ask about the rig\"\n value=\"\"\n placeholder=\"Drop the truss drawing here\"\n readOnly\n />\n <ComposerToolbar>\n <ComposerActions>\n <ComposerAttachButton />\n </ComposerActions>\n <ComposerActions>\n <ComposerSend streaming idle={false} />\n </ComposerActions>\n </ComposerToolbar>\n </ComposerBar>\n </ElementsComposer>\n </Specimen>\n</Specimens>",
|
|
66
|
+
"note": "The composer assembled from its parts, which is the only way it exists — there is no root that configures it. `ElementsComposer` positions, `ComposerBar` is the paper, and everything between the input and the send button is a facet you either compose in or leave out, so a composer with no attachments carries no attachment code. `ComposerSend` is dim while the input is empty and becomes a stop square while the model is streaming; it is the same button either way, because there is never a moment when both are wanted.",
|
|
67
|
+
"interaction": "`ComposerAttachButton` disables itself when no handler is given rather than rendering a control that does nothing. The send button is labelled by state — `Send message` or `Stop generating` — so the swap is announced and not just drawn."
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"todo": true
|
|
71
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ElementsDataTable",
|
|
3
|
+
"slug": "elements-data-table",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A small comparison table the model can answer with directly.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "rows",
|
|
12
|
+
"type": "readonly ModelUsage[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Table rows with model name, context window, and cost."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "cycle",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Identity key that remounts the body so row entrance can replay."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"typeReferences": [
|
|
26
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\"\n>"
|
|
27
|
+
],
|
|
28
|
+
"subcomponents": [],
|
|
29
|
+
"parts": [],
|
|
30
|
+
"variants": {},
|
|
31
|
+
"defaultVariants": {},
|
|
32
|
+
"tokensUsed": [
|
|
33
|
+
"--cue-fg",
|
|
34
|
+
"--cue-fg-muted",
|
|
35
|
+
"--cue-fg-subtle",
|
|
36
|
+
"--cue-radius-control",
|
|
37
|
+
"--cue-radius-overlay",
|
|
38
|
+
"--cue-surface-1",
|
|
39
|
+
"--cue-surface-2",
|
|
40
|
+
"--cue-text-body",
|
|
41
|
+
"--cue-text-micro"
|
|
42
|
+
],
|
|
43
|
+
"summary": "A small comparison table the model can answer with directly.",
|
|
44
|
+
"examples": [
|
|
45
|
+
{
|
|
46
|
+
"title": "Usage",
|
|
47
|
+
"code": "import { DataTable } from \"@cueplusplus/ui/elements\";\n\n<DataTable\n rows={[{ name: \"Sonnet\", context: \"200k\", cost: \"$3\" }]}\n cycle={0}\n/>",
|
|
48
|
+
"language": "tsx"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"status": "todo-docs",
|
|
52
|
+
"url": "/docs/components/elements-data-table",
|
|
53
|
+
"mdUrl": "/docs/components/elements-data-table.md",
|
|
54
|
+
"jsonUrl": "/r/components/elements-data-table.json",
|
|
55
|
+
"specimens": [
|
|
56
|
+
{
|
|
57
|
+
"title": "ElementsDataTable",
|
|
58
|
+
"group": "elements-knowledge",
|
|
59
|
+
"components": [
|
|
60
|
+
"ElementsDataTable"
|
|
61
|
+
],
|
|
62
|
+
"code": "<Specimens>\n <Specimen label=\"what the research cost\" wide>\n <ElementsDataTable rows={USAGE} cycle={0} />\n </Specimen>\n <Specimen label=\"one row\" wide>\n <ElementsDataTable rows={USAGE.slice(0, 1)} cycle={1} />\n </Specimen>\n</Specimens>",
|
|
63
|
+
"note": "A small table the model can answer with directly — three columns, no sorting, no virtualisation, no header menu. It is `ElementsDataTable` because the package already sells a real one at `@cueplusplus/ui/instruments`: that one is a data grid, this one is a paragraph shaped like a grid, and the rename keeps a consumer from reaching for the wrong one.",
|
|
64
|
+
"interaction": "none. `cycle` remounts the body, so a new answer's rows stagger in rather than mutating in place."
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"todo": true
|
|
68
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ElementsTimeline",
|
|
3
|
+
"slug": "elements-timeline",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Events on a time axis, with what already happened and what is still coming.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "events",
|
|
12
|
+
"type": "readonly TimelineEvent[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Events in chronological order, past and scheduled together."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "visibleCount",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "How many events have been resolved."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"typeReferences": [
|
|
26
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"events\" | \"visibleCount\"> & {\n /** Events in chronological order, past and scheduled together. */\n events: readonly TimelineEvent[];\n /** How many events have been resolved. */\n visibleCount: number;\n}"
|
|
27
|
+
],
|
|
28
|
+
"subcomponents": [],
|
|
29
|
+
"parts": [],
|
|
30
|
+
"variants": {},
|
|
31
|
+
"defaultVariants": {},
|
|
32
|
+
"tokensUsed": [
|
|
33
|
+
"--cue-border-strong",
|
|
34
|
+
"--cue-fg",
|
|
35
|
+
"--cue-fg-muted",
|
|
36
|
+
"--cue-fg-subtle",
|
|
37
|
+
"--cue-radius-overlay",
|
|
38
|
+
"--cue-stream",
|
|
39
|
+
"--cue-surface-2",
|
|
40
|
+
"--cue-surface-3",
|
|
41
|
+
"--cue-text-body",
|
|
42
|
+
"--cue-text-ui"
|
|
43
|
+
],
|
|
44
|
+
"summary": "Events on a time axis, with what already happened and what is still coming.",
|
|
45
|
+
"examples": [
|
|
46
|
+
{
|
|
47
|
+
"title": "Usage",
|
|
48
|
+
"code": "import { Timeline } from \"@cueplusplus/ui/elements\";\n\n<Timeline events={events} visibleCount={events.length} />",
|
|
49
|
+
"language": "tsx"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"status": "todo-docs",
|
|
53
|
+
"url": "/docs/components/elements-timeline",
|
|
54
|
+
"mdUrl": "/docs/components/elements-timeline.md",
|
|
55
|
+
"jsonUrl": "/r/components/elements-timeline.json",
|
|
56
|
+
"specimens": [
|
|
57
|
+
{
|
|
58
|
+
"title": "ElementsTimeline",
|
|
59
|
+
"group": "elements-agents",
|
|
60
|
+
"components": [
|
|
61
|
+
"ElementsTimeline"
|
|
62
|
+
],
|
|
63
|
+
"code": "<Specimens>\n <Specimen label=\"past, now and scheduled\" wide>\n <ElementsTimeline events={EVENTS} visibleCount={EVENTS.length} />\n </Specimen>\n <Specimen label=\"two events in\" wide>\n <ElementsTimeline events={EVENTS} visibleCount={2} />\n </Specimen>\n</Specimens>",
|
|
64
|
+
"note": "Events on one axis, with what already happened and what is still coming in the same list — `past`, `now` and `future` are one union, so a schedule and a history are the same component. It publishes as `ElementsTimeline` because cue already sells a `Timeline`; the spec asked for `ToolTimeline`, which turned out to be the next bench's name.",
|
|
65
|
+
"interaction": "none. The now marker is the only one that pulses, and it holds still for a reader who asked for less motion."
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"todo": true
|
|
69
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ElicitationForm",
|
|
3
|
+
"slug": "elicitation-form",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A server pausing mid-tool-call to ask you for the fields it still needs.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "server",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Which server paused to ask."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "message",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Why the input is needed, in the server's words."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "fields",
|
|
28
|
+
"type": "readonly ElicitationField[]",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "The schema the server sent, already resolved to display values."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "state",
|
|
35
|
+
"type": "\"request\" | \"accepted\" | \"declined\"",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Swaps the action row for the outcome once the user answers."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onAccept",
|
|
42
|
+
"type": "(() => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called when the filled form is sent back."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onDecline",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called when the request is refused."
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"typeReferences": [
|
|
56
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"server\"\n | \"message\"\n | \"fields\"\n | \"state\"\n | \"onAccept\"\n | \"onDecline\"\n> & {\n /** Which server paused to ask. */\n server: string;\n /** Why the input is needed, in the server's words. */\n message: string;\n /** The schema the server sent, already resolved to display values. */\n fields: readonly ElicitationField[];\n /** Swaps the action row for the outcome once the user answers. */\n state: ElicitationState;\n /** Called when the filled form is sent back. */\n onAccept?: () => void;\n /** Called when the request is refused. */\n onDecline?: () => void;\n}"
|
|
57
|
+
],
|
|
58
|
+
"subcomponents": [],
|
|
59
|
+
"parts": [],
|
|
60
|
+
"variants": {},
|
|
61
|
+
"defaultVariants": {},
|
|
62
|
+
"tokensUsed": [
|
|
63
|
+
"--cue-accent",
|
|
64
|
+
"--cue-accent-fg",
|
|
65
|
+
"--cue-bg",
|
|
66
|
+
"--cue-fg",
|
|
67
|
+
"--cue-fg-muted",
|
|
68
|
+
"--cue-fg-subtle",
|
|
69
|
+
"--cue-ok",
|
|
70
|
+
"--cue-radius-overlay",
|
|
71
|
+
"--cue-radius-surface",
|
|
72
|
+
"--cue-surface-1",
|
|
73
|
+
"--cue-surface-2",
|
|
74
|
+
"--cue-surface-3",
|
|
75
|
+
"--cue-text-body",
|
|
76
|
+
"--cue-text-ui"
|
|
77
|
+
],
|
|
78
|
+
"summary": "A server pausing mid-tool-call to ask you for the fields it still needs.",
|
|
79
|
+
"examples": [
|
|
80
|
+
{
|
|
81
|
+
"title": "Usage",
|
|
82
|
+
"code": "import { ElicitationForm } from \"@cueplusplus/ui/elements\";\n\n<ElicitationForm\n server=\"github-mcp\"\n message=\"Confirm where the release notes should be published.\"\n fields={fields}\n state=\"request\"\n onAccept={send}\n onDecline={decline}\n/>",
|
|
83
|
+
"language": "tsx"
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"status": "todo-docs",
|
|
87
|
+
"url": "/docs/components/elicitation-form",
|
|
88
|
+
"mdUrl": "/docs/components/elicitation-form.md",
|
|
89
|
+
"jsonUrl": "/r/components/elicitation-form.json",
|
|
90
|
+
"specimens": [
|
|
91
|
+
{
|
|
92
|
+
"title": "ElicitationForm",
|
|
93
|
+
"group": "elements-composer",
|
|
94
|
+
"components": [
|
|
95
|
+
"ElicitationForm"
|
|
96
|
+
],
|
|
97
|
+
"code": "<Specimens>\n <Specimen label=\"asking\" wide>\n <ElicitationForm\n server=\"eos-desk\"\n message=\"Confirm which universe to patch into before I write anything to the show file.\"\n fields={FIELDS}\n state={elicitation}\n onAccept={() => setElicitation(\"accepted\")}\n onDecline={() => setElicitation(\"declined\")}\n />\n </Specimen>\n <Specimen label=\"answered\" wide>\n <ElicitationForm\n server=\"eos-desk\"\n message=\"Confirm which universe to patch into before I write anything to the show file.\"\n fields={FIELDS}\n state=\"accepted\"\n />\n </Specimen>\n <Specimen label=\"refused\" wide>\n <ElicitationForm\n server=\"eos-desk\"\n message=\"Confirm which universe to patch into before I write anything to the show file.\"\n fields={FIELDS}\n state=\"declined\"\n />\n </Specimen>\n</Specimens>",
|
|
98
|
+
"note": "A server pausing mid-tool-call to ask for the fields it still needs — MCP's elicitation, drawn. The fields arrive already resolved to display values, so the element renders a schema without ever having parsed one, and `state` swaps the two buttons for the outcome the moment the user answers. Declining is a first-class answer here, not a dismissal.",
|
|
99
|
+
"interaction": "each field's control is chosen by its `kind` — a value chip, a row of options, or a switch — and the required ones are marked on the label rather than announced only on failure."
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"todo": true
|
|
103
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "EmptyStateComposer",
|
|
3
|
+
"slug": "empty-state-composer",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A composer-shaped invitation under the suggestions. It is a display rather than a\nworking input — the placeholder is a string and send takes a handler — for the\nscreen whose real composer is somewhere else.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "placeholder",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Resting text in the input bar."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "onSend",
|
|
21
|
+
"type": "(() => void)",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Called from the send control. Omit it and the control renders disabled."
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"typeReferences": [
|
|
28
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"placeholder\"> & {\n /** Resting text in the input bar. */\n placeholder: string;\n /** Called from the send control. Omit it and the control renders disabled. */\n onSend?: () => void;\n}"
|
|
29
|
+
],
|
|
30
|
+
"subcomponents": [],
|
|
31
|
+
"parts": [],
|
|
32
|
+
"variants": {},
|
|
33
|
+
"defaultVariants": {},
|
|
34
|
+
"tokensUsed": [
|
|
35
|
+
"--cue-accent",
|
|
36
|
+
"--cue-fg-subtle",
|
|
37
|
+
"--cue-text-body",
|
|
38
|
+
"--cue-text-emphasis",
|
|
39
|
+
"--cue-text-title"
|
|
40
|
+
],
|
|
41
|
+
"summary": "A composer-shaped invitation under the suggestions.",
|
|
42
|
+
"examples": [],
|
|
43
|
+
"status": "todo-docs",
|
|
44
|
+
"url": "/docs/components/empty-state-composer",
|
|
45
|
+
"mdUrl": "/docs/components/empty-state-composer.md",
|
|
46
|
+
"jsonUrl": "/r/components/empty-state-composer.json",
|
|
47
|
+
"specimens": [
|
|
48
|
+
{
|
|
49
|
+
"title": "ChatEmptyState",
|
|
50
|
+
"group": "elements-composer",
|
|
51
|
+
"components": [
|
|
52
|
+
"ChatEmptyState",
|
|
53
|
+
"EmptyStateGreeting",
|
|
54
|
+
"EmptyStateSuggestions",
|
|
55
|
+
"EmptyStateSuggestion",
|
|
56
|
+
"EmptyStateComposer"
|
|
57
|
+
],
|
|
58
|
+
"code": "<Specimens>\n <Specimen label=\"greeting, ways in, composer\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>What is the rig doing tonight?</EmptyStateGreeting>\n <EmptyStateSuggestions>\n {OPENERS.map((opener, index) => (\n <EmptyStateSuggestion key={opener} index={index}>\n {opener}\n </EmptyStateSuggestion>\n ))}\n </EmptyStateSuggestions>\n <EmptyStateComposer placeholder=\"Ask about the rig\" onSend={() => undefined} />\n </ChatEmptyState>\n </Specimen>\n <Specimen label=\"greeting only\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>Ready when you are.</EmptyStateGreeting>\n <EmptyStateComposer placeholder=\"Ask about the rig\" />\n </ChatEmptyState>\n </Specimen>\n</Specimens>",
|
|
59
|
+
"note": "The first screen, composed rather than configured: a greeting, some ways in, and a composer-shaped invitation. `EmptyStateComposer` is a display and not a working input — the placeholder is a string and send takes a handler — for the screen whose real composer is somewhere else. The suggestions stagger their entrance from `index`, so the row arrives left to right instead of all at once. Named `ChatEmptyState` because cue already publishes a layout `EmptyState`.",
|
|
60
|
+
"interaction": "each suggestion is a button with cue's focus ring; the greeting is an `h2`, so a screen reader lands on the sentence rather than the pills."
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"todo": true
|
|
64
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "EmptyStateGreeting",
|
|
3
|
+
"slug": "empty-state-greeting",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The one line at the top of a blank thread. A heading, so a screen reader lands on it.",
|
|
11
|
+
"props": [],
|
|
12
|
+
"typeReferences": [
|
|
13
|
+
"ComponentProps<\"h2\">"
|
|
14
|
+
],
|
|
15
|
+
"subcomponents": [],
|
|
16
|
+
"parts": [],
|
|
17
|
+
"variants": {},
|
|
18
|
+
"defaultVariants": {},
|
|
19
|
+
"tokensUsed": [
|
|
20
|
+
"--cue-accent",
|
|
21
|
+
"--cue-fg-subtle",
|
|
22
|
+
"--cue-text-body",
|
|
23
|
+
"--cue-text-emphasis",
|
|
24
|
+
"--cue-text-title"
|
|
25
|
+
],
|
|
26
|
+
"summary": "The one line at the top of a blank thread.",
|
|
27
|
+
"examples": [],
|
|
28
|
+
"status": "todo-docs",
|
|
29
|
+
"url": "/docs/components/empty-state-greeting",
|
|
30
|
+
"mdUrl": "/docs/components/empty-state-greeting.md",
|
|
31
|
+
"jsonUrl": "/r/components/empty-state-greeting.json",
|
|
32
|
+
"specimens": [
|
|
33
|
+
{
|
|
34
|
+
"title": "ChatEmptyState",
|
|
35
|
+
"group": "elements-composer",
|
|
36
|
+
"components": [
|
|
37
|
+
"ChatEmptyState",
|
|
38
|
+
"EmptyStateGreeting",
|
|
39
|
+
"EmptyStateSuggestions",
|
|
40
|
+
"EmptyStateSuggestion",
|
|
41
|
+
"EmptyStateComposer"
|
|
42
|
+
],
|
|
43
|
+
"code": "<Specimens>\n <Specimen label=\"greeting, ways in, composer\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>What is the rig doing tonight?</EmptyStateGreeting>\n <EmptyStateSuggestions>\n {OPENERS.map((opener, index) => (\n <EmptyStateSuggestion key={opener} index={index}>\n {opener}\n </EmptyStateSuggestion>\n ))}\n </EmptyStateSuggestions>\n <EmptyStateComposer placeholder=\"Ask about the rig\" onSend={() => undefined} />\n </ChatEmptyState>\n </Specimen>\n <Specimen label=\"greeting only\" wide>\n <ChatEmptyState>\n <EmptyStateGreeting>Ready when you are.</EmptyStateGreeting>\n <EmptyStateComposer placeholder=\"Ask about the rig\" />\n </ChatEmptyState>\n </Specimen>\n</Specimens>",
|
|
44
|
+
"note": "The first screen, composed rather than configured: a greeting, some ways in, and a composer-shaped invitation. `EmptyStateComposer` is a display and not a working input — the placeholder is a string and send takes a handler — for the screen whose real composer is somewhere else. The suggestions stagger their entrance from `index`, so the row arrives left to right instead of all at once. Named `ChatEmptyState` because cue already publishes a layout `EmptyState`.",
|
|
45
|
+
"interaction": "each suggestion is a button with cue's focus ring; the greeting is an `h2`, so a screen reader lands on the sentence rather than the pills."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"todo": true
|
|
49
|
+
}
|