@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,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ReviewableDiff",
|
|
3
|
+
"slug": "reviewable-diff",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The same diff, but each hunk is a decision: keep it, discard it, apply what\nsurvived.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "filename",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "File the hunks belong to."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "hunks",
|
|
21
|
+
"type": "readonly DiffHunk[]",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Each hunk carries its own decision. Apply stays disabled until none are pending."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onKeep",
|
|
28
|
+
"type": "((id: string) => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called when a hunk is accepted."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onDiscard",
|
|
35
|
+
"type": "((id: string) => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called when a hunk is rejected."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onApply",
|
|
42
|
+
"type": "(() => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called when the reviewed set is committed. Only kept hunks should be written."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"filename\" | \"hunks\" | \"onKeep\" | \"onDiscard\" | \"onApply\"\n> & {\n /** File the hunks belong to. */\n filename: string;\n /** Each hunk carries its own decision. Apply stays disabled until none are pending. */\n hunks: readonly DiffHunk[];\n /** Called when a hunk is accepted. */\n onKeep?: (id: string) => void;\n /** Called when a hunk is rejected. */\n onDiscard?: (id: string) => void;\n /** Called when the reviewed set is committed. Only kept hunks should be written. */\n onApply?: () => void;\n}"
|
|
50
|
+
],
|
|
51
|
+
"subcomponents": [],
|
|
52
|
+
"parts": [],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-border",
|
|
57
|
+
"--cue-danger",
|
|
58
|
+
"--cue-fg",
|
|
59
|
+
"--cue-fg-muted",
|
|
60
|
+
"--cue-fg-subtle",
|
|
61
|
+
"--cue-font-mono",
|
|
62
|
+
"--cue-ok",
|
|
63
|
+
"--cue-radius-overlay",
|
|
64
|
+
"--cue-surface-2",
|
|
65
|
+
"--cue-text-label",
|
|
66
|
+
"--cue-text-ui"
|
|
67
|
+
],
|
|
68
|
+
"summary": "The same diff, but each hunk is a decision: keep it, discard it, apply what survived.",
|
|
69
|
+
"examples": [
|
|
70
|
+
{
|
|
71
|
+
"title": "Usage",
|
|
72
|
+
"code": "import { ReviewableDiff } from \"@cueplusplus/ui/elements\";\n\n<ReviewableDiff\n filename=\"composer.tsx\"\n hunks={hunks}\n onKeep={(id) => decide(id, \"kept\")}\n onDiscard={(id) => decide(id, \"discarded\")}\n onApply={commit}\n/>",
|
|
73
|
+
"language": "tsx"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"status": "todo-docs",
|
|
77
|
+
"url": "/docs/components/reviewable-diff",
|
|
78
|
+
"mdUrl": "/docs/components/reviewable-diff.md",
|
|
79
|
+
"jsonUrl": "/r/components/reviewable-diff.json",
|
|
80
|
+
"specimens": [
|
|
81
|
+
{
|
|
82
|
+
"title": "ReviewableDiff",
|
|
83
|
+
"group": "elements",
|
|
84
|
+
"components": [
|
|
85
|
+
"ReviewableDiff"
|
|
86
|
+
],
|
|
87
|
+
"code": "<Specimens>\n <Specimen label=\"under review\" wide>\n <ReviewableDiff\n filename=\"show/main-stage.cue\"\n hunks={HUNKS.map((hunk) => ({\n ...hunk,\n decision: decisions[hunk.id] ?? \"pending\",\n }))}\n onKeep={decide(\"kept\")}\n onDiscard={decide(\"discarded\")}\n onApply={() => setDecisions({ fade: \"pending\", follow: \"pending\" })}\n />\n </Specimen>\n</Specimens>",
|
|
88
|
+
"note": "The same diff, except every hunk is a decision. A discarded hunk stays visible at reduced opacity rather than vanishing, so what the reviewer turned down is still part of what they reviewed, and Apply stays disabled until nothing is pending.",
|
|
89
|
+
"interaction": "Keep and Discard are per hunk and named by range for a screen reader. Apply here puts every hunk back to pending, so the bench can be run again."
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"todo": true
|
|
93
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "RiskBadge",
|
|
3
|
+
"slug": "risk-badge",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "How dangerous this call is, said out loud instead of implied.\n\nOne of the two elements the field study found nobody shipping. Every agent UI\nknows which of its tools are frightening — that is what the approval buckets\nare — but the knowledge lives in the taxonomy rather than on the row, so a\n`curl` to an arbitrary host and a `cat` of a local file look alike until you\nread them. A runtime that scores its own actions can put the score on the\nrow, and one element renders it for every tool that will ever exist.\n\n`unknown` is a first-class value and it is the default answer for a runtime\nwith no scorer. The alternative — omitting the badge, or falling back to\n`low` — is how a UI ends up implying that unscored means safe.\n\nColour is never alone: each risk has its own glyph and its own words, so the\nbadge survives a colour-blind reader, a monochrome screenshot and a theme\nwhose danger hue is somebody's brand red.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "risk",
|
|
14
|
+
"type": "\"low\" | \"high\" | \"medium\" | \"unknown\"",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "What the runtime says this call could do: `unknown`, `low`, `medium` or\n`high`. Stamped as `data-risk`, and as `data-color` for the tone, so a\nconsole can restyle the row from the attribute rather than from a prop."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "label",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "What it is called. Defaults to `RISK_LABELS[risk]` — `High risk`, not\n`HIGH`, because the badge sits inline beside a duration and a diff stat and\na bare adjective there is a number about something."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "reason",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Why, in the words the products that guess at risk already use: `outside\nyour workspace`, `protected file`, `arbitrary network access`. Drawn beside\nthe label, truncating before the label does."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<React.ComponentPropsWithoutRef<\"span\">, \"children\">"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-border",
|
|
43
|
+
"--cue-danger",
|
|
44
|
+
"--cue-fg-subtle",
|
|
45
|
+
"--cue-ok",
|
|
46
|
+
"--cue-text-ui",
|
|
47
|
+
"--cue-warn"
|
|
48
|
+
],
|
|
49
|
+
"summary": "How dangerous this call is, said out loud instead of implied.",
|
|
50
|
+
"examples": [
|
|
51
|
+
{
|
|
52
|
+
"title": "Usage",
|
|
53
|
+
"code": "import { RiskBadge } from \"@cueplusplus/ui/elements\";\n\n<RiskBadge risk=\"high\" reason=\"arbitrary network access\" />\n// The honest answer from a runtime that does not score its actions.\n<RiskBadge risk=\"unknown\" />",
|
|
54
|
+
"language": "tsx"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"status": "todo-docs",
|
|
58
|
+
"url": "/docs/components/risk-badge",
|
|
59
|
+
"mdUrl": "/docs/components/risk-badge.md",
|
|
60
|
+
"jsonUrl": "/r/components/risk-badge.json",
|
|
61
|
+
"specimens": [
|
|
62
|
+
{
|
|
63
|
+
"title": "RiskBadge",
|
|
64
|
+
"group": "elements",
|
|
65
|
+
"components": [
|
|
66
|
+
"RiskBadge"
|
|
67
|
+
],
|
|
68
|
+
"code": "<Specimens>\n <Specimen label=\"the four\">\n <span className=\"flex flex-wrap items-center gap-(--cue-space-2)\">\n <RiskBadge risk=\"unknown\" />\n <RiskBadge risk=\"low\" />\n <RiskBadge risk=\"medium\" />\n <RiskBadge risk=\"high\" />\n </span>\n </Specimen>\n <Specimen label=\"with the qualifier the row needs\" wide>\n <span className=\"flex flex-col items-start gap-(--cue-space-2)\">\n <RiskBadge risk=\"medium\" reason=\"outside your workspace\" />\n <RiskBadge risk=\"high\" reason=\"arbitrary network access\" />\n </span>\n </Specimen>\n</Specimens>",
|
|
69
|
+
"note": "How dangerous the runtime says this call is, said out loud instead of implied. Six of the seven open-source agent UIs in the study encode risk through which approval bucket a tool happens to fall into, so a fetch to an arbitrary host and a read of a local file look alike until you read them. One runtime scores the action itself, and one badge then renders it for every tool that will ever exist. `unknown` is a first-class value: a runtime with no scorer must not be made to look like one that scored everything safe.",
|
|
70
|
+
"interaction": "none. The qualifier beside the label is the half the implicit products were right about — `High risk` on its own is a temperature, `High risk · arbitrary network access` is a fact — and it truncates before the label does."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"todo": true
|
|
74
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScheduleCard",
|
|
3
|
+
"slug": "schedule-card",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A run that repeats on its own, with its cadence and how it has been doing.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "name",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "What the scheduled run does."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "cadence",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Human-readable recurrence, not a cron string."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "nextRun",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "When it fires next. Replaced by paused when disabled."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "enabled",
|
|
35
|
+
"type": "boolean",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Whether the schedule is live."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "history",
|
|
42
|
+
"type": "readonly ScheduleRun[]",
|
|
43
|
+
"required": true,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Recent runs, so a silently failing schedule is visible."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onToggle",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called when the schedule is paused or resumed."
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"typeReferences": [
|
|
56
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"name\"\n | \"cadence\"\n | \"nextRun\"\n | \"enabled\"\n | \"history\"\n | \"onToggle\"\n> & {\n /** What the scheduled run does. */\n name: string;\n /** Human-readable recurrence, not a cron string. */\n cadence: string;\n /** When it fires next. Replaced by paused when disabled. */\n nextRun: string;\n /** Whether the schedule is live. */\n enabled: boolean;\n /** Recent runs, so a silently failing schedule is visible. */\n history: readonly ScheduleRun[];\n /** Called when the schedule is paused or resumed. */\n onToggle?: () => void;\n}"
|
|
57
|
+
],
|
|
58
|
+
"subcomponents": [],
|
|
59
|
+
"parts": [],
|
|
60
|
+
"variants": {},
|
|
61
|
+
"defaultVariants": {},
|
|
62
|
+
"tokensUsed": [
|
|
63
|
+
"--cue-accent",
|
|
64
|
+
"--cue-bg",
|
|
65
|
+
"--cue-danger",
|
|
66
|
+
"--cue-fg-muted",
|
|
67
|
+
"--cue-fg-subtle",
|
|
68
|
+
"--cue-ok",
|
|
69
|
+
"--cue-radius-overlay",
|
|
70
|
+
"--cue-radius-surface",
|
|
71
|
+
"--cue-surface-1",
|
|
72
|
+
"--cue-surface-3",
|
|
73
|
+
"--cue-text-body",
|
|
74
|
+
"--cue-text-ui"
|
|
75
|
+
],
|
|
76
|
+
"summary": "A run that repeats on its own, with its cadence and how it has been doing.",
|
|
77
|
+
"examples": [
|
|
78
|
+
{
|
|
79
|
+
"title": "Usage",
|
|
80
|
+
"code": "import { ScheduleCard } from \"@cueplusplus/ui/elements\";\n\n<ScheduleCard\n name=\"Triage the issue queue\"\n cadence=\"every day at 06:00\"\n nextRun=\"Tomorrow, 06:00\"\n enabled\n history={history}\n onToggle={toggle}\n/>",
|
|
81
|
+
"language": "tsx"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"status": "todo-docs",
|
|
85
|
+
"url": "/docs/components/schedule-card",
|
|
86
|
+
"mdUrl": "/docs/components/schedule-card.md",
|
|
87
|
+
"jsonUrl": "/r/components/schedule-card.json",
|
|
88
|
+
"specimens": [
|
|
89
|
+
{
|
|
90
|
+
"title": "ScheduleCard",
|
|
91
|
+
"group": "elements-knowledge",
|
|
92
|
+
"components": [
|
|
93
|
+
"ScheduleCard"
|
|
94
|
+
],
|
|
95
|
+
"code": "<Specimens>\n <Specimen label=\"running\" wide>\n <ScheduleCard\n name=\"Pre-show rig check\"\n cadence=\"every day at 17:30\"\n nextRun=\"Today 17:30\"\n enabled={scheduled}\n history={RUNS}\n onToggle={() => setScheduled((current) => !current)}\n />\n </Specimen>\n <Specimen label=\"paused\" wide>\n <ScheduleCard\n name=\"Pre-show rig check\"\n cadence=\"every day at 17:30\"\n nextRun=\"Today 17:30\"\n enabled={false}\n history={RUNS}\n />\n </Specimen>\n</Specimens>",
|
|
96
|
+
"note": "A job that repeats on its own: what it is called, how often it goes, when it next goes, and how the last three went. Paused, the next-run row dims and says `paused` rather than showing a time that will not happen.",
|
|
97
|
+
"interaction": "the toggle is a real switch — role, `aria-checked` and a label naming the schedule — so three of these on a page do not all read as 'Toggle'."
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"todo": true
|
|
101
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScoreBreakdown",
|
|
3
|
+
"slug": "score-breakdown",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A verdict with its arithmetic shown: criteria, weights, and what pulled it down.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "verdict",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The decision in a word. Its tint follows total over outOf."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "total",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "The composite score."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "outOf",
|
|
26
|
+
"type": "number",
|
|
27
|
+
"required": true,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Maximum possible, for the headline and for every criterion bar."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "criteria",
|
|
33
|
+
"type": "readonly ScoreCriterion[]",
|
|
34
|
+
"required": true,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "What produced the number, so the verdict can be argued with."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "visibleCount",
|
|
40
|
+
"type": "number",
|
|
41
|
+
"required": true,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "How many criteria have been scored."
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"typeReferences": [
|
|
47
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"verdict\" | \"total\" | \"outOf\" | \"criteria\" | \"visibleCount\"\n> & {\n /** The decision in a word. Its tint follows total over outOf. */\n verdict: string;\n /** The composite score. */\n total: number;\n /** Maximum possible, for the headline and for every criterion bar. */\n outOf: number;\n /** What produced the number, so the verdict can be argued with. */\n criteria: readonly ScoreCriterion[];\n /** How many criteria have been scored. */\n visibleCount: number;\n}"
|
|
48
|
+
],
|
|
49
|
+
"subcomponents": [],
|
|
50
|
+
"parts": [],
|
|
51
|
+
"variants": {},
|
|
52
|
+
"defaultVariants": {},
|
|
53
|
+
"tokensUsed": [
|
|
54
|
+
"--cue-danger",
|
|
55
|
+
"--cue-fg-muted",
|
|
56
|
+
"--cue-fg-subtle",
|
|
57
|
+
"--cue-ok",
|
|
58
|
+
"--cue-radius-overlay",
|
|
59
|
+
"--cue-stream",
|
|
60
|
+
"--cue-surface-2",
|
|
61
|
+
"--cue-text-body",
|
|
62
|
+
"--cue-text-title",
|
|
63
|
+
"--cue-text-ui",
|
|
64
|
+
"--cue-warn"
|
|
65
|
+
],
|
|
66
|
+
"summary": "A verdict with its arithmetic shown: criteria, weights, and what pulled it down.",
|
|
67
|
+
"examples": [
|
|
68
|
+
{
|
|
69
|
+
"title": "Usage",
|
|
70
|
+
"code": "import { ScoreBreakdown } from \"@cueplusplus/ui/elements\";\n\n<ScoreBreakdown\n verdict=\"approve\"\n total={4.2}\n outOf={5}\n criteria={criteria}\n visibleCount={3}\n/>",
|
|
71
|
+
"language": "tsx"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"status": "todo-docs",
|
|
75
|
+
"url": "/docs/components/score-breakdown",
|
|
76
|
+
"mdUrl": "/docs/components/score-breakdown.md",
|
|
77
|
+
"jsonUrl": "/r/components/score-breakdown.json",
|
|
78
|
+
"specimens": [
|
|
79
|
+
{
|
|
80
|
+
"title": "ScoreBreakdown",
|
|
81
|
+
"group": "elements-knowledge",
|
|
82
|
+
"components": [
|
|
83
|
+
"ScoreBreakdown"
|
|
84
|
+
],
|
|
85
|
+
"code": "<Specimens>\n <Specimen label=\"all four criteria\" wide>\n <ScoreBreakdown\n verdict=\"recommended\"\n total={7.8}\n outOf={10}\n criteria={CRITERIA}\n visibleCount={CRITERIA.length}\n />\n </Specimen>\n <Specimen label=\"arriving, and marginal\" wide>\n <ScoreBreakdown\n verdict=\"marginal\"\n total={5.4}\n outOf={10}\n criteria={CRITERIA}\n visibleCount={2}\n />\n </Specimen>\n</Specimens>",
|
|
86
|
+
"note": "A verdict with its working shown. The number leads, the badge names it in words, and every criterion carries its weight and the note that explains a low mark — which is what makes a 7.8 arguable instead of oracular. The badge's three bands are the element's own thresholds at three quarters and a half.",
|
|
87
|
+
"interaction": "none. The bars animate their width, and hold still for a reader who asked for less motion."
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"todo": true
|
|
91
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ScrollAnchor",
|
|
3
|
+
"slug": "scroll-anchor",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Streaming never steals your scroll position; a pill offers the way back down.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "messages",
|
|
14
|
+
"type": "ScrollAnchorMessage[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Conversation messages appended over time inside the scroll viewport."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "paused",
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": "false",
|
|
24
|
+
"description": "Freezes the scene where it is; replay happens by remounting."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onSettled",
|
|
28
|
+
"type": "(() => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called once every message has landed and the viewport is pinned."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"messages\" | \"paused\" | \"onSettled\"\n> & {\n /** Conversation messages appended over time inside the scroll viewport. */\n messages: ScrollAnchorMessage[];\n /** Freezes the scene where it is; replay happens by remounting. */\n paused?: boolean;\n /** Called once every message has landed and the viewport is pinned. */\n onSettled?: () => void;\n}"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg-muted",
|
|
43
|
+
"--cue-radius-overlay",
|
|
44
|
+
"--cue-surface-1",
|
|
45
|
+
"--cue-text-ui"
|
|
46
|
+
],
|
|
47
|
+
"summary": "Streaming never steals your scroll position; a pill offers the way back down.",
|
|
48
|
+
"examples": [
|
|
49
|
+
{
|
|
50
|
+
"title": "Usage",
|
|
51
|
+
"code": "import { ScrollAnchor } from \"@cueplusplus/ui/elements\";\n\n<ScrollAnchor\n messages={[\n { role: \"user\", text: \"Keep scrolling pinned?\" },\n { role: \"assistant\", text: \"Only when you are already at the bottom.\" },\n ]}\n/>",
|
|
52
|
+
"language": "tsx"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"status": "todo-docs",
|
|
56
|
+
"url": "/docs/components/scroll-anchor",
|
|
57
|
+
"mdUrl": "/docs/components/scroll-anchor.md",
|
|
58
|
+
"jsonUrl": "/r/components/scroll-anchor.json",
|
|
59
|
+
"specimens": [
|
|
60
|
+
{
|
|
61
|
+
"title": "ScrollAnchor",
|
|
62
|
+
"group": "elements-thread",
|
|
63
|
+
"components": [
|
|
64
|
+
"ScrollAnchor"
|
|
65
|
+
],
|
|
66
|
+
"code": "<Specimens>\n <Specimen label=\"arriving\">\n <ScrollAnchor messages={ARRIVING} />\n </Specimen>\n <Specimen label=\"paused at the top\">\n <ScrollAnchor messages={ARRIVING} paused />\n </Specimen>\n</Specimens>",
|
|
67
|
+
"note": "The rule every transcript needs and few get: streaming may only move the viewport if you were already at the bottom of it. Scroll up to read something and the answer keeps arriving behind you; a pill counts what landed and takes you back down. It is the family's one element that runs a clock of its own — the turns append on a timer so the behaviour can be seen standing still.",
|
|
68
|
+
"interaction": "the pill is a button. Both scrolls are CSS `scroll-smooth`, not `scrollTo({ behavior })`, because only the declarative one can be withdrawn: `motion-reduce:scroll-auto` makes them instant, and the timer stops outright, painting the finished transcript in one go."
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"todo": true
|
|
72
|
+
}
|
|
@@ -14,13 +14,6 @@
|
|
|
14
14
|
"defaultValue": null,
|
|
15
15
|
"description": "Extra classes for the frame. Give it a height, or nothing will scroll."
|
|
16
16
|
},
|
|
17
|
-
{
|
|
18
|
-
"name": "orientation",
|
|
19
|
-
"type": "\"both\" | \"horizontal\" | \"vertical\"",
|
|
20
|
-
"required": false,
|
|
21
|
-
"defaultValue": "vertical",
|
|
22
|
-
"description": "Which axes may scroll. Defaults to `\"vertical\"`."
|
|
23
|
-
},
|
|
24
17
|
{
|
|
25
18
|
"name": "children",
|
|
26
19
|
"type": "ReactNode",
|
|
@@ -28,6 +21,13 @@
|
|
|
28
21
|
"defaultValue": null,
|
|
29
22
|
"description": "The scrolling content."
|
|
30
23
|
},
|
|
24
|
+
{
|
|
25
|
+
"name": "orientation",
|
|
26
|
+
"type": "\"both\" | \"horizontal\" | \"vertical\"",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "vertical",
|
|
29
|
+
"description": "Which axes may scroll. Defaults to `\"vertical\"`."
|
|
30
|
+
},
|
|
31
31
|
{
|
|
32
32
|
"name": "viewportClassName",
|
|
33
33
|
"type": "string",
|
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
"clientOnly": true,
|
|
8
8
|
"description": "A filter box: leading magnifier, Escape to clear, and a debounced change\ncallback for whatever the query drives.\n\nEscape-to-clear is the reason this is a component and not a recipe. It is the\nbehaviour every console filter needs and the one every hand-rolled search box\nforgets, and getting it right means also stopping the key from bubbling into a\ndialog that would otherwise close underneath the user.\n\nDebouncing is deliberately separate from `onValueChange`: the input stays\nresponsive on every keystroke while the expensive work waits for the typing to\nstop. Clearing flushes the debounce rather than scheduling it.",
|
|
9
9
|
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "defaultValue",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Initial query for an uncontrolled input."
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"name": "className",
|
|
12
19
|
"type": "string",
|
|
@@ -21,13 +28,6 @@
|
|
|
21
28
|
"defaultValue": null,
|
|
22
29
|
"description": "Rung of the control ladder. Defaults to `\"md\"`."
|
|
23
30
|
},
|
|
24
|
-
{
|
|
25
|
-
"name": "defaultValue",
|
|
26
|
-
"type": "string",
|
|
27
|
-
"required": false,
|
|
28
|
-
"defaultValue": null,
|
|
29
|
-
"description": "Initial query for an uncontrolled input."
|
|
30
|
-
},
|
|
31
31
|
{
|
|
32
32
|
"name": "debounce",
|
|
33
33
|
"type": "number",
|
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
"clientOnly": true,
|
|
8
8
|
"description": "A one-of-N switch drawn as a row of segments: the console's view picker.\n\nBuilt on Base UI's `ToggleGroup`, so arrow-key roving focus and the\npressed-state ARIA come from the primitive. Two rules are added on top:\n\n1. **It cannot be emptied.** A toggle group lets you unpress the pressed\n item; a segmented control is a choice between N things, so clicking the\n active segment is a no-op rather than a way to end up with nothing\n selected. This is why the underlying group is always controlled here, even\n when the wrapper is not.\n2. **The active segment is tinted, not filled** — see {@link ITEM_CLASSES}.\n\nGive the group an `aria-label`: on its own it is an unnamed group of buttons.",
|
|
9
9
|
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "defaultValue",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The initially picked value when uncontrolled."
|
|
16
|
+
},
|
|
10
17
|
{
|
|
11
18
|
"name": "className",
|
|
12
19
|
"type": "string",
|
|
@@ -14,6 +21,20 @@
|
|
|
14
21
|
"defaultValue": null,
|
|
15
22
|
"description": "Extra classes for the group frame."
|
|
16
23
|
},
|
|
24
|
+
{
|
|
25
|
+
"name": "previousLabel",
|
|
26
|
+
"type": "string",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "Show earlier segments",
|
|
29
|
+
"description": "Accessible name for the chevron that reveals segments off the leading edge."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "nextLabel",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "Show later segments",
|
|
36
|
+
"description": "Accessible name for the chevron that reveals segments off the trailing edge."
|
|
37
|
+
},
|
|
17
38
|
{
|
|
18
39
|
"name": "overflow",
|
|
19
40
|
"type": "\"clip\" | \"scroll\"",
|
|
@@ -28,13 +49,6 @@
|
|
|
28
49
|
"defaultValue": "md",
|
|
29
50
|
"description": "Which rung of the control ladder to sit on. Defaults to `\"md\"`."
|
|
30
51
|
},
|
|
31
|
-
{
|
|
32
|
-
"name": "defaultValue",
|
|
33
|
-
"type": "string",
|
|
34
|
-
"required": false,
|
|
35
|
-
"defaultValue": null,
|
|
36
|
-
"description": "The initially picked value when uncontrolled."
|
|
37
|
-
},
|
|
38
52
|
{
|
|
39
53
|
"name": "value",
|
|
40
54
|
"type": "string",
|
|
@@ -49,20 +63,6 @@
|
|
|
49
63
|
"defaultValue": null,
|
|
50
64
|
"description": "Called with the newly picked value. Never called with `undefined`."
|
|
51
65
|
},
|
|
52
|
-
{
|
|
53
|
-
"name": "previousLabel",
|
|
54
|
-
"type": "string",
|
|
55
|
-
"required": false,
|
|
56
|
-
"defaultValue": "Show earlier segments",
|
|
57
|
-
"description": "Accessible name for the chevron that reveals segments off the leading edge."
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"name": "nextLabel",
|
|
61
|
-
"type": "string",
|
|
62
|
-
"required": false,
|
|
63
|
-
"defaultValue": "Show later segments",
|
|
64
|
-
"description": "Accessible name for the chevron that reveals segments off the trailing edge."
|
|
65
|
-
},
|
|
66
66
|
{
|
|
67
67
|
"name": "items",
|
|
68
68
|
"type": "readonly SegmentedControlItem[]",
|