@cueplusplus/ui 0.2.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 +2250 -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/brand/_chassis.d.ts +1 -1
- package/dist/brand/cue-mark.d.ts +1 -1
- package/dist/brand/cue-mark.js +1 -1
- 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/_edge-scroller.js +12 -1
- package/dist/chrome/_tabs-scroll.d.ts +1 -1
- package/dist/chrome/_tabs-scroll.js +1 -1
- 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/_overrides.js +18 -6
- 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 +9 -7
- package/dist/index.js +3 -2
- package/dist/instruments/index.d.ts +2 -2
- package/dist/instruments/index.js +2 -2
- package/dist/instruments/table.d.ts +14 -1
- package/dist/instruments/table.js +20 -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 +34 -8
- package/dist/primitives/chip.js +97 -11
- package/dist/styles.css +11 -1
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/index.d.ts +3 -3
- package/dist/system/portal.d.ts +5 -3
- package/dist/system/portal.js +36 -8
- package/dist/system/prepaint.d.ts +20 -2
- package/dist/system/prepaint.js +39 -33
- package/dist/system/theme-provider.d.ts +13 -2
- package/dist/system/theme-provider.js +107 -26
- 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 +124 -8
- package/dist/theming/contrast.d.ts +16 -4
- package/dist/theming/contrast.js +33 -6
- package/dist/theming/create-theme.d.ts +8 -4
- package/dist/theming/create-theme.js +56 -20
- package/dist/theming/serialize.d.ts +11 -2
- package/dist/theming/serialize.js +87 -9
- package/manifest/components/accordion.json +154 -0
- 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-pile.json +116 -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 +190 -0
- package/manifest/components/animated-number.json +67 -0
- package/manifest/components/app-bar.json +244 -0
- package/manifest/components/app-shell.json +383 -0
- package/manifest/components/app-window-frame.json +102 -0
- package/manifest/components/approval-card.json +106 -0
- package/manifest/components/artifact-card.json +81 -0
- package/manifest/components/ask-box.json +209 -0
- package/manifest/components/audience-icon.json +52 -0
- package/manifest/components/autocomplete.json +197 -0
- package/manifest/components/avatar-group.json +72 -0
- package/manifest/components/avatar.json +95 -0
- package/manifest/components/background-inbox.json +71 -0
- package/manifest/components/branch-picker.json +124 -0
- package/manifest/components/breadcrumb.json +74 -0
- package/manifest/components/button-group.json +74 -0
- package/manifest/components/button.json +126 -0
- package/manifest/components/calendar.json +65 -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/card.json +140 -0
- package/manifest/components/carousel.json +200 -0
- package/manifest/components/catalogue-icon.json +52 -0
- package/manifest/components/channel-beta-icon.json +52 -0
- package/manifest/components/channel-matrix.json +173 -0
- package/manifest/components/channel-released-icon.json +52 -0
- package/manifest/components/chart-container.json +111 -0
- package/manifest/components/chart-ramp.json +72 -0
- package/manifest/components/chart-swatch.json +65 -0
- package/manifest/components/chart-tooltip-content.json +114 -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/checkbox-group.json +68 -0
- package/manifest/components/checkbox.json +93 -0
- package/manifest/components/checkpoint-history.json +80 -0
- package/manifest/components/chip.json +144 -0
- 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/collapsible.json +120 -0
- package/manifest/components/color-area.json +59 -0
- package/manifest/components/color-field.json +79 -0
- package/manifest/components/color-picker.json +175 -0
- package/manifest/components/color-slider.json +75 -0
- package/manifest/components/color-swatch.json +68 -0
- package/manifest/components/colors-section.json +66 -0
- package/manifest/components/combobox.json +198 -0
- package/manifest/components/command-palette.json +177 -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 +176 -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/container.json +60 -0
- package/manifest/components/context-breakdown.json +65 -0
- package/manifest/components/context-menu.json +121 -0
- package/manifest/components/context-usage.json +85 -0
- package/manifest/components/conversation-search.json +92 -0
- package/manifest/components/copy-button.json +93 -0
- package/manifest/components/cost-meter.json +74 -0
- package/manifest/components/cue-logotype.json +96 -0
- package/manifest/components/cue-mark.json +97 -0
- package/manifest/components/cue-portal-frame.json +55 -0
- package/manifest/components/data-table-pagination.json +83 -0
- package/manifest/components/data-table-toolbar.json +104 -0
- package/manifest/components/date-field.json +80 -0
- package/manifest/components/date-picker.json +191 -0
- package/manifest/components/date-range-picker.json +191 -0
- package/manifest/components/day-separator.json +58 -0
- package/manifest/components/delegation-card.json +144 -0
- package/manifest/components/density.json +58 -0
- package/manifest/components/description-list.json +84 -0
- package/manifest/components/diagram.json +100 -0
- package/manifest/components/dialog.json +198 -0
- package/manifest/components/disclosure.json +109 -0
- package/manifest/components/dmx-bar.json +94 -0
- package/manifest/components/dmx-strip.json +101 -0
- package/manifest/components/document-reference.json +90 -0
- package/manifest/components/draft-restore.json +82 -0
- package/manifest/components/drawer.json +179 -0
- package/manifest/components/dropdown-menu.json +229 -0
- 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/empty-state.json +90 -0
- package/manifest/components/end-of-turn-summary.json +77 -0
- package/manifest/components/env-var-input.json +150 -0
- package/manifest/components/error-state.json +80 -0
- package/manifest/components/export-dialog.json +84 -0
- package/manifest/components/eyebrow.json +56 -0
- package/manifest/components/feedback-dialog.json +107 -0
- package/manifest/components/field-description.json +63 -0
- package/manifest/components/field-error.json +77 -0
- package/manifest/components/field-label.json +63 -0
- package/manifest/components/field.json +79 -0
- package/manifest/components/file-tree.json +83 -0
- package/manifest/components/file-upload.json +159 -0
- package/manifest/components/flow-background.json +50 -0
- package/manifest/components/flow-controls.json +50 -0
- package/manifest/components/flow-graph.json +75 -0
- package/manifest/components/folder-icon.json +52 -0
- package/manifest/components/footer.json +112 -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/grid.json +81 -0
- package/manifest/components/group-bar.json +102 -0
- package/manifest/components/guardrail-notice.json +91 -0
- package/manifest/components/hover-card.json +151 -0
- package/manifest/components/icon-button.json +88 -0
- package/manifest/components/image-generation.json +67 -0
- package/manifest/components/info-tip.json +98 -0
- package/manifest/components/inline-citation.json +77 -0
- package/manifest/components/input-group.json +91 -0
- package/manifest/components/input.json +89 -0
- package/manifest/components/item.json +129 -0
- package/manifest/components/job-progress.json +96 -0
- package/manifest/components/kbd.json +52 -0
- package/manifest/components/launcher-bubble.json +105 -0
- package/manifest/components/link.json +81 -0
- package/manifest/components/live-region-announcer.json +79 -0
- package/manifest/components/log-viewer.json +139 -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/menubar.json +157 -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 +100 -0
- 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/message.json +116 -0
- package/manifest/components/meter.json +114 -0
- package/manifest/components/mobile-composer.json +126 -0
- package/manifest/components/model-picker.json +76 -0
- package/manifest/components/multi-select.json +190 -0
- package/manifest/components/musical-time-input.json +113 -0
- package/manifest/components/navigation-menu.json +226 -0
- package/manifest/components/node-card.json +109 -0
- package/manifest/components/node-handle.json +69 -0
- package/manifest/components/number-field.json +107 -0
- package/manifest/components/number-ticker.json +61 -0
- package/manifest/components/onboarding.json +84 -0
- package/manifest/components/otp-field.json +128 -0
- package/manifest/components/page-shell.json +96 -0
- package/manifest/components/pagination.json +92 -0
- package/manifest/components/panel-header.json +77 -0
- package/manifest/components/panel.json +71 -0
- package/manifest/components/password-input.json +119 -0
- package/manifest/components/permission-grant.json +92 -0
- package/manifest/components/permission-scopes.json +139 -0
- package/manifest/components/piano-keyboard.json +120 -0
- package/manifest/components/plussie.json +111 -0
- package/manifest/components/popover.json +193 -0
- package/manifest/components/preset-section.json +73 -0
- package/manifest/components/progress.json +95 -0
- 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/radio-group.json +73 -0
- package/manifest/components/radio.json +80 -0
- package/manifest/components/rating.json +141 -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/resizable.json +88 -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/row.json +109 -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 +91 -0
- package/manifest/components/scrollable-tabs-list.json +83 -0
- package/manifest/components/scrub-input.json +200 -0
- package/manifest/components/seam-cell.json +75 -0
- package/manifest/components/seam-grid.json +75 -0
- package/manifest/components/seam-list.json +56 -0
- package/manifest/components/search-input.json +134 -0
- package/manifest/components/section-header.json +112 -0
- package/manifest/components/segmented-control.json +138 -0
- package/manifest/components/select.json +194 -0
- package/manifest/components/separator.json +53 -0
- package/manifest/components/settings-panel.json +118 -0
- package/manifest/components/shape-section.json +66 -0
- package/manifest/components/shared-conversation.json +89 -0
- package/manifest/components/sheet.json +186 -0
- package/manifest/components/shimmer-label.json +59 -0
- package/manifest/components/sidebar.json +198 -0
- package/manifest/components/signal-edge.json +56 -0
- package/manifest/components/skeleton.json +46 -0
- package/manifest/components/skill-icon.json +52 -0
- package/manifest/components/slider.json +89 -0
- package/manifest/components/sources.json +83 -0
- package/manifest/components/sparkline.json +76 -0
- package/manifest/components/speaker-identity.json +61 -0
- package/manifest/components/spec-sheet.json +80 -0
- package/manifest/components/spectrum-visualizer.json +115 -0
- package/manifest/components/spinner.json +61 -0
- package/manifest/components/stack-icon.json +52 -0
- package/manifest/components/stack.json +96 -0
- package/manifest/components/stacks-matrix-icon.json +52 -0
- package/manifest/components/stat.json +87 -0
- package/manifest/components/status-bar.json +58 -0
- package/manifest/components/status-dot.json +78 -0
- package/manifest/components/stepper.json +89 -0
- 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/switch.json +87 -0
- package/manifest/components/table-scroll-region.json +69 -0
- package/manifest/components/table.json +155 -0
- package/manifest/components/tabs.json +145 -0
- package/manifest/components/tags-input.json +190 -0
- package/manifest/components/tail-status.json +109 -0
- package/manifest/components/terminal-block.json +91 -0
- package/manifest/components/terminal-frame.json +119 -0
- package/manifest/components/textarea.json +76 -0
- package/manifest/components/theme-configurator.json +124 -0
- package/manifest/components/theme-provider.json +134 -0
- 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 +160 -0
- package/manifest/components/time-boundary.json +62 -0
- package/manifest/components/time-field.json +80 -0
- package/manifest/components/timeline-ruler.json +139 -0
- package/manifest/components/timeline.json +115 -0
- package/manifest/components/title-bar.json +82 -0
- package/manifest/components/toast.json +130 -0
- package/manifest/components/todo-list.json +69 -0
- package/manifest/components/toggle-group.json +106 -0
- package/manifest/components/toggle.json +109 -0
- package/manifest/components/token-editor.json +90 -0
- 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 +163 -0
- package/manifest/components/tooltip.json +164 -0
- package/manifest/components/trace-waterfall.json +74 -0
- package/manifest/components/tree-visibility-toggle.json +84 -0
- package/manifest/components/tree.json +140 -0
- package/manifest/components/turn-footer.json +105 -0
- package/manifest/components/two-step-button.json +113 -0
- package/manifest/components/typing-indicator.json +53 -0
- package/manifest/components/universe-grid.json +127 -0
- package/manifest/components/unread-divider.json +55 -0
- package/manifest/components/usage-chart.json +124 -0
- 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 +4779 -0
- package/manifest/tokens.json +159 -0
- package/package.json +54 -5
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Meter",
|
|
3
|
+
"slug": "meter",
|
|
4
|
+
"group": "instruments",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "A quota bar that shows **pace**, not just fill.\n\nA bare percentage answers \"how much is gone\" but not the question that\nactually matters: *will it last*. 93% used is fine in the last hour of a\nweekly window and an emergency on the first day. So the meter carries a\nsecond mark — how far through the window we are in time — and reads the two\ntogether: fill ahead of the tick is burning faster than the window refills.\n\nThe tick is deliberately quiet: a 1px rule, not a second bar. It annotates\nthe fill and stays ignorable when someone only wants the number.\n\nSeverity is never invented here — `tone` comes from whoever owns the\nthresholds. Likewise `provenance`: the bar changes its own texture rather\nthan letting an estimate or a missing denominator look like a measurement.\n\nThe over-pace pulse stills under `prefers-reduced-motion`; the state stays\nreadable as `data-over-pace`.\n\nStatic markup — no `\"use client\"`.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "percent",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "How full, 0–100. Clamped; a non-finite value reads as 0."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "tone",
|
|
19
|
+
"type": "\"danger\" | \"busy\" | \"ok\" | \"warn\"",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "ok",
|
|
22
|
+
"description": "Status colour for the fill. Defaults to `\"ok\"`."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "paceTick",
|
|
26
|
+
"type": "number | null",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "How far through the window we are *by time*, 0–1. Drawn as a 1px rule\nacross the bar so the fill can be read against its pace: fill ahead of the\ntick means burning faster than the window refills. Pass `null` when there\nis no window."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "empty",
|
|
33
|
+
"type": "boolean",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "false",
|
|
36
|
+
"description": "Render the striped \"no data\" treatment instead of a level."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "provenance",
|
|
40
|
+
"type": "\"none\" | \"vendor\" | \"estimated\" | \"unbounded\"",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "vendor",
|
|
43
|
+
"description": "Where the ceiling came from. Defaults to `\"vendor\"`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "height",
|
|
47
|
+
"type": "number",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": "4",
|
|
50
|
+
"description": "Bar height in px at the 16px root, emitted as `rem`. Defaults to `4`."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "label",
|
|
54
|
+
"type": "string",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": "Usage",
|
|
57
|
+
"description": "The accessible name. A meter is nearly always a usage readout, so that is\nthe default; override it for anything else. When there is no level to\nreport (`empty`, or an unbounded ceiling) the state is appended to it, as\nin `\"Usage: No data\"`."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"typeReferences": [
|
|
61
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
|
|
62
|
+
],
|
|
63
|
+
"subcomponents": [],
|
|
64
|
+
"parts": [],
|
|
65
|
+
"variants": {},
|
|
66
|
+
"defaultVariants": {},
|
|
67
|
+
"tokensUsed": [
|
|
68
|
+
"--cue-bg",
|
|
69
|
+
"--cue-border",
|
|
70
|
+
"--cue-busy",
|
|
71
|
+
"--cue-danger",
|
|
72
|
+
"--cue-fg",
|
|
73
|
+
"--cue-ok",
|
|
74
|
+
"--cue-surface-3",
|
|
75
|
+
"--cue-warn"
|
|
76
|
+
],
|
|
77
|
+
"summary": "A quota bar that shows pace, not just fill.",
|
|
78
|
+
"examples": [
|
|
79
|
+
{
|
|
80
|
+
"title": "Usage",
|
|
81
|
+
"code": "<Meter percent={72} tone=\"warn\" paceTick={0.5} />\n<Meter percent={0} empty label=\"Requests this month\" />\n<Meter percent={40} provenance=\"estimated\" />",
|
|
82
|
+
"language": "tsx"
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"status": "stable",
|
|
86
|
+
"url": "/docs/components/meter",
|
|
87
|
+
"mdUrl": "/docs/components/meter.md",
|
|
88
|
+
"jsonUrl": "/r/components/meter.json",
|
|
89
|
+
"whenToUse": [
|
|
90
|
+
"A bounded quantity against a ceiling: quota used, storage, a dimmer level.",
|
|
91
|
+
"When the reader needs to know whether usage is ahead of the clock. Pass `paceTick`."
|
|
92
|
+
],
|
|
93
|
+
"whenNotToUse": [
|
|
94
|
+
"How far a task has got. Use `Progress`.",
|
|
95
|
+
"A number with no ceiling. Use `Stat`.",
|
|
96
|
+
"A value over time. Use `Sparkline` or `UsageChart`."
|
|
97
|
+
],
|
|
98
|
+
"commonMistakes": [
|
|
99
|
+
"Passing a fraction. `percent` is 0-100, not 0-1.",
|
|
100
|
+
"Leaving `provenance` at `vendor` for a ceiling somebody typed. `estimated` hatches the bar, which is what keeps a guess from wearing the authority of a reported number."
|
|
101
|
+
],
|
|
102
|
+
"specimens": [
|
|
103
|
+
{
|
|
104
|
+
"title": "Meter",
|
|
105
|
+
"group": "instruments",
|
|
106
|
+
"components": [
|
|
107
|
+
"Meter"
|
|
108
|
+
],
|
|
109
|
+
"code": "<Panel className=\"w-full max-w-[36rem]\">\n {CHANNELS.map((channel) => (\n <Row key={channel.name} className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">{channel.name}</span>\n <Meter percent={channel.level} tone={channel.tone} className=\"flex-1\" />\n <span className=\"w-[3rem] shrink-0 text-right font-mono tabular-nums\">\n {channel.level}%\n </span>\n </Row>\n ))}\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Pace tick</span>\n <Meter percent={64} paceTick={50} className=\"flex-1\" label=\"64% used, 50% of period elapsed\" />\n </Row>\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Estimated</span>\n <Meter percent={40} provenance=\"estimated\" className=\"flex-1\" />\n </Row>\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">Unbounded</span>\n <Meter percent={0} provenance=\"unbounded\" className=\"flex-1\" />\n </Row>\n <Row className=\"gap-(--cue-space-4)\">\n <span className=\"w-[7rem] shrink-0 truncate\">No data</span>\n <Meter percent={0} empty className=\"flex-1\" />\n </Row>\n</Panel>",
|
|
110
|
+
"note": "Never invents a number: an unbounded meter draws no percentage, an empty one draws stripes rather than a zero, and an estimated ceiling is hatched so it cannot pass for a measurement.",
|
|
111
|
+
"interaction": "the over-pace pulse stills under prefers-reduced-motion and stays readable as a data attribute."
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MobileComposer",
|
|
3
|
+
"slug": "mobile-composer",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The bottom sheet: keyboard-aware, quick actions above, thumb-sized targets.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "value",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Current input. The field is 16px so iOS does not zoom on focus."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "keyboardOpen",
|
|
21
|
+
"type": "boolean",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Collapses the quick actions and the home indicator inset when the keyboard is up."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "running",
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Swaps send for stop, and suppresses Return-to-send while a run is in flight."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "actions",
|
|
35
|
+
"type": "readonly string[]",
|
|
36
|
+
"required": true,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Quick actions above the field, scrolled horizontally."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onAction",
|
|
42
|
+
"type": "((action: string) => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called when a quick action is tapped. Omit it and the chips render disabled, since\nactions is required and the row would otherwise be inert."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onAttach",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called from the attachment control. Omit it and the control renders disabled."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "onValueChange",
|
|
56
|
+
"type": "((value: string) => void)",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": null,
|
|
59
|
+
"description": "Called as the message is typed."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "onSend",
|
|
63
|
+
"type": "(() => void)",
|
|
64
|
+
"required": false,
|
|
65
|
+
"defaultValue": null,
|
|
66
|
+
"description": "Called to send."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "onStop",
|
|
70
|
+
"type": "(() => void)",
|
|
71
|
+
"required": false,
|
|
72
|
+
"defaultValue": null,
|
|
73
|
+
"description": "Called to stop a run in flight."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "onFocus",
|
|
77
|
+
"type": "(() => void)",
|
|
78
|
+
"required": false,
|
|
79
|
+
"defaultValue": null,
|
|
80
|
+
"description": "Called when the field takes focus; drive keyboardOpen from it."
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"typeReferences": [
|
|
84
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"children\"\n | \"value\"\n | \"keyboardOpen\"\n | \"running\"\n | \"actions\"\n | \"onAction\"\n | \"onAttach\"\n | \"onValueChange\"\n | \"onSend\"\n | \"onStop\"\n | \"onFocus\"\n> & {\n /** Current input. The field is 16px so iOS does not zoom on focus. */\n value: string;\n /** Collapses the quick actions and the home indicator inset when the keyboard is up. */\n keyboardOpen: boolean;\n /** Swaps send for stop, and suppresses Return-to-send while a run is in flight. */\n running: boolean;\n /** Quick actions above the field, scrolled horizontally. */\n actions: readonly string[];\n /**\n * Called when a quick action is tapped. Omit it and the chips render disabled, since\n * actions is required and the row would otherwise be inert.\n */\n onAction?: (action: string) => void;\n /** Called from the attachment control. Omit it and the control renders disabled. */\n onAttach?: () => void;\n /** Called as the message is typed. */\n onValueChange?: (value: string) => void;\n /** Called to send. */\n onSend?: () => void;\n /** Called to stop a run in flight. */\n onStop?: () => void;\n /** Called when the field takes focus; drive keyboardOpen from it. */\n onFocus?: () => void;\n}"
|
|
85
|
+
],
|
|
86
|
+
"subcomponents": [],
|
|
87
|
+
"parts": [],
|
|
88
|
+
"variants": {},
|
|
89
|
+
"defaultVariants": {},
|
|
90
|
+
"tokensUsed": [
|
|
91
|
+
"--cue-accent",
|
|
92
|
+
"--cue-bg",
|
|
93
|
+
"--cue-border",
|
|
94
|
+
"--cue-fg-muted",
|
|
95
|
+
"--cue-fg-subtle",
|
|
96
|
+
"--cue-radius-overlay",
|
|
97
|
+
"--cue-surface-3",
|
|
98
|
+
"--cue-text-emphasis",
|
|
99
|
+
"--cue-text-ui"
|
|
100
|
+
],
|
|
101
|
+
"summary": "The bottom sheet: keyboard-aware, quick actions above, thumb-sized targets.",
|
|
102
|
+
"examples": [
|
|
103
|
+
{
|
|
104
|
+
"title": "Usage",
|
|
105
|
+
"code": "import { MobileComposer } from \"@cueplusplus/ui/elements\";\n\n<MobileComposer\n value={value}\n keyboardOpen={keyboardOpen}\n running={false}\n actions={actions}\n onValueChange={setValue}\n onSend={send}\n/>",
|
|
106
|
+
"language": "tsx"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"status": "todo-docs",
|
|
110
|
+
"url": "/docs/components/mobile-composer",
|
|
111
|
+
"mdUrl": "/docs/components/mobile-composer.md",
|
|
112
|
+
"jsonUrl": "/r/components/mobile-composer.json",
|
|
113
|
+
"specimens": [
|
|
114
|
+
{
|
|
115
|
+
"title": "MobileComposer",
|
|
116
|
+
"group": "elements-composer",
|
|
117
|
+
"components": [
|
|
118
|
+
"MobileComposer"
|
|
119
|
+
],
|
|
120
|
+
"code": "<Specimens>\n <Specimen label=\"keyboard down\" wide>\n <MobileComposer\n value={phone}\n keyboardOpen={false}\n running={false}\n actions={[\"Patch\", \"Plot\", \"Rig check\", \"Render pre-vis\"]}\n onAction={(action) => setPhone(action)}\n onAttach={() => undefined}\n onValueChange={setPhone}\n onSend={() => setPhone(\"\")}\n />\n </Specimen>\n <Specimen label=\"keyboard up\" wide>\n <MobileComposer\n value=\"six ESPRITEs on universe 3\"\n keyboardOpen\n running={false}\n actions={[\"Patch\", \"Plot\"]}\n onValueChange={() => undefined}\n onSend={() => undefined}\n />\n </Specimen>\n <Specimen label=\"running\" wide>\n <MobileComposer\n value=\"\"\n keyboardOpen\n running\n actions={[\"Patch\", \"Plot\"]}\n onStop={() => undefined}\n />\n </Specimen>\n</Specimens>",
|
|
121
|
+
"note": "The same composer on a phone: a bottom sheet with thumb-sized targets, quick actions scrolling above the field, and a 16px input so iOS does not zoom when it takes focus. `keyboardOpen` is the whole layout switch — the quick actions and the home-indicator inset both belong to the state where the keyboard is down.",
|
|
122
|
+
"interaction": "send becomes stop while a run is in flight, and Return stops sending — a second send during a stream is almost always a mistake, so the element refuses it rather than queueing it."
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"todo": true
|
|
126
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ModelPicker",
|
|
3
|
+
"slug": "model-picker",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The full list rather than the rail: grouped by family, priced, with what each one\ncan do.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "models",
|
|
14
|
+
"type": "readonly PickableModel[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Every model on offer. Families are derived from the entries and keep their\nfirst-seen order."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "selectedId",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Which model is active."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onSelect",
|
|
28
|
+
"type": "((id: string) => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called when a model is picked."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"models\" | \"selectedId\" | \"onSelect\"\n> & {\n /**\n * Every model on offer. Families are derived from the entries and keep their\n * first-seen order.\n */\n models: readonly PickableModel[];\n /** Which model is active. */\n selectedId: string;\n /** Called when a model is picked. */\n onSelect?: (id: string) => void;\n}"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg-muted",
|
|
43
|
+
"--cue-fg-subtle",
|
|
44
|
+
"--cue-radius-control",
|
|
45
|
+
"--cue-radius-overlay",
|
|
46
|
+
"--cue-radius-surface",
|
|
47
|
+
"--cue-surface-1",
|
|
48
|
+
"--cue-surface-2",
|
|
49
|
+
"--cue-text-body"
|
|
50
|
+
],
|
|
51
|
+
"summary": "The full list rather than the rail: grouped by family, priced, with what each one can do.",
|
|
52
|
+
"examples": [
|
|
53
|
+
{
|
|
54
|
+
"title": "Usage",
|
|
55
|
+
"code": "import { ModelPicker } from \"@cueplusplus/ui/elements\";\n\n<ModelPicker models={models} selectedId={selectedId} onSelect={setSelectedId} />",
|
|
56
|
+
"language": "tsx"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"status": "todo-docs",
|
|
60
|
+
"url": "/docs/components/model-picker",
|
|
61
|
+
"mdUrl": "/docs/components/model-picker.md",
|
|
62
|
+
"jsonUrl": "/r/components/model-picker.json",
|
|
63
|
+
"specimens": [
|
|
64
|
+
{
|
|
65
|
+
"title": "ModelPicker",
|
|
66
|
+
"group": "elements-composer",
|
|
67
|
+
"components": [
|
|
68
|
+
"ModelPicker"
|
|
69
|
+
],
|
|
70
|
+
"code": "<Specimens>\n <Specimen label=\"two families\" wide>\n <ModelPicker models={PICKABLE} selectedId={pickedModel} onSelect={setPickedModel} />\n </Specimen>\n <Specimen label=\"one family, nothing chosen\" wide>\n <ModelPicker models={PICKABLE.slice(0, 3)} selectedId=\"\" />\n </Specimen>\n</Specimens>",
|
|
71
|
+
"note": "The full list rather than the rail: grouped by family, priced, and carrying what each one can actually do. This is the screen `ComposerModelTrigger` is a shortcut to, and the split is the point — the toolbar menu is for switching between models you already chose between, and this is where that choosing happens.",
|
|
72
|
+
"interaction": "each row is `aria-pressed`, which is the honest role for a control that stays chosen rather than performing an action once."
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"todo": true
|
|
76
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MultiSelect",
|
|
3
|
+
"slug": "multi-select",
|
|
4
|
+
"group": "forms",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Several values out of a known set, each shown as a removable chip.\n\nThe chips live *inside* the field rather than under it, which is what makes\nthe control honest about its own size: a selection of nine trusses is visibly\nnine trusses tall, and nothing is hidden behind a \"+6 more\" the user has to\nopen something to read. That is also why the field takes `min-h-control-*`\ninstead of a fixed height.\n\nBackspace in an empty input removes the last chip and the chips themselves are\narrow-key navigable — both come from Base UI's `Combobox.Chips`, and both are\nthe parts hand-rolled multi-selects forget.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "items",
|
|
12
|
+
"type": "readonly ComboboxOption[]",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The rows, in display order. Base UI filters them against what is typed."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "value",
|
|
19
|
+
"type": "readonly string[]",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Selected values. Use with `onValueChange` for a controlled field."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "defaultValue",
|
|
26
|
+
"type": "readonly string[]",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Initially selected values for an uncontrolled field."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "onValueChange",
|
|
33
|
+
"type": "((value: string[]) => void)",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Called with the full selection after every add or remove."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "placeholder",
|
|
40
|
+
"type": "string",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "Shown while nothing is selected — suppressed once chips fill the field."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "emptyMessage",
|
|
47
|
+
"type": "ReactNode",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": "No matches",
|
|
50
|
+
"description": "Shown in place of the list when the query matches nothing."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "size",
|
|
54
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": "md",
|
|
57
|
+
"description": "Rung of the control ladder. Defaults to `\"md\"`."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "disabled",
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"required": false,
|
|
63
|
+
"defaultValue": null,
|
|
64
|
+
"description": "Prevent opening and grey the field out."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "required",
|
|
68
|
+
"type": "boolean",
|
|
69
|
+
"required": false,
|
|
70
|
+
"defaultValue": null,
|
|
71
|
+
"description": "Require at least one value before the owning form submits."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "name",
|
|
75
|
+
"type": "string",
|
|
76
|
+
"required": false,
|
|
77
|
+
"defaultValue": null,
|
|
78
|
+
"description": "Name for the hidden input, when the field is part of a form."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "id",
|
|
82
|
+
"type": "string",
|
|
83
|
+
"required": false,
|
|
84
|
+
"defaultValue": null,
|
|
85
|
+
"description": "Id forwarded to the text input."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "aria-label",
|
|
89
|
+
"type": "string",
|
|
90
|
+
"required": false,
|
|
91
|
+
"defaultValue": null,
|
|
92
|
+
"description": "Accessible name for the input, when no {@link FieldLabel } names it."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "aria-labelledby",
|
|
96
|
+
"type": "string",
|
|
97
|
+
"required": false,
|
|
98
|
+
"defaultValue": null,
|
|
99
|
+
"description": "Id of the element naming the input."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "removeLabel",
|
|
103
|
+
"type": "((label: string) => string)",
|
|
104
|
+
"required": false,
|
|
105
|
+
"defaultValue": "(label) => `Remove ${label}`",
|
|
106
|
+
"description": "Accessible name for a chip's remove button, given the row's label. Defaults\nto ``(label) => `Remove ${label}` ``."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "className",
|
|
110
|
+
"type": "string",
|
|
111
|
+
"required": false,
|
|
112
|
+
"defaultValue": null,
|
|
113
|
+
"description": "Extra classes for the field."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "popupClassName",
|
|
117
|
+
"type": "string",
|
|
118
|
+
"required": false,
|
|
119
|
+
"defaultValue": null,
|
|
120
|
+
"description": "Extra classes for the popup surface."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "sideOffset",
|
|
124
|
+
"type": "number",
|
|
125
|
+
"required": false,
|
|
126
|
+
"defaultValue": "4",
|
|
127
|
+
"description": "Distance in px between the field and the popup. Defaults to `4`."
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"typeReferences": [],
|
|
131
|
+
"subcomponents": [],
|
|
132
|
+
"parts": [],
|
|
133
|
+
"variants": {},
|
|
134
|
+
"defaultVariants": {},
|
|
135
|
+
"tokensUsed": [
|
|
136
|
+
"--cue-accent",
|
|
137
|
+
"--cue-accent-soft",
|
|
138
|
+
"--cue-border",
|
|
139
|
+
"--cue-border-overlay",
|
|
140
|
+
"--cue-chip-h",
|
|
141
|
+
"--cue-control-lg",
|
|
142
|
+
"--cue-control-md",
|
|
143
|
+
"--cue-control-sm",
|
|
144
|
+
"--cue-danger",
|
|
145
|
+
"--cue-fg",
|
|
146
|
+
"--cue-fg-muted",
|
|
147
|
+
"--cue-fg-subtle",
|
|
148
|
+
"--cue-font-mono",
|
|
149
|
+
"--cue-icon-sm",
|
|
150
|
+
"--cue-radius-control",
|
|
151
|
+
"--cue-radius-overlay",
|
|
152
|
+
"--cue-scrim",
|
|
153
|
+
"--cue-space-1",
|
|
154
|
+
"--cue-space-2",
|
|
155
|
+
"--cue-space-3",
|
|
156
|
+
"--cue-space-4",
|
|
157
|
+
"--cue-space-5",
|
|
158
|
+
"--cue-sunken",
|
|
159
|
+
"--cue-surface-2",
|
|
160
|
+
"--cue-text-body",
|
|
161
|
+
"--cue-text-emphasis",
|
|
162
|
+
"--cue-text-label",
|
|
163
|
+
"--cue-text-ui"
|
|
164
|
+
],
|
|
165
|
+
"summary": "Several values out of a known set, each shown as a removable chip.",
|
|
166
|
+
"examples": [
|
|
167
|
+
{
|
|
168
|
+
"title": "Usage",
|
|
169
|
+
"code": "<MultiSelect aria-label=\"Trusses\" items={trusses} value={picked} onValueChange={setPicked} />",
|
|
170
|
+
"language": "tsx"
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"status": "todo-docs",
|
|
174
|
+
"url": "/docs/components/multi-select",
|
|
175
|
+
"mdUrl": "/docs/components/multi-select.md",
|
|
176
|
+
"jsonUrl": "/r/components/multi-select.json",
|
|
177
|
+
"specimens": [
|
|
178
|
+
{
|
|
179
|
+
"title": "MultiSelect",
|
|
180
|
+
"group": "forms",
|
|
181
|
+
"components": [
|
|
182
|
+
"MultiSelect"
|
|
183
|
+
],
|
|
184
|
+
"code": "<div className=\"grid w-full gap-(--cue-space-5) lg:grid-cols-2\">\n <MultiSelect\n aria-label=\"Fixture types\"\n items={FIXTURE_OPTIONS}\n defaultValue={[\"par64\", \"s4\"]}\n placeholder=\"Fixture types\"\n />\n <MultiSelect\n aria-label=\"Fixture types, disabled\"\n items={FIXTURE_OPTIONS}\n defaultValue={[\"sharpy\"]}\n disabled\n />\n</div>",
|
|
185
|
+
"note": "Several values in one control, rendered as removable chips.",
|
|
186
|
+
"interaction": "each chip's remove button has its own accessible name; Backspace removes the last one."
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
"todo": true
|
|
190
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MusicalTimeInput",
|
|
3
|
+
"slug": "musical-time-input",
|
|
4
|
+
"group": "midi",
|
|
5
|
+
"importPath": "@cueplusplus/ui/midi",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "`bars.beats.sixteenths` — a position in a song, typed the way a song is\ncounted.\n\nA number field would ask for 4.25 and mean \"bar 2, beat 1, one sixteenth in\",\nwhich is a conversion the musician has to do in their head every time. This\nfield does it instead: three segments, each one stepping in its own musical\nunit, and the carry between them handled by the arithmetic rather than by the\ntypist (bar 1 beat 4 plus one beat is bar 2 beat 1).\n\nThree interactions, because the three are used at different moments: **arrows**\nfor a nudge while listening, **scroll** for a sweep, and **typing** for a\nposition read off a cue sheet. Tab moves between the segments on its own — the\nported version intercepted Tab to reimplement the focus order the browser\nalready had, which broke Shift+Tab out of the field entirely.\n\nThe scroll gesture is bound natively rather than through React's `onWheel`,\nbecause React attaches wheel listeners passively at the root: `preventDefault`\nthere is a no-op and the page scrolls away underneath the edit.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "value",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The position, in quarter-note beats. Always controlled."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "onChange",
|
|
19
|
+
"type": "(beats: number) => void",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Called with the new position after every edit."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "timeSignature",
|
|
26
|
+
"type": "TimeSignature",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "{ numerator: 4, denominator: 4 }",
|
|
29
|
+
"description": "The signature the display counts in. Defaults to 4/4."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "size",
|
|
33
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "md",
|
|
36
|
+
"description": "Rung of the control ladder. Defaults to `\"md\"`."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "total",
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "true",
|
|
43
|
+
"description": "Print the total in beats after the segments. Defaults to `true`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "disabled",
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": "false",
|
|
50
|
+
"description": "Refuse every edit."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "label",
|
|
54
|
+
"type": "string",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": "Musical time",
|
|
57
|
+
"description": "Accessible name for the field as a whole. Defaults to `\"Musical time\"`."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"typeReferences": [
|
|
61
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\" | \"defaultValue\">"
|
|
62
|
+
],
|
|
63
|
+
"subcomponents": [],
|
|
64
|
+
"parts": [],
|
|
65
|
+
"variants": {},
|
|
66
|
+
"defaultVariants": {},
|
|
67
|
+
"tokensUsed": [
|
|
68
|
+
"--cue-accent",
|
|
69
|
+
"--cue-border",
|
|
70
|
+
"--cue-control-lg",
|
|
71
|
+
"--cue-control-md",
|
|
72
|
+
"--cue-control-sm",
|
|
73
|
+
"--cue-danger",
|
|
74
|
+
"--cue-fg",
|
|
75
|
+
"--cue-fg-subtle",
|
|
76
|
+
"--cue-font-mono",
|
|
77
|
+
"--cue-radius-control",
|
|
78
|
+
"--cue-space-2",
|
|
79
|
+
"--cue-space-3",
|
|
80
|
+
"--cue-space-4",
|
|
81
|
+
"--cue-space-5",
|
|
82
|
+
"--cue-sunken",
|
|
83
|
+
"--cue-text-body",
|
|
84
|
+
"--cue-text-label",
|
|
85
|
+
"--cue-text-micro",
|
|
86
|
+
"--cue-text-ui"
|
|
87
|
+
],
|
|
88
|
+
"summary": "`bars.beats.sixteenths` — a position in a song, typed the way a song is counted.",
|
|
89
|
+
"examples": [
|
|
90
|
+
{
|
|
91
|
+
"title": "Usage",
|
|
92
|
+
"code": "<MusicalTimeInput value={beats} onChange={setBeats} />\n<MusicalTimeInput value={beats} onChange={setBeats} timeSignature={{ numerator: 6, denominator: 8 }} />",
|
|
93
|
+
"language": "tsx"
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"status": "todo-docs",
|
|
97
|
+
"url": "/docs/components/musical-time-input",
|
|
98
|
+
"mdUrl": "/docs/components/musical-time-input.md",
|
|
99
|
+
"jsonUrl": "/r/components/musical-time-input.json",
|
|
100
|
+
"specimens": [
|
|
101
|
+
{
|
|
102
|
+
"title": "MusicalTimeInput",
|
|
103
|
+
"group": "midi",
|
|
104
|
+
"components": [
|
|
105
|
+
"MusicalTimeInput"
|
|
106
|
+
],
|
|
107
|
+
"code": "<Specimens>\n <Specimen label=\"4/4\">\n <MusicalTimeInput value={beats} onChange={setBeats} label=\"Loop start\" />\n </Specimen>\n <Specimen label=\"7/8\">\n <MusicalTimeInput\n value={beats}\n onChange={setBeats}\n timeSignature={{ numerator: 7, denominator: 8 }}\n label=\"Loop start, 7/8\"\n />\n </Specimen>\n <Specimen label=\"no total\">\n <MusicalTimeInput value={beats} onChange={setBeats} total={false} size=\"sm\" label=\"Compact\" />\n </Specimen>\n <Specimen label=\"disabled\">\n <MusicalTimeInput value={beats} onChange={setBeats} disabled label=\"Locked\" />\n </Specimen>\n <Specimen label=\"formatted\">\n <Chip tone=\"accent\">{formatMusicalTime(beatsToMusical(beats))}</Chip>\n </Specimen>\n</Specimens>",
|
|
108
|
+
"note": "`bars.beats.sixteenths` as three segments, time-signature aware, with the total-beats readout beside it.",
|
|
109
|
+
"interaction": "arrow keys and the scroll wheel step the segment under the caret; Tab moves between segments and overflow carries into the next one."
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"todo": true
|
|
113
|
+
}
|