@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,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ConversationSearch",
|
|
3
|
+
"slug": "conversation-search",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Find inside a long thread, with every hit marked down the scrollbar.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "query",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Current search text."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "hits",
|
|
21
|
+
"type": "readonly SearchHit[]",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Matches in document order. Each carries its own surrounding text so no lookup is\nneeded to render the preview."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "activeIndex",
|
|
28
|
+
"type": "number",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Which hit is current, in both the counter and the rail. Clamped to the current hit\nset, so narrowing the results cannot strand it out of range."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onQueryChange",
|
|
35
|
+
"type": "((query: string) => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called as the search is typed."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onStep",
|
|
42
|
+
"type": "((delta: number) => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called with -1 or 1 to walk the matches. Wrap the index yourself."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"query\" | \"hits\" | \"activeIndex\" | \"onQueryChange\" | \"onStep\"\n> & {\n /** Current search text. */\n query: string;\n /**\n * Matches in document order. Each carries its own surrounding text so no lookup is\n * needed to render the preview.\n */\n hits: readonly SearchHit[];\n /**\n * Which hit is current, in both the counter and the rail. Clamped to the current hit\n * set, so narrowing the results cannot strand it out of range.\n */\n activeIndex: number;\n /** Called as the search is typed. */\n onQueryChange?: (query: string) => void;\n /** Called with -1 or 1 to walk the matches. Wrap the index yourself. */\n onStep?: (delta: number) => void;\n}"
|
|
50
|
+
],
|
|
51
|
+
"subcomponents": [],
|
|
52
|
+
"parts": [],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-accent",
|
|
57
|
+
"--cue-fg",
|
|
58
|
+
"--cue-fg-muted",
|
|
59
|
+
"--cue-fg-subtle",
|
|
60
|
+
"--cue-radius-control",
|
|
61
|
+
"--cue-radius-surface",
|
|
62
|
+
"--cue-surface-1",
|
|
63
|
+
"--cue-text-body",
|
|
64
|
+
"--cue-text-ui",
|
|
65
|
+
"--cue-warn"
|
|
66
|
+
],
|
|
67
|
+
"summary": "Find inside a long thread, with every hit marked down the scrollbar.",
|
|
68
|
+
"examples": [
|
|
69
|
+
{
|
|
70
|
+
"title": "Usage",
|
|
71
|
+
"code": "import { ConversationSearch } from \"@cueplusplus/ui/elements\";\n\n<ConversationSearch\n query={query}\n hits={hits}\n activeIndex={0}\n onQueryChange={setQuery}\n onStep={step}\n/>",
|
|
72
|
+
"language": "tsx"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"status": "todo-docs",
|
|
76
|
+
"url": "/docs/components/conversation-search",
|
|
77
|
+
"mdUrl": "/docs/components/conversation-search.md",
|
|
78
|
+
"jsonUrl": "/r/components/conversation-search.json",
|
|
79
|
+
"specimens": [
|
|
80
|
+
{
|
|
81
|
+
"title": "ConversationSearch",
|
|
82
|
+
"group": "elements-composer",
|
|
83
|
+
"components": [
|
|
84
|
+
"ConversationSearch"
|
|
85
|
+
],
|
|
86
|
+
"code": "<Specimens>\n <Specimen label=\"four hits, second one current\" wide>\n <ConversationSearch\n query={hitQuery}\n hits={HITS}\n activeIndex={hit}\n onQueryChange={setHitQuery}\n onStep={(delta) => setHit((current) => (current + delta + HITS.length) % HITS.length)}\n />\n </Specimen>\n <Specimen label=\"no hits\" wide>\n <ConversationSearch query=\"haze\" hits={[]} activeIndex={0} />\n </Specimen>\n</Specimens>",
|
|
87
|
+
"note": "Find inside one long thread, with every hit marked down the scrollbar so the shape of the answer is visible before you walk it. Each hit carries its own surrounding text, so the preview needs no lookup back into the transcript — which is what lets a search box render before the thread it is searching has loaded.",
|
|
88
|
+
"interaction": "the counter and the rail agree because `activeIndex` is clamped to the current hit set: narrowing the results cannot strand the marker out of range. Stepping is `-1` and `1`; wrapping is the caller's."
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"todo": true
|
|
92
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CostMeter",
|
|
3
|
+
"slug": "cost-meter",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "What the run spent, split by model, against the session total.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "runCost",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Pre-formatted cost of this run."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "sessionCost",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Pre-formatted cumulative cost."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "lines",
|
|
26
|
+
"type": "readonly CostLine[]",
|
|
27
|
+
"required": true,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Per-model breakdown, ordered largest first so the bar reads left to right."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"runCost\" | \"sessionCost\" | \"lines\"\n> & {\n /** Pre-formatted cost of this run. */\n runCost: string;\n /** Pre-formatted cumulative cost. */\n sessionCost: string;\n /** Per-model breakdown, ordered largest first so the bar reads left to right. */\n lines: readonly CostLine[];\n}"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-fg-muted",
|
|
41
|
+
"--cue-fg-subtle",
|
|
42
|
+
"--cue-radius-overlay",
|
|
43
|
+
"--cue-stream",
|
|
44
|
+
"--cue-surface-2",
|
|
45
|
+
"--cue-surface-3",
|
|
46
|
+
"--cue-text-body",
|
|
47
|
+
"--cue-text-title"
|
|
48
|
+
],
|
|
49
|
+
"summary": "What the run spent, split by model, against the session total.",
|
|
50
|
+
"examples": [
|
|
51
|
+
{
|
|
52
|
+
"title": "Usage",
|
|
53
|
+
"code": "import { CostMeter } from \"@cueplusplus/ui/elements\";\n\n<CostMeter runCost=\"$2.76\" sessionCost=\"$18.40\" lines={lines} />",
|
|
54
|
+
"language": "tsx"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"status": "todo-docs",
|
|
58
|
+
"url": "/docs/components/cost-meter",
|
|
59
|
+
"mdUrl": "/docs/components/cost-meter.md",
|
|
60
|
+
"jsonUrl": "/r/components/cost-meter.json",
|
|
61
|
+
"specimens": [
|
|
62
|
+
{
|
|
63
|
+
"title": "CostMeter",
|
|
64
|
+
"group": "elements-agents",
|
|
65
|
+
"components": [
|
|
66
|
+
"CostMeter"
|
|
67
|
+
],
|
|
68
|
+
"code": "<Specimens>\n <Specimen label=\"three models\" wide>\n <CostMeter runCost=\"$5.02\" sessionCost=\"$41.87\" lines={COSTS} />\n </Specimen>\n <Specimen label=\"one model, whole run\" wide>\n <CostMeter\n runCost=\"$0.46\"\n sessionCost=\"$41.87\"\n lines={[{ ...COSTS[2]!, share: 1 }]}\n />\n </Specimen>\n</Specimens>",
|
|
69
|
+
"note": "What the run spent, against what the session has spent — two numbers, then the arithmetic under them. Every figure arrives pre-formatted: the element does no currency maths and no rounding, so a bench and a billing page cannot disagree about what `$3.12` means.",
|
|
70
|
+
"interaction": "none. `share` drives the bar and the lines are given largest-first, so the bar reads left to right in the same order as the rows."
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"todo": true
|
|
74
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"importPath": "@cueplusplus/ui",
|
|
6
6
|
"peerDependencies": [],
|
|
7
7
|
"clientOnly": true,
|
|
8
|
-
"description": "Inline version of the portal contract, for portals whose container cannot be\nchosen (a third-party overlay, or content already portaled by something else).\n\nWraps `children` in a `display: contents` element carrying the same\n`data-theme` / `data-density` / `data-font` / `data-mode` stamp and
|
|
8
|
+
"description": "Inline version of the portal contract, for portals whose container cannot be\nchosen (a third-party overlay, or content already portaled by something else).\n\nWraps `children` in a `display: contents` element carrying the same\n`data-theme` / `data-density` / `data-font` / `data-mode` / `data-cue-skin` /\n`data-cue-fidelity` stamp and `--cue-font-scale` as {@link useCuePortalProps}. Prefer the hook — a stamped container costs one\nelement per overlay instead of one per render tree — and reach for this only\nwhen the container prop is not available.",
|
|
9
9
|
"props": [
|
|
10
10
|
{
|
|
11
11
|
"name": "children",
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "DaySeparator",
|
|
3
|
+
"slug": "day-separator",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Chronology in a long thread: days marked, times on hover.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "messages",
|
|
12
|
+
"type": "readonly DatedMessage[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Turns in order. A separator is inserted wherever day changes from the previous\nmessage, so grouping needs no pre-processing."
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"typeReferences": [
|
|
19
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"messages\"> & {\n /**\n * Turns in order. A separator is inserted wherever day changes from the previous\n * message, so grouping needs no pre-processing.\n */\n messages: readonly DatedMessage[];\n}"
|
|
20
|
+
],
|
|
21
|
+
"subcomponents": [],
|
|
22
|
+
"parts": [],
|
|
23
|
+
"variants": {},
|
|
24
|
+
"defaultVariants": {},
|
|
25
|
+
"tokensUsed": [
|
|
26
|
+
"--cue-fg-muted",
|
|
27
|
+
"--cue-fg-subtle",
|
|
28
|
+
"--cue-radius-overlay",
|
|
29
|
+
"--cue-surface-1",
|
|
30
|
+
"--cue-surface-2",
|
|
31
|
+
"--cue-text-body"
|
|
32
|
+
],
|
|
33
|
+
"summary": "Chronology in a long thread: days marked, times on hover.",
|
|
34
|
+
"examples": [
|
|
35
|
+
{
|
|
36
|
+
"title": "Usage",
|
|
37
|
+
"code": "import { DaySeparator } from \"@cueplusplus/ui/elements\";\n\n<DaySeparator messages={messages} />",
|
|
38
|
+
"language": "tsx"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"status": "todo-docs",
|
|
42
|
+
"url": "/docs/components/day-separator",
|
|
43
|
+
"mdUrl": "/docs/components/day-separator.md",
|
|
44
|
+
"jsonUrl": "/r/components/day-separator.json",
|
|
45
|
+
"specimens": [
|
|
46
|
+
{
|
|
47
|
+
"title": "DaySeparator",
|
|
48
|
+
"group": "elements-thread",
|
|
49
|
+
"components": [
|
|
50
|
+
"DaySeparator"
|
|
51
|
+
],
|
|
52
|
+
"code": "<Specimens>\n <Specimen label=\"two days, four turns\" wide>\n <DaySeparator messages={DAYS} />\n </Specimen>\n</Specimens>",
|
|
53
|
+
"note": "Chronology in a thread long enough to have some: a rule wherever the day changes, and per-message times that only appear when you go looking. The caller pre-formats both — the element compares the day strings and does no date arithmetic at all.",
|
|
54
|
+
"interaction": "hover a turn and its timestamp fades up beside it. The rules are decorative; nothing here is a control."
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"todo": true
|
|
58
|
+
}
|
|
@@ -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\"`."
|