@cueplusplus/ui 0.3.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2263 -0
- package/dist/agent-runtime/_glyphs.js +43 -0
- package/dist/agent-runtime/branch-picker.d.ts +45 -0
- package/dist/agent-runtime/branch-picker.js +87 -0
- package/dist/agent-runtime/index.d.ts +4 -0
- package/dist/agent-runtime/index.js +4 -0
- package/dist/agent-runtime/tool-call-card.d.ts +69 -0
- package/dist/agent-runtime/tool-call-card.js +187 -0
- package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
- package/dist/agent-runtime/use-agent-thread.js +251 -0
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/message-list.d.ts +6 -0
- package/dist/chat/message-list.js +35 -0
- package/dist/chrome/_drag.js +59 -0
- package/dist/chrome/_status-bar-item.js +85 -0
- package/dist/chrome/_status-bar.d.ts +15 -0
- package/dist/chrome/_status-bar.js +171 -0
- package/dist/chrome/app-shell.d.ts +120 -2
- package/dist/chrome/app-shell.js +107 -8
- package/dist/chrome/index.d.ts +4 -3
- package/dist/chrome/status-bar.d.ts +87 -4
- package/dist/chrome/status-bar.js +80 -16
- package/dist/chrome/title-bar.d.ts +11 -1
- package/dist/chrome/title-bar.js +1 -3
- package/dist/configurator/_export.js +3 -2
- package/dist/configurator/_overrides.d.ts +1 -1
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/_segments.js +52 -6
- package/dist/elements/activity-graph.d.ts +40 -0
- package/dist/elements/activity-graph.js +81 -0
- package/dist/elements/agent-card.d.ts +49 -0
- package/dist/elements/agent-card.js +91 -0
- package/dist/elements/agent-handoff.d.ts +24 -0
- package/dist/elements/agent-handoff.js +53 -0
- package/dist/elements/agent-mode-badge.d.ts +72 -0
- package/dist/elements/agent-mode-badge.js +110 -0
- package/dist/elements/agent-plan.d.ts +24 -0
- package/dist/elements/agent-plan.js +74 -0
- package/dist/elements/agent-status.d.ts +29 -0
- package/dist/elements/agent-status.js +46 -0
- package/dist/elements/agent-surface.d.ts +65 -0
- package/dist/elements/agent-surface.js +68 -0
- package/dist/elements/animated-number.d.ts +86 -0
- package/dist/elements/animated-number.js +118 -0
- package/dist/elements/approval-card.d.ts +40 -0
- package/dist/elements/approval-card.js +78 -0
- package/dist/elements/artifact-card.d.ts +30 -0
- package/dist/elements/artifact-card.js +58 -0
- package/dist/elements/background-inbox.d.ts +39 -0
- package/dist/elements/background-inbox.js +60 -0
- package/dist/elements/canvas-split.d.ts +77 -0
- package/dist/elements/canvas-split.js +138 -0
- package/dist/elements/chart.d.ts +41 -0
- package/dist/elements/chart.js +117 -0
- package/dist/elements/chat-panel.d.ts +46 -0
- package/dist/elements/chat-panel.js +104 -0
- package/dist/elements/checkpoint-history.d.ts +31 -0
- package/dist/elements/checkpoint-history.js +65 -0
- package/dist/elements/clamp.d.ts +90 -0
- package/dist/elements/clamp.js +109 -0
- package/dist/elements/code-diff.d.ts +42 -0
- package/dist/elements/code-diff.js +69 -0
- package/dist/elements/code-runner.d.ts +38 -0
- package/dist/elements/code-runner.js +84 -0
- package/dist/elements/command-palette.d.ts +48 -0
- package/dist/elements/command-palette.js +129 -0
- package/dist/elements/compaction-row.d.ts +63 -0
- package/dist/elements/compaction-row.js +110 -0
- package/dist/elements/comparison-card.d.ts +47 -0
- package/dist/elements/comparison-card.js +69 -0
- package/dist/elements/composer.d.ts +274 -0
- package/dist/elements/composer.js +505 -0
- package/dist/elements/computer-use.d.ts +40 -0
- package/dist/elements/computer-use.js +92 -0
- package/dist/elements/confidence-marker.d.ts +39 -0
- package/dist/elements/confidence-marker.js +64 -0
- package/dist/elements/connection-state.d.ts +29 -0
- package/dist/elements/connection-state.js +66 -0
- package/dist/elements/context-breakdown.d.ts +30 -0
- package/dist/elements/context-breakdown.js +86 -0
- package/dist/elements/context-usage.d.ts +99 -0
- package/dist/elements/context-usage.js +225 -0
- package/dist/elements/conversation-search.d.ts +48 -0
- package/dist/elements/conversation-search.js +88 -0
- package/dist/elements/cost-meter.d.ts +33 -0
- package/dist/elements/cost-meter.js +75 -0
- package/dist/elements/data-table.d.ts +31 -0
- package/dist/elements/data-table.js +67 -0
- package/dist/elements/day-separator.d.ts +34 -0
- package/dist/elements/day-separator.js +50 -0
- package/dist/elements/diagram.d.ts +34 -0
- package/dist/elements/diagram.js +75 -0
- package/dist/elements/document-reference.d.ts +37 -0
- package/dist/elements/document-reference.js +66 -0
- package/dist/elements/draft-restore.d.ts +27 -0
- package/dist/elements/draft-restore.js +54 -0
- package/dist/elements/edit-message.d.ts +36 -0
- package/dist/elements/edit-message.js +77 -0
- package/dist/elements/elements.css +459 -0
- package/dist/elements/elicitation-form.d.ts +48 -0
- package/dist/elements/elicitation-form.js +106 -0
- package/dist/elements/empty-state.d.ts +52 -0
- package/dist/elements/empty-state.js +98 -0
- package/dist/elements/end-of-turn-summary.d.ts +60 -0
- package/dist/elements/end-of-turn-summary.js +75 -0
- package/dist/elements/error-state.d.ts +29 -0
- package/dist/elements/error-state.js +55 -0
- package/dist/elements/feedback-dialog.d.ts +36 -0
- package/dist/elements/feedback-dialog.js +81 -0
- package/dist/elements/file-tree.d.ts +45 -0
- package/dist/elements/file-tree.js +84 -0
- package/dist/elements/flow-graph.d.ts +45 -0
- package/dist/elements/flow-graph.js +78 -0
- package/dist/elements/generative/chart.js +200 -0
- package/dist/elements/generative/faults.js +111 -0
- package/dist/elements/generative/icons.d.ts +41 -0
- package/dist/elements/generative/icons.js +190 -0
- package/dist/elements/generative/intrinsics.js +483 -0
- package/dist/elements/generative/spec.d.ts +110 -0
- package/dist/elements/generative/spec.js +366 -0
- package/dist/elements/generative.css +1145 -0
- package/dist/elements/generative.d.ts +144 -0
- package/dist/elements/generative.js +126 -0
- package/dist/elements/guardrail-notice.d.ts +29 -0
- package/dist/elements/guardrail-notice.js +63 -0
- package/dist/elements/image-generation.d.ts +18 -0
- package/dist/elements/image-generation.js +64 -0
- package/dist/elements/index.d.ts +116 -0
- package/dist/elements/index.js +115 -0
- package/dist/elements/inline-citation.d.ts +43 -0
- package/dist/elements/inline-citation.js +93 -0
- package/dist/elements/job-progress.d.ts +49 -0
- package/dist/elements/job-progress.js +74 -0
- package/dist/elements/launcher-bubble.d.ts +34 -0
- package/dist/elements/launcher-bubble.js +72 -0
- package/dist/elements/live-region-announcer.d.ts +130 -0
- package/dist/elements/live-region-announcer.js +230 -0
- package/dist/elements/loading-state.d.ts +27 -0
- package/dist/elements/loading-state.js +36 -0
- package/dist/elements/map-answer.d.ts +38 -0
- package/dist/elements/map-answer.js +93 -0
- package/dist/elements/markdown.d.ts +131 -0
- package/dist/elements/markdown.js +528 -0
- package/dist/elements/math-block.d.ts +51 -0
- package/dist/elements/math-block.js +70 -0
- package/dist/elements/mcp-server-panel.d.ts +41 -0
- package/dist/elements/mcp-server-panel.js +115 -0
- package/dist/elements/memory-chips.d.ts +30 -0
- package/dist/elements/memory-chips.js +43 -0
- package/dist/elements/message-actions.d.ts +38 -0
- package/dist/elements/message-actions.js +71 -0
- package/dist/elements/message-attachment.d.ts +48 -0
- package/dist/elements/message-attachment.js +63 -0
- package/dist/elements/message-branches.d.ts +25 -0
- package/dist/elements/message-branches.js +65 -0
- package/dist/elements/message-pair.d.ts +33 -0
- package/dist/elements/message-pair.js +65 -0
- package/dist/elements/message-queue.d.ts +31 -0
- package/dist/elements/message-queue.js +80 -0
- package/dist/elements/message-timing.d.ts +33 -0
- package/dist/elements/message-timing.js +37 -0
- package/dist/elements/mobile-composer.d.ts +44 -0
- package/dist/elements/mobile-composer.js +88 -0
- package/dist/elements/model-picker.d.ts +38 -0
- package/dist/elements/model-picker.js +69 -0
- package/dist/elements/number-ticker.d.ts +18 -0
- package/dist/elements/number-ticker.js +47 -0
- package/dist/elements/onboarding.d.ts +30 -0
- package/dist/elements/onboarding.js +75 -0
- package/dist/elements/permission-grant.d.ts +35 -0
- package/dist/elements/permission-grant.js +86 -0
- package/dist/elements/permission-scopes.d.ts +215 -0
- package/dist/elements/permission-scopes.js +249 -0
- package/dist/elements/prompt-library.d.ts +43 -0
- package/dist/elements/prompt-library.js +117 -0
- package/dist/elements/queue-dock.d.ts +101 -0
- package/dist/elements/queue-dock.js +132 -0
- package/dist/elements/quota-banner.d.ts +26 -0
- package/dist/elements/quota-banner.js +66 -0
- package/dist/elements/quote-reply.d.ts +44 -0
- package/dist/elements/quote-reply.js +79 -0
- package/dist/elements/range.d.ts +29 -0
- package/dist/elements/range.js +45 -0
- package/dist/elements/read-aloud.d.ts +45 -0
- package/dist/elements/read-aloud.js +75 -0
- package/dist/elements/reasoning-effort.d.ts +36 -0
- package/dist/elements/reasoning-effort.js +67 -0
- package/dist/elements/reasoning-panel.d.ts +46 -0
- package/dist/elements/reasoning-panel.js +75 -0
- package/dist/elements/recommendation-card.d.ts +45 -0
- package/dist/elements/recommendation-card.js +83 -0
- package/dist/elements/regenerate-menu.d.ts +45 -0
- package/dist/elements/regenerate-menu.js +51 -0
- package/dist/elements/replay.d.ts +217 -0
- package/dist/elements/replay.js +498 -0
- package/dist/elements/research-report.d.ts +38 -0
- package/dist/elements/research-report.js +69 -0
- package/dist/elements/retrieval-chunks.d.ts +43 -0
- package/dist/elements/retrieval-chunks.js +81 -0
- package/dist/elements/revert-dock.d.ts +159 -0
- package/dist/elements/revert-dock.js +327 -0
- package/dist/elements/reviewable-diff.d.ts +45 -0
- package/dist/elements/reviewable-diff.js +110 -0
- package/dist/elements/risk-badge.d.ts +52 -0
- package/dist/elements/risk-badge.js +91 -0
- package/dist/elements/schedule-card.d.ts +42 -0
- package/dist/elements/schedule-card.js +90 -0
- package/dist/elements/score-breakdown.d.ts +47 -0
- package/dist/elements/score-breakdown.js +82 -0
- package/dist/elements/scroll-anchor.d.ts +32 -0
- package/dist/elements/scroll-anchor.js +121 -0
- package/dist/elements/settings-panel.d.ts +52 -0
- package/dist/elements/settings-panel.js +107 -0
- package/dist/elements/shared-conversation.d.ts +39 -0
- package/dist/elements/shared-conversation.js +68 -0
- package/dist/elements/sources.d.ts +33 -0
- package/dist/elements/sources.js +61 -0
- package/dist/elements/speaker-identity.d.ts +32 -0
- package/dist/elements/speaker-identity.js +51 -0
- package/dist/elements/spec-sheet.d.ts +31 -0
- package/dist/elements/spec-sheet.js +45 -0
- package/dist/elements/stopped-run.d.ts +22 -0
- package/dist/elements/stopped-run.js +50 -0
- package/dist/elements/streaming-text.d.ts +31 -0
- package/dist/elements/streaming-text.js +45 -0
- package/dist/elements/subagent-list.d.ts +37 -0
- package/dist/elements/subagent-list.js +79 -0
- package/dist/elements/suggestions.d.ts +30 -0
- package/dist/elements/suggestions.js +36 -0
- package/dist/elements/surfaces.d.ts +85 -0
- package/dist/elements/surfaces.js +107 -0
- package/dist/elements/tail-status.d.ts +131 -0
- package/dist/elements/tail-status.js +94 -0
- package/dist/elements/terminal-block.d.ts +29 -0
- package/dist/elements/terminal-block.js +54 -0
- package/dist/elements/thinking-indicator.d.ts +18 -0
- package/dist/elements/thinking-indicator.js +36 -0
- package/dist/elements/thread-list.d.ts +35 -0
- package/dist/elements/thread-list.js +68 -0
- package/dist/elements/thread-search.d.ts +42 -0
- package/dist/elements/thread-search.js +99 -0
- package/dist/elements/timeline.d.ts +37 -0
- package/dist/elements/timeline.js +46 -0
- package/dist/elements/todo-list.d.ts +42 -0
- package/dist/elements/todo-list.js +59 -0
- package/dist/elements/tool-call.d.ts +41 -0
- package/dist/elements/tool-call.js +85 -0
- package/dist/elements/tool-error.d.ts +39 -0
- package/dist/elements/tool-error.js +76 -0
- package/dist/elements/tool-group.d.ts +45 -0
- package/dist/elements/tool-group.js +71 -0
- package/dist/elements/tool-timeline.d.ts +65 -0
- package/dist/elements/tool-timeline.js +88 -0
- package/dist/elements/trace-waterfall.d.ts +37 -0
- package/dist/elements/trace-waterfall.js +69 -0
- package/dist/elements/transcript-rules.d.ts +67 -0
- package/dist/elements/transcript-rules.js +95 -0
- package/dist/elements/turn-footer.d.ts +74 -0
- package/dist/elements/turn-footer.js +101 -0
- package/dist/elements/typing-indicator.d.ts +16 -0
- package/dist/elements/typing-indicator.js +51 -0
- package/dist/elements/verdict-row.d.ts +89 -0
- package/dist/elements/verdict-row.js +150 -0
- package/dist/elements/vocabulary.d.ts +612 -0
- package/dist/elements/vocabulary.js +611 -0
- package/dist/elements/voice-conversation.d.ts +49 -0
- package/dist/elements/voice-conversation.js +123 -0
- package/dist/elements/web-preview.d.ts +32 -0
- package/dist/elements/web-preview.js +66 -0
- package/dist/elements/web-search.d.ts +37 -0
- package/dist/elements/web-search.js +66 -0
- package/dist/elements/work-collapse.d.ts +103 -0
- package/dist/elements/work-collapse.js +131 -0
- package/dist/forms/_chassis.d.ts +104 -4
- package/dist/forms/_chassis.js +104 -4
- package/dist/forms/input-group.d.ts +8 -3
- package/dist/forms/input-group.js +8 -3
- package/dist/forms/number-field.d.ts +3 -2
- package/dist/forms/number-field.js +3 -2
- package/dist/icons/containers.d.ts +89 -0
- package/dist/icons/containers.js +295 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +12 -6
- package/dist/index.js +5 -1
- package/dist/instruments/_data-row.js +118 -0
- package/dist/instruments/data-row.d.ts +94 -0
- package/dist/instruments/data-row.js +151 -0
- package/dist/instruments/data-tree.d.ts +126 -0
- package/dist/instruments/data-tree.js +303 -0
- package/dist/instruments/index.d.ts +5 -2
- package/dist/instruments/index.js +4 -1
- package/dist/instruments/ledger.d.ts +105 -0
- package/dist/instruments/ledger.js +114 -0
- package/dist/instruments/table.d.ts +70 -2
- package/dist/instruments/table.js +133 -39
- package/dist/instruments/two-step-button.js +25 -6
- package/dist/layout/sidebar.d.ts +19 -1
- package/dist/layout/sidebar.js +19 -1
- package/dist/primitives/button.js +11 -1
- package/dist/primitives/chip.d.ts +35 -9
- package/dist/primitives/chip.js +97 -11
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +19 -5
- package/dist/system/theme-provider.js +54 -9
- package/dist/system/use-density.d.ts +9 -0
- package/dist/system/use-density.js +9 -0
- package/dist/system/use-isomorphic-layout-effect.js +19 -1
- package/dist/theming/_presets.d.ts +1 -1
- package/dist/theming/_presets.js +74 -11
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +6 -2
- package/dist/theming/create-theme.js +32 -5
- package/dist/theming/serialize.d.ts +10 -1
- package/dist/theming/serialize.js +62 -8
- package/manifest/components/activity-graph.json +88 -0
- package/manifest/components/agent-card.json +120 -0
- package/manifest/components/agent-handoff.json +87 -0
- package/manifest/components/agent-mode-badge.json +84 -0
- package/manifest/components/agent-plan.json +67 -0
- package/manifest/components/agent-status.json +73 -0
- package/manifest/components/agent-surface.json +78 -0
- package/manifest/components/alert-dialog.json +1 -1
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-shell.json +142 -9
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/autocomplete.json +2 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/button.json +1 -0
- package/manifest/components/canvas-split-body.json +62 -0
- package/manifest/components/canvas-split-document.json +54 -0
- package/manifest/components/canvas-split-header.json +83 -0
- package/manifest/components/canvas-split-line.json +62 -0
- package/manifest/components/canvas-split-message.json +62 -0
- package/manifest/components/canvas-split-thread.json +54 -0
- package/manifest/components/canvas-split.json +60 -0
- package/manifest/components/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-released-icon.json +52 -0
- package/manifest/components/chart.json +93 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +51 -0
- package/manifest/components/chat-panel-composer.json +66 -0
- package/manifest/components/chat-panel-messages.json +51 -0
- package/manifest/components/chat-panel-typing.json +51 -0
- package/manifest/components/chat-panel-user-message.json +51 -0
- package/manifest/components/chat-panel.json +57 -0
- package/manifest/components/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +24 -12
- package/manifest/components/clamp.json +102 -0
- package/manifest/components/cli-tool-icon.json +52 -0
- package/manifest/components/code-diff.json +87 -0
- package/manifest/components/code-runner.json +97 -0
- package/manifest/components/color-field.json +2 -0
- package/manifest/components/color-picker.json +2 -0
- package/manifest/components/combobox.json +2 -0
- package/manifest/components/compaction-row.json +100 -0
- package/manifest/components/comparison-card.json +83 -0
- package/manifest/components/composer-actions.json +65 -0
- package/manifest/components/composer-attach-button.json +65 -0
- package/manifest/components/composer-attachment-chip.json +75 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +73 -0
- package/manifest/components/composer-command-item.json +79 -0
- package/manifest/components/composer-context.json +67 -0
- package/manifest/components/composer-input.json +73 -0
- package/manifest/components/composer-menu-item.json +72 -0
- package/manifest/components/composer-menu.json +79 -0
- package/manifest/components/composer-model-item.json +75 -0
- package/manifest/components/composer-model-trigger.json +75 -0
- package/manifest/components/composer-person-item.json +79 -0
- package/manifest/components/composer-send.json +80 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +68 -0
- package/manifest/components/composer-voice.json +75 -0
- package/manifest/components/composer.json +2 -0
- package/manifest/components/computer-use.json +84 -0
- package/manifest/components/confidence-marker.json +74 -0
- package/manifest/components/connection-state.json +84 -0
- package/manifest/components/context-breakdown.json +65 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-portal-frame.json +1 -1
- package/manifest/components/data-row.json +203 -0
- package/manifest/components/data-tree.json +151 -0
- package/manifest/components/date-field.json +2 -0
- package/manifest/components/date-picker.json +2 -0
- package/manifest/components/date-range-picker.json +2 -0
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +1 -1
- package/manifest/components/density.json +1 -1
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +1 -1
- package/manifest/components/dropdown-menu.json +1 -1
- package/manifest/components/edit-message.json +105 -0
- package/manifest/components/elements-command-palette.json +100 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +68 -0
- package/manifest/components/elements-timeline.json +69 -0
- package/manifest/components/elicitation-form.json +103 -0
- package/manifest/components/empty-state-composer.json +64 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +57 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/end-of-turn-summary.json +77 -0
- package/manifest/components/env-var-input.json +2 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -0
- package/manifest/components/frac.json +59 -0
- package/manifest/components/generation-loader.json +64 -0
- package/manifest/components/generative-ui.json +93 -0
- package/manifest/components/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +1 -1
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +1 -1
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/input-group.json +4 -2
- package/manifest/components/input.json +3 -1
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/ledger.json +187 -0
- package/manifest/components/live-region-announcer.json +79 -0
- package/manifest/components/map-answer.json +83 -0
- package/manifest/components/markdown-text.json +94 -0
- package/manifest/components/math-block.json +74 -0
- package/manifest/components/mcp-server-icon.json +52 -0
- package/manifest/components/mcp-server-panel.json +87 -0
- package/manifest/components/memory-chips.json +65 -0
- package/manifest/components/message-actions.json +99 -0
- package/manifest/components/message-attachments.json +63 -0
- package/manifest/components/message-branches.json +71 -0
- package/manifest/components/message-list.json +1 -1
- package/manifest/components/message-pair.json +86 -0
- package/manifest/components/message-queue.json +74 -0
- package/manifest/components/message-timing.json +62 -0
- package/manifest/components/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/multi-select.json +2 -0
- package/manifest/components/musical-time-input.json +2 -0
- package/manifest/components/node-card.json +1 -1
- package/manifest/components/node-handle.json +1 -1
- package/manifest/components/number-field.json +3 -1
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +9 -7
- package/manifest/components/password-input.json +2 -0
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/popover.json +1 -1
- package/manifest/components/prompt-library.json +99 -0
- package/manifest/components/queue-dock.json +110 -0
- package/manifest/components/quota-banner.json +94 -0
- package/manifest/components/quote-reply.json +105 -0
- package/manifest/components/read-aloud.json +111 -0
- package/manifest/components/reasoning-effort.json +81 -0
- package/manifest/components/reasoning-panel.json +108 -0
- package/manifest/components/recommendation-card.json +107 -0
- package/manifest/components/regenerate-menu.json +89 -0
- package/manifest/components/replay-player.json +102 -0
- package/manifest/components/research-report.json +76 -0
- package/manifest/components/retrieval-chunks.json +84 -0
- package/manifest/components/revert-dock.json +150 -0
- package/manifest/components/reviewable-diff.json +93 -0
- package/manifest/components/risk-badge.json +74 -0
- package/manifest/components/schedule-card.json +101 -0
- package/manifest/components/score-breakdown.json +91 -0
- package/manifest/components/scroll-anchor.json +72 -0
- package/manifest/components/scroll-area.json +7 -7
- package/manifest/components/scrub-input.json +2 -0
- package/manifest/components/search-input.json +9 -7
- package/manifest/components/segmented-control.json +21 -21
- package/manifest/components/select.json +1 -0
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +1 -1
- package/manifest/components/status-bar.json +146 -12
- package/manifest/components/status-dot.json +1 -1
- package/manifest/components/stopped-run.json +81 -0
- package/manifest/components/streaming-text.json +71 -0
- package/manifest/components/sub.json +44 -0
- package/manifest/components/subagent-list.json +88 -0
- package/manifest/components/suggestions.json +84 -0
- package/manifest/components/sup.json +44 -0
- package/manifest/components/swap-label.json +71 -0
- package/manifest/components/table-scroll-region.json +6 -0
- package/manifest/components/table.json +88 -4
- package/manifest/components/tags-input.json +2 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/textarea.json +3 -1
- package/manifest/components/theme-provider.json +2 -2
- package/manifest/components/thinking-indicator.json +63 -0
- package/manifest/components/thread-list.json +76 -0
- package/manifest/components/thread-search.json +90 -0
- package/manifest/components/threshold-rail.json +2 -2
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/time-field.json +2 -0
- package/manifest/components/timeline.json +1 -1
- package/manifest/components/title-bar.json +1 -1
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +9 -7
- package/manifest/components/toggle.json +2 -0
- package/manifest/components/token-editor.json +1 -1
- package/manifest/components/tool-call-card.json +200 -0
- package/manifest/components/tool-call.json +119 -0
- package/manifest/components/tool-error.json +114 -0
- package/manifest/components/tool-group.json +83 -0
- package/manifest/components/tool-timeline.json +119 -0
- package/manifest/components/toolbar.json +7 -7
- package/manifest/components/tooltip.json +1 -1
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +1 -1
- package/manifest/components/verdict-row.json +91 -0
- package/manifest/components/voice-conversation.json +109 -0
- package/manifest/components/web-preview.json +87 -0
- package/manifest/components/web-search.json +92 -0
- package/manifest/components/work-collapse.json +102 -0
- package/manifest/manifest.json +2736 -60
- package/manifest/tokens.json +22 -1
- package/package.json +44 -2
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"name": "status",
|
|
40
|
-
"type": "\"
|
|
40
|
+
"type": "\"done\" | \"working\" | \"failed\" | \"idle\"",
|
|
41
41
|
"required": false,
|
|
42
42
|
"defaultValue": null,
|
|
43
43
|
"description": "Where the work has got to. Omit to draw no status line at all."
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"props": [
|
|
10
10
|
{
|
|
11
11
|
"name": "density",
|
|
12
|
-
"type": "\"
|
|
12
|
+
"type": "\"normal\" | \"large\" | \"compact\" | \"ultra-compact\" | \"ultra-large\"",
|
|
13
13
|
"required": true,
|
|
14
14
|
"defaultValue": null,
|
|
15
15
|
"description": "Level to apply to this subtree: `ultra-compact`, `compact`, `normal`,\n`large` or `ultra-large`."
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Diagram",
|
|
3
|
+
"slug": "diagram",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A drawn answer with zoom, reset, and a full-bleed view; you hand it the rendered\ngraphic.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "title",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "What the diagram shows."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "zoom",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Scale factor applied to the content. 1 is fit; the header prints it as a percentage."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "children",
|
|
28
|
+
"type": "ReactNode",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "The rendered graphic. The element owns the frame and never parses or injects\nmarkup itself, so whatever renders your chart stays your choice."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onZoomIn",
|
|
35
|
+
"type": "(() => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called from the zoom-in control. Clamp the range yourself."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onZoomOut",
|
|
42
|
+
"type": "(() => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called from the zoom-out control."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onReset",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called to return to the default view."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "onExpand",
|
|
56
|
+
"type": "(() => void)",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": null,
|
|
59
|
+
"description": "Called to open the diagram full screen."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"typeReferences": [
|
|
63
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"title\"\n | \"zoom\"\n | \"children\"\n | \"onZoomIn\"\n | \"onZoomOut\"\n | \"onReset\"\n | \"onExpand\"\n> & {\n /** What the diagram shows. */\n title: string;\n /** Scale factor applied to the content. 1 is fit; the header prints it as a percentage. */\n zoom: number;\n /**\n * The rendered graphic. The element owns the frame and never parses or injects\n * markup itself, so whatever renders your chart stays your choice.\n */\n children: React.ReactNode;\n /** Called from the zoom-in control. Clamp the range yourself. */\n onZoomIn?: () => void;\n /** Called from the zoom-out control. */\n onZoomOut?: () => void;\n /** Called to return to the default view. */\n onReset?: () => void;\n /** Called to open the diagram full screen. */\n onExpand?: () => void;\n}"
|
|
64
|
+
],
|
|
65
|
+
"subcomponents": [],
|
|
66
|
+
"parts": [],
|
|
67
|
+
"variants": {},
|
|
68
|
+
"defaultVariants": {},
|
|
69
|
+
"tokensUsed": [
|
|
70
|
+
"--cue-border",
|
|
71
|
+
"--cue-fg-subtle",
|
|
72
|
+
"--cue-radius-overlay",
|
|
73
|
+
"--cue-text-body"
|
|
74
|
+
],
|
|
75
|
+
"summary": "A drawn answer with zoom, reset, and a full-bleed view; you hand it the rendered graphic.",
|
|
76
|
+
"examples": [
|
|
77
|
+
{
|
|
78
|
+
"title": "Usage",
|
|
79
|
+
"code": "import { Diagram } from \"@cueplusplus/ui/elements\";\n\n<Diagram title=\"message flow\" zoom={zoom} onZoomIn={zoomIn} onReset={reset}>\n <MermaidSvg chart={chart} />\n</Diagram>",
|
|
80
|
+
"language": "tsx"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"status": "todo-docs",
|
|
84
|
+
"url": "/docs/components/diagram",
|
|
85
|
+
"mdUrl": "/docs/components/diagram.md",
|
|
86
|
+
"jsonUrl": "/r/components/diagram.json",
|
|
87
|
+
"specimens": [
|
|
88
|
+
{
|
|
89
|
+
"title": "Diagram",
|
|
90
|
+
"group": "elements-knowledge",
|
|
91
|
+
"components": [
|
|
92
|
+
"Diagram"
|
|
93
|
+
],
|
|
94
|
+
"code": "<Specimens>\n <Specimen label=\"the front truss, zoomable\" wide>\n <Diagram\n title=\"Front truss — 6 fixtures on 3.2 m centres\"\n zoom={zoom}\n onZoomIn={() => setZoom((current) => Math.min(1.6, current + 0.2))}\n onZoomOut={() => setZoom((current) => Math.max(0.6, current - 0.2))}\n onReset={() => setZoom(1)}\n >\n <svg\n viewBox=\"0 0 200 60\"\n width=\"200\"\n height=\"60\"\n role=\"img\"\n aria-label=\"Six fixtures hung along one truss\"\n >\n <line x1=\"6\" y1=\"20\" x2=\"194\" y2=\"20\" className=\"stroke-fg-subtle\" strokeWidth=\"2\" />\n {[16, 51, 86, 121, 156, 186].map((x) => (\n <rect key={x} x={x - 6} y=\"26\" width=\"12\" height=\"16\" rx=\"2\" className=\"fill-stream\" />\n ))}\n </svg>\n </Diagram>\n </Specimen>\n <Specimen label=\"zoomed out, nothing to expand to\" wide>\n <Diagram title=\"Front truss\" zoom={0.7}>\n <svg viewBox=\"0 0 200 40\" width=\"200\" height=\"40\" role=\"img\" aria-label=\"One truss\">\n <line x1=\"6\" y1=\"20\" x2=\"194\" y2=\"20\" className=\"stroke-fg-subtle\" strokeWidth=\"2\" />\n </svg>\n </Diagram>\n </Specimen>\n</Specimens>",
|
|
95
|
+
"note": "A drawn answer with a viewport around it: zoom, reset, full-bleed. The graphic is yours — the element supplies the frame, the percentage readout and the transform, and never parses or renders anything itself.",
|
|
96
|
+
"interaction": "four named icon buttons; expand disables itself when no handler is given, which is the honest state for a bench with nowhere to expand to. The scale transition stops under reduced motion."
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"todo": true
|
|
100
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "DocumentReference",
|
|
3
|
+
"slug": "document-reference",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A document the answer leans on, with the quoted passage and the page to jump to.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "title",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Document name."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "pages",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Total page count."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "anchors",
|
|
28
|
+
"type": "readonly DocumentAnchor[]",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "The passages the answer drew on, each pinned to a page."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "activePage",
|
|
35
|
+
"type": "number",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Which anchor is highlighted. A page with no anchor highlights nothing."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onJump",
|
|
42
|
+
"type": "((page: number) => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called with the page to open."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"title\" | \"pages\" | \"anchors\" | \"activePage\" | \"onJump\"\n> & {\n /** Document name. */\n title: string;\n /** Total page count. */\n pages: number;\n /** The passages the answer drew on, each pinned to a page. */\n anchors: readonly DocumentAnchor[];\n /** Which anchor is highlighted. A page with no anchor highlights nothing. */\n activePage: number;\n /** Called with the page to open. */\n onJump?: (page: number) => void;\n}"
|
|
50
|
+
],
|
|
51
|
+
"subcomponents": [],
|
|
52
|
+
"parts": [],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-border-strong",
|
|
57
|
+
"--cue-fg-muted",
|
|
58
|
+
"--cue-fg-subtle",
|
|
59
|
+
"--cue-radius-overlay",
|
|
60
|
+
"--cue-radius-surface",
|
|
61
|
+
"--cue-surface-1",
|
|
62
|
+
"--cue-text-body",
|
|
63
|
+
"--cue-text-ui"
|
|
64
|
+
],
|
|
65
|
+
"summary": "A document the answer leans on, with the quoted passage and the page to jump to.",
|
|
66
|
+
"examples": [
|
|
67
|
+
{
|
|
68
|
+
"title": "Usage",
|
|
69
|
+
"code": "import { DocumentReference } from \"@cueplusplus/ui/elements\";\n\n<DocumentReference\n title=\"migration-0.14.pdf\"\n pages={14}\n anchors={anchors}\n activePage={4}\n onJump={setPage}\n/>",
|
|
70
|
+
"language": "tsx"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"status": "todo-docs",
|
|
74
|
+
"url": "/docs/components/document-reference",
|
|
75
|
+
"mdUrl": "/docs/components/document-reference.md",
|
|
76
|
+
"jsonUrl": "/r/components/document-reference.json",
|
|
77
|
+
"specimens": [
|
|
78
|
+
{
|
|
79
|
+
"title": "DocumentReference",
|
|
80
|
+
"group": "elements-knowledge",
|
|
81
|
+
"components": [
|
|
82
|
+
"DocumentReference"
|
|
83
|
+
],
|
|
84
|
+
"code": "<Specimens>\n <Specimen label=\"page 31 active\" wide>\n <DocumentReference\n title=\"ESPRITE user manual, rev. 8\"\n pages={94}\n anchors={ANCHORS}\n activePage={page}\n onJump={setPage}\n />\n </Specimen>\n <Specimen label=\"one anchor\" wide>\n <DocumentReference\n title=\"Truss loading guidance\"\n pages={18}\n anchors={ANCHORS.slice(0, 1)}\n activePage={12}\n />\n </Specimen>\n</Specimens>",
|
|
85
|
+
"note": "One document the answer leans on, with the passages it quoted and the page each is on. Several anchors can cite one page — two of these are both page 31 — so the current one is marked by `aria-current` rather than by matching the number, which is what stops the wrong row lighting up.",
|
|
86
|
+
"interaction": "every quote is a button that reports its page to `onJump`; the active row takes the recessed field ground, the others only on hover."
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"todo": true
|
|
90
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "DraftRestore",
|
|
3
|
+
"slug": "draft-restore",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Come back to a thread and the sentence you never sent is still waiting.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "draft",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "The unsent text, truncated to one line."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "savedAt",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "When it was last touched, pre-formatted."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onRestore",
|
|
28
|
+
"type": "(() => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called to put the draft back in the composer."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onDiscard",
|
|
35
|
+
"type": "(() => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called to throw the draft away."
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"typeReferences": [
|
|
42
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"draft\" | \"savedAt\" | \"onRestore\" | \"onDiscard\"\n> & {\n /** The unsent text, truncated to one line. */\n draft: string;\n /** When it was last touched, pre-formatted. */\n savedAt: string;\n /** Called to put the draft back in the composer. */\n onRestore?: () => void;\n /** Called to throw the draft away. */\n onDiscard?: () => void;\n}"
|
|
43
|
+
],
|
|
44
|
+
"subcomponents": [],
|
|
45
|
+
"parts": [],
|
|
46
|
+
"variants": {},
|
|
47
|
+
"defaultVariants": {},
|
|
48
|
+
"tokensUsed": [
|
|
49
|
+
"--cue-fg",
|
|
50
|
+
"--cue-fg-muted",
|
|
51
|
+
"--cue-fg-subtle",
|
|
52
|
+
"--cue-radius-overlay",
|
|
53
|
+
"--cue-surface-2",
|
|
54
|
+
"--cue-text-body",
|
|
55
|
+
"--cue-text-ui"
|
|
56
|
+
],
|
|
57
|
+
"summary": "Come back to a thread and the sentence you never sent is still waiting.",
|
|
58
|
+
"examples": [
|
|
59
|
+
{
|
|
60
|
+
"title": "Usage",
|
|
61
|
+
"code": "import { DraftRestore } from \"@cueplusplus/ui/elements\";\n\n<DraftRestore\n draft=\"Add a regression test for draft restore\"\n savedAt=\"2 minutes ago\"\n onRestore={restore}\n onDiscard={discard}\n/>",
|
|
62
|
+
"language": "tsx"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"status": "todo-docs",
|
|
66
|
+
"url": "/docs/components/draft-restore",
|
|
67
|
+
"mdUrl": "/docs/components/draft-restore.md",
|
|
68
|
+
"jsonUrl": "/r/components/draft-restore.json",
|
|
69
|
+
"specimens": [
|
|
70
|
+
{
|
|
71
|
+
"title": "DraftRestore",
|
|
72
|
+
"group": "elements-composer",
|
|
73
|
+
"components": [
|
|
74
|
+
"DraftRestore"
|
|
75
|
+
],
|
|
76
|
+
"code": "<Specimens>\n <Specimen label=\"waiting\" wide>\n <DraftRestore\n draft=\"Patch the back truss too, but leave universe 4 alone\"\n savedAt=\"14 minutes ago\"\n onRestore={() => undefined}\n onDiscard={() => undefined}\n />\n </Specimen>\n <Specimen label=\"long draft\" wide>\n <DraftRestore\n draft=\"Check whether the ESPRITEs on the back truss are still in mode 4 and, if they are, tell me before changing anything\"\n savedAt=\"yesterday\"\n onRestore={() => undefined}\n onDiscard={() => undefined}\n />\n </Specimen>\n</Specimens>",
|
|
77
|
+
"note": "Come back to a thread and the sentence you never sent is still sitting there. One line of what it was, when it was saved, and the two answers anybody ever has for it. `savedAt` is pre-formatted like every other time in this family — the element does no date maths, so a server-rendered draft and a client-rendered one cannot disagree.",
|
|
78
|
+
"interaction": "restore is a worded button and discard is a labelled icon (`Discard the draft`): the destructive one is the one that has to be aimed at."
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"todo": true
|
|
82
|
+
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"props": [
|
|
26
26
|
{
|
|
27
27
|
"name": "swipeDirection",
|
|
28
|
-
"type": "\"
|
|
28
|
+
"type": "\"left\" | \"right\" | \"up\" | \"down\"",
|
|
29
29
|
"required": false,
|
|
30
30
|
"defaultValue": "down",
|
|
31
31
|
"description": "Which way the drawer is dragged to dismiss it, which also decides the edge\nit lives on. Defaults to `\"down\"` — the bottom sheet."
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
"name": "side",
|
|
90
|
-
"type": "\"left\" | \"right\" | \"
|
|
90
|
+
"type": "\"left\" | \"right\" | \"bottom\" | \"top\" | \"inline-end\" | \"inline-start\"",
|
|
91
91
|
"required": false,
|
|
92
92
|
"defaultValue": null,
|
|
93
93
|
"description": "Preferred side of the trigger. Defaults to `\"bottom\"`."
|
|
@@ -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
|
+
}
|