@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,124 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ThemeConfigurator",
|
|
3
|
+
"slug": "theme-configurator",
|
|
4
|
+
"group": "configurator",
|
|
5
|
+
"importPath": "@cueplusplus/ui/configurator",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"react-aria-components"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "The floating theme configurator: the panel that edits the design system it is\ndrawn with.\n\nIt is a **component**, not a devtool bolted onto the kitchensink — mount it in\nany app behind a flag and a designer can retune that app's theme in place. The\nwhole thing rests on one rule, and the rule is what keeps it from being a toy:\n*everything it does is a `--cue-*` declaration in one stylesheet.* No inline\nstyles on the root, no parallel token vocabulary, no runtime theme engine. The\nCSS it exports is byte for byte the CSS the page is wearing, which is the only\nreason the export dialog can promise a round trip at all.\n\nWhat it owns:\n\n- **Preset, mode and density** are the provider's, driven through `useTheme()`\n so a switch restamps `<html>`, every portal, and the persisted preference.\n- **Colour, type and geometry overrides** go into\n `<style id=\"cue-configurator-overrides\">`, scoped so they win where they\n have to and lose where they should — the cascade reasoning is in\n `_overrides.ts`, and it is the interesting part of this group.\n- **Text scale and root zoom**, the two relief valves the density ladder is\n paired with.\n- **Its own placement**, furled state and every override, in `localStorage`\n under one key.\n\nRenders in place as a `position: fixed` region, so mount it inside the\nprovider — it needs the theme context — but outside any transformed ancestor,\nwhich would turn `fixed` into `absolute` and take the panel with the page.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "position",
|
|
14
|
+
"type": "\"floating\" | \"docked-right\"",
|
|
15
|
+
"required": false,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Placement, controlled. Pair with `onPositionChange`."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "defaultPosition",
|
|
21
|
+
"type": "\"floating\" | \"docked-right\"",
|
|
22
|
+
"required": false,
|
|
23
|
+
"defaultValue": "floating",
|
|
24
|
+
"description": "Initial placement. A stored one wins. Defaults to `\"floating\"`."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onPositionChange",
|
|
28
|
+
"type": "((position: ConfiguratorPosition) => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called when the user docks or floats the panel."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "defaultCollapsed",
|
|
35
|
+
"type": "boolean",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": "false",
|
|
38
|
+
"description": "Start furled to the title bar. A stored value wins. Defaults to `false`."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "storageKey",
|
|
42
|
+
"type": "string",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": "cue-configurator",
|
|
45
|
+
"description": "`localStorage` key holding the overrides, the placement and the zoom.\nDefaults to `\"cue-configurator\"`."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onChange",
|
|
49
|
+
"type": "((tokens: Record<string, string>) => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called with the full resolved `--cue-*` map — never a diff — whenever the\noverrides, the theme or the mode change, and once on mount."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "zoomShortcuts",
|
|
56
|
+
"type": "boolean",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": "true",
|
|
59
|
+
"description": "Bind ⌘/Ctrl with `+`, `-` and `0` to the zoom valve. Defaults to `true`."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "title",
|
|
63
|
+
"type": "ReactNode",
|
|
64
|
+
"required": false,
|
|
65
|
+
"defaultValue": "Theme",
|
|
66
|
+
"description": "Panel heading. Defaults to `\"Theme\"`."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "className",
|
|
70
|
+
"type": "string",
|
|
71
|
+
"required": false,
|
|
72
|
+
"defaultValue": null,
|
|
73
|
+
"description": "Extra classes for the panel."
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"typeReferences": [],
|
|
77
|
+
"subcomponents": [],
|
|
78
|
+
"parts": [],
|
|
79
|
+
"variants": {},
|
|
80
|
+
"defaultVariants": {},
|
|
81
|
+
"tokensUsed": [
|
|
82
|
+
"--cue-accent",
|
|
83
|
+
"--cue-accent-soft",
|
|
84
|
+
"--cue-border",
|
|
85
|
+
"--cue-border-overlay",
|
|
86
|
+
"--cue-control-lg",
|
|
87
|
+
"--cue-control-sm",
|
|
88
|
+
"--cue-fg",
|
|
89
|
+
"--cue-fg-muted",
|
|
90
|
+
"--cue-fg-subtle",
|
|
91
|
+
"--cue-font-mono",
|
|
92
|
+
"--cue-font-pairing-mono",
|
|
93
|
+
"--cue-font-sans",
|
|
94
|
+
"--cue-font-scale",
|
|
95
|
+
"--cue-font-theme-mono",
|
|
96
|
+
"--cue-icon-sm",
|
|
97
|
+
"--cue-radius-control",
|
|
98
|
+
"--cue-radius-overlay",
|
|
99
|
+
"--cue-radius-scale",
|
|
100
|
+
"--cue-scrim",
|
|
101
|
+
"--cue-space-1",
|
|
102
|
+
"--cue-space-2",
|
|
103
|
+
"--cue-space-3",
|
|
104
|
+
"--cue-space-4",
|
|
105
|
+
"--cue-space-5",
|
|
106
|
+
"--cue-surface-2",
|
|
107
|
+
"--cue-text-emphasis",
|
|
108
|
+
"--cue-text-label",
|
|
109
|
+
"--cue-text-ui"
|
|
110
|
+
],
|
|
111
|
+
"summary": "The floating theme configurator: the panel that edits the design system it is drawn with.",
|
|
112
|
+
"examples": [
|
|
113
|
+
{
|
|
114
|
+
"title": "Usage",
|
|
115
|
+
"code": "<ThemeProvider>\n <App />\n {devMode ? <ThemeConfigurator /> : null}\n</ThemeProvider>\n<ThemeConfigurator position=\"docked-right\" onChange={(tokens) => report(tokens)} />",
|
|
116
|
+
"language": "tsx"
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"status": "todo-docs",
|
|
120
|
+
"url": "/docs/components/theme-configurator",
|
|
121
|
+
"mdUrl": "/docs/components/theme-configurator.md",
|
|
122
|
+
"jsonUrl": "/r/components/theme-configurator.json",
|
|
123
|
+
"todo": true
|
|
124
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ThemeProvider",
|
|
3
|
+
"slug": "theme-provider",
|
|
4
|
+
"group": "system",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Root of the theme system: stamps `data-theme`, `data-density` and `data-mode`\nso the token layer resolves, puts `data-font` on `<html>`, publishes\n`--cue-font-scale`, and owns the persisted user preference.\n\nRendering: `<div data-cue-root data-theme data-density data-mode style={{ colorScheme, --cue-font-scale }}>`\n(or the single child when `asChild`). The `theme`/`density`/`font`/`mode` props are\n*initial* values — the provider holds the state so `setTheme` and friends can\ndrive it — but a changed prop is adopted after mount, so a controlling parent\nstill works.\n\nThe font pairing is the one axis that never lands on this element: it has no\nisland form, `<html>` is its only home, and restating it here would shadow the\npre-paint stamp for the whole page on the first frame. See the `stamp` object\nbelow.\n\nPersistence and the pre-paint contract: setters write\n`{ theme, density, font, mode }` to `localStorage[storageKey]`, which is exactly what\n{@link prepaintScript } reads to stamp `<html>` before the first paint. The\noutermost provider keeps `<html>` in sync while the app runs (and restores the\nprevious stamp on unmount) so the page ground, UA scrollbars and form controls\nfollow the theme; nested providers never touch `<html>`, and never own the\nfont pairing — `useTheme().font` and `setFont` inside one are the root's.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "theme",
|
|
12
|
+
"type": "\"terminal\" | \"cue\" | \"signal\" | \"venu\" | \"hivehub\" | \"dusk\" | \"luma\" | \"snuffle\" | \"requestport\" | \"quotamate\"",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": "cue",
|
|
15
|
+
"description": "Initial theme preset. Defaults to `\"cue\"`. Changing it after mount adopts the new value."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "density",
|
|
19
|
+
"type": "\"normal\" | \"large\" | \"compact\" | \"ultra-compact\" | \"ultra-large\"",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "compact",
|
|
22
|
+
"description": "Initial density level. Defaults to `\"compact\"`."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "mode",
|
|
26
|
+
"type": "\"system\" | \"dark\" | \"light\"",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "dark",
|
|
29
|
+
"description": "Initial mode. Defaults to `\"dark\"`; `\"system\"` tracks `prefers-color-scheme`."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "font",
|
|
33
|
+
"type": "\"source\" | \"system\" | \"geist\" | \"inter\" | \"plex\" | \"roboto\" | \"apple\" | \"office\"",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": "DEFAULT_FONT",
|
|
36
|
+
"description": "Initial font pairing. Defaults to `\"system\"` — the platform's own faces,\nnothing downloaded, and the theme keeps whatever monospace it authored.\n\nA pairing that needs delivering is a set of *names*: this library ships no\nfont files, and a pairing nobody delivers falls through its stack to the\nplatform rather than failing. See `FONT_PAIRINGS[font].faces` for the\ncustom properties an app assigns to make one resolve.\n\n**Root-level only.** There is no font island: a nested provider forwards\nthis axis to the root, ignores this prop, and its `setFont` drives the root.\nA page that changed face halfway down is a page with a bug, and a specimen\nthat genuinely wants one — a picker row, a docs page showing all eight —\nneeds nothing from this library but `data-font` on a `<div>`."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "fontScale",
|
|
40
|
+
"type": "number",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": "1",
|
|
43
|
+
"description": "Multiplier on every text token, published as `--cue-font-scale`. Defaults to `1`."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "fontFamilies",
|
|
47
|
+
"type": "FontFamilies",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Optional app-owned font stacks, published as inline CUE font custom properties."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "storageKey",
|
|
54
|
+
"type": "string",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": "cue-ui",
|
|
57
|
+
"description": "localStorage key holding `{ theme, density, font, mode }`. Defaults to `\"cue-ui\"`.\nOnly the outermost provider reads or writes it — a nested provider is an\nisland whose explicit props are the point, not a second preference store."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "persistPreferences",
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"required": false,
|
|
63
|
+
"defaultValue": "true",
|
|
64
|
+
"description": "Restore and write root preferences in localStorage. Defaults to `true`."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "asChild",
|
|
68
|
+
"type": "boolean",
|
|
69
|
+
"required": false,
|
|
70
|
+
"defaultValue": "false",
|
|
71
|
+
"description": "Stamp the single child element instead of rendering a wrapper `<div>`."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "className",
|
|
75
|
+
"type": "string",
|
|
76
|
+
"required": false,
|
|
77
|
+
"defaultValue": null,
|
|
78
|
+
"description": "Extra classes for the provider root."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "style",
|
|
82
|
+
"type": "CSSProperties",
|
|
83
|
+
"required": false,
|
|
84
|
+
"defaultValue": null,
|
|
85
|
+
"description": "Inline styles for the provider root, merged after the token style."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "children",
|
|
89
|
+
"type": "ReactNode",
|
|
90
|
+
"required": false,
|
|
91
|
+
"defaultValue": null,
|
|
92
|
+
"description": "The application subtree."
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"typeReferences": [],
|
|
96
|
+
"subcomponents": [],
|
|
97
|
+
"parts": [],
|
|
98
|
+
"variants": {},
|
|
99
|
+
"defaultVariants": {},
|
|
100
|
+
"tokensUsed": [
|
|
101
|
+
"--cue-font-mono",
|
|
102
|
+
"--cue-font-sans",
|
|
103
|
+
"--cue-font-scale"
|
|
104
|
+
],
|
|
105
|
+
"summary": "The root that stamps theme, density and mode, and publishes the setters.",
|
|
106
|
+
"examples": [
|
|
107
|
+
{
|
|
108
|
+
"title": "The document root",
|
|
109
|
+
"code": "<html lang=\"en\" suppressHydrationWarning>\n <head>\n <script dangerouslySetInnerHTML={{ __html: prepaintScript() }} />\n </head>\n <body>\n <ThemeProvider theme=\"terminal\" density=\"normal\">\n {children}\n </ThemeProvider>\n </body>\n</html>",
|
|
110
|
+
"language": "tsx"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"title": "Usage",
|
|
114
|
+
"code": "<ThemeProvider theme=\"terminal\" density=\"ultra-compact\" font=\"plex\" mode=\"system\">\n <App />\n</ThemeProvider>",
|
|
115
|
+
"language": "tsx"
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"status": "stable",
|
|
119
|
+
"url": "/docs/components/theme-provider",
|
|
120
|
+
"mdUrl": "/docs/components/theme-provider.md",
|
|
121
|
+
"jsonUrl": "/r/components/theme-provider.json",
|
|
122
|
+
"whenToUse": [
|
|
123
|
+
"Once at the root of an app, around everything that renders a component.",
|
|
124
|
+
"Around a subtree that has to render in a fixed preset, such as a theme preview pane."
|
|
125
|
+
],
|
|
126
|
+
"whenNotToUse": [
|
|
127
|
+
"Changing geometry for one region. Use `Density`, which stamps the density attribute and leaves colour alone.",
|
|
128
|
+
"Holding app state. It owns theme, density and mode, and nothing else."
|
|
129
|
+
],
|
|
130
|
+
"commonMistakes": [
|
|
131
|
+
"Leaving `prepaintScript()` out of the document head, which paints the default theme for one frame and then flips.",
|
|
132
|
+
"Mounting two providers on the same `storageKey`, which makes them fight over the stored preference."
|
|
133
|
+
]
|
|
134
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ThinkingIndicator",
|
|
3
|
+
"slug": "thinking-indicator",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A live status line that names what the agent is doing right now, with elapsed time.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "label",
|
|
12
|
+
"type": "string",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "What the agent is doing right now. Swapping it replays the entrance animation."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "elapsed",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Elapsed time rendered in mono next to the label. Omit to hide the timer."
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"typeReferences": [
|
|
26
|
+
"Omit<ComponentProps<\"div\">, \"children\" | \"label\" | \"elapsed\"> & {\n /** What the agent is doing right now. Swapping it replays the entrance animation. */\n label: string;\n /** Elapsed time rendered in mono next to the label. Omit to hide the timer. */\n elapsed?: string;\n}"
|
|
27
|
+
],
|
|
28
|
+
"subcomponents": [],
|
|
29
|
+
"parts": [],
|
|
30
|
+
"variants": {},
|
|
31
|
+
"defaultVariants": {},
|
|
32
|
+
"tokensUsed": [
|
|
33
|
+
"--cue-fg-muted",
|
|
34
|
+
"--cue-fg-subtle",
|
|
35
|
+
"--cue-stream",
|
|
36
|
+
"--cue-text-body"
|
|
37
|
+
],
|
|
38
|
+
"summary": "A live status line that names what the agent is doing right now, with elapsed time.",
|
|
39
|
+
"examples": [
|
|
40
|
+
{
|
|
41
|
+
"title": "Usage",
|
|
42
|
+
"code": "import { ThinkingIndicator } from \"@cueplusplus/ui/elements\";\n\n<ThinkingIndicator label=\"Reading thread.tsx\" elapsed=\"12s\" />",
|
|
43
|
+
"language": "tsx"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"status": "todo-docs",
|
|
47
|
+
"url": "/docs/components/thinking-indicator",
|
|
48
|
+
"mdUrl": "/docs/components/thinking-indicator.md",
|
|
49
|
+
"jsonUrl": "/r/components/thinking-indicator.json",
|
|
50
|
+
"specimens": [
|
|
51
|
+
{
|
|
52
|
+
"title": "ThinkingIndicator",
|
|
53
|
+
"group": "elements-thread",
|
|
54
|
+
"components": [
|
|
55
|
+
"ThinkingIndicator"
|
|
56
|
+
],
|
|
57
|
+
"code": "<Specimens>\n <Specimen label=\"reading\" wide>\n <ThinkingIndicator label=\"Reading front-truss.gdtf\" elapsed=\"0:04\" />\n </Specimen>\n <Specimen label=\"patching, no clock\" wide>\n <ThinkingIndicator label=\"Patching universe 3\" />\n </Specimen>\n</Specimens>",
|
|
58
|
+
"note": "One line that says what is happening right now, with the elapsed clock beside it. The label is keyed, so replacing it re-runs the entrance and the change reads as a change rather than as a re-render.",
|
|
59
|
+
"interaction": "none. It is a status line, not a control — the dot pulses and the label sweeps, and both stop for a reduced-motion reader."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"todo": true
|
|
63
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ThreadList",
|
|
3
|
+
"slug": "thread-list",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "Conversation history with unread marks and actions that wait for hover.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "threads",
|
|
14
|
+
"type": "readonly ThreadItem[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "Conversation rows with title, time, and optional unread mark."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "activeIndex",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Index of the currently selected thread. An index outside the list selects nothing."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "onActiveIndexChange",
|
|
28
|
+
"type": "((index: number) => void)",
|
|
29
|
+
"required": false,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Called when the user clicks a thread row."
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"typeReferences": [
|
|
35
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"threads\" | \"activeIndex\" | \"onActiveIndexChange\"\n> & {\n /** Conversation rows with title, time, and optional unread mark. */\n threads: readonly ThreadItem[];\n /** Index of the currently selected thread. An index outside the list selects nothing. */\n activeIndex: number;\n /** Called when the user clicks a thread row. */\n onActiveIndexChange?: (index: number) => void;\n}"
|
|
36
|
+
],
|
|
37
|
+
"subcomponents": [],
|
|
38
|
+
"parts": [],
|
|
39
|
+
"variants": {},
|
|
40
|
+
"defaultVariants": {},
|
|
41
|
+
"tokensUsed": [
|
|
42
|
+
"--cue-fg",
|
|
43
|
+
"--cue-fg-muted",
|
|
44
|
+
"--cue-fg-subtle",
|
|
45
|
+
"--cue-radius-surface",
|
|
46
|
+
"--cue-stream",
|
|
47
|
+
"--cue-surface-1",
|
|
48
|
+
"--cue-surface-2",
|
|
49
|
+
"--cue-text-body"
|
|
50
|
+
],
|
|
51
|
+
"summary": "Conversation history with unread marks and actions that wait for hover.",
|
|
52
|
+
"examples": [
|
|
53
|
+
{
|
|
54
|
+
"title": "Usage",
|
|
55
|
+
"code": "import { ThreadList } from \"@cueplusplus/ui/elements\";\n\n<ThreadList\n threads={[\n { title: \"Composer polish\", time: \"2m\", unread: true },\n { title: \"Runtime migration\", time: \"1h\" },\n ]}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n/>",
|
|
56
|
+
"language": "tsx"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"status": "todo-docs",
|
|
60
|
+
"url": "/docs/components/thread-list",
|
|
61
|
+
"mdUrl": "/docs/components/thread-list.md",
|
|
62
|
+
"jsonUrl": "/r/components/thread-list.json",
|
|
63
|
+
"specimens": [
|
|
64
|
+
{
|
|
65
|
+
"title": "ThreadList",
|
|
66
|
+
"group": "elements-composer",
|
|
67
|
+
"components": [
|
|
68
|
+
"ThreadList"
|
|
69
|
+
],
|
|
70
|
+
"code": "<Specimens>\n <Specimen label=\"one open\">\n <ThreadList threads={THREADS} activeIndex={thread} onActiveIndexChange={setThread} />\n </Specimen>\n <Specimen label=\"nothing open\">\n <ThreadList threads={THREADS} activeIndex={-1} />\n </Specimen>\n</Specimens>",
|
|
71
|
+
"note": "Conversation history at its smallest: a title, how long ago, and an unread dot. The row's actions replace the timestamp on hover rather than sitting beside it, which is what keeps a 240px rail from becoming a toolbar — and the active row never shows an unread mark, because reading it is what cleared it.",
|
|
72
|
+
"interaction": "the selected row carries `aria-current`; the rename and delete affordances appear on hover in the space the time was using, so nothing moves when they arrive."
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"todo": true
|
|
76
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ThreadSearch",
|
|
3
|
+
"slug": "thread-search",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "History you can actually get back into: pinned first, then grouped by when.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "threads",
|
|
14
|
+
"type": "readonly SearchableThread[]",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "All threads. Filtering matches title and preview together."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "query",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Current search text."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "activeId",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "Which thread is open."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onQueryChange",
|
|
35
|
+
"type": "((query: string) => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called as the search is typed."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onSelect",
|
|
42
|
+
"type": "((id: string) => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called when a thread is opened."
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"Omit<\n ComponentProps<\"div\">,\n \"children\" | \"threads\" | \"query\" | \"activeId\" | \"onQueryChange\" | \"onSelect\"\n> & {\n /** All threads. Filtering matches title and preview together. */\n threads: readonly SearchableThread[];\n /** Current search text. */\n query: string;\n /** Which thread is open. */\n activeId: string;\n /** Called as the search is typed. */\n onQueryChange?: (query: string) => void;\n /** Called when a thread is opened. */\n onSelect?: (id: string) => void;\n}"
|
|
50
|
+
],
|
|
51
|
+
"subcomponents": [],
|
|
52
|
+
"parts": [],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-accent",
|
|
57
|
+
"--cue-fg-muted",
|
|
58
|
+
"--cue-fg-subtle",
|
|
59
|
+
"--cue-radius-overlay",
|
|
60
|
+
"--cue-radius-surface",
|
|
61
|
+
"--cue-surface-1",
|
|
62
|
+
"--cue-text-body",
|
|
63
|
+
"--cue-text-ui"
|
|
64
|
+
],
|
|
65
|
+
"summary": "History you can actually get back into: pinned first, then grouped by when.",
|
|
66
|
+
"examples": [
|
|
67
|
+
{
|
|
68
|
+
"title": "Usage",
|
|
69
|
+
"code": "import { ThreadSearch } from \"@cueplusplus/ui/elements\";\n\n<ThreadSearch\n threads={threads}\n query={query}\n activeId={activeId}\n onQueryChange={setQuery}\n onSelect={setActiveId}\n/>",
|
|
70
|
+
"language": "tsx"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"status": "todo-docs",
|
|
74
|
+
"url": "/docs/components/thread-search",
|
|
75
|
+
"mdUrl": "/docs/components/thread-search.md",
|
|
76
|
+
"jsonUrl": "/r/components/thread-search.json",
|
|
77
|
+
"specimens": [
|
|
78
|
+
{
|
|
79
|
+
"title": "ThreadSearch",
|
|
80
|
+
"group": "elements-composer",
|
|
81
|
+
"components": [
|
|
82
|
+
"ThreadSearch"
|
|
83
|
+
],
|
|
84
|
+
"code": "<Specimens>\n <Specimen label=\"grouped\" wide>\n <ThreadSearch\n threads={SEARCHABLE}\n query={threadQuery}\n activeId={threadId}\n onQueryChange={setThreadQuery}\n onSelect={setThreadId}\n />\n </Specimen>\n <Specimen label=\"filtered\" wide>\n <ThreadSearch threads={SEARCHABLE} query=\"truss\" activeId=\"t-truss\" />\n </Specimen>\n <Specimen label=\"nothing matches\" wide>\n <ThreadSearch threads={SEARCHABLE} query=\"haze\" activeId=\"\" />\n </Specimen>\n</Specimens>",
|
|
85
|
+
"note": "History you can actually get back into: pinned first, then grouped by when. Filtering matches the title and the preview together, so a thread found by something said inside it still shows the line that found it. The pinned section is a lift out of the date groups rather than a copy — a pinned thread appears once.",
|
|
86
|
+
"interaction": "arrows walk the flattened order across group boundaries, which is the order the eye reads rather than the order the data is in."
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"todo": true
|
|
90
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ThresholdRail",
|
|
3
|
+
"slug": "threshold-rail",
|
|
4
|
+
"group": "midi",
|
|
5
|
+
"importPath": "@cueplusplus/ui/midi",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "The trigger level, set by dragging it along the signal it triggers on.\n\nA threshold is a number, and a number field would hold it perfectly well —\nbut a threshold is only ever chosen *relative to a signal*, and this control\nis the one place both are visible at once: the live level fills the rail, the\npeak-hold needle marks how far it got, and the handle sits where the trigger\nfires. Unified from ableton-sync's three near-identical threshold editors.\n\nTwo thresholds make it a window rather than a floor: supply `lower` and the\nrail arms *between* the handles, which is how a band-triggered cue avoids\nfiring on a peak it was never meant to catch.\n\nWhat the ports did not have is a keyboard. Their handles moved on `mousedown`\nplus a document listener, so a threshold could not be set by anyone not using\na mouse, and no screen reader was ever told what the number was. Here each\nhandle is a `role=\"slider\"` announcing a percentage, arrow keys step, page\nkeys jump, and Home/End go to the limits — the drag is the fast path, not the\nonly path.\n\nThe `onChange`/`onCommit` split is the same undo-coalescing contract as\n`Slider` and `ScrubInput`: one drag is one undo entry.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "value",
|
|
12
|
+
"type": "number",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The (upper) threshold, `0`–`1`. Always controlled."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "onChange",
|
|
19
|
+
"type": "(value: number) => void",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Called with the next upper threshold."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "lower",
|
|
26
|
+
"type": "number",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "The lower threshold. Supplying it turns the rail into a window."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "onLowerChange",
|
|
33
|
+
"type": "((value: number) => void)",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Called with the next lower threshold."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "onCommit",
|
|
40
|
+
"type": "((thresholds: { upper: number; lower?: number; }) => void)",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "Called once per finished gesture with both thresholds: pointer-up after a\ndrag, or each key step. Hang undo entries and network writes here —\n`onChange` fires on every frame of a drag."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "level",
|
|
47
|
+
"type": "number",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Live signal level, `0`–`1`, drawn as a fill. Absent draws no fill."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "peak",
|
|
54
|
+
"type": "number | null",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": null,
|
|
57
|
+
"description": "Peak-hold position, `0`–`1`. `null` or absent draws no needle."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "step",
|
|
61
|
+
"type": "number",
|
|
62
|
+
"required": false,
|
|
63
|
+
"defaultValue": "0.01",
|
|
64
|
+
"description": "Grid the handles snap to. Defaults to `0.01`."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "minGap",
|
|
68
|
+
"type": "number",
|
|
69
|
+
"required": false,
|
|
70
|
+
"defaultValue": "0.01",
|
|
71
|
+
"description": "Closest the two handles may get. Defaults to `0.01`."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "belowTone",
|
|
75
|
+
"type": "\"danger\" | \"accent\" | \"busy\" | \"ok\" | \"warn\" | \"info\"",
|
|
76
|
+
"required": false,
|
|
77
|
+
"defaultValue": "danger",
|
|
78
|
+
"description": "Ink for the zones outside the window. Defaults to `\"danger\"`."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "aboveTone",
|
|
82
|
+
"type": "\"danger\" | \"accent\" | \"busy\" | \"ok\" | \"warn\" | \"info\"",
|
|
83
|
+
"required": false,
|
|
84
|
+
"defaultValue": "ok",
|
|
85
|
+
"description": "Ink for the armed zone. Defaults to `\"ok\"`."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "disabled",
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"required": false,
|
|
91
|
+
"defaultValue": "false",
|
|
92
|
+
"description": "Refuse every gesture."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "label",
|
|
96
|
+
"type": "string",
|
|
97
|
+
"required": false,
|
|
98
|
+
"defaultValue": "Threshold",
|
|
99
|
+
"description": "What is being thresholded. Names the handles. Defaults to `\"Threshold\"`."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "formatValue",
|
|
103
|
+
"type": "((value: number) => string)",
|
|
104
|
+
"required": false,
|
|
105
|
+
"defaultValue": "(fraction) => `${Math.round(fraction * 100)}%`",
|
|
106
|
+
"description": "Format a value for the handle's spoken text. Defaults to `\"62%\"`."
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"typeReferences": [
|
|
110
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"onChange\" | \"defaultValue\">"
|
|
111
|
+
],
|
|
112
|
+
"subcomponents": [],
|
|
113
|
+
"parts": [],
|
|
114
|
+
"variants": {},
|
|
115
|
+
"defaultVariants": {},
|
|
116
|
+
"tokensUsed": [
|
|
117
|
+
"--cue-accent",
|
|
118
|
+
"--cue-accent-soft",
|
|
119
|
+
"--cue-bg",
|
|
120
|
+
"--cue-border",
|
|
121
|
+
"--cue-busy",
|
|
122
|
+
"--cue-busy-soft",
|
|
123
|
+
"--cue-control-sm",
|
|
124
|
+
"--cue-danger",
|
|
125
|
+
"--cue-danger-soft",
|
|
126
|
+
"--cue-fg",
|
|
127
|
+
"--cue-info",
|
|
128
|
+
"--cue-info-soft",
|
|
129
|
+
"--cue-ok",
|
|
130
|
+
"--cue-ok-soft",
|
|
131
|
+
"--cue-sunken",
|
|
132
|
+
"--cue-warn",
|
|
133
|
+
"--cue-warn-soft"
|
|
134
|
+
],
|
|
135
|
+
"summary": "The trigger level, set by dragging it along the signal it triggers on.",
|
|
136
|
+
"examples": [
|
|
137
|
+
{
|
|
138
|
+
"title": "Usage",
|
|
139
|
+
"code": "<ThresholdRail value={threshold} onChange={setThreshold} level={rms} peak={peak} />\n<ThresholdRail value={high} lower={low} onChange={setHigh} onLowerChange={setLow} />",
|
|
140
|
+
"language": "tsx"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"status": "todo-docs",
|
|
144
|
+
"url": "/docs/components/threshold-rail",
|
|
145
|
+
"mdUrl": "/docs/components/threshold-rail.md",
|
|
146
|
+
"jsonUrl": "/r/components/threshold-rail.json",
|
|
147
|
+
"specimens": [
|
|
148
|
+
{
|
|
149
|
+
"title": "ThresholdRail",
|
|
150
|
+
"group": "midi",
|
|
151
|
+
"components": [
|
|
152
|
+
"ThresholdRail"
|
|
153
|
+
],
|
|
154
|
+
"code": "<div className=\"flex w-full flex-col gap-(--cue-space-6)\">\n <ThresholdRail\n value={upper}\n onChange={setUpper}\n lower={lower}\n onLowerChange={setLower}\n level={0.58}\n peak={0.81}\n label=\"Trigger thresholds\"\n />\n <ThresholdRail\n value={upper}\n onChange={setUpper}\n level={0.34}\n belowTone=\"info\"\n aboveTone=\"danger\"\n label=\"Single threshold\"\n />\n <ThresholdRail value={0.6} onChange={() => {}} disabled label=\"Threshold, locked\" />\n</div>",
|
|
155
|
+
"note": "A dual-handle rail with tone zones below and above, a level bar and a peak-hold needle.",
|
|
156
|
+
"interaction": "each handle is a slider with its own name; both scale up while dragging, and `onCommit` fires once on release."
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"todo": true
|
|
160
|
+
}
|