@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,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Density",
|
|
3
|
+
"slug": "density",
|
|
4
|
+
"group": "system",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "Re-scope any subtree to a different density level.\n\nRenders a plain `<div data-density=\"…\">`: the geometry custom properties are\nre-declared by the attribute selector and inherit down, so nesting is free and\nneeds no JS. The matching React context is published alongside for the rare\nJS reads (`useDensity()`, `useControlHeight()`, portal stamping) — the DOM\nattribute, not the context, is what actually restyles the tree.\n\nTheme and mode are deliberately *not* re-scoped here: density is the only axis\nan island may override (spec §6).",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "density",
|
|
12
|
+
"type": "\"normal\" | \"large\" | \"compact\" | \"ultra-compact\" | \"ultra-large\"",
|
|
13
|
+
"required": true,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "Level to apply to this subtree: `ultra-compact`, `compact`, `normal`,\n`large` or `ultra-large`."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "children",
|
|
19
|
+
"type": "ReactNode",
|
|
20
|
+
"required": true,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Subtree that should render at `density`."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "className",
|
|
26
|
+
"type": "string",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Extra classes for the island element. It is an ordinary `<div>` — style it like one."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "style",
|
|
33
|
+
"type": "CSSProperties",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Inline styles for the island element."
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"typeReferences": [],
|
|
40
|
+
"subcomponents": [],
|
|
41
|
+
"parts": [],
|
|
42
|
+
"variants": {},
|
|
43
|
+
"defaultVariants": {},
|
|
44
|
+
"tokensUsed": [],
|
|
45
|
+
"summary": "Re-scope any subtree to a different density level.",
|
|
46
|
+
"examples": [
|
|
47
|
+
{
|
|
48
|
+
"title": "Usage",
|
|
49
|
+
"code": "<Density density=\"ultra-compact\">\n <Toolbar />\n</Density>",
|
|
50
|
+
"language": "tsx"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"status": "todo-docs",
|
|
54
|
+
"url": "/docs/components/density",
|
|
55
|
+
"mdUrl": "/docs/components/density.md",
|
|
56
|
+
"jsonUrl": "/r/components/density.json",
|
|
57
|
+
"todo": true
|
|
58
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "DescriptionList",
|
|
3
|
+
"slug": "description-list",
|
|
4
|
+
"group": "layout",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": false,
|
|
8
|
+
"description": "The `<dl>` family: {@link DescriptionListRoot}, `Term` and `Detail`.",
|
|
9
|
+
"props": [],
|
|
10
|
+
"typeReferences": [],
|
|
11
|
+
"subcomponents": [
|
|
12
|
+
"Root",
|
|
13
|
+
"Term",
|
|
14
|
+
"Detail"
|
|
15
|
+
],
|
|
16
|
+
"parts": [
|
|
17
|
+
{
|
|
18
|
+
"name": "Root",
|
|
19
|
+
"usage": "DescriptionList.Root",
|
|
20
|
+
"description": "A key/value block: the honest `<dl>`, styled for a console.\n\nTerms are set in the mono micro caption idiom shared with `SectionHeader` and\nmenu group labels, so a metadata block reads as annotation rather than as\ncompeting body text.\n\nStatic markup — no `\"use client\"`.",
|
|
21
|
+
"props": [
|
|
22
|
+
{
|
|
23
|
+
"name": "layout",
|
|
24
|
+
"type": "\"inline\" | \"stacked\"",
|
|
25
|
+
"required": false,
|
|
26
|
+
"defaultValue": "inline",
|
|
27
|
+
"description": "`\"inline\"` (default) puts the detail beside its term in a two-column grid;\n`\"stacked\"` puts it underneath. Stack when the details are long enough to\nwrap, which turns the aligned column into ragged text anyway."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"typeReferences": [
|
|
31
|
+
"React.ComponentPropsWithoutRef<\"dl\">"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Term",
|
|
36
|
+
"usage": "DescriptionList.Term",
|
|
37
|
+
"description": "One key. Mono, uppercase, widely tracked — annotation, not body text.",
|
|
38
|
+
"props": [],
|
|
39
|
+
"typeReferences": [
|
|
40
|
+
"React.ComponentPropsWithoutRef<\"dt\">"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "Detail",
|
|
45
|
+
"usage": "DescriptionList.Detail",
|
|
46
|
+
"description": "One value. `m-0` resets the browser's inherited `<dd>` indent, which would\notherwise push every detail 40px right of the grid column it belongs to.",
|
|
47
|
+
"props": [],
|
|
48
|
+
"typeReferences": [
|
|
49
|
+
"React.ComponentPropsWithoutRef<\"dd\">"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"variants": {},
|
|
54
|
+
"defaultVariants": {},
|
|
55
|
+
"tokensUsed": [
|
|
56
|
+
"--cue-fg",
|
|
57
|
+
"--cue-fg-subtle",
|
|
58
|
+
"--cue-font-mono",
|
|
59
|
+
"--cue-space-2",
|
|
60
|
+
"--cue-space-3",
|
|
61
|
+
"--cue-space-5",
|
|
62
|
+
"--cue-text-label",
|
|
63
|
+
"--cue-text-ui"
|
|
64
|
+
],
|
|
65
|
+
"summary": "The `<dl>` family: {@link DescriptionListRoot}, `Term` and `Detail`.",
|
|
66
|
+
"examples": [],
|
|
67
|
+
"status": "todo-docs",
|
|
68
|
+
"url": "/docs/components/description-list",
|
|
69
|
+
"mdUrl": "/docs/components/description-list.md",
|
|
70
|
+
"jsonUrl": "/r/components/description-list.json",
|
|
71
|
+
"specimens": [
|
|
72
|
+
{
|
|
73
|
+
"title": "DescriptionList",
|
|
74
|
+
"group": "layout",
|
|
75
|
+
"components": [
|
|
76
|
+
"DescriptionList"
|
|
77
|
+
],
|
|
78
|
+
"code": "<div className=\"grid w-full gap-(--cue-space-5) lg:grid-cols-2\">\n <Panel className=\"p-(--cue-space-5)\">\n <DescriptionList.Root>\n <DescriptionList.Term>Protocol</DescriptionList.Term>\n <DescriptionList.Detail>Art-Net</DescriptionList.Detail>\n <DescriptionList.Term>Host</DescriptionList.Term>\n <DescriptionList.Detail>10.0.0.42</DescriptionList.Detail>\n <DescriptionList.Term>Rate</DescriptionList.Term>\n <DescriptionList.Detail>\n <span className=\"flex items-center gap-(--cue-space-2)\">\n 44 Hz <StatusDot tone=\"ok\" label=\"Nominal\" />\n </span>\n </DescriptionList.Detail>\n </DescriptionList.Root>\n </Panel>\n <Panel className=\"p-(--cue-space-5)\">\n <DescriptionList.Root layout=\"stacked\">\n <DescriptionList.Term>Protocol</DescriptionList.Term>\n <DescriptionList.Detail>Art-Net</DescriptionList.Detail>\n <DescriptionList.Term>Host</DescriptionList.Term>\n <DescriptionList.Detail>10.0.0.42</DescriptionList.Detail>\n </DescriptionList.Root>\n </Panel>\n</div>",
|
|
79
|
+
"note": "Two layouts: inline pairs for a sidebar, stacked for a page.",
|
|
80
|
+
"interaction": "none."
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"todo": true
|
|
84
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Diagram",
|
|
3
|
+
"slug": "diagram",
|
|
4
|
+
"group": "elements",
|
|
5
|
+
"importPath": "@cueplusplus/ui/elements",
|
|
6
|
+
"peerDependencies": [
|
|
7
|
+
"lucide-react"
|
|
8
|
+
],
|
|
9
|
+
"clientOnly": true,
|
|
10
|
+
"description": "A drawn answer with zoom, reset, and a full-bleed view; you hand it the rendered\ngraphic.",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "title",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"required": true,
|
|
16
|
+
"defaultValue": null,
|
|
17
|
+
"description": "What the diagram shows."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "zoom",
|
|
21
|
+
"type": "number",
|
|
22
|
+
"required": true,
|
|
23
|
+
"defaultValue": null,
|
|
24
|
+
"description": "Scale factor applied to the content. 1 is fit; the header prints it as a percentage."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "children",
|
|
28
|
+
"type": "ReactNode",
|
|
29
|
+
"required": true,
|
|
30
|
+
"defaultValue": null,
|
|
31
|
+
"description": "The rendered graphic. The element owns the frame and never parses or injects\nmarkup itself, so whatever renders your chart stays your choice."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "onZoomIn",
|
|
35
|
+
"type": "(() => void)",
|
|
36
|
+
"required": false,
|
|
37
|
+
"defaultValue": null,
|
|
38
|
+
"description": "Called from the zoom-in control. Clamp the range yourself."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "onZoomOut",
|
|
42
|
+
"type": "(() => void)",
|
|
43
|
+
"required": false,
|
|
44
|
+
"defaultValue": null,
|
|
45
|
+
"description": "Called from the zoom-out control."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "onReset",
|
|
49
|
+
"type": "(() => void)",
|
|
50
|
+
"required": false,
|
|
51
|
+
"defaultValue": null,
|
|
52
|
+
"description": "Called to return to the default view."
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "onExpand",
|
|
56
|
+
"type": "(() => void)",
|
|
57
|
+
"required": false,
|
|
58
|
+
"defaultValue": null,
|
|
59
|
+
"description": "Called to open the diagram full screen."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"typeReferences": [
|
|
63
|
+
"Omit<\n ComponentProps<\"div\">,\n | \"title\"\n | \"zoom\"\n | \"children\"\n | \"onZoomIn\"\n | \"onZoomOut\"\n | \"onReset\"\n | \"onExpand\"\n> & {\n /** What the diagram shows. */\n title: string;\n /** Scale factor applied to the content. 1 is fit; the header prints it as a percentage. */\n zoom: number;\n /**\n * The rendered graphic. The element owns the frame and never parses or injects\n * markup itself, so whatever renders your chart stays your choice.\n */\n children: React.ReactNode;\n /** Called from the zoom-in control. Clamp the range yourself. */\n onZoomIn?: () => void;\n /** Called from the zoom-out control. */\n onZoomOut?: () => void;\n /** Called to return to the default view. */\n onReset?: () => void;\n /** Called to open the diagram full screen. */\n onExpand?: () => void;\n}"
|
|
64
|
+
],
|
|
65
|
+
"subcomponents": [],
|
|
66
|
+
"parts": [],
|
|
67
|
+
"variants": {},
|
|
68
|
+
"defaultVariants": {},
|
|
69
|
+
"tokensUsed": [
|
|
70
|
+
"--cue-border",
|
|
71
|
+
"--cue-fg-subtle",
|
|
72
|
+
"--cue-radius-overlay",
|
|
73
|
+
"--cue-text-body"
|
|
74
|
+
],
|
|
75
|
+
"summary": "A drawn answer with zoom, reset, and a full-bleed view; you hand it the rendered graphic.",
|
|
76
|
+
"examples": [
|
|
77
|
+
{
|
|
78
|
+
"title": "Usage",
|
|
79
|
+
"code": "import { Diagram } from \"@cueplusplus/ui/elements\";\n\n<Diagram title=\"message flow\" zoom={zoom} onZoomIn={zoomIn} onReset={reset}>\n <MermaidSvg chart={chart} />\n</Diagram>",
|
|
80
|
+
"language": "tsx"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"status": "todo-docs",
|
|
84
|
+
"url": "/docs/components/diagram",
|
|
85
|
+
"mdUrl": "/docs/components/diagram.md",
|
|
86
|
+
"jsonUrl": "/r/components/diagram.json",
|
|
87
|
+
"specimens": [
|
|
88
|
+
{
|
|
89
|
+
"title": "Diagram",
|
|
90
|
+
"group": "elements-knowledge",
|
|
91
|
+
"components": [
|
|
92
|
+
"Diagram"
|
|
93
|
+
],
|
|
94
|
+
"code": "<Specimens>\n <Specimen label=\"the front truss, zoomable\" wide>\n <Diagram\n title=\"Front truss — 6 fixtures on 3.2 m centres\"\n zoom={zoom}\n onZoomIn={() => setZoom((current) => Math.min(1.6, current + 0.2))}\n onZoomOut={() => setZoom((current) => Math.max(0.6, current - 0.2))}\n onReset={() => setZoom(1)}\n >\n <svg\n viewBox=\"0 0 200 60\"\n width=\"200\"\n height=\"60\"\n role=\"img\"\n aria-label=\"Six fixtures hung along one truss\"\n >\n <line x1=\"6\" y1=\"20\" x2=\"194\" y2=\"20\" className=\"stroke-fg-subtle\" strokeWidth=\"2\" />\n {[16, 51, 86, 121, 156, 186].map((x) => (\n <rect key={x} x={x - 6} y=\"26\" width=\"12\" height=\"16\" rx=\"2\" className=\"fill-stream\" />\n ))}\n </svg>\n </Diagram>\n </Specimen>\n <Specimen label=\"zoomed out, nothing to expand to\" wide>\n <Diagram title=\"Front truss\" zoom={0.7}>\n <svg viewBox=\"0 0 200 40\" width=\"200\" height=\"40\" role=\"img\" aria-label=\"One truss\">\n <line x1=\"6\" y1=\"20\" x2=\"194\" y2=\"20\" className=\"stroke-fg-subtle\" strokeWidth=\"2\" />\n </svg>\n </Diagram>\n </Specimen>\n</Specimens>",
|
|
95
|
+
"note": "A drawn answer with a viewport around it: zoom, reset, full-bleed. The graphic is yours — the element supplies the frame, the percentage readout and the transform, and never parses or renders anything itself.",
|
|
96
|
+
"interaction": "four named icon buttons; expand disables itself when no handler is given, which is the honest state for a bench with nowhere to expand to. The scale transition stops under reduced motion."
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"todo": true
|
|
100
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Dialog",
|
|
3
|
+
"slug": "dialog",
|
|
4
|
+
"group": "overlays",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "A modal surface for a focused task: patching a fixture, renaming a cue,\nconfirming an import.\n\nWraps Base UI's `Dialog`, so every part of the behaviour contract — focus\ntrap, focus restoration on close, Escape, outside press, scroll lock, the\n`aria-labelledby`/`aria-describedby` wiring — is the primitive's, and this\nlayer supplies only the token-driven skin plus the portal theme stamp.",
|
|
9
|
+
"props": [],
|
|
10
|
+
"typeReferences": [],
|
|
11
|
+
"subcomponents": [
|
|
12
|
+
"Root",
|
|
13
|
+
"Trigger",
|
|
14
|
+
"Content",
|
|
15
|
+
"Title",
|
|
16
|
+
"Description",
|
|
17
|
+
"Footer",
|
|
18
|
+
"Close"
|
|
19
|
+
],
|
|
20
|
+
"parts": [
|
|
21
|
+
{
|
|
22
|
+
"name": "Root",
|
|
23
|
+
"usage": "Dialog.Root",
|
|
24
|
+
"description": "Groups the parts of a dialog and owns its open state. Renders no element.",
|
|
25
|
+
"props": [],
|
|
26
|
+
"typeReferences": [
|
|
27
|
+
"BaseDialog.Root.Props"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "Trigger",
|
|
32
|
+
"usage": "Dialog.Trigger",
|
|
33
|
+
"description": "The control that opens the dialog. A `<button>` by default.\n\nDeliberately unstyled: pass `render={<Button />}` to give it a skin, so the\nbutton's variant classes stay the last word on how it looks. Styling the\ntrigger here would let those classes lose a `tailwind-merge` tie-break.",
|
|
34
|
+
"props": [],
|
|
35
|
+
"typeReferences": [
|
|
36
|
+
"BaseDialog.Trigger.Props"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "Content",
|
|
41
|
+
"usage": "Dialog.Content",
|
|
42
|
+
"description": "The dialog's portal, scrim and popup in one part.\n\nThe portal container comes from {@link useCuePortalProps}, so the surface\ncarries the caller's `data-theme` / `data-density` / `data-mode` even though\nit mounts at the end of `<body>` — a dialog opened from an ultra-compact\nisland stays ultra-compact.\n\nFocus trapping, focus restoration, Escape and outside-press dismissal, and\nscroll locking all come from Base UI; this layer only paints.",
|
|
43
|
+
"props": [
|
|
44
|
+
{
|
|
45
|
+
"name": "className",
|
|
46
|
+
"type": "string",
|
|
47
|
+
"required": false,
|
|
48
|
+
"defaultValue": null,
|
|
49
|
+
"description": "Extra classes for the popup surface."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "width",
|
|
53
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
54
|
+
"required": false,
|
|
55
|
+
"defaultValue": "md",
|
|
56
|
+
"description": ""
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "closeLabel",
|
|
60
|
+
"type": "string",
|
|
61
|
+
"required": false,
|
|
62
|
+
"defaultValue": "Close",
|
|
63
|
+
"description": "Accessible name for the corner close affordance. Defaults to `\"Close\"`."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "keepMounted",
|
|
67
|
+
"type": "boolean",
|
|
68
|
+
"required": false,
|
|
69
|
+
"defaultValue": null,
|
|
70
|
+
"description": "Keep the popup mounted while closed, so its content is not re-created."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "backdropClassName",
|
|
74
|
+
"type": "string",
|
|
75
|
+
"required": false,
|
|
76
|
+
"defaultValue": null,
|
|
77
|
+
"description": "Extra classes for the scrim behind it."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "showCloseButton",
|
|
81
|
+
"type": "boolean",
|
|
82
|
+
"required": false,
|
|
83
|
+
"defaultValue": "true",
|
|
84
|
+
"description": "Show the corner close affordance. Defaults to `true`."
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"typeReferences": [
|
|
88
|
+
"Omit<BaseDialog.Popup.Props, \"className\">",
|
|
89
|
+
"VariantProps<typeof dialogPopupVariants>"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "Title",
|
|
94
|
+
"usage": "Dialog.Title",
|
|
95
|
+
"description": "The dialog's heading. Base UI wires it to the popup's `aria-labelledby`, so a\ndialog with a title needs no `aria-label`.",
|
|
96
|
+
"props": [],
|
|
97
|
+
"typeReferences": [
|
|
98
|
+
"BaseDialog.Title.Props"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "Description",
|
|
103
|
+
"usage": "Dialog.Description",
|
|
104
|
+
"description": "The supporting line under the title, published as `aria-describedby`.",
|
|
105
|
+
"props": [],
|
|
106
|
+
"typeReferences": [
|
|
107
|
+
"BaseDialog.Description.Props"
|
|
108
|
+
]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"name": "Footer",
|
|
112
|
+
"usage": "Dialog.Footer",
|
|
113
|
+
"description": "The right-aligned action strip at the foot of the popup.",
|
|
114
|
+
"props": [],
|
|
115
|
+
"typeReferences": [
|
|
116
|
+
"React.ComponentPropsWithoutRef<\"div\">"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "Close",
|
|
121
|
+
"usage": "Dialog.Close",
|
|
122
|
+
"description": "A control that closes the dialog. Unstyled for the same reason as the\ntrigger — wrap it: `<Dialog.Close render={<Button>Cancel</Button>} />`.",
|
|
123
|
+
"props": [],
|
|
124
|
+
"typeReferences": [
|
|
125
|
+
"BaseDialog.Close.Props"
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"variants": {
|
|
130
|
+
"width": [
|
|
131
|
+
"sm",
|
|
132
|
+
"md",
|
|
133
|
+
"lg"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
"defaultVariants": {
|
|
137
|
+
"width": "md"
|
|
138
|
+
},
|
|
139
|
+
"tokensUsed": [
|
|
140
|
+
"--cue-accent-soft",
|
|
141
|
+
"--cue-border",
|
|
142
|
+
"--cue-border-overlay",
|
|
143
|
+
"--cue-control-sm",
|
|
144
|
+
"--cue-fg",
|
|
145
|
+
"--cue-fg-muted",
|
|
146
|
+
"--cue-fg-subtle",
|
|
147
|
+
"--cue-font-mono",
|
|
148
|
+
"--cue-radius-control",
|
|
149
|
+
"--cue-radius-overlay",
|
|
150
|
+
"--cue-scrim",
|
|
151
|
+
"--cue-space-1",
|
|
152
|
+
"--cue-space-2",
|
|
153
|
+
"--cue-space-3",
|
|
154
|
+
"--cue-space-4",
|
|
155
|
+
"--cue-space-6",
|
|
156
|
+
"--cue-surface-2",
|
|
157
|
+
"--cue-text-emphasis",
|
|
158
|
+
"--cue-text-label",
|
|
159
|
+
"--cue-text-ui"
|
|
160
|
+
],
|
|
161
|
+
"summary": "The centred modal: focus trapped, page behind it inert.",
|
|
162
|
+
"examples": [
|
|
163
|
+
{
|
|
164
|
+
"title": "Usage",
|
|
165
|
+
"code": "<Dialog.Root>\n <Dialog.Trigger render={<Button>Patch</Button>} />\n <Dialog.Content>\n <Dialog.Title>Patch fixture</Dialog.Title>\n <Dialog.Description>Choose a universe and a start address.</Dialog.Description>\n <Dialog.Footer>\n <Dialog.Close render={<Button variant=\"ghost\">Cancel</Button>} />\n <Button variant=\"primary\">Patch</Button>\n </Dialog.Footer>\n </Dialog.Content>\n</Dialog.Root>",
|
|
166
|
+
"language": "tsx"
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"status": "stable",
|
|
170
|
+
"url": "/docs/components/dialog",
|
|
171
|
+
"mdUrl": "/docs/components/dialog.md",
|
|
172
|
+
"jsonUrl": "/r/components/dialog.json",
|
|
173
|
+
"whenToUse": [
|
|
174
|
+
"A task that must be finished or cancelled before the page continues.",
|
|
175
|
+
"A form too large for a popover, at one of the three width rungs."
|
|
176
|
+
],
|
|
177
|
+
"whenNotToUse": [
|
|
178
|
+
"Confirming something destructive. Use `AlertDialog`, which announces as one and keeps focus on the safe answer.",
|
|
179
|
+
"Detail that hangs off a control. Use `Popover`, `HoverCard` or `Tooltip`.",
|
|
180
|
+
"A side panel that leaves the page usable. Use `Sheet` or `Drawer`."
|
|
181
|
+
],
|
|
182
|
+
"commonMistakes": [
|
|
183
|
+
"Styling `Dialog.Trigger` directly instead of passing `render={<Button />}`, which is what keeps the button's variant classes authoritative.",
|
|
184
|
+
"Opening a second dialog on top of the first. Swap the content of the one that is already open."
|
|
185
|
+
],
|
|
186
|
+
"specimens": [
|
|
187
|
+
{
|
|
188
|
+
"title": "Dialog",
|
|
189
|
+
"group": "overlays",
|
|
190
|
+
"components": [
|
|
191
|
+
"Dialog"
|
|
192
|
+
],
|
|
193
|
+
"code": "<Specimens>\n {([\"sm\", \"md\", \"lg\"] as const).map((width) => (\n <Specimen key={width} label={width}>\n <Dialog.Root>\n <Dialog.Trigger render={<Button>Patch, {width}</Button>} />\n <Dialog.Content width={width}>\n <Dialog.Title>Patch fixture</Dialog.Title>\n <Dialog.Description>\n Universe 1, channels 1 to 8. The fixture takes the next free block.\n </Dialog.Description>\n <div className=\"flex flex-col gap-(--cue-space-5)\">\n <Field name=\"label\">\n <FieldLabel>Label</FieldLabel>\n <Input defaultValue=\"Front wash\" />\n </Field>\n <Field name=\"blend\">\n <FieldLabel>Blend</FieldLabel>\n <Select aria-label=\"Blend mode\" items={[...BLEND_MODES]} defaultValue=\"htp\" />\n </Field>\n </div>\n <Dialog.Footer>\n <Dialog.Close render={<Button>Cancel</Button>} />\n <Dialog.Close render={<Button variant=\"primary\">Patch</Button>} />\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n </Specimen>\n ))}\n <Specimen label=\"no close button\">\n <Dialog.Root>\n <Dialog.Trigger render={<Button>Bare</Button>} />\n <Dialog.Content showCloseButton={false}>\n <Dialog.Title>{COPY.loading.title}</Dialog.Title>\n <Dialog.Description>{COPY.loading.hint}</Dialog.Description>\n <Dialog.Footer>\n <Dialog.Close render={<Button>Close</Button>} />\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n </Specimen>\n</Specimens>",
|
|
194
|
+
"note": "Three widths, a scrim at `--cue-scrim`, and a close button that can be turned off when the footer already owns dismissal.",
|
|
195
|
+
"interaction": "focus is trapped and returns to the trigger on close; Escape and a click on the scrim both dismiss."
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Disclosure",
|
|
3
|
+
"slug": "disclosure",
|
|
4
|
+
"group": "layout",
|
|
5
|
+
"importPath": "@cueplusplus/ui",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "The \"advanced\" idiom: a chromeless `▸ advanced` toggle over the fields most\nusers never touch.\n\nProgressive disclosure, drawn as quietly as the system can draw anything — no\nrim, no fill, mono micro caption ink, one triangle. It is deliberately *not*\na `Collapsible`: a collapsible section is a peer of the sections around it,\nwhile this is an annotation on the form it sits in, and giving it a summary\nrow that looks like a section header is what makes forms read as twice as\nlong as they are.\n\nPorted from dmxhub's `advBtn`, which is repeated at every route editor.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "label",
|
|
12
|
+
"type": "ReactNode",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": "advanced",
|
|
15
|
+
"description": "What the toggle says. Defaults to `\"advanced\"`."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "open",
|
|
19
|
+
"type": "boolean",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": null,
|
|
22
|
+
"description": "Open state when controlled. Pass with `onOpenChange`."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "defaultOpen",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": null,
|
|
29
|
+
"description": "Initial open state when uncontrolled."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "onOpenChange",
|
|
33
|
+
"type": "((open: boolean, eventDetails: CollapsibleRootChangeEventDetails) => void)",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "Called with the new open state."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "rootClassName",
|
|
40
|
+
"type": "string",
|
|
41
|
+
"required": false,
|
|
42
|
+
"defaultValue": null,
|
|
43
|
+
"description": "Extra classes for the frame around toggle and body."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "bodyClassName",
|
|
47
|
+
"type": "string",
|
|
48
|
+
"required": false,
|
|
49
|
+
"defaultValue": null,
|
|
50
|
+
"description": "Extra classes for the revealed body."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "children",
|
|
54
|
+
"type": "ReactNode",
|
|
55
|
+
"required": false,
|
|
56
|
+
"defaultValue": null,
|
|
57
|
+
"description": "The rarely-used fields to reveal."
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"typeReferences": [
|
|
61
|
+
"Omit<React.ComponentPropsWithoutRef<\"button\">, \"children\" | \"onChange\">"
|
|
62
|
+
],
|
|
63
|
+
"subcomponents": [],
|
|
64
|
+
"parts": [],
|
|
65
|
+
"variants": {},
|
|
66
|
+
"defaultVariants": {},
|
|
67
|
+
"tokensUsed": [
|
|
68
|
+
"--cue-accent",
|
|
69
|
+
"--cue-control-md",
|
|
70
|
+
"--cue-fg",
|
|
71
|
+
"--cue-fg-muted",
|
|
72
|
+
"--cue-fg-subtle",
|
|
73
|
+
"--cue-font-mono",
|
|
74
|
+
"--cue-icon-sm",
|
|
75
|
+
"--cue-pad-row-x",
|
|
76
|
+
"--cue-space-1",
|
|
77
|
+
"--cue-space-2",
|
|
78
|
+
"--cue-space-3",
|
|
79
|
+
"--cue-space-4",
|
|
80
|
+
"--cue-text-label",
|
|
81
|
+
"--cue-text-micro",
|
|
82
|
+
"--cue-text-ui"
|
|
83
|
+
],
|
|
84
|
+
"summary": "The \"advanced\" idiom: a chromeless `▸ advanced` toggle over the fields most users never touch.",
|
|
85
|
+
"examples": [
|
|
86
|
+
{
|
|
87
|
+
"title": "Usage",
|
|
88
|
+
"code": "<Disclosure>\n <Field label=\"failover ttl\"><NumberField /></Field>\n</Disclosure>\n<Disclosure label=\"output\" open={open} onOpenChange={setOpen}>…</Disclosure>",
|
|
89
|
+
"language": "tsx"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"status": "todo-docs",
|
|
93
|
+
"url": "/docs/components/disclosure",
|
|
94
|
+
"mdUrl": "/docs/components/disclosure.md",
|
|
95
|
+
"jsonUrl": "/r/components/disclosure.json",
|
|
96
|
+
"specimens": [
|
|
97
|
+
{
|
|
98
|
+
"title": "Disclosure",
|
|
99
|
+
"group": "layout",
|
|
100
|
+
"components": [
|
|
101
|
+
"Disclosure"
|
|
102
|
+
],
|
|
103
|
+
"code": "<div className=\"flex w-full max-w-[36rem] flex-col gap-(--cue-space-3)\">\n <Disclosure label=\"Advanced\">\n <div className=\"flex flex-col gap-(--cue-space-2) font-mono text-(length:--cue-text-ui) text-fg-muted\">\n <span>Refresh rate 44 Hz</span>\n <span>Full frames every 800 ms</span>\n </div>\n </Disclosure>\n <Disclosure label=\"Open by default\" defaultOpen>\n <span className=\"font-mono text-(length:--cue-text-ui) text-fg-muted\">\n Already expanded.\n </span>\n </Disclosure>\n</div>",
|
|
104
|
+
"note": "The `advanced` idiom: a chromeless mono `▸ label` toggle for the settings most people never open.",
|
|
105
|
+
"interaction": "the caret rotates; nothing else moves."
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"todo": true
|
|
109
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "DmxBar",
|
|
3
|
+
"slug": "dmx-bar",
|
|
4
|
+
"group": "dmx",
|
|
5
|
+
"importPath": "@cueplusplus/ui/dmx",
|
|
6
|
+
"peerDependencies": [],
|
|
7
|
+
"clientOnly": true,
|
|
8
|
+
"description": "The whole universe as one strip: 512 columns, black at 0, white at 255.\n\nPorted from dmxhub's bridge, where it sits under every node in the routing\ngraph and updates at the wire rate. Three decisions are what make it cheap\nenough to leave running:\n\n1. **It is a 512×1 texture, stretched.** One `putImageData` per frame paints\n every channel; the browser scales it. Drawing 512 rectangles would be 512\n state changes for the same picture.\n2. **The pixels are never smoothed.** `image-rendering: pixelated` keeps one\n channel one hard column. Interpolation here would invent levels between\n channels, which is the one thing a monitoring bar must not do.\n3. **The crosshair is anchored in percent, not pixels.** The bar routinely\n sits inside a zoom transform (a node graph, a canvas). A pixel offset gets\n scaled with the parent and drifts off the cursor; a percentage resolves in\n the bar's own width and lands correctly at any zoom.\n\nThe ground is `--cue-data-ground`, true black in every theme: a level of 0 is\n*nothing*, and it should not read as the panel it happens to sit on.",
|
|
9
|
+
"props": [
|
|
10
|
+
{
|
|
11
|
+
"name": "data",
|
|
12
|
+
"type": "Uint8Array<ArrayBufferLike>",
|
|
13
|
+
"required": false,
|
|
14
|
+
"defaultValue": null,
|
|
15
|
+
"description": "The current frame: one byte per channel, 512 long.\n\nRepainting is keyed on the array's *identity*, which is what a frame decoder\nnaturally produces (a fresh buffer per packet). A buffer mutated in place\nwill not repaint — hand a new view, or use `ChannelMatrix`, which owns an\nanimation loop for exactly that case."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "height",
|
|
19
|
+
"type": "number",
|
|
20
|
+
"required": false,
|
|
21
|
+
"defaultValue": "12",
|
|
22
|
+
"description": "Bar height in px at the 16px root, emitted as `rem`. Defaults to `12`."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "live",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"required": false,
|
|
28
|
+
"defaultValue": "true",
|
|
29
|
+
"description": "Whether frames are still arriving. Defaults to `true`. When `false` the bar\ndims and says so in its accessible name — a stalled stream and a blacked-out\nuniverse look identical otherwise."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "label",
|
|
33
|
+
"type": "string",
|
|
34
|
+
"required": false,
|
|
35
|
+
"defaultValue": null,
|
|
36
|
+
"description": "What this universe is. Defaults to `\"DMX output\"`."
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"typeReferences": [
|
|
40
|
+
"Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\">"
|
|
41
|
+
],
|
|
42
|
+
"subcomponents": [],
|
|
43
|
+
"parts": [],
|
|
44
|
+
"variants": {},
|
|
45
|
+
"defaultVariants": {},
|
|
46
|
+
"tokensUsed": [
|
|
47
|
+
"--cue-accent",
|
|
48
|
+
"--cue-accent-soft",
|
|
49
|
+
"--cue-border",
|
|
50
|
+
"--cue-border-overlay",
|
|
51
|
+
"--cue-control-sm",
|
|
52
|
+
"--cue-data-ground",
|
|
53
|
+
"--cue-fg",
|
|
54
|
+
"--cue-fg-muted",
|
|
55
|
+
"--cue-fg-subtle",
|
|
56
|
+
"--cue-font-mono",
|
|
57
|
+
"--cue-radius-control",
|
|
58
|
+
"--cue-radius-overlay",
|
|
59
|
+
"--cue-scrim",
|
|
60
|
+
"--cue-space-1",
|
|
61
|
+
"--cue-space-2",
|
|
62
|
+
"--cue-space-3",
|
|
63
|
+
"--cue-surface-2",
|
|
64
|
+
"--cue-text-emphasis",
|
|
65
|
+
"--cue-text-label",
|
|
66
|
+
"--cue-text-micro",
|
|
67
|
+
"--cue-text-ui"
|
|
68
|
+
],
|
|
69
|
+
"summary": "The whole universe as one strip: 512 columns, black at 0, white at 255.",
|
|
70
|
+
"examples": [
|
|
71
|
+
{
|
|
72
|
+
"title": "Usage",
|
|
73
|
+
"code": "<DmxBar label=\"Universe 0\" data={frame} live={connected} />",
|
|
74
|
+
"language": "tsx"
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"status": "todo-docs",
|
|
78
|
+
"url": "/docs/components/dmx-bar",
|
|
79
|
+
"mdUrl": "/docs/components/dmx-bar.md",
|
|
80
|
+
"jsonUrl": "/r/components/dmx-bar.json",
|
|
81
|
+
"specimens": [
|
|
82
|
+
{
|
|
83
|
+
"title": "DmxBar",
|
|
84
|
+
"group": "dmx",
|
|
85
|
+
"components": [
|
|
86
|
+
"DmxBar"
|
|
87
|
+
],
|
|
88
|
+
"code": "<div className=\"flex w-full flex-col gap-(--cue-space-5)\">\n <Panel className=\"p-(--cue-space-4)\">\n <PanelHeader\n title=\"Universe 1\"\n actions={<Chip tone=\"ok\">{activeChannels(data)} active</Chip>}\n />\n <div className=\"pt-(--cue-space-4)\">\n <DmxBar data={data} label=\"Universe 1 output\" />\n </div>\n </Panel>\n <Specimens>\n <Specimen label=\"tall\" wide>\n <DmxBar data={data} height={28} label=\"Universe 1, tall\" />\n </Specimen>\n <Specimen label=\"sparse\" wide>\n <DmxBar data={sparse} label=\"Universe 1, first 48 channels only\" />\n </Specimen>\n <Specimen label=\"no data\" wide>\n <DmxBar label=\"Universe 1, no frame\" />\n </Specimen>\n </Specimens>\n</div>",
|
|
89
|
+
"note": "The whole universe as one 512×1 texture, scaled up with `image-rendering: pixelated` on a true-black ground. Interpolating between two channels would draw levels nobody sent.",
|
|
90
|
+
"interaction": "hovering reports `CH n · v` through a portaled readout, positioned by percentage so it survives a scaled container; the number is written to a span through a ref rather than re-rendering at 40 Hz."
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"todo": true
|
|
94
|
+
}
|