@cueplusplus/ui 0.3.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2263 -0
- package/dist/agent-runtime/_glyphs.js +43 -0
- package/dist/agent-runtime/branch-picker.d.ts +45 -0
- package/dist/agent-runtime/branch-picker.js +87 -0
- package/dist/agent-runtime/index.d.ts +4 -0
- package/dist/agent-runtime/index.js +4 -0
- package/dist/agent-runtime/tool-call-card.d.ts +69 -0
- package/dist/agent-runtime/tool-call-card.js +187 -0
- package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
- package/dist/agent-runtime/use-agent-thread.js +251 -0
- package/dist/chat/index.d.ts +2 -2
- package/dist/chat/message-list.d.ts +6 -0
- package/dist/chat/message-list.js +35 -0
- package/dist/chrome/_drag.js +59 -0
- package/dist/chrome/_status-bar-item.js +85 -0
- package/dist/chrome/_status-bar.d.ts +15 -0
- package/dist/chrome/_status-bar.js +171 -0
- package/dist/chrome/app-shell.d.ts +120 -2
- package/dist/chrome/app-shell.js +107 -8
- package/dist/chrome/index.d.ts +4 -3
- package/dist/chrome/status-bar.d.ts +87 -4
- package/dist/chrome/status-bar.js +80 -16
- package/dist/chrome/title-bar.d.ts +11 -1
- package/dist/chrome/title-bar.js +1 -3
- package/dist/configurator/_export.js +3 -2
- package/dist/configurator/_overrides.d.ts +1 -1
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/_segments.js +52 -6
- package/dist/elements/activity-graph.d.ts +40 -0
- package/dist/elements/activity-graph.js +81 -0
- package/dist/elements/agent-card.d.ts +49 -0
- package/dist/elements/agent-card.js +91 -0
- package/dist/elements/agent-handoff.d.ts +24 -0
- package/dist/elements/agent-handoff.js +53 -0
- package/dist/elements/agent-mode-badge.d.ts +72 -0
- package/dist/elements/agent-mode-badge.js +110 -0
- package/dist/elements/agent-plan.d.ts +24 -0
- package/dist/elements/agent-plan.js +74 -0
- package/dist/elements/agent-status.d.ts +29 -0
- package/dist/elements/agent-status.js +46 -0
- package/dist/elements/agent-surface.d.ts +65 -0
- package/dist/elements/agent-surface.js +68 -0
- package/dist/elements/animated-number.d.ts +86 -0
- package/dist/elements/animated-number.js +118 -0
- package/dist/elements/approval-card.d.ts +40 -0
- package/dist/elements/approval-card.js +78 -0
- package/dist/elements/artifact-card.d.ts +30 -0
- package/dist/elements/artifact-card.js +58 -0
- package/dist/elements/background-inbox.d.ts +39 -0
- package/dist/elements/background-inbox.js +60 -0
- package/dist/elements/canvas-split.d.ts +77 -0
- package/dist/elements/canvas-split.js +138 -0
- package/dist/elements/chart.d.ts +41 -0
- package/dist/elements/chart.js +117 -0
- package/dist/elements/chat-panel.d.ts +46 -0
- package/dist/elements/chat-panel.js +104 -0
- package/dist/elements/checkpoint-history.d.ts +31 -0
- package/dist/elements/checkpoint-history.js +65 -0
- package/dist/elements/clamp.d.ts +90 -0
- package/dist/elements/clamp.js +109 -0
- package/dist/elements/code-diff.d.ts +42 -0
- package/dist/elements/code-diff.js +69 -0
- package/dist/elements/code-runner.d.ts +38 -0
- package/dist/elements/code-runner.js +84 -0
- package/dist/elements/command-palette.d.ts +48 -0
- package/dist/elements/command-palette.js +129 -0
- package/dist/elements/compaction-row.d.ts +63 -0
- package/dist/elements/compaction-row.js +110 -0
- package/dist/elements/comparison-card.d.ts +47 -0
- package/dist/elements/comparison-card.js +69 -0
- package/dist/elements/composer.d.ts +274 -0
- package/dist/elements/composer.js +505 -0
- package/dist/elements/computer-use.d.ts +40 -0
- package/dist/elements/computer-use.js +92 -0
- package/dist/elements/confidence-marker.d.ts +39 -0
- package/dist/elements/confidence-marker.js +64 -0
- package/dist/elements/connection-state.d.ts +29 -0
- package/dist/elements/connection-state.js +66 -0
- package/dist/elements/context-breakdown.d.ts +30 -0
- package/dist/elements/context-breakdown.js +86 -0
- package/dist/elements/context-usage.d.ts +99 -0
- package/dist/elements/context-usage.js +225 -0
- package/dist/elements/conversation-search.d.ts +48 -0
- package/dist/elements/conversation-search.js +88 -0
- package/dist/elements/cost-meter.d.ts +33 -0
- package/dist/elements/cost-meter.js +75 -0
- package/dist/elements/data-table.d.ts +31 -0
- package/dist/elements/data-table.js +67 -0
- package/dist/elements/day-separator.d.ts +34 -0
- package/dist/elements/day-separator.js +50 -0
- package/dist/elements/diagram.d.ts +34 -0
- package/dist/elements/diagram.js +75 -0
- package/dist/elements/document-reference.d.ts +37 -0
- package/dist/elements/document-reference.js +66 -0
- package/dist/elements/draft-restore.d.ts +27 -0
- package/dist/elements/draft-restore.js +54 -0
- package/dist/elements/edit-message.d.ts +36 -0
- package/dist/elements/edit-message.js +77 -0
- package/dist/elements/elements.css +459 -0
- package/dist/elements/elicitation-form.d.ts +48 -0
- package/dist/elements/elicitation-form.js +106 -0
- package/dist/elements/empty-state.d.ts +52 -0
- package/dist/elements/empty-state.js +98 -0
- package/dist/elements/end-of-turn-summary.d.ts +60 -0
- package/dist/elements/end-of-turn-summary.js +75 -0
- package/dist/elements/error-state.d.ts +29 -0
- package/dist/elements/error-state.js +55 -0
- package/dist/elements/feedback-dialog.d.ts +36 -0
- package/dist/elements/feedback-dialog.js +81 -0
- package/dist/elements/file-tree.d.ts +45 -0
- package/dist/elements/file-tree.js +84 -0
- package/dist/elements/flow-graph.d.ts +45 -0
- package/dist/elements/flow-graph.js +78 -0
- package/dist/elements/generative/chart.js +200 -0
- package/dist/elements/generative/faults.js +111 -0
- package/dist/elements/generative/icons.d.ts +41 -0
- package/dist/elements/generative/icons.js +190 -0
- package/dist/elements/generative/intrinsics.js +483 -0
- package/dist/elements/generative/spec.d.ts +110 -0
- package/dist/elements/generative/spec.js +366 -0
- package/dist/elements/generative.css +1145 -0
- package/dist/elements/generative.d.ts +144 -0
- package/dist/elements/generative.js +126 -0
- package/dist/elements/guardrail-notice.d.ts +29 -0
- package/dist/elements/guardrail-notice.js +63 -0
- package/dist/elements/image-generation.d.ts +18 -0
- package/dist/elements/image-generation.js +64 -0
- package/dist/elements/index.d.ts +116 -0
- package/dist/elements/index.js +115 -0
- package/dist/elements/inline-citation.d.ts +43 -0
- package/dist/elements/inline-citation.js +93 -0
- package/dist/elements/job-progress.d.ts +49 -0
- package/dist/elements/job-progress.js +74 -0
- package/dist/elements/launcher-bubble.d.ts +34 -0
- package/dist/elements/launcher-bubble.js +72 -0
- package/dist/elements/live-region-announcer.d.ts +130 -0
- package/dist/elements/live-region-announcer.js +230 -0
- package/dist/elements/loading-state.d.ts +27 -0
- package/dist/elements/loading-state.js +36 -0
- package/dist/elements/map-answer.d.ts +38 -0
- package/dist/elements/map-answer.js +93 -0
- package/dist/elements/markdown.d.ts +131 -0
- package/dist/elements/markdown.js +528 -0
- package/dist/elements/math-block.d.ts +51 -0
- package/dist/elements/math-block.js +70 -0
- package/dist/elements/mcp-server-panel.d.ts +41 -0
- package/dist/elements/mcp-server-panel.js +115 -0
- package/dist/elements/memory-chips.d.ts +30 -0
- package/dist/elements/memory-chips.js +43 -0
- package/dist/elements/message-actions.d.ts +38 -0
- package/dist/elements/message-actions.js +71 -0
- package/dist/elements/message-attachment.d.ts +48 -0
- package/dist/elements/message-attachment.js +63 -0
- package/dist/elements/message-branches.d.ts +25 -0
- package/dist/elements/message-branches.js +65 -0
- package/dist/elements/message-pair.d.ts +33 -0
- package/dist/elements/message-pair.js +65 -0
- package/dist/elements/message-queue.d.ts +31 -0
- package/dist/elements/message-queue.js +80 -0
- package/dist/elements/message-timing.d.ts +33 -0
- package/dist/elements/message-timing.js +37 -0
- package/dist/elements/mobile-composer.d.ts +44 -0
- package/dist/elements/mobile-composer.js +88 -0
- package/dist/elements/model-picker.d.ts +38 -0
- package/dist/elements/model-picker.js +69 -0
- package/dist/elements/number-ticker.d.ts +18 -0
- package/dist/elements/number-ticker.js +47 -0
- package/dist/elements/onboarding.d.ts +30 -0
- package/dist/elements/onboarding.js +75 -0
- package/dist/elements/permission-grant.d.ts +35 -0
- package/dist/elements/permission-grant.js +86 -0
- package/dist/elements/permission-scopes.d.ts +215 -0
- package/dist/elements/permission-scopes.js +249 -0
- package/dist/elements/prompt-library.d.ts +43 -0
- package/dist/elements/prompt-library.js +117 -0
- package/dist/elements/queue-dock.d.ts +101 -0
- package/dist/elements/queue-dock.js +132 -0
- package/dist/elements/quota-banner.d.ts +26 -0
- package/dist/elements/quota-banner.js +66 -0
- package/dist/elements/quote-reply.d.ts +44 -0
- package/dist/elements/quote-reply.js +79 -0
- package/dist/elements/range.d.ts +29 -0
- package/dist/elements/range.js +45 -0
- package/dist/elements/read-aloud.d.ts +45 -0
- package/dist/elements/read-aloud.js +75 -0
- package/dist/elements/reasoning-effort.d.ts +36 -0
- package/dist/elements/reasoning-effort.js +67 -0
- package/dist/elements/reasoning-panel.d.ts +46 -0
- package/dist/elements/reasoning-panel.js +75 -0
- package/dist/elements/recommendation-card.d.ts +45 -0
- package/dist/elements/recommendation-card.js +83 -0
- package/dist/elements/regenerate-menu.d.ts +45 -0
- package/dist/elements/regenerate-menu.js +51 -0
- package/dist/elements/replay.d.ts +217 -0
- package/dist/elements/replay.js +498 -0
- package/dist/elements/research-report.d.ts +38 -0
- package/dist/elements/research-report.js +69 -0
- package/dist/elements/retrieval-chunks.d.ts +43 -0
- package/dist/elements/retrieval-chunks.js +81 -0
- package/dist/elements/revert-dock.d.ts +159 -0
- package/dist/elements/revert-dock.js +327 -0
- package/dist/elements/reviewable-diff.d.ts +45 -0
- package/dist/elements/reviewable-diff.js +110 -0
- package/dist/elements/risk-badge.d.ts +52 -0
- package/dist/elements/risk-badge.js +91 -0
- package/dist/elements/schedule-card.d.ts +42 -0
- package/dist/elements/schedule-card.js +90 -0
- package/dist/elements/score-breakdown.d.ts +47 -0
- package/dist/elements/score-breakdown.js +82 -0
- package/dist/elements/scroll-anchor.d.ts +32 -0
- package/dist/elements/scroll-anchor.js +121 -0
- package/dist/elements/settings-panel.d.ts +52 -0
- package/dist/elements/settings-panel.js +107 -0
- package/dist/elements/shared-conversation.d.ts +39 -0
- package/dist/elements/shared-conversation.js +68 -0
- package/dist/elements/sources.d.ts +33 -0
- package/dist/elements/sources.js +61 -0
- package/dist/elements/speaker-identity.d.ts +32 -0
- package/dist/elements/speaker-identity.js +51 -0
- package/dist/elements/spec-sheet.d.ts +31 -0
- package/dist/elements/spec-sheet.js +45 -0
- package/dist/elements/stopped-run.d.ts +22 -0
- package/dist/elements/stopped-run.js +50 -0
- package/dist/elements/streaming-text.d.ts +31 -0
- package/dist/elements/streaming-text.js +45 -0
- package/dist/elements/subagent-list.d.ts +37 -0
- package/dist/elements/subagent-list.js +79 -0
- package/dist/elements/suggestions.d.ts +30 -0
- package/dist/elements/suggestions.js +36 -0
- package/dist/elements/surfaces.d.ts +85 -0
- package/dist/elements/surfaces.js +107 -0
- package/dist/elements/tail-status.d.ts +131 -0
- package/dist/elements/tail-status.js +94 -0
- package/dist/elements/terminal-block.d.ts +29 -0
- package/dist/elements/terminal-block.js +54 -0
- package/dist/elements/thinking-indicator.d.ts +18 -0
- package/dist/elements/thinking-indicator.js +36 -0
- package/dist/elements/thread-list.d.ts +35 -0
- package/dist/elements/thread-list.js +68 -0
- package/dist/elements/thread-search.d.ts +42 -0
- package/dist/elements/thread-search.js +99 -0
- package/dist/elements/timeline.d.ts +37 -0
- package/dist/elements/timeline.js +46 -0
- package/dist/elements/todo-list.d.ts +42 -0
- package/dist/elements/todo-list.js +59 -0
- package/dist/elements/tool-call.d.ts +41 -0
- package/dist/elements/tool-call.js +85 -0
- package/dist/elements/tool-error.d.ts +39 -0
- package/dist/elements/tool-error.js +76 -0
- package/dist/elements/tool-group.d.ts +45 -0
- package/dist/elements/tool-group.js +71 -0
- package/dist/elements/tool-timeline.d.ts +65 -0
- package/dist/elements/tool-timeline.js +88 -0
- package/dist/elements/trace-waterfall.d.ts +37 -0
- package/dist/elements/trace-waterfall.js +69 -0
- package/dist/elements/transcript-rules.d.ts +67 -0
- package/dist/elements/transcript-rules.js +95 -0
- package/dist/elements/turn-footer.d.ts +74 -0
- package/dist/elements/turn-footer.js +101 -0
- package/dist/elements/typing-indicator.d.ts +16 -0
- package/dist/elements/typing-indicator.js +51 -0
- package/dist/elements/verdict-row.d.ts +89 -0
- package/dist/elements/verdict-row.js +150 -0
- package/dist/elements/vocabulary.d.ts +612 -0
- package/dist/elements/vocabulary.js +611 -0
- package/dist/elements/voice-conversation.d.ts +49 -0
- package/dist/elements/voice-conversation.js +123 -0
- package/dist/elements/web-preview.d.ts +32 -0
- package/dist/elements/web-preview.js +66 -0
- package/dist/elements/web-search.d.ts +37 -0
- package/dist/elements/web-search.js +66 -0
- package/dist/elements/work-collapse.d.ts +103 -0
- package/dist/elements/work-collapse.js +131 -0
- package/dist/forms/_chassis.d.ts +104 -4
- package/dist/forms/_chassis.js +104 -4
- package/dist/forms/input-group.d.ts +8 -3
- package/dist/forms/input-group.js +8 -3
- package/dist/forms/number-field.d.ts +3 -2
- package/dist/forms/number-field.js +3 -2
- package/dist/icons/containers.d.ts +89 -0
- package/dist/icons/containers.js +295 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +12 -6
- package/dist/index.js +5 -1
- package/dist/instruments/_data-row.js +118 -0
- package/dist/instruments/data-row.d.ts +94 -0
- package/dist/instruments/data-row.js +151 -0
- package/dist/instruments/data-tree.d.ts +126 -0
- package/dist/instruments/data-tree.js +303 -0
- package/dist/instruments/index.d.ts +5 -2
- package/dist/instruments/index.js +4 -1
- package/dist/instruments/ledger.d.ts +105 -0
- package/dist/instruments/ledger.js +114 -0
- package/dist/instruments/table.d.ts +70 -2
- package/dist/instruments/table.js +133 -39
- package/dist/instruments/two-step-button.js +25 -6
- package/dist/layout/sidebar.d.ts +19 -1
- package/dist/layout/sidebar.js +19 -1
- package/dist/primitives/button.js +11 -1
- package/dist/primitives/chip.d.ts +35 -9
- package/dist/primitives/chip.js +97 -11
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +19 -5
- package/dist/system/theme-provider.js +54 -9
- package/dist/system/use-density.d.ts +9 -0
- package/dist/system/use-density.js +9 -0
- package/dist/system/use-isomorphic-layout-effect.js +19 -1
- package/dist/theming/_presets.d.ts +1 -1
- package/dist/theming/_presets.js +74 -11
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +6 -2
- package/dist/theming/create-theme.js +32 -5
- package/dist/theming/serialize.d.ts +10 -1
- package/dist/theming/serialize.js +62 -8
- package/manifest/components/activity-graph.json +88 -0
- package/manifest/components/agent-card.json +120 -0
- package/manifest/components/agent-handoff.json +87 -0
- package/manifest/components/agent-mode-badge.json +84 -0
- package/manifest/components/agent-plan.json +67 -0
- package/manifest/components/agent-status.json +73 -0
- package/manifest/components/agent-surface.json +78 -0
- package/manifest/components/alert-dialog.json +1 -1
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-shell.json +142 -9
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/autocomplete.json +2 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/button.json +1 -0
- package/manifest/components/canvas-split-body.json +62 -0
- package/manifest/components/canvas-split-document.json +54 -0
- package/manifest/components/canvas-split-header.json +83 -0
- package/manifest/components/canvas-split-line.json +62 -0
- package/manifest/components/canvas-split-message.json +62 -0
- package/manifest/components/canvas-split-thread.json +54 -0
- package/manifest/components/canvas-split.json +60 -0
- package/manifest/components/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-released-icon.json +52 -0
- package/manifest/components/chart.json +93 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +51 -0
- package/manifest/components/chat-panel-composer.json +66 -0
- package/manifest/components/chat-panel-messages.json +51 -0
- package/manifest/components/chat-panel-typing.json +51 -0
- package/manifest/components/chat-panel-user-message.json +51 -0
- package/manifest/components/chat-panel.json +57 -0
- package/manifest/components/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +24 -12
- package/manifest/components/clamp.json +102 -0
- package/manifest/components/cli-tool-icon.json +52 -0
- package/manifest/components/code-diff.json +87 -0
- package/manifest/components/code-runner.json +97 -0
- package/manifest/components/color-field.json +2 -0
- package/manifest/components/color-picker.json +2 -0
- package/manifest/components/combobox.json +2 -0
- package/manifest/components/compaction-row.json +100 -0
- package/manifest/components/comparison-card.json +83 -0
- package/manifest/components/composer-actions.json +65 -0
- package/manifest/components/composer-attach-button.json +65 -0
- package/manifest/components/composer-attachment-chip.json +75 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +73 -0
- package/manifest/components/composer-command-item.json +79 -0
- package/manifest/components/composer-context.json +67 -0
- package/manifest/components/composer-input.json +73 -0
- package/manifest/components/composer-menu-item.json +72 -0
- package/manifest/components/composer-menu.json +79 -0
- package/manifest/components/composer-model-item.json +75 -0
- package/manifest/components/composer-model-trigger.json +75 -0
- package/manifest/components/composer-person-item.json +79 -0
- package/manifest/components/composer-send.json +80 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +68 -0
- package/manifest/components/composer-voice.json +75 -0
- package/manifest/components/composer.json +2 -0
- package/manifest/components/computer-use.json +84 -0
- package/manifest/components/confidence-marker.json +74 -0
- package/manifest/components/connection-state.json +84 -0
- package/manifest/components/context-breakdown.json +65 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-portal-frame.json +1 -1
- package/manifest/components/data-row.json +203 -0
- package/manifest/components/data-tree.json +151 -0
- package/manifest/components/date-field.json +2 -0
- package/manifest/components/date-picker.json +2 -0
- package/manifest/components/date-range-picker.json +2 -0
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +1 -1
- package/manifest/components/density.json +1 -1
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +1 -1
- package/manifest/components/dropdown-menu.json +1 -1
- package/manifest/components/edit-message.json +105 -0
- package/manifest/components/elements-command-palette.json +100 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +68 -0
- package/manifest/components/elements-timeline.json +69 -0
- package/manifest/components/elicitation-form.json +103 -0
- package/manifest/components/empty-state-composer.json +64 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +57 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/end-of-turn-summary.json +77 -0
- package/manifest/components/env-var-input.json +2 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -0
- package/manifest/components/frac.json +59 -0
- package/manifest/components/generation-loader.json +64 -0
- package/manifest/components/generative-ui.json +93 -0
- package/manifest/components/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +1 -1
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +1 -1
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/input-group.json +4 -2
- package/manifest/components/input.json +3 -1
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/ledger.json +187 -0
- package/manifest/components/live-region-announcer.json +79 -0
- package/manifest/components/map-answer.json +83 -0
- package/manifest/components/markdown-text.json +94 -0
- package/manifest/components/math-block.json +74 -0
- package/manifest/components/mcp-server-icon.json +52 -0
- package/manifest/components/mcp-server-panel.json +87 -0
- package/manifest/components/memory-chips.json +65 -0
- package/manifest/components/message-actions.json +99 -0
- package/manifest/components/message-attachments.json +63 -0
- package/manifest/components/message-branches.json +71 -0
- package/manifest/components/message-list.json +1 -1
- package/manifest/components/message-pair.json +86 -0
- package/manifest/components/message-queue.json +74 -0
- package/manifest/components/message-timing.json +62 -0
- package/manifest/components/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/multi-select.json +2 -0
- package/manifest/components/musical-time-input.json +2 -0
- package/manifest/components/node-card.json +1 -1
- package/manifest/components/node-handle.json +1 -1
- package/manifest/components/number-field.json +3 -1
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +9 -7
- package/manifest/components/password-input.json +2 -0
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/popover.json +1 -1
- package/manifest/components/prompt-library.json +99 -0
- package/manifest/components/queue-dock.json +110 -0
- package/manifest/components/quota-banner.json +94 -0
- package/manifest/components/quote-reply.json +105 -0
- package/manifest/components/read-aloud.json +111 -0
- package/manifest/components/reasoning-effort.json +81 -0
- package/manifest/components/reasoning-panel.json +108 -0
- package/manifest/components/recommendation-card.json +107 -0
- package/manifest/components/regenerate-menu.json +89 -0
- package/manifest/components/replay-player.json +102 -0
- package/manifest/components/research-report.json +76 -0
- package/manifest/components/retrieval-chunks.json +84 -0
- package/manifest/components/revert-dock.json +150 -0
- package/manifest/components/reviewable-diff.json +93 -0
- package/manifest/components/risk-badge.json +74 -0
- package/manifest/components/schedule-card.json +101 -0
- package/manifest/components/score-breakdown.json +91 -0
- package/manifest/components/scroll-anchor.json +72 -0
- package/manifest/components/scroll-area.json +7 -7
- package/manifest/components/scrub-input.json +2 -0
- package/manifest/components/search-input.json +9 -7
- package/manifest/components/segmented-control.json +21 -21
- package/manifest/components/select.json +1 -0
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +1 -1
- package/manifest/components/status-bar.json +146 -12
- package/manifest/components/status-dot.json +1 -1
- package/manifest/components/stopped-run.json +81 -0
- package/manifest/components/streaming-text.json +71 -0
- package/manifest/components/sub.json +44 -0
- package/manifest/components/subagent-list.json +88 -0
- package/manifest/components/suggestions.json +84 -0
- package/manifest/components/sup.json +44 -0
- package/manifest/components/swap-label.json +71 -0
- package/manifest/components/table-scroll-region.json +6 -0
- package/manifest/components/table.json +88 -4
- package/manifest/components/tags-input.json +2 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/textarea.json +3 -1
- package/manifest/components/theme-provider.json +2 -2
- package/manifest/components/thinking-indicator.json +63 -0
- package/manifest/components/thread-list.json +76 -0
- package/manifest/components/thread-search.json +90 -0
- package/manifest/components/threshold-rail.json +2 -2
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/time-field.json +2 -0
- package/manifest/components/timeline.json +1 -1
- package/manifest/components/title-bar.json +1 -1
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +9 -7
- package/manifest/components/toggle.json +2 -0
- package/manifest/components/token-editor.json +1 -1
- package/manifest/components/tool-call-card.json +200 -0
- package/manifest/components/tool-call.json +119 -0
- package/manifest/components/tool-error.json +114 -0
- package/manifest/components/tool-group.json +83 -0
- package/manifest/components/tool-timeline.json +119 -0
- package/manifest/components/toolbar.json +7 -7
- package/manifest/components/tooltip.json +1 -1
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +1 -1
- package/manifest/components/verdict-row.json +91 -0
- package/manifest/components/voice-conversation.json +109 -0
- package/manifest/components/web-preview.json +87 -0
- package/manifest/components/web-search.json +92 -0
- package/manifest/components/work-collapse.json +102 -0
- package/manifest/manifest.json +2736 -60
- package/manifest/tokens.json +22 -1
- package/package.json +44 -2
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ImageGeneration",
|
|
3
|
+
"slug": "image-generation",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A dot grid holds the frame while the image resolves out of a blur.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "prompt",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Prompt text shown under the image frame."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "generating",
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "When true the frame holds a pulsing dot grid; otherwise the image resolves."
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"typeReferences": [
|
|
28
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"prompt\" | \"generating\"> & {\n /** Prompt text shown under the image frame. */\n prompt: string;\n /** When true the frame holds a pulsing dot grid; otherwise the image resolves. */\n generating: boolean;\n}"
|
|
29
|
+
],
|
|
30
|
+
"subcomponents": [],
|
|
31
|
+
"parts": [],
|
|
32
|
+
"variants": {},
|
|
33
|
+
"defaultVariants": {},
|
|
34
|
+
"tokensUsed": [
|
|
35
|
+
"--cue-accent-fg",
|
|
36
|
+
"--cue-fg-muted",
|
|
37
|
+
"--cue-fg-subtle",
|
|
38
|
+
"--cue-radius-overlay",
|
|
39
|
+
"--cue-surface-3",
|
|
40
|
+
"--cue-text-ui"
|
|
41
|
+
],
|
|
42
|
+
"summary": "A dot grid holds the frame while the image resolves out of a blur.",
|
|
43
|
+
"examples": [
|
|
44
|
+
{
|
|
45
|
+
"title": "Usage",
|
|
46
|
+
"code": "import { ImageGeneration } from \"@cueplusplus/ui/elements\";\n\n<ImageGeneration prompt=\"A calm blue abstract\" generating={false} />",
|
|
47
|
+
"language": "tsx"
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"status": "todo-docs",
|
|
51
|
+
"url": "/docs/components/image-generation",
|
|
52
|
+
"mdUrl": "/docs/components/image-generation.md",
|
|
53
|
+
"jsonUrl": "/r/components/image-generation.json",
|
|
54
|
+
"specimens": [
|
|
55
|
+
{
|
|
56
|
+
"title": "ImageGeneration",
|
|
57
|
+
"group": "elements-agents",
|
|
58
|
+
"components": [
|
|
59
|
+
"ImageGeneration"
|
|
60
|
+
],
|
|
61
|
+
"code": "<Specimens>\n <Specimen label=\"generating\">\n <ImageGeneration prompt=\"Pre-vis: front wash at 8.4 m trim\" generating />\n </Specimen>\n <Specimen label=\"resolved\">\n <ImageGeneration prompt=\"Pre-vis: front wash at 8.4 m trim\" generating={false} />\n </Specimen>\n</Specimens>",
|
|
62
|
+
"note": "A dot grid holds the square while the image resolves out of a blur — the frame is the right size from the first frame, so nothing below it moves when the picture lands. While generating, the prompt is replaced by a shimmering label; when it settles, the prompt is what is left under the image.",
|
|
63
|
+
"interaction": "regenerate is a labelled icon button. The grid and the image are both `aria-hidden`: the prompt underneath is the description, and a decorative placeholder should not be announced as a picture."
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"todo": true
|
|
67
|
+
}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"name": "side",
|
|
33
|
-
"type": "\"left\" | \"right\" | \"
|
|
33
|
+
"type": "\"left\" | \"right\" | \"bottom\" | \"top\" | \"inline-end\" | \"inline-start\"",
|
|
34
34
|
"required": false,
|
|
35
35
|
"defaultValue": "top",
|
|
36
36
|
"description": "Preferred side of the badge. Defaults to `\"top\"`."
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "InlineCitation",
|
|
3
|
+
"slug": "inline-citation",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Numbered references inside a sentence, each with a hover preview of its source.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "sources",
|
|
12
|
+
"type": "CitationSource[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Sources attached to the numbered reference markers in the sentence."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "openIndex",
|
|
19
|
+
"type": "number | null",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Which citation preview is open, or null when none is open."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "onOpenIndexChange",
|
|
26
|
+
"type": "(index: number | null) => void",
|
|
27
|
+
"required": true,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Called when a citation marker opens or closes its preview."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"typeReferences": [
|
|
33
|
+
"Omit<\n ComponentProps<\"p\">,\n \"children\"\n>"
|
|
34
|
+
],
|
|
35
|
+
"subcomponents": [],
|
|
36
|
+
"parts": [],
|
|
37
|
+
"variants": {},
|
|
38
|
+
"defaultVariants": {},
|
|
39
|
+
"tokensUsed": [
|
|
40
|
+
"--cue-accent",
|
|
41
|
+
"--cue-accent-fg",
|
|
42
|
+
"--cue-fg",
|
|
43
|
+
"--cue-fg-muted",
|
|
44
|
+
"--cue-fg-subtle",
|
|
45
|
+
"--cue-font-mono",
|
|
46
|
+
"--cue-radius-control",
|
|
47
|
+
"--cue-radius-overlay",
|
|
48
|
+
"--cue-surface-2",
|
|
49
|
+
"--cue-text-body",
|
|
50
|
+
"--cue-text-micro"
|
|
51
|
+
],
|
|
52
|
+
"summary": "Numbered references inside a sentence, each with a hover preview of its source.",
|
|
53
|
+
"examples": [
|
|
54
|
+
{
|
|
55
|
+
"title": "Usage",
|
|
56
|
+
"code": "import { InlineCitation } from \"@cueplusplus/ui/elements\";\n\n<InlineCitation\n sources={[\n {\n domain: \"docs.example.com\",\n title: \"Optimistic updates\",\n snippet: \"Confirm writes after paint.\",\n },\n ]}\n openIndex={0}\n onOpenIndexChange={setOpenIndex}\n/>",
|
|
57
|
+
"language": "tsx"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"status": "todo-docs",
|
|
61
|
+
"url": "/docs/components/inline-citation",
|
|
62
|
+
"mdUrl": "/docs/components/inline-citation.md",
|
|
63
|
+
"jsonUrl": "/r/components/inline-citation.json",
|
|
64
|
+
"specimens": [
|
|
65
|
+
{
|
|
66
|
+
"title": "InlineCitation",
|
|
67
|
+
"group": "elements-knowledge",
|
|
68
|
+
"components": [
|
|
69
|
+
"InlineCitation"
|
|
70
|
+
],
|
|
71
|
+
"code": "<Specimens>\n <Specimen label=\"the first marker open\" wide>\n <InlineCitation\n sources={CITED}\n openIndex={citation}\n onOpenIndexChange={setCitation}\n />\n </Specimen>\n <Specimen label=\"both closed\" wide>\n <InlineCitation\n sources={CITED}\n openIndex={null}\n onOpenIndexChange={() => undefined}\n />\n </Specimen>\n</Specimens>",
|
|
72
|
+
"note": "The marker inside the sentence, rather than the list under it: a numbered chip the paragraph flows around, and behind each one the page it stands on. `Sources` is the bibliography; this is the footnote, and the two are meant to be read together — the chip says a claim is attributable without spending a clause saying so.",
|
|
73
|
+
"interaction": "each marker is a button, so the preview is reachable from a keyboard as well as a pointer; the open one inverts to the accent fill. The card is the family's one portal, and it carries the island stamp — opened inside an `AgentSurface`, it paints in that island's values rather than the document's."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"todo": true
|
|
77
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"importPath": "@cueplusplus/ui",
|
|
6
6
|
"peerDependencies": [],
|
|
7
7
|
"clientOnly": true,
|
|
8
|
-
"description": "A control and its adornments, drawn as a single field.\n\nThe group — not the input — owns the chassis, so there is exactly one rim and\none fill however many affordances are bolted on. It publishes that fact\nthrough context: an {@link Input } rendered inside strips its own border,\nbackground, height and padding and inherits the group's font size
|
|
8
|
+
"description": "A control and its adornments, drawn as a single field.\n\nThe group — not the input — owns the chassis, so there is exactly one rim and\none fill however many affordances are bolted on. It publishes that fact\nthrough context: an {@link Input } rendered inside strips its own border,\nbackground, height and padding and inherits the group's font size.\n\nFocus feedback splits in two, because a `<div>` matches neither `:focus` nor\n`:focus-visible` itself. The rim strengthens on `:focus-within` — anything\nfocused inside, however it got there — while the ring waits for\n`:has(:focus-visible)`, so a mouse click into the field does not light the\nwhole cluster up. Both halves live on the wrapper; the inner control paints\nno ring of its own.",
|
|
9
9
|
"props": [
|
|
10
10
|
{
|
|
11
11
|
"name": "leading",
|
|
@@ -46,12 +46,14 @@
|
|
|
46
46
|
"tokensUsed": [
|
|
47
47
|
"--cue-accent",
|
|
48
48
|
"--cue-border",
|
|
49
|
+
"--cue-border-strong",
|
|
49
50
|
"--cue-control-lg",
|
|
50
51
|
"--cue-control-md",
|
|
51
52
|
"--cue-control-sm",
|
|
52
53
|
"--cue-danger",
|
|
53
54
|
"--cue-fg",
|
|
54
55
|
"--cue-fg-subtle",
|
|
56
|
+
"--cue-focus",
|
|
55
57
|
"--cue-font-mono",
|
|
56
58
|
"--cue-radius-control",
|
|
57
59
|
"--cue-space-2",
|
|
@@ -84,7 +86,7 @@
|
|
|
84
86
|
],
|
|
85
87
|
"code": "<Specimens>\n <Specimen label=\"leading\">\n <InputGroup leading={<Plug aria-hidden=\"true\" className=\"size-icon-md\" />}>\n <Input aria-label=\"Node address\" defaultValue=\"10.0.0.42\" />\n </InputGroup>\n </Specimen>\n <Specimen label=\"trailing\">\n <InputGroup trailing={<span className=\"font-mono text-fg-subtle\">%</span>}>\n <Input aria-label=\"Level\" defaultValue=\"80\" />\n </InputGroup>\n </Specimen>\n <Specimen label=\"both, sm\">\n <InputGroup\n size=\"sm\"\n leading={<Ruler aria-hidden=\"true\" className=\"size-icon-sm\" />}\n trailing={<span className=\"font-mono text-fg-subtle\">m</span>}\n >\n <Input aria-label=\"Throw distance\" defaultValue=\"7.5\" />\n </InputGroup>\n </Specimen>\n</Specimens>",
|
|
86
88
|
"note": "One rim around a control and its adornments, so the group focuses as a unit.",
|
|
87
|
-
"interaction": "focus inside the
|
|
89
|
+
"interaction": "any focus inside strengthens the whole rim; the ring waits for a keyboard-visible descendant, so a click on an adornment does not light the cluster up. The inner control never rings — the group owns the rim."
|
|
88
90
|
}
|
|
89
91
|
],
|
|
90
92
|
"todo": true
|
|
@@ -32,12 +32,14 @@
|
|
|
32
32
|
"tokensUsed": [
|
|
33
33
|
"--cue-accent",
|
|
34
34
|
"--cue-border",
|
|
35
|
+
"--cue-border-strong",
|
|
35
36
|
"--cue-control-lg",
|
|
36
37
|
"--cue-control-md",
|
|
37
38
|
"--cue-control-sm",
|
|
38
39
|
"--cue-danger",
|
|
39
40
|
"--cue-fg",
|
|
40
41
|
"--cue-fg-subtle",
|
|
42
|
+
"--cue-focus",
|
|
41
43
|
"--cue-font-mono",
|
|
42
44
|
"--cue-radius-control",
|
|
43
45
|
"--cue-space-3",
|
|
@@ -83,7 +85,7 @@
|
|
|
83
85
|
],
|
|
84
86
|
"code": "<Specimens>\n {SIZES.map((size) => (\n <Specimen key={size} label={size}>\n <Input aria-label={`Cue label, ${size}`} size={size} defaultValue=\"1/12 @ 80%\" />\n </Specimen>\n ))}\n <Specimen label=\"placeholder\">\n <Input aria-label=\"Empty cue label\" placeholder=\"e.g. Blackout\" />\n </Specimen>\n <Specimen label=\"disabled\">\n <Input aria-label=\"Disabled cue label\" defaultValue=\"Read-only\" disabled />\n </Specimen>\n <Specimen label=\"readonly\">\n <Input aria-label=\"Read-only cue label\" defaultValue=\"1/12 @ 80%\" readOnly />\n </Specimen>\n</Specimens>",
|
|
85
87
|
"note": "The recessed chassis: sunken fill, hairline rim, height from the density ladder.",
|
|
86
|
-
"interaction": "the rim
|
|
88
|
+
"interaction": "the rim strengthens one rung on focus and a single flush ring in the theme's focus colour sits just inside it — clicking in shows the same ring as tabbing in, because a typing surface is always focus-visible; `invalid` keeps the danger rim and the ring stays visible beside it."
|
|
87
89
|
}
|
|
88
90
|
]
|
|
89
91
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "JobProgress",
|
|
3
|
+
"slug": "job-progress",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Work measured in minutes: weighted stages, an ETA, and a way out.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "title",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "What the job is doing."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "stages",
|
|
21
|
+
"type": "readonly JobStage[]",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Stages with relative weights, so a long install does not read the same as a fast\nclone."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "stageIndex",
|
|
28
|
+
"type": "number",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Which stage is running. Passing stages.length marks the job finished, and the bar\nnever runs past its track."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "stageProgress",
|
|
35
|
+
"type": "number",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Progress inside the current stage, 0 to 1."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "eta",
|
|
42
|
+
"type": "string",
|
|
43
|
+
"required": true,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Pre-formatted estimate. Replaced by done once finished."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onCancel",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called to stop the job. Hidden once it finishes."
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"typeReferences": [
|
|
56
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"title\"\n | \"stages\"\n | \"stageIndex\"\n | \"stageProgress\"\n | \"eta\"\n | \"onCancel\"\n> & {\n /** What the job is doing. */\n title: string;\n /**\n * Stages with relative weights, so a long install does not read the same as a fast\n * clone.\n */\n stages: readonly JobStage[];\n /**\n * Which stage is running. Passing stages.length marks the job finished, and the bar\n * never runs past its track.\n */\n stageIndex: number;\n /** Progress inside the current stage, 0 to 1. */\n stageProgress: number;\n /** Pre-formatted estimate. Replaced by done once finished. */\n eta: string;\n /** Called to stop the job. Hidden once it finishes. */\n onCancel?: () => void;\n}"
|
|
57
|
+
],
|
|
58
|
+
"subcomponents": [],
|
|
59
|
+
"parts": [],
|
|
60
|
+
"variants": {},
|
|
61
|
+
"defaultVariants": {},
|
|
62
|
+
"tokensUsed": [
|
|
63
|
+
"--cue-fg",
|
|
64
|
+
"--cue-fg-subtle",
|
|
65
|
+
"--cue-ok",
|
|
66
|
+
"--cue-radius-overlay",
|
|
67
|
+
"--cue-stream",
|
|
68
|
+
"--cue-surface-2",
|
|
69
|
+
"--cue-text-body"
|
|
70
|
+
],
|
|
71
|
+
"summary": "Work measured in minutes: weighted stages, an ETA, and a way out.",
|
|
72
|
+
"examples": [
|
|
73
|
+
{
|
|
74
|
+
"title": "Usage",
|
|
75
|
+
"code": "import { JobProgress } from \"@cueplusplus/ui/elements\";\n\n<JobProgress\n title=\"Verify the fix on CI\"\n stages={stages}\n stageIndex={1}\n stageProgress={0.6}\n eta=\"about 3 min\"\n/>",
|
|
76
|
+
"language": "tsx"
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"status": "todo-docs",
|
|
80
|
+
"url": "/docs/components/job-progress",
|
|
81
|
+
"mdUrl": "/docs/components/job-progress.md",
|
|
82
|
+
"jsonUrl": "/r/components/job-progress.json",
|
|
83
|
+
"specimens": [
|
|
84
|
+
{
|
|
85
|
+
"title": "JobProgress",
|
|
86
|
+
"group": "elements-agents",
|
|
87
|
+
"components": [
|
|
88
|
+
"JobProgress"
|
|
89
|
+
],
|
|
90
|
+
"code": "<Specimens>\n <Specimen label=\"rendering\" wide>\n <JobProgress\n title=\"Overnight patch and pre-vis\"\n stages={STAGES}\n stageIndex={2}\n stageProgress={0.42}\n eta=\"4m left\"\n onCancel={() => undefined}\n />\n </Specimen>\n <Specimen label=\"done\" wide>\n <JobProgress\n title=\"Overnight patch and pre-vis\"\n stages={STAGES}\n stageIndex={STAGES.length}\n stageProgress={1}\n eta=\"4m left\"\n />\n </Specimen>\n</Specimens>",
|
|
91
|
+
"note": "Work measured in minutes rather than steps. The stages are weighted, so a six-minute render does not read the same length as a one-second export, and the bar is filled from those weights plus the fraction of the current stage — which is why it never jumps backwards when a short stage ends.",
|
|
92
|
+
"interaction": "cancel is a labelled icon button and disappears once the job finishes: there is nothing left to stop, and a dead X beside a green tick reads as an error."
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"todo": true
|
|
96
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "LauncherBubble",
|
|
3
|
+
"slug": "launcher-bubble",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The floating entry point, and the panel it opens into.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "open",
|
|
14
|
+
"type": "boolean",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Whether the panel is showing. The trigger icon crossfades either way."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "unread",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Badge count on the closed bubble. Hidden at zero and while open."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "greeting",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Opening line in the panel."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "prompts",
|
|
35
|
+
"type": "readonly string[]",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Ways in, so the first message does not have to be invented."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onToggle",
|
|
42
|
+
"type": "(() => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called when the bubble is pressed."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onPick",
|
|
49
|
+
"type": "((prompt: string) => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called when a starter prompt is chosen."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "onStart",
|
|
56
|
+
"type": "(() => void)",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": null,
|
|
59
|
+
"description": "Called from the Start a conversation action, for opening an empty thread."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"typeReferences": [
|
|
63
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"open\"\n | \"unread\"\n | \"greeting\"\n | \"prompts\"\n | \"onToggle\"\n | \"onPick\"\n | \"onStart\"\n> & {\n /** Whether the panel is showing. The trigger icon crossfades either way. */\n open: boolean;\n /** Badge count on the closed bubble. Hidden at zero and while open. */\n unread: number;\n /** Opening line in the panel. */\n greeting: string;\n /** Ways in, so the first message does not have to be invented. */\n prompts: readonly string[];\n /** Called when the bubble is pressed. */\n onToggle?: () => void;\n /** Called when a starter prompt is chosen. */\n onPick?: (prompt: string) => void;\n /** Called from the Start a conversation action, for opening an empty thread. */\n onStart?: () => void;\n}"
|
|
64
|
+
],
|
|
65
|
+
"subcomponents": [],
|
|
66
|
+
"parts": [],
|
|
67
|
+
"variants": {},
|
|
68
|
+
"defaultVariants": {},
|
|
69
|
+
"tokensUsed": [
|
|
70
|
+
"--cue-bg",
|
|
71
|
+
"--cue-fg",
|
|
72
|
+
"--cue-fg-muted",
|
|
73
|
+
"--cue-fg-subtle",
|
|
74
|
+
"--cue-radius-overlay",
|
|
75
|
+
"--cue-radius-surface",
|
|
76
|
+
"--cue-surface-2",
|
|
77
|
+
"--cue-text-body",
|
|
78
|
+
"--cue-text-ui"
|
|
79
|
+
],
|
|
80
|
+
"summary": "The floating entry point, and the panel it opens into.",
|
|
81
|
+
"examples": [
|
|
82
|
+
{
|
|
83
|
+
"title": "Usage",
|
|
84
|
+
"code": "import { LauncherBubble } from \"@cueplusplus/ui/elements\";\n\n<LauncherBubble\n open={open}\n unread={2}\n greeting=\"Need a hand?\"\n prompts={prompts}\n onToggle={toggle}\n/>",
|
|
85
|
+
"language": "tsx"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"status": "todo-docs",
|
|
89
|
+
"url": "/docs/components/launcher-bubble",
|
|
90
|
+
"mdUrl": "/docs/components/launcher-bubble.md",
|
|
91
|
+
"jsonUrl": "/r/components/launcher-bubble.json",
|
|
92
|
+
"specimens": [
|
|
93
|
+
{
|
|
94
|
+
"title": "LauncherBubble",
|
|
95
|
+
"group": "elements-composer",
|
|
96
|
+
"components": [
|
|
97
|
+
"LauncherBubble"
|
|
98
|
+
],
|
|
99
|
+
"code": "<Specimens>\n <Specimen label=\"open\" wide>\n <LauncherBubble\n open={launcher}\n unread={2}\n greeting=\"Ask us about the venue\"\n prompts={[\"What is the rig?\", \"Can I bring my own desk?\", \"Who is the LX contact?\"]}\n onToggle={() => setLauncher((open) => !open)}\n onPick={() => setLauncher(false)}\n onStart={() => setLauncher(false)}\n />\n </Specimen>\n <Specimen label=\"closed, two waiting\" wide>\n <LauncherBubble\n open={false}\n unread={2}\n greeting=\"Ask us about the venue\"\n prompts={[\"What is the rig?\"]}\n />\n </Specimen>\n</Specimens>",
|
|
100
|
+
"note": "The floating entry point and the panel it opens into — the shape an assistant takes on somebody else's site. The badge counts unread and disappears the moment the panel is open, because a count of things you are currently looking at is noise. The starter prompts exist so the first message does not have to be invented by a visitor who has no idea what this thing knows.",
|
|
101
|
+
"interaction": "the bubble carries `aria-expanded` and its label changes with it (`Open the assistant` / `Close the assistant`); the two icons cross-fade in one grid cell so nothing reflows."
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"todo": true
|
|
105
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Ledger",
|
|
3
|
+
"slug": "ledger",
|
|
4
|
+
"group": "instruments",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "A grouped run of dense rows under sticky headings: the ledger idiom.\n\nThe flattest of the three surfaces this package ships over one row model, and\nthe one that does the least: headings, slugs, rows. **Nothing here collapses.**\nA ledger with a disclosure on it would be a tree with worse semantics, so the\ncomponent emits no `aria-expanded` anywhere, and a test holds it to that —\ncollapse belongs to `DataTree`, and grouping-with-columns belongs to a\ngrouped `Table`.\n\nWhat it does own is the document outline. Tiers and groups are real `<h2>` /\n`<h3>` elements at caller-chosen levels, because in a list of two hundred\nrows the heading list *is* how a screen-reader user navigates.\n\nStatic markup — no `\"use client\"`. The rows inside it may be anything;\n`DataRow` is the intended tenant.",
|
|
9
|
+
"props": [],
|
|
10
|
+
"typeReferences": [],
|
|
11
|
+
"subcomponents": [
|
|
12
|
+
"Root",
|
|
13
|
+
"Tier",
|
|
14
|
+
"Group",
|
|
15
|
+
"Empty"
|
|
16
|
+
],
|
|
17
|
+
"parts": [
|
|
18
|
+
{
|
|
19
|
+
"name": "Root",
|
|
20
|
+
"usage": "Ledger.Root",
|
|
21
|
+
"description": "The ledger surface: the type contract, and the container the columns shed\nagainst.\n\nDeliberately unframed. A ledger is a continuous document of rows, so the\nhairlines belong to the rows and there is no border, radius or card around\nany part of it — a per-group card would turn one list into a stack of little\ntables and break the top-to-bottom scan the whole idiom exists for.",
|
|
22
|
+
"props": [
|
|
23
|
+
{
|
|
24
|
+
"name": "containment",
|
|
25
|
+
"type": "boolean",
|
|
26
|
+
"required": false,
|
|
27
|
+
"defaultValue": "true",
|
|
28
|
+
"description": "Make the ledger a size container, so a caller's `@container` rules shed\ncolumns against the *pane* rather than the viewport. Defaults to `true`.\n\nThis is the difference between a list that sheds a column when the window\nnarrows and one that also sheds it when a detail drawer opens beside it and\ntakes half the pane — which is the same visual problem and, without a\ncontainer, an entirely separate piece of code. Switch it off only when an\nancestor is already the container the rules name; nesting containers moves\nwhich one a bare `@container` query resolves against."
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"typeReferences": [
|
|
32
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "Tier",
|
|
37
|
+
"usage": "Ledger.Tier",
|
|
38
|
+
"description": "One named run of the ledger, with its own sticky heading.\n\nThe heading paints its own ground (`bg-bg`) because a sticky element with a\ntransparent background is a sticky element you can read rows straight through.",
|
|
39
|
+
"props": [
|
|
40
|
+
{
|
|
41
|
+
"name": "heading",
|
|
42
|
+
"type": "ReactNode",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "The tier's name. Omitted, the tier draws no heading and reserves no space\nfor one — which is how a single unnamed run of rows uses the same component\nas a grouped one."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "count",
|
|
49
|
+
"type": "number",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "How many rows the tier holds, printed beside its name."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "sticky",
|
|
56
|
+
"type": "boolean",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": "true",
|
|
59
|
+
"description": "Dock the heading to the top of the scroll container while the tier's rows\nscroll past. Defaults to `true`."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "headingLevel",
|
|
63
|
+
"type": "4 | 2 | 3",
|
|
64
|
+
"required": false,
|
|
65
|
+
"defaultValue": "2",
|
|
66
|
+
"description": "Which heading element the tier's name is. Defaults to `2`.\n\nThe outline is the navigation: a screen-reader user moves through a long\nledger by heading, so the levels have to describe the real nesting of the\npage the ledger sits in, not the ledger's own idea of itself."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "note",
|
|
70
|
+
"type": "ReactNode",
|
|
71
|
+
"required": false,
|
|
72
|
+
"defaultValue": null,
|
|
73
|
+
"description": "A qualifier printed after the name — a date, a source, a state."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"typeReferences": [
|
|
77
|
+
"React.ComponentPropsWithoutRef<\"section\">"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "Group",
|
|
82
|
+
"usage": "Ledger.Group",
|
|
83
|
+
"description": "A run of rows under a slug in the left gutter.\n\nThe gutter is a grid track whose width is the custom property\n`--cue-ledger-gutter` (default `7rem`), so a `@container` rule can narrow it\nat the same breakpoint it sheds a column, without this component knowing\nanything about the caller's breakpoints.\n\nThe slug is `self-start`, which is the load-bearing half of making it stick:\na stretched grid item is exactly as tall as the group, and an element as tall\nas its own scroll range has nowhere to slide to.",
|
|
84
|
+
"props": [
|
|
85
|
+
{
|
|
86
|
+
"name": "label",
|
|
87
|
+
"type": "ReactNode",
|
|
88
|
+
"required": false,
|
|
89
|
+
"defaultValue": null,
|
|
90
|
+
"description": "The group's slug, printed in the left gutter.\n\nOmitted, the group is a plain block: no gutter, no heading, no indent. A\ngrouped list that has one unnamed run in it should not pay a 7rem empty\ncolumn for it, and an empty gutter reads as a missing label rather than as\nan absent one."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "headingLevel",
|
|
94
|
+
"type": "4 | 3",
|
|
95
|
+
"required": false,
|
|
96
|
+
"defaultValue": "3",
|
|
97
|
+
"description": "Which heading element the slug is. Defaults to `3`."
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "sticky",
|
|
101
|
+
"type": "boolean",
|
|
102
|
+
"required": false,
|
|
103
|
+
"defaultValue": "true",
|
|
104
|
+
"description": "Dock the slug under the tier heading while the group's rows scroll past.\nDefaults to `true`.\n\nThe offset is a custom property, `--cue-ledger-slug-top` (default `2.5rem`):\nhow far down the slug docks depends on how tall the tier heading above it\nrenders, which is a function of the density and the type the *caller*\nconfigured. Set it on the ledger — `className=\"[--cue-ledger-slug-top:2rem]\"` —\nrather than measuring at runtime."
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"typeReferences": [
|
|
108
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "Empty",
|
|
113
|
+
"usage": "Ledger.Empty",
|
|
114
|
+
"description": "The line that stands where a group's rows would be.\n\nA slot rather than an `empty` prop on the group, because there are two\ndifferent emptinesses and only the caller knows which one this is: a place\nsomebody made that has nothing in it yet (\"Nothing yet.\") and a filter that\nemptied a place that does have things in it (\"Nothing matches …\"). A prop\nwould have to guess, and guessing conflates them — which is precisely the bug\nthis slot exists to make impossible. For a whole surface with nothing in it\nand no heading left to keep, use `EmptyState` instead.",
|
|
115
|
+
"props": [],
|
|
116
|
+
"typeReferences": [
|
|
117
|
+
"React.ComponentPropsWithoutRef<\"p\">"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"variants": {},
|
|
122
|
+
"defaultVariants": {},
|
|
123
|
+
"tokensUsed": [
|
|
124
|
+
"--cue-bg",
|
|
125
|
+
"--cue-data-row-cols",
|
|
126
|
+
"--cue-fg",
|
|
127
|
+
"--cue-fg-subtle",
|
|
128
|
+
"--cue-font-mono",
|
|
129
|
+
"--cue-ledger-gutter",
|
|
130
|
+
"--cue-ledger-slug-top",
|
|
131
|
+
"--cue-pad-row-x",
|
|
132
|
+
"--cue-pad-row-y",
|
|
133
|
+
"--cue-space-2",
|
|
134
|
+
"--cue-space-3",
|
|
135
|
+
"--cue-text-label",
|
|
136
|
+
"--cue-text-ui"
|
|
137
|
+
],
|
|
138
|
+
"summary": "Grouped dense rows under sticky tier headings and gutter slugs, with no disclosure anywhere.",
|
|
139
|
+
"examples": [
|
|
140
|
+
{
|
|
141
|
+
"title": "Tiers, groups, rows",
|
|
142
|
+
"code": "<Ledger.Root className=\"[--cue-data-row-cols:1fr_8rem_auto] [--cue-ledger-slug-top:1.75rem]\">\n <Ledger.Tier heading=\"Patch\" count={5} note=\"polled 18:04\">\n <Ledger.Group label=\"inputs\">\n {inputs.map((device) => (\n <DataRow.Root key={device.id} interactive onActivate={() => open(device)}>\n …\n </DataRow.Root>\n ))}\n </Ledger.Group>\n <Ledger.Group label=\"spare\">\n <Ledger.Empty>Nothing yet.</Ledger.Empty>\n </Ledger.Group>\n </Ledger.Tier>\n</Ledger.Root>",
|
|
143
|
+
"language": "tsx"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"title": "One unnamed group",
|
|
147
|
+
"code": "<Ledger.Tier>\n <Ledger.Group>\n <DataRow.Root>…</DataRow.Root>\n </Ledger.Group>\n</Ledger.Tier>",
|
|
148
|
+
"language": "tsx"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"title": "Usage",
|
|
152
|
+
"code": "<Ledger.Root className=\"[--cue-data-row-cols:1fr_8rem_auto]\">\n <Ledger.Tier heading=\"Ours\" count={12}>\n <Ledger.Group label=\"released\">\n <DataRow.Root interactive onActivate={open}>…</DataRow.Root>\n </Ledger.Group>\n <Ledger.Group label=\"lab\">\n <Ledger.Empty>Nothing yet.</Ledger.Empty>\n </Ledger.Group>\n </Ledger.Tier>\n</Ledger.Root>",
|
|
153
|
+
"language": "tsx"
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"status": "stable",
|
|
157
|
+
"url": "/docs/components/ledger",
|
|
158
|
+
"mdUrl": "/docs/components/ledger.md",
|
|
159
|
+
"jsonUrl": "/r/components/ledger.json",
|
|
160
|
+
"whenToUse": [
|
|
161
|
+
"A long list that is grouped but never folded: a corpus by source, a patch by direction, a run log by day.",
|
|
162
|
+
"A surface whose groups should be reachable by heading, since the tiers and slugs are real `h2`/`h3` elements."
|
|
163
|
+
],
|
|
164
|
+
"whenNotToUse": [
|
|
165
|
+
"A hierarchy the reader folds. Use `DataTree`, which owns collapse and the tree semantics that go with it.",
|
|
166
|
+
"Rows meant to be compared down a named column. Use a grouped `Table`, where the columns are named once in a `thead`.",
|
|
167
|
+
"A handful of rows in a panel. Use `Row` inside `Panel`; a tier heading over three rows is furniture with nothing to organise."
|
|
168
|
+
],
|
|
169
|
+
"commonMistakes": [
|
|
170
|
+
"Adding a toggle to a tier. A ledger that folds is a tree with worse semantics — the component emits no `aria-expanded`, and a test holds it to that.",
|
|
171
|
+
"Framing each group in a `Panel`. A card per group turns one list into a stack of little tables and breaks the top-to-bottom scan.",
|
|
172
|
+
"Leaving `--cue-ledger-slug-top` at its default after changing the density or the heading type, which docks the slug over the tier heading instead of under it.",
|
|
173
|
+
"Passing an `empty` string as a prop. `Ledger.Empty` takes the words because \"this place is empty\" and \"your filter emptied it\" are different sentences."
|
|
174
|
+
],
|
|
175
|
+
"specimens": [
|
|
176
|
+
{
|
|
177
|
+
"title": "Ledger",
|
|
178
|
+
"group": "instruments",
|
|
179
|
+
"components": [
|
|
180
|
+
"Ledger"
|
|
181
|
+
],
|
|
182
|
+
"code": "<Panel className=\"w-full\">\n <div className=\"max-h-[18rem] overflow-y-auto\">\n <Ledger.Root className={PATCH_TRACKS}>\n <Ledger.Tier heading=\"Patch\" count={PATCH_DEVICES.length} note=\"polled 18:04\">\n {PATCH_GROUPS.map((group) => (\n <Ledger.Group key={group.id} label={group.label}>\n {group.rows.map((device) => (\n <DataRow.Root key={device.id} interactive>\n <PatchRowSlots device={device} />\n </DataRow.Root>\n ))}\n </Ledger.Group>\n ))}\n <Ledger.Group label=\"spare\">\n <Ledger.Empty>Nothing yet.</Ledger.Empty>\n </Ledger.Group>\n </Ledger.Tier>\n </Ledger.Root>\n </div>\n</Panel>",
|
|
183
|
+
"note": "The same rows as tiers and slugs: sticky headings, a gutter for the group name, and no disclosure anywhere — the ledger does not collapse.",
|
|
184
|
+
"interaction": "the tier heading and the group slug dock as the rows scroll under them; scroll the pane to see it."
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
}
|