@cueplusplus/ui 0.13.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 +4028 -0
- package/LICENSE +21 -0
- package/NOTICE.md +34 -0
- package/README.md +237 -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 +54 -0
- package/dist/brand/_chassis.js +81 -0
- package/dist/brand/_geometry.js +41 -0
- package/dist/brand/cue-logotype.d.ts +29 -0
- package/dist/brand/cue-logotype.js +60 -0
- package/dist/brand/cue-mark.d.ts +30 -0
- package/dist/brand/cue-mark.js +61 -0
- package/dist/brand/index.d.ts +5 -0
- package/dist/brand/plussie.d.ts +67 -0
- package/dist/brand/plussie.js +125 -0
- package/dist/charts/_token.js +39 -0
- package/dist/charts/container.d.ts +58 -0
- package/dist/charts/container.js +77 -0
- package/dist/charts/index.d.ts +5 -0
- package/dist/charts/index.js +5 -0
- package/dist/charts/ramps.d.ts +140 -0
- package/dist/charts/ramps.js +615 -0
- package/dist/charts/theme.d.ts +112 -0
- package/dist/charts/theme.js +165 -0
- package/dist/charts/tones.d.ts +111 -0
- package/dist/charts/tones.js +127 -0
- package/dist/chat/_glyphs.js +55 -0
- package/dist/chat/agent-color.d.ts +84 -0
- package/dist/chat/agent-color.js +101 -0
- package/dist/chat/agent-pile.d.ts +55 -0
- package/dist/chat/agent-pile.js +121 -0
- package/dist/chat/ask-box.d.ts +88 -0
- package/dist/chat/ask-box.js +341 -0
- package/dist/chat/composer.d.ts +66 -0
- package/dist/chat/composer.js +144 -0
- package/dist/chat/delegation-card.d.ts +60 -0
- package/dist/chat/delegation-card.js +129 -0
- package/dist/chat/index.d.ts +8 -0
- package/dist/chat/index.js +8 -0
- package/dist/chat/message-list.d.ts +45 -0
- package/dist/chat/message-list.js +141 -0
- package/dist/chat/message.d.ts +47 -0
- package/dist/chat/message.js +108 -0
- package/dist/chrome/_band.js +54 -0
- package/dist/chrome/_drag.js +59 -0
- package/dist/chrome/_edge-scroller.d.ts +45 -0
- package/dist/chrome/_edge-scroller.js +149 -0
- package/dist/chrome/_glyphs.js +119 -0
- package/dist/chrome/_status-bar-item.js +85 -0
- package/dist/chrome/_status-bar.d.ts +15 -0
- package/dist/chrome/_status-bar.js +171 -0
- package/dist/chrome/_tabs-scroll.d.ts +67 -0
- package/dist/chrome/_tabs-scroll.js +73 -0
- package/dist/chrome/_tree.d.ts +75 -0
- package/dist/chrome/_tree.js +49 -0
- package/dist/chrome/app-bar.d.ts +103 -0
- package/dist/chrome/app-bar.js +175 -0
- package/dist/chrome/app-shell.d.ts +243 -0
- package/dist/chrome/app-shell.js +266 -0
- package/dist/chrome/band.d.ts +106 -0
- package/dist/chrome/band.js +97 -0
- package/dist/chrome/empty-state.d.ts +37 -0
- package/dist/chrome/empty-state.js +57 -0
- package/dist/chrome/eyebrow.d.ts +29 -0
- package/dist/chrome/eyebrow.js +36 -0
- package/dist/chrome/footer.d.ts +88 -0
- package/dist/chrome/footer.js +83 -0
- package/dist/chrome/index.d.ts +24 -0
- package/dist/chrome/index.js +22 -0
- package/dist/chrome/inspector.d.ts +61 -0
- package/dist/chrome/inspector.js +121 -0
- package/dist/chrome/navigation-menu.d.ts +80 -0
- package/dist/chrome/navigation-menu.js +121 -0
- package/dist/chrome/page-shell.d.ts +38 -0
- package/dist/chrome/page-shell.js +76 -0
- package/dist/chrome/panel.d.ts +55 -0
- package/dist/chrome/panel.js +67 -0
- package/dist/chrome/row.d.ts +82 -0
- package/dist/chrome/row.js +106 -0
- package/dist/chrome/scroll-area.d.ts +39 -0
- package/dist/chrome/scroll-area.js +70 -0
- package/dist/chrome/section-header.d.ts +42 -0
- package/dist/chrome/section-header.js +79 -0
- package/dist/chrome/segmented-control.d.ts +77 -0
- package/dist/chrome/segmented-control.js +95 -0
- package/dist/chrome/status-bar.d.ts +129 -0
- package/dist/chrome/status-bar.js +120 -0
- package/dist/chrome/tabs.d.ts +80 -0
- package/dist/chrome/tabs.js +132 -0
- package/dist/chrome/title-bar.d.ts +47 -0
- package/dist/chrome/title-bar.js +43 -0
- package/dist/chrome/toolbar.d.ts +68 -0
- package/dist/chrome/toolbar.js +83 -0
- package/dist/chrome/tree.d.ts +98 -0
- package/dist/chrome/tree.js +248 -0
- package/dist/color/_checker.js +14 -0
- package/dist/color/_convert.d.ts +52 -0
- package/dist/color/_convert.js +66 -0
- package/dist/color/_glyphs.js +28 -0
- package/dist/color/_thumb.js +15 -0
- package/dist/color/_value.js +28 -0
- package/dist/color/color-area.d.ts +27 -0
- package/dist/color/color-area.js +40 -0
- package/dist/color/color-field.d.ts +32 -0
- package/dist/color/color-field.js +43 -0
- package/dist/color/color-picker.d.ts +71 -0
- package/dist/color/color-picker.js +178 -0
- package/dist/color/color-slider.d.ts +31 -0
- package/dist/color/color-slider.js +51 -0
- package/dist/color/color-swatch.d.ts +32 -0
- package/dist/color/color-swatch.js +44 -0
- package/dist/color/index.d.ts +7 -0
- package/dist/color/index.js +7 -0
- package/dist/configurator/_export.d.ts +78 -0
- package/dist/configurator/_export.js +302 -0
- package/dist/configurator/_glyphs.js +92 -0
- package/dist/configurator/_overrides.d.ts +266 -0
- package/dist/configurator/_overrides.js +541 -0
- package/dist/configurator/configurator.d.ts +71 -0
- package/dist/configurator/configurator.js +284 -0
- package/dist/configurator/export-dialog.d.ts +30 -0
- package/dist/configurator/export-dialog.js +121 -0
- package/dist/configurator/index.d.ts +8 -0
- package/dist/configurator/index.js +8 -0
- package/dist/configurator/panel-sections.d.ts +86 -0
- package/dist/configurator/panel-sections.js +352 -0
- package/dist/configurator/token-editor.d.ts +74 -0
- package/dist/configurator/token-editor.js +152 -0
- package/dist/configurator/use-zoom.d.ts +87 -0
- package/dist/configurator/use-zoom.js +113 -0
- package/dist/date/_glyphs.js +34 -0
- package/dist/date/_segments.js +101 -0
- package/dist/date/_trigger.js +31 -0
- package/dist/date/calendar.d.ts +25 -0
- package/dist/date/calendar.js +125 -0
- package/dist/date/date-field.d.ts +34 -0
- package/dist/date/date-field.js +41 -0
- package/dist/date/date-picker.d.ts +69 -0
- package/dist/date/date-picker.js +89 -0
- package/dist/date/date-range-picker.d.ts +65 -0
- package/dist/date/date-range-picker.js +92 -0
- package/dist/date/index.d.ts +6 -0
- package/dist/date/index.js +6 -0
- package/dist/date/time-field.d.ts +29 -0
- package/dist/date/time-field.js +36 -0
- package/dist/dmx/_ramp.d.ts +77 -0
- package/dist/dmx/_ramp.js +169 -0
- package/dist/dmx/_readout.js +53 -0
- package/dist/dmx/_universe.d.ts +105 -0
- package/dist/dmx/_universe.js +112 -0
- package/dist/dmx/channel-matrix.d.ts +81 -0
- package/dist/dmx/channel-matrix.js +285 -0
- package/dist/dmx/dmx-bar.d.ts +50 -0
- package/dist/dmx/dmx-bar.js +107 -0
- package/dist/dmx/dmx-strip.d.ts +41 -0
- package/dist/dmx/dmx-strip.js +196 -0
- package/dist/dmx/index.d.ts +7 -0
- package/dist/dmx/index.js +7 -0
- package/dist/dmx/universe-grid.d.ts +61 -0
- package/dist/dmx/universe-grid.js +182 -0
- 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 +123 -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 +108 -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/flow/_frame.d.ts +52 -0
- package/dist/flow/_frame.js +38 -0
- package/dist/flow/controls.d.ts +41 -0
- package/dist/flow/controls.js +53 -0
- package/dist/flow/flow.css +121 -0
- package/dist/flow/handles.d.ts +40 -0
- package/dist/flow/handles.js +61 -0
- package/dist/flow/index.d.ts +7 -0
- package/dist/flow/index.js +7 -0
- package/dist/flow/node-card.d.ts +71 -0
- package/dist/flow/node-card.js +102 -0
- package/dist/flow/signal-edge.d.ts +60 -0
- package/dist/flow/signal-edge.js +108 -0
- package/dist/flow/use-flow-theme.d.ts +69 -0
- package/dist/flow/use-flow-theme.js +109 -0
- package/dist/forms/_chassis.d.ts +164 -0
- package/dist/forms/_chassis.js +159 -0
- package/dist/forms/_glyphs.js +143 -0
- package/dist/forms/_listbox.js +55 -0
- package/dist/forms/autocomplete.d.ts +61 -0
- package/dist/forms/autocomplete.js +88 -0
- package/dist/forms/button-group.d.ts +47 -0
- package/dist/forms/button-group.js +52 -0
- package/dist/forms/checkbox.d.ts +51 -0
- package/dist/forms/checkbox.js +98 -0
- package/dist/forms/combobox.d.ts +73 -0
- package/dist/forms/combobox.js +108 -0
- package/dist/forms/env-var-input.d.ts +74 -0
- package/dist/forms/env-var-input.js +116 -0
- package/dist/forms/field.d.ts +89 -0
- package/dist/forms/field.js +102 -0
- package/dist/forms/file-upload.d.ts +113 -0
- package/dist/forms/file-upload.js +232 -0
- package/dist/forms/index.d.ts +26 -0
- package/dist/forms/index.js +26 -0
- package/dist/forms/input-group.d.ts +36 -0
- package/dist/forms/input-group.js +59 -0
- package/dist/forms/input.d.ts +45 -0
- package/dist/forms/input.js +36 -0
- package/dist/forms/multi-select.d.ts +62 -0
- package/dist/forms/multi-select.js +107 -0
- package/dist/forms/number-field.d.ts +39 -0
- package/dist/forms/number-field.js +65 -0
- package/dist/forms/otp-field.d.ts +54 -0
- package/dist/forms/otp-field.js +59 -0
- package/dist/forms/password-input.d.ts +46 -0
- package/dist/forms/password-input.js +62 -0
- package/dist/forms/radio-group.d.ts +50 -0
- package/dist/forms/radio-group.js +64 -0
- package/dist/forms/rating.d.ts +69 -0
- package/dist/forms/rating.js +103 -0
- package/dist/forms/scrub-input.d.ts +81 -0
- package/dist/forms/scrub-input.js +249 -0
- package/dist/forms/search-input.d.ts +54 -0
- package/dist/forms/search-input.js +112 -0
- package/dist/forms/select.d.ts +75 -0
- package/dist/forms/select.js +91 -0
- package/dist/forms/slider.d.ts +44 -0
- package/dist/forms/slider.js +65 -0
- package/dist/forms/switch.d.ts +36 -0
- package/dist/forms/switch.js +71 -0
- package/dist/forms/tags-input.d.ts +69 -0
- package/dist/forms/tags-input.js +148 -0
- package/dist/forms/textarea.d.ts +39 -0
- package/dist/forms/textarea.js +37 -0
- package/dist/forms/toggle-group.d.ts +41 -0
- package/dist/forms/toggle-group.js +56 -0
- package/dist/forms/toggle.d.ts +47 -0
- package/dist/forms/toggle.js +100 -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 +138 -0
- package/dist/index.js +124 -0
- package/dist/instruments/_ansi.js +116 -0
- package/dist/instruments/_data-row.d.ts +68 -0
- package/dist/instruments/_data-row.js +139 -0
- package/dist/instruments/_glyphs.js +90 -0
- package/dist/instruments/_ledger-disclosure.js +103 -0
- package/dist/instruments/_ledger.d.ts +21 -0
- package/dist/instruments/_ledger.js +5 -0
- package/dist/instruments/_motion.js +56 -0
- package/dist/instruments/_rem.js +21 -0
- package/dist/instruments/app-window-frame.d.ts +48 -0
- package/dist/instruments/app-window-frame.js +76 -0
- package/dist/instruments/code-block.d.ts +35 -0
- package/dist/instruments/code-block.js +173 -0
- package/dist/instruments/copy-button.d.ts +41 -0
- package/dist/instruments/copy-button.js +112 -0
- package/dist/instruments/data-row.d.ts +94 -0
- package/dist/instruments/data-row.js +151 -0
- package/dist/instruments/data-table.d.ts +168 -0
- package/dist/instruments/data-table.js +212 -0
- package/dist/instruments/data-tree.d.ts +126 -0
- package/dist/instruments/data-tree.js +303 -0
- package/dist/instruments/group-bar.d.ts +63 -0
- package/dist/instruments/group-bar.js +122 -0
- package/dist/instruments/index.d.ts +18 -0
- package/dist/instruments/index.js +18 -0
- package/dist/instruments/ledger.d.ts +204 -0
- package/dist/instruments/ledger.js +204 -0
- package/dist/instruments/log-viewer.d.ts +74 -0
- package/dist/instruments/log-viewer.js +215 -0
- package/dist/instruments/meter.d.ts +81 -0
- package/dist/instruments/meter.js +96 -0
- package/dist/instruments/progress.d.ts +61 -0
- package/dist/instruments/progress.js +79 -0
- package/dist/instruments/seam-grid.d.ts +66 -0
- package/dist/instruments/seam-grid.js +78 -0
- package/dist/instruments/sparkline.d.ts +39 -0
- package/dist/instruments/sparkline.js +85 -0
- package/dist/instruments/stat.d.ts +35 -0
- package/dist/instruments/stat.js +59 -0
- package/dist/instruments/table.d.ts +170 -0
- package/dist/instruments/table.js +237 -0
- package/dist/instruments/terminal-frame.d.ts +89 -0
- package/dist/instruments/terminal-frame.js +256 -0
- package/dist/instruments/two-step-button.d.ts +47 -0
- package/dist/instruments/two-step-button.js +166 -0
- package/dist/instruments/usage-chart.d.ts +55 -0
- package/dist/instruments/usage-chart.js +235 -0
- package/dist/layout/_collapse.js +46 -0
- package/dist/layout/_glyphs.js +45 -0
- package/dist/layout/_ground.d.ts +22 -0
- package/dist/layout/_ground.js +9 -0
- package/dist/layout/accordion.d.ts +52 -0
- package/dist/layout/accordion.js +81 -0
- package/dist/layout/bento.d.ts +144 -0
- package/dist/layout/bento.js +266 -0
- package/dist/layout/breadcrumb.d.ts +35 -0
- package/dist/layout/breadcrumb.js +67 -0
- package/dist/layout/card.d.ts +51 -0
- package/dist/layout/card.js +76 -0
- package/dist/layout/carousel.d.ts +96 -0
- package/dist/layout/carousel.js +211 -0
- package/dist/layout/collapsible.d.ts +74 -0
- package/dist/layout/collapsible.js +126 -0
- package/dist/layout/container.d.ts +27 -0
- package/dist/layout/container.js +43 -0
- package/dist/layout/description-list.d.ts +24 -0
- package/dist/layout/description-list.js +37 -0
- package/dist/layout/frames.d.ts +70 -0
- package/dist/layout/frames.js +298 -0
- package/dist/layout/grid.d.ts +40 -0
- package/dist/layout/grid.js +48 -0
- package/dist/layout/index.d.ts +19 -0
- package/dist/layout/index.js +18 -0
- package/dist/layout/item.d.ts +65 -0
- package/dist/layout/item.js +100 -0
- package/dist/layout/link.d.ts +48 -0
- package/dist/layout/link.js +63 -0
- package/dist/layout/pagination.d.ts +54 -0
- package/dist/layout/pagination.js +121 -0
- package/dist/layout/preview.d.ts +177 -0
- package/dist/layout/preview.js +628 -0
- package/dist/layout/resizable.d.ts +38 -0
- package/dist/layout/resizable.js +68 -0
- package/dist/layout/sidebar.d.ts +105 -0
- package/dist/layout/sidebar.js +158 -0
- package/dist/layout/stack.d.ts +46 -0
- package/dist/layout/stack.js +62 -0
- package/dist/layout/stepper.d.ts +49 -0
- package/dist/layout/stepper.js +81 -0
- package/dist/layout/timeline.d.ts +43 -0
- package/dist/layout/timeline.js +63 -0
- package/dist/lib/aria-class.js +24 -0
- package/dist/lib/cn.js +18 -0
- package/dist/lib/compose.js +38 -0
- package/dist/lib/cva.d.ts +18 -0
- package/dist/lib/cva.js +65 -0
- package/dist/midi/_notes.d.ts +101 -0
- package/dist/midi/_notes.js +183 -0
- package/dist/midi/_ruler.d.ts +100 -0
- package/dist/midi/_ruler.js +105 -0
- package/dist/midi/_time.d.ts +107 -0
- package/dist/midi/_time.js +130 -0
- package/dist/midi/index.d.ts +9 -0
- package/dist/midi/index.js +9 -0
- package/dist/midi/musical-time-input.d.ts +48 -0
- package/dist/midi/musical-time-input.js +154 -0
- package/dist/midi/piano-keyboard.d.ts +50 -0
- package/dist/midi/piano-keyboard.js +197 -0
- package/dist/midi/spectrum-visualizer.d.ts +65 -0
- package/dist/midi/spectrum-visualizer.js +213 -0
- package/dist/midi/threshold-rail.d.ts +72 -0
- package/dist/midi/threshold-rail.js +214 -0
- package/dist/midi/timeline-ruler.d.ts +83 -0
- package/dist/midi/timeline-ruler.js +152 -0
- package/dist/overlays/_debounce.js +34 -0
- package/dist/overlays/_glyphs.js +59 -0
- package/dist/overlays/_surface.d.ts +70 -0
- package/dist/overlays/_surface.js +70 -0
- package/dist/overlays/_wheel.js +42 -0
- package/dist/overlays/alert-dialog.d.ts +67 -0
- package/dist/overlays/alert-dialog.js +117 -0
- package/dist/overlays/command-palette.d.ts +93 -0
- package/dist/overlays/command-palette.js +193 -0
- package/dist/overlays/context-menu.d.ts +64 -0
- package/dist/overlays/context-menu.js +78 -0
- package/dist/overlays/dialog.d.ts +72 -0
- package/dist/overlays/dialog.js +124 -0
- package/dist/overlays/drawer.d.ts +75 -0
- package/dist/overlays/drawer.js +151 -0
- package/dist/overlays/dropdown-menu.d.ts +79 -0
- package/dist/overlays/dropdown-menu.js +156 -0
- package/dist/overlays/hover-card.d.ts +58 -0
- package/dist/overlays/hover-card.js +91 -0
- package/dist/overlays/index.d.ts +15 -0
- package/dist/overlays/index.js +15 -0
- package/dist/overlays/info-tip.d.ts +41 -0
- package/dist/overlays/info-tip.js +45 -0
- package/dist/overlays/menubar.d.ts +72 -0
- package/dist/overlays/menubar.js +100 -0
- package/dist/overlays/popover.d.ts +66 -0
- package/dist/overlays/popover.js +114 -0
- package/dist/overlays/sheet.d.ts +78 -0
- package/dist/overlays/sheet.js +131 -0
- package/dist/overlays/toast.d.ts +106 -0
- package/dist/overlays/toast.js +146 -0
- package/dist/overlays/tooltip.d.ts +57 -0
- package/dist/overlays/tooltip.js +95 -0
- package/dist/primitives/avatar.d.ts +51 -0
- package/dist/primitives/avatar.js +93 -0
- package/dist/primitives/button.d.ts +58 -0
- package/dist/primitives/button.js +104 -0
- package/dist/primitives/chip.d.ts +73 -0
- package/dist/primitives/chip.js +238 -0
- package/dist/primitives/icon-button.d.ts +41 -0
- package/dist/primitives/icon-button.js +59 -0
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.js +10 -0
- package/dist/primitives/kbd.d.ts +17 -0
- package/dist/primitives/kbd.js +24 -0
- package/dist/primitives/separator.d.ts +25 -0
- package/dist/primitives/separator.js +30 -0
- package/dist/primitives/skeleton.d.ts +20 -0
- package/dist/primitives/skeleton.js +27 -0
- package/dist/primitives/spinner.d.ts +26 -0
- package/dist/primitives/spinner.js +31 -0
- package/dist/primitives/status-dot.d.ts +51 -0
- package/dist/primitives/status-dot.js +57 -0
- package/dist/styles.css +97 -0
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/density.d.ts +73 -0
- package/dist/system/density.js +111 -0
- package/dist/system/index.d.ts +12 -0
- package/dist/system/index.js +10 -0
- package/dist/system/overrides.d.ts +80 -0
- package/dist/system/overrides.js +277 -0
- package/dist/system/portal.d.ts +56 -0
- package/dist/system/portal.js +193 -0
- package/dist/system/prepaint.d.ts +134 -0
- package/dist/system/prepaint.js +120 -0
- package/dist/system/theme-provider.d.ts +290 -0
- package/dist/system/theme-provider.js +543 -0
- package/dist/system/theme-registry.d.ts +53 -0
- package/dist/system/theme-registry.js +66 -0
- package/dist/system/use-density.d.ts +50 -0
- package/dist/system/use-density.js +232 -0
- package/dist/system/use-isomorphic-layout-effect.js +33 -0
- package/dist/system/use-theme.d.ts +30 -0
- package/dist/system/use-theme.js +36 -0
- package/dist/system/vocabulary.d.ts +16 -0
- package/dist/system/vocabulary.js +125 -0
- package/dist/theming/contrast.d.ts +2 -0
- package/dist/theming/contrast.js +2 -0
- package/dist/theming/create-theme.d.ts +195 -0
- package/dist/theming/create-theme.js +524 -0
- package/dist/theming/index.d.ts +4 -0
- package/dist/theming/index.js +4 -0
- package/dist/theming/serialize.d.ts +167 -0
- package/dist/theming/serialize.js +241 -0
- package/manifest/components/accordion.json +173 -0
- package/manifest/components/activity-graph.json +104 -0
- package/manifest/components/agent-card.json +150 -0
- package/manifest/components/agent-handoff.json +104 -0
- package/manifest/components/agent-mode-badge.json +102 -0
- package/manifest/components/agent-pile.json +147 -0
- package/manifest/components/agent-plan.json +74 -0
- package/manifest/components/agent-status.json +87 -0
- package/manifest/components/agent-surface.json +93 -0
- package/manifest/components/alert-dialog.json +215 -0
- package/manifest/components/animated-number.json +75 -0
- package/manifest/components/app-bar.json +297 -0
- package/manifest/components/app-shell.json +526 -0
- package/manifest/components/app-window-frame.json +124 -0
- package/manifest/components/approval-card.json +136 -0
- package/manifest/components/artifact-card.json +93 -0
- package/manifest/components/ask-box.json +288 -0
- package/manifest/components/audience-icon.json +46 -0
- package/manifest/components/autocomplete.json +262 -0
- package/manifest/components/avatar-group.json +83 -0
- package/manifest/components/avatar.json +113 -0
- package/manifest/components/background-inbox.json +79 -0
- package/manifest/components/band.json +104 -0
- package/manifest/components/bento.json +306 -0
- package/manifest/components/branch-picker.json +146 -0
- package/manifest/components/breadcrumb.json +85 -0
- package/manifest/components/button-group.json +91 -0
- package/manifest/components/button.json +163 -0
- package/manifest/components/calendar.json +65 -0
- package/manifest/components/canvas-split-body.json +66 -0
- package/manifest/components/canvas-split-document.json +55 -0
- package/manifest/components/canvas-split-header.json +97 -0
- package/manifest/components/canvas-split-line.json +66 -0
- package/manifest/components/canvas-split-message.json +70 -0
- package/manifest/components/canvas-split-thread.json +55 -0
- package/manifest/components/canvas-split.json +61 -0
- package/manifest/components/card.json +152 -0
- package/manifest/components/carousel.json +242 -0
- package/manifest/components/catalogue-icon.json +46 -0
- package/manifest/components/channel-beta-icon.json +46 -0
- package/manifest/components/channel-matrix.json +239 -0
- package/manifest/components/channel-released-icon.json +46 -0
- package/manifest/components/chart-container.json +127 -0
- package/manifest/components/chart-ramp.json +82 -0
- package/manifest/components/chart-swatch.json +72 -0
- package/manifest/components/chart-tooltip-content.json +140 -0
- package/manifest/components/chart.json +117 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +52 -0
- package/manifest/components/chat-panel-composer.json +74 -0
- package/manifest/components/chat-panel-messages.json +52 -0
- package/manifest/components/chat-panel-typing.json +52 -0
- package/manifest/components/chat-panel-user-message.json +52 -0
- package/manifest/components/chat-panel.json +58 -0
- package/manifest/components/checkbox-group.json +70 -0
- package/manifest/components/checkbox.json +106 -0
- package/manifest/components/checkpoint-history.json +91 -0
- package/manifest/components/chip.json +174 -0
- package/manifest/components/clamp.json +125 -0
- package/manifest/components/cli-tool-icon.json +46 -0
- package/manifest/components/code-block.json +107 -0
- package/manifest/components/code-diff.json +104 -0
- package/manifest/components/code-runner.json +124 -0
- package/manifest/components/collapsible.json +133 -0
- package/manifest/components/color-area.json +62 -0
- package/manifest/components/color-field.json +91 -0
- package/manifest/components/color-picker.json +235 -0
- package/manifest/components/color-slider.json +84 -0
- package/manifest/components/color-swatch.json +79 -0
- package/manifest/components/colors-section.json +70 -0
- package/manifest/components/combobox.json +265 -0
- package/manifest/components/command-palette.json +222 -0
- package/manifest/components/compaction-row.json +128 -0
- package/manifest/components/comparison-card.json +98 -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 +83 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +76 -0
- package/manifest/components/composer-command-item.json +85 -0
- package/manifest/components/composer-context.json +71 -0
- package/manifest/components/composer-input.json +77 -0
- package/manifest/components/composer-menu-item.json +75 -0
- package/manifest/components/composer-menu.json +89 -0
- package/manifest/components/composer-model-item.json +82 -0
- package/manifest/components/composer-model-trigger.json +81 -0
- package/manifest/components/composer-person-item.json +86 -0
- package/manifest/components/composer-send.json +86 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +71 -0
- package/manifest/components/composer-voice.json +81 -0
- package/manifest/components/composer.json +238 -0
- package/manifest/components/computer-use.json +98 -0
- package/manifest/components/confidence-marker.json +86 -0
- package/manifest/components/connection-state.json +103 -0
- package/manifest/components/container.json +75 -0
- package/manifest/components/context-breakdown.json +72 -0
- package/manifest/components/context-menu.json +134 -0
- package/manifest/components/context-usage.json +98 -0
- package/manifest/components/conversation-search.json +111 -0
- package/manifest/components/copy-button.json +118 -0
- package/manifest/components/cost-meter.json +84 -0
- package/manifest/components/cue-logotype.json +110 -0
- package/manifest/components/cue-mark.json +111 -0
- package/manifest/components/cue-portal-frame.json +65 -0
- package/manifest/components/data-row.json +222 -0
- package/manifest/components/data-table-pagination.json +97 -0
- package/manifest/components/data-table-toolbar.json +127 -0
- package/manifest/components/data-tree.json +185 -0
- package/manifest/components/date-field.json +93 -0
- package/manifest/components/date-picker.json +255 -0
- package/manifest/components/date-range-picker.json +255 -0
- package/manifest/components/day-separator.json +63 -0
- package/manifest/components/delegation-card.json +196 -0
- package/manifest/components/density.json +93 -0
- package/manifest/components/description-list.json +91 -0
- package/manifest/components/diagram.json +126 -0
- package/manifest/components/dialog.json +222 -0
- package/manifest/components/disclosure.json +134 -0
- package/manifest/components/dmx-bar.json +107 -0
- package/manifest/components/dmx-strip.json +117 -0
- package/manifest/components/document-reference.json +108 -0
- package/manifest/components/draft-restore.json +96 -0
- package/manifest/components/drawer.json +204 -0
- package/manifest/components/dropdown-menu.json +275 -0
- package/manifest/components/edit-message.json +131 -0
- package/manifest/components/elements-command-palette.json +122 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +75 -0
- package/manifest/components/elements-timeline.json +77 -0
- package/manifest/components/elicitation-form.json +130 -0
- package/manifest/components/empty-state-composer.json +71 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +60 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/empty-state.json +111 -0
- package/manifest/components/end-of-turn-summary.json +89 -0
- package/manifest/components/env-var-input.json +194 -0
- package/manifest/components/error-state.json +93 -0
- package/manifest/components/export-dialog.json +101 -0
- package/manifest/components/eyebrow.json +59 -0
- package/manifest/components/feedback-dialog.json +133 -0
- package/manifest/components/field-description.json +66 -0
- package/manifest/components/field-error.json +87 -0
- package/manifest/components/field-label.json +66 -0
- package/manifest/components/field.json +82 -0
- package/manifest/components/file-tree.json +96 -0
- package/manifest/components/file-upload.json +204 -0
- package/manifest/components/flow-background.json +50 -0
- package/manifest/components/flow-controls.json +50 -0
- package/manifest/components/flow-graph.json +86 -0
- package/manifest/components/folder-icon.json +46 -0
- package/manifest/components/footer.json +133 -0
- package/manifest/components/frac.json +68 -0
- package/manifest/components/frames.json +210 -0
- package/manifest/components/generation-loader.json +78 -0
- package/manifest/components/generative-ui.json +125 -0
- package/manifest/components/grid.json +132 -0
- package/manifest/components/group-bar.json +122 -0
- package/manifest/components/guardrail-notice.json +109 -0
- package/manifest/components/hover-card.json +189 -0
- package/manifest/components/icon-button.json +106 -0
- package/manifest/components/image-generation.json +73 -0
- package/manifest/components/info-tip.json +133 -0
- package/manifest/components/inline-citation.json +90 -0
- package/manifest/components/input-group.json +112 -0
- package/manifest/components/input.json +121 -0
- package/manifest/components/inspector.json +199 -0
- package/manifest/components/item.json +163 -0
- package/manifest/components/job-progress.json +116 -0
- package/manifest/components/kbd.json +52 -0
- package/manifest/components/launcher-bubble.json +130 -0
- package/manifest/components/ledger.json +330 -0
- package/manifest/components/link.json +94 -0
- package/manifest/components/live-region-announcer.json +95 -0
- package/manifest/components/log-viewer.json +172 -0
- package/manifest/components/map-answer.json +97 -0
- package/manifest/components/markdown-text.json +126 -0
- package/manifest/components/math-block.json +84 -0
- package/manifest/components/mcp-server-icon.json +46 -0
- package/manifest/components/mcp-server-panel.json +102 -0
- package/manifest/components/memory-chips.json +73 -0
- package/manifest/components/menubar.json +184 -0
- package/manifest/components/message-actions.json +125 -0
- package/manifest/components/message-attachments.json +71 -0
- package/manifest/components/message-branches.json +83 -0
- package/manifest/components/message-list.json +121 -0
- package/manifest/components/message-pair.json +107 -0
- package/manifest/components/message-queue.json +85 -0
- package/manifest/components/message-timing.json +69 -0
- package/manifest/components/message.json +149 -0
- package/manifest/components/meter.json +150 -0
- package/manifest/components/mobile-composer.json +163 -0
- package/manifest/components/model-picker.json +87 -0
- package/manifest/components/multi-select.json +255 -0
- package/manifest/components/musical-time-input.json +141 -0
- package/manifest/components/navigation-menu.json +269 -0
- package/manifest/components/node-card.json +144 -0
- package/manifest/components/node-handle.json +84 -0
- package/manifest/components/number-field.json +131 -0
- package/manifest/components/number-ticker.json +67 -0
- package/manifest/components/onboarding.json +100 -0
- package/manifest/components/otp-field.json +163 -0
- package/manifest/components/page-shell.json +129 -0
- package/manifest/components/pagination.json +108 -0
- package/manifest/components/panel-header.json +89 -0
- package/manifest/components/panel.json +71 -0
- package/manifest/components/password-input.json +171 -0
- package/manifest/components/permission-grant.json +115 -0
- package/manifest/components/permission-scopes.json +184 -0
- package/manifest/components/piano-keyboard.json +149 -0
- package/manifest/components/plussie.json +140 -0
- package/manifest/components/popover.json +231 -0
- package/manifest/components/preset-section.json +80 -0
- package/manifest/components/preview.json +294 -0
- package/manifest/components/progress.json +114 -0
- package/manifest/components/prompt-library.json +122 -0
- package/manifest/components/queue-dock.json +139 -0
- package/manifest/components/quota-banner.json +113 -0
- package/manifest/components/quote-reply.json +129 -0
- package/manifest/components/radio-group.json +83 -0
- package/manifest/components/radio.json +94 -0
- package/manifest/components/rating.json +188 -0
- package/manifest/components/read-aloud.json +139 -0
- package/manifest/components/reasoning-effort.json +95 -0
- package/manifest/components/reasoning-panel.json +135 -0
- package/manifest/components/recommendation-card.json +133 -0
- package/manifest/components/regenerate-menu.json +107 -0
- package/manifest/components/replay-player.json +124 -0
- package/manifest/components/research-report.json +87 -0
- package/manifest/components/resizable.json +91 -0
- package/manifest/components/retrieval-chunks.json +98 -0
- package/manifest/components/revert-dock.json +197 -0
- package/manifest/components/reviewable-diff.json +113 -0
- package/manifest/components/risk-badge.json +89 -0
- package/manifest/components/row.json +122 -0
- package/manifest/components/schedule-card.json +121 -0
- package/manifest/components/score-breakdown.json +108 -0
- package/manifest/components/scroll-anchor.json +84 -0
- package/manifest/components/scroll-area.json +114 -0
- package/manifest/components/scrollable-tabs-list.json +91 -0
- package/manifest/components/scrub-input.json +268 -0
- package/manifest/components/seam-cell.json +91 -0
- package/manifest/components/seam-grid.json +84 -0
- package/manifest/components/seam-list.json +56 -0
- package/manifest/components/search-input.json +195 -0
- package/manifest/components/section-header.json +140 -0
- package/manifest/components/segmented-control.json +178 -0
- package/manifest/components/select.json +253 -0
- package/manifest/components/separator.json +56 -0
- package/manifest/components/settings-panel.json +152 -0
- package/manifest/components/shape-section.json +70 -0
- package/manifest/components/shared-conversation.json +107 -0
- package/manifest/components/sheet.json +210 -0
- package/manifest/components/shimmer-label.json +61 -0
- package/manifest/components/sidebar.json +245 -0
- package/manifest/components/signal-edge.json +56 -0
- package/manifest/components/skeleton.json +46 -0
- package/manifest/components/skill-icon.json +46 -0
- package/manifest/components/slider.json +106 -0
- package/manifest/components/sources.json +97 -0
- package/manifest/components/sparkline.json +89 -0
- package/manifest/components/speaker-identity.json +66 -0
- package/manifest/components/spec-sheet.json +93 -0
- package/manifest/components/spectrum-visualizer.json +147 -0
- package/manifest/components/spinner.json +71 -0
- package/manifest/components/stack-icon.json +46 -0
- package/manifest/components/stack.json +143 -0
- package/manifest/components/stacks-matrix-icon.json +46 -0
- package/manifest/components/stat.json +111 -0
- package/manifest/components/status-bar.json +233 -0
- package/manifest/components/status-dot.json +97 -0
- package/manifest/components/stepper.json +107 -0
- package/manifest/components/stopped-run.json +97 -0
- package/manifest/components/streaming-text.json +82 -0
- package/manifest/components/sub.json +45 -0
- package/manifest/components/subagent-list.json +106 -0
- package/manifest/components/suggestions.json +106 -0
- package/manifest/components/sup.json +45 -0
- package/manifest/components/swap-label.json +86 -0
- package/manifest/components/switch.json +102 -0
- package/manifest/components/table-scroll-region.json +78 -0
- package/manifest/components/table.json +306 -0
- package/manifest/components/tabs.json +156 -0
- package/manifest/components/tags-input.json +255 -0
- package/manifest/components/tail-status.json +138 -0
- package/manifest/components/terminal-block.json +111 -0
- package/manifest/components/terminal-frame.json +146 -0
- package/manifest/components/textarea.json +104 -0
- package/manifest/components/theme-configurator.json +158 -0
- package/manifest/components/theme-provider.json +228 -0
- package/manifest/components/thinking-indicator.json +69 -0
- package/manifest/components/thread-list.json +87 -0
- package/manifest/components/thread-search.json +108 -0
- package/manifest/components/threshold-rail.json +223 -0
- package/manifest/components/time-boundary.json +68 -0
- package/manifest/components/time-field.json +93 -0
- package/manifest/components/timeline-ruler.json +178 -0
- package/manifest/components/timeline.json +131 -0
- package/manifest/components/title-bar.json +97 -0
- package/manifest/components/toast.json +140 -0
- package/manifest/components/todo-list.json +76 -0
- package/manifest/components/toggle-group.json +134 -0
- package/manifest/components/toggle.json +140 -0
- package/manifest/components/token-editor.json +106 -0
- package/manifest/components/tool-call-card.json +268 -0
- package/manifest/components/tool-call.json +147 -0
- package/manifest/components/tool-error.json +141 -0
- package/manifest/components/tool-group.json +97 -0
- package/manifest/components/tool-timeline.json +147 -0
- package/manifest/components/toolbar.json +192 -0
- package/manifest/components/tooltip.json +199 -0
- package/manifest/components/trace-waterfall.json +84 -0
- package/manifest/components/tree-visibility-toggle.json +99 -0
- package/manifest/components/tree.json +182 -0
- package/manifest/components/turn-footer.json +133 -0
- package/manifest/components/two-step-button.json +150 -0
- package/manifest/components/typing-indicator.json +60 -0
- package/manifest/components/universe-grid.json +155 -0
- package/manifest/components/unread-divider.json +58 -0
- package/manifest/components/usage-chart.json +162 -0
- package/manifest/components/verdict-row.json +106 -0
- package/manifest/components/voice-conversation.json +141 -0
- package/manifest/components/web-preview.json +105 -0
- package/manifest/components/web-search.json +108 -0
- package/manifest/components/work-collapse.json +125 -0
- package/manifest/fixtures.json +776 -0
- package/manifest/manifest.json +5037 -0
- package/manifest/tokens.json +288 -0
- package/package.json +278 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { FormControlSize } from "../forms/_chassis.js";
|
|
2
|
+
import { CalendarProps } from "./calendar.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { DateRange } from "react-day-picker";
|
|
5
|
+
//#region src/date/date-range-picker.d.ts
|
|
6
|
+
/** The calendar knobs a range picker leaves open; selection is its own job. */
|
|
7
|
+
type DateRangePickerCalendarProps = Omit<CalendarProps, "mode" | "selected" | "onSelect" | "required">;
|
|
8
|
+
interface DateRangePickerProps {
|
|
9
|
+
/** The chosen span. Use with `onValueChange` for a controlled field. */
|
|
10
|
+
value?: DateRange | null;
|
|
11
|
+
/** Initially chosen span for an uncontrolled field. */
|
|
12
|
+
defaultValue?: DateRange | null;
|
|
13
|
+
/**
|
|
14
|
+
* Called after every click inside the calendar — once with `{ from }` when
|
|
15
|
+
* the span opens, again with `{ from, to }` when it closes.
|
|
16
|
+
*/
|
|
17
|
+
onValueChange?: (value: DateRange | undefined) => void;
|
|
18
|
+
/** Read out while nothing is chosen. Defaults to `"Pick a range"`. */
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
/** date-fns pattern for both ends of the readout. Defaults to `"d MMM yyyy"`. */
|
|
21
|
+
dateFormat?: string;
|
|
22
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
23
|
+
size?: FormControlSize;
|
|
24
|
+
/** Prevent opening and grey the trigger out. */
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/** Paint the danger rim — pair it with a `FieldError`. */
|
|
27
|
+
invalid?: boolean;
|
|
28
|
+
/** Base name for the hidden inputs; they submit `<name>From` / `<name>To`. */
|
|
29
|
+
name?: string;
|
|
30
|
+
/** Id forwarded to the trigger. */
|
|
31
|
+
id?: string;
|
|
32
|
+
/** Accessible name for the trigger, when no `FieldLabel` names it. */
|
|
33
|
+
"aria-label"?: string;
|
|
34
|
+
/** Id of the element naming the trigger. */
|
|
35
|
+
"aria-labelledby"?: string;
|
|
36
|
+
/** Extra classes for the trigger. */
|
|
37
|
+
className?: string;
|
|
38
|
+
/** Extra classes for the popup surface. */
|
|
39
|
+
popupClassName?: string;
|
|
40
|
+
/** Everything else the calendar takes. `numberOfMonths` defaults to `2`. */
|
|
41
|
+
calendarProps?: DateRangePickerCalendarProps;
|
|
42
|
+
/** Open state, for a controlled popover. */
|
|
43
|
+
open?: boolean;
|
|
44
|
+
/** Initial open state. */
|
|
45
|
+
defaultOpen?: boolean;
|
|
46
|
+
/** Called when the popover opens or closes. */
|
|
47
|
+
onOpenChange?: (open: boolean) => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A span of days, picked from a two-month calendar in a popover.
|
|
51
|
+
*
|
|
52
|
+
* The sibling of `DatePicker`, sharing its trigger skin — but *not* its
|
|
53
|
+
* dismissal: a range takes two clicks, so the popup stays open through the
|
|
54
|
+
* first one and the caller hears about both. Close it from `onValueChange` when
|
|
55
|
+
* `to` arrives if a one-shot flow suits the page better.
|
|
56
|
+
*
|
|
57
|
+
* `react-day-picker` and `date-fns` are **optional peers**: import this from
|
|
58
|
+
* `@cueplusplus/ui/date`.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* <DateRangePicker aria-label="Window" value={range} onValueChange={setRange} />
|
|
62
|
+
*/
|
|
63
|
+
declare function DateRangePicker({ value, defaultValue, onValueChange, placeholder, dateFormat, size, disabled, invalid, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, className, popupClassName, calendarProps, open, defaultOpen, onOpenChange }: DateRangePickerProps): React.JSX.Element;
|
|
64
|
+
//#endregion
|
|
65
|
+
export { type DateRange, DateRangePicker, DateRangePickerCalendarProps, DateRangePickerProps };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { Popover } from "../overlays/popover.js";
|
|
4
|
+
import { Calendar } from "./calendar.js";
|
|
5
|
+
import { CalendarGlyph } from "./_glyphs.js";
|
|
6
|
+
import { datePopupClasses, dateTriggerClasses, dateTriggerGlyphClasses, dateTriggerValueClasses } from "./_trigger.js";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { format } from "date-fns";
|
|
10
|
+
//#region src/date/date-range-picker.tsx
|
|
11
|
+
/** The wire format for a submitted date: sortable, unambiguous, locale-free. */
|
|
12
|
+
const ISO_DATE = "yyyy-MM-dd";
|
|
13
|
+
/** `17 Aug 2026 → 20 Aug 2026`, with `…` standing in for an unpicked end. */
|
|
14
|
+
function formatRange(range, pattern) {
|
|
15
|
+
return `${range.from === void 0 ? "…" : format(range.from, pattern)} → ${range.to === void 0 ? "…" : format(range.to, pattern)}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A span of days, picked from a two-month calendar in a popover.
|
|
19
|
+
*
|
|
20
|
+
* The sibling of `DatePicker`, sharing its trigger skin — but *not* its
|
|
21
|
+
* dismissal: a range takes two clicks, so the popup stays open through the
|
|
22
|
+
* first one and the caller hears about both. Close it from `onValueChange` when
|
|
23
|
+
* `to` arrives if a one-shot flow suits the page better.
|
|
24
|
+
*
|
|
25
|
+
* `react-day-picker` and `date-fns` are **optional peers**: import this from
|
|
26
|
+
* `@cueplusplus/ui/date`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* <DateRangePicker aria-label="Window" value={range} onValueChange={setRange} />
|
|
30
|
+
*/
|
|
31
|
+
function DateRangePicker({ value, defaultValue, onValueChange, placeholder = "Pick a range", dateFormat = "d MMM yyyy", size, disabled, invalid, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, className, popupClassName, calendarProps, open, defaultOpen, onOpenChange }) {
|
|
32
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue ?? void 0);
|
|
33
|
+
const selected = value === void 0 ? uncontrolled : value ?? void 0;
|
|
34
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);
|
|
35
|
+
const isOpen = open ?? uncontrolledOpen;
|
|
36
|
+
const setOpen = (next) => {
|
|
37
|
+
if (open === void 0) setUncontrolledOpen(next);
|
|
38
|
+
onOpenChange?.(next);
|
|
39
|
+
};
|
|
40
|
+
const select = (next) => {
|
|
41
|
+
if (value === void 0) setUncontrolled(next);
|
|
42
|
+
onValueChange?.(next);
|
|
43
|
+
};
|
|
44
|
+
return /* @__PURE__ */ jsxs(Popover.Root, {
|
|
45
|
+
open: isOpen,
|
|
46
|
+
onOpenChange: setOpen,
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ jsxs(Popover.Trigger, {
|
|
49
|
+
render: /* @__PURE__ */ jsx("button", {
|
|
50
|
+
type: "button",
|
|
51
|
+
id,
|
|
52
|
+
disabled,
|
|
53
|
+
"aria-label": ariaLabel,
|
|
54
|
+
"aria-labelledby": ariaLabelledBy,
|
|
55
|
+
"data-slot": "date-range-picker-trigger",
|
|
56
|
+
"data-empty": selected === void 0 ? "true" : void 0,
|
|
57
|
+
"data-invalid": invalid ? "" : void 0,
|
|
58
|
+
className: cn(dateTriggerClasses(size), className)
|
|
59
|
+
}),
|
|
60
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
61
|
+
className: cn(dateTriggerValueClasses, selected === void 0 && "text-fg-subtle"),
|
|
62
|
+
children: selected === void 0 ? placeholder : formatRange(selected, dateFormat)
|
|
63
|
+
}), /* @__PURE__ */ jsx(CalendarGlyph, { className: dateTriggerGlyphClasses })]
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ jsx(Popover.Content, {
|
|
66
|
+
className: cn(datePopupClasses, popupClassName),
|
|
67
|
+
align: "start",
|
|
68
|
+
"data-slot": "date-range-picker-popup",
|
|
69
|
+
children: /* @__PURE__ */ jsx(Calendar, {
|
|
70
|
+
numberOfMonths: 2,
|
|
71
|
+
...calendarProps,
|
|
72
|
+
mode: "range",
|
|
73
|
+
selected,
|
|
74
|
+
onSelect: select,
|
|
75
|
+
defaultMonth: calendarProps?.defaultMonth ?? selected?.from,
|
|
76
|
+
autoFocus: true
|
|
77
|
+
})
|
|
78
|
+
}),
|
|
79
|
+
name === void 0 ? null : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("input", {
|
|
80
|
+
type: "hidden",
|
|
81
|
+
name: `${name}From`,
|
|
82
|
+
value: selected?.from === void 0 ? "" : format(selected.from, ISO_DATE)
|
|
83
|
+
}), /* @__PURE__ */ jsx("input", {
|
|
84
|
+
type: "hidden",
|
|
85
|
+
name: `${name}To`,
|
|
86
|
+
value: selected?.to === void 0 ? "" : format(selected.to, ISO_DATE)
|
|
87
|
+
})] })
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
export { DateRangePicker };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Calendar, CalendarProps } from "./calendar.js";
|
|
2
|
+
import { DateField, DateFieldProps, DateValue } from "./date-field.js";
|
|
3
|
+
import { DatePicker, DatePickerCalendarProps, DatePickerProps } from "./date-picker.js";
|
|
4
|
+
import { DateRange, DateRangePicker, DateRangePickerCalendarProps, DateRangePickerProps } from "./date-range-picker.js";
|
|
5
|
+
import { TimeField, TimeFieldProps, TimeValue } from "./time-field.js";
|
|
6
|
+
export { Calendar, type CalendarProps, DateField, type DateFieldProps, DatePicker, type DatePickerCalendarProps, type DatePickerProps, type DateRange, DateRangePicker, type DateRangePickerCalendarProps, type DateRangePickerProps, type DateValue, TimeField, type TimeFieldProps, type TimeValue };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Calendar } from "./calendar.js";
|
|
2
|
+
import { DateField } from "./date-field.js";
|
|
3
|
+
import { DatePicker } from "./date-picker.js";
|
|
4
|
+
import { DateRangePicker } from "./date-range-picker.js";
|
|
5
|
+
import { TimeField } from "./time-field.js";
|
|
6
|
+
export { Calendar, DateField, DatePicker, DateRangePicker, TimeField };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FormControlSize } from "../forms/_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { DateInputProps, TimeFieldProps, TimeValue } from "react-aria-components";
|
|
4
|
+
//#region src/date/time-field.d.ts
|
|
5
|
+
interface TimeFieldProps$1<T extends TimeValue = TimeValue> extends Omit<TimeFieldProps<T>, "children"> {
|
|
6
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
7
|
+
size?: FormControlSize;
|
|
8
|
+
/** Extra classes for the segment group itself. */
|
|
9
|
+
inputClassName?: DateInputProps["className"];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A typed time of day, segment by segment.
|
|
13
|
+
*
|
|
14
|
+
* The sibling of {@link DateField} on the same React Aria part, for the half of
|
|
15
|
+
* a schedule a calendar cannot express. Pass `hourCycle={24}` for a show clock —
|
|
16
|
+
* a control room runs on 24-hour time, and the AM/PM segment is one more thing
|
|
17
|
+
* to tab through.
|
|
18
|
+
*
|
|
19
|
+
* Values are `@internationalized/date` `Time` objects.
|
|
20
|
+
*
|
|
21
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
22
|
+
* `@cueplusplus/ui/date`.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* <TimeField aria-label="Go time" hourCycle={24} value={time} onChange={setTime} />
|
|
26
|
+
*/
|
|
27
|
+
declare function TimeField$1<T extends TimeValue = TimeValue>({ size, className, inputClassName, ...fieldProps }: TimeFieldProps$1<T>): React.JSX.Element;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { TimeField$1 as TimeField, TimeFieldProps$1 as TimeFieldProps, type TimeValue };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ariaClassName } from "../lib/aria-class.js";
|
|
3
|
+
import { SegmentGroup } from "./_segments.js";
|
|
4
|
+
import "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { TimeField } from "react-aria-components";
|
|
7
|
+
//#region src/date/time-field.tsx
|
|
8
|
+
/**
|
|
9
|
+
* A typed time of day, segment by segment.
|
|
10
|
+
*
|
|
11
|
+
* The sibling of {@link DateField} on the same React Aria part, for the half of
|
|
12
|
+
* a schedule a calendar cannot express. Pass `hourCycle={24}` for a show clock —
|
|
13
|
+
* a control room runs on 24-hour time, and the AM/PM segment is one more thing
|
|
14
|
+
* to tab through.
|
|
15
|
+
*
|
|
16
|
+
* Values are `@internationalized/date` `Time` objects.
|
|
17
|
+
*
|
|
18
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
19
|
+
* `@cueplusplus/ui/date`.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <TimeField aria-label="Go time" hourCycle={24} value={time} onChange={setTime} />
|
|
23
|
+
*/
|
|
24
|
+
function TimeField$1({ size, className, inputClassName, ...fieldProps }) {
|
|
25
|
+
return /* @__PURE__ */ jsx(TimeField, {
|
|
26
|
+
"data-slot": "time-field",
|
|
27
|
+
className: ariaClassName("inline-flex flex-col gap-(--cue-space-1)", className),
|
|
28
|
+
...fieldProps,
|
|
29
|
+
children: /* @__PURE__ */ jsx(SegmentGroup, {
|
|
30
|
+
size,
|
|
31
|
+
className: inputClassName
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { TimeField$1 as TimeField };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
//#region src/dmx/_ramp.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The byte layer: how big a universe is, and what colour a level is.
|
|
4
|
+
*
|
|
5
|
+
* Everything in this group repaints at frame rate, which rules out doing colour
|
|
6
|
+
* work per cell per frame. So the conversion happens once, into a 768-byte
|
|
7
|
+
* lookup table, and a repaint is three array reads. That is the whole reason
|
|
8
|
+
* these are `Uint8Array`s rather than a `(level) => string` function.
|
|
9
|
+
*
|
|
10
|
+
* Two ramps, for two different questions:
|
|
11
|
+
*
|
|
12
|
+
* - **mono** answers "how bright is this channel?" — and answers it by *being*
|
|
13
|
+
* that brightness. The byte is the grey, with no conversion at all, which is
|
|
14
|
+
* the reading a lighting operator already has in their hands from the desk.
|
|
15
|
+
* It is the one place in this system that does not read a colour token, and
|
|
16
|
+
* the reason is the same reason `--cue-data-ground` is true black in every
|
|
17
|
+
* theme: a level readout that a theme could re-tint is a level readout you
|
|
18
|
+
* cannot trust.
|
|
19
|
+
* - **value** answers "which channels are hot?" — and for that it borrows the
|
|
20
|
+
* status vocabulary the rest of the console already means something by:
|
|
21
|
+
* ground, then info, ok, warn, danger. Those *are* tokens, resolved against
|
|
22
|
+
* the theme in force where the grid is mounted, so the ramp re-hues with the
|
|
23
|
+
* theme like every other colour here.
|
|
24
|
+
*
|
|
25
|
+
* @internal Not part of the public API surface beyond the `/dmx` barrel.
|
|
26
|
+
*/
|
|
27
|
+
/** Channels in one DMX512 universe. Not a preference — it is the protocol. */
|
|
28
|
+
declare const DMX_SLOTS = 512;
|
|
29
|
+
/** The two cell colourings, in the order a picker should offer them. */
|
|
30
|
+
declare const DMX_RAMP_NAMES: readonly ["mono", "value"];
|
|
31
|
+
/** How a level becomes a colour. */
|
|
32
|
+
type DmxRamp = (typeof DMX_RAMP_NAMES)[number];
|
|
33
|
+
/**
|
|
34
|
+
* The tokens the value ramp interpolates through, dark end first.
|
|
35
|
+
*
|
|
36
|
+
* Read as names rather than as colours so the ramp follows a theme switch, and
|
|
37
|
+
* so a console that retunes its `warn` retunes its channel grid with it.
|
|
38
|
+
*/
|
|
39
|
+
declare const VALUE_RAMP_TOKENS: readonly ["data-ground", "info", "ok", "warn", "danger"];
|
|
40
|
+
/**
|
|
41
|
+
* The 256-entry lookup table for a ramp: `[r, g, b]` per level, flat.
|
|
42
|
+
*
|
|
43
|
+
* Rebuild it whenever the theme the grid is mounted in changes — it is a
|
|
44
|
+
* snapshot of resolved tokens, not a live binding.
|
|
45
|
+
*
|
|
46
|
+
* @param ramp - Which colouring. Defaults to `"mono"`.
|
|
47
|
+
* @param element - Where the value ramp's tokens resolve. Defaults to the
|
|
48
|
+
* document element; pass a node inside a portal or a nested theme for that
|
|
49
|
+
* scope. Ignored by `"mono"`, which reads no tokens.
|
|
50
|
+
*/
|
|
51
|
+
declare function dmxPalette(ramp?: DmxRamp, element?: Element | null): Uint8Array;
|
|
52
|
+
/** The `rgb()` string for a level. Out-of-range input clamps into a real slot. */
|
|
53
|
+
declare function dmxPaletteColor(palette: Uint8Array, level: number): string;
|
|
54
|
+
/**
|
|
55
|
+
* Ink for the number printed *inside* a cell: whichever of black or white has
|
|
56
|
+
* the better contrast against the cell's own fill.
|
|
57
|
+
*
|
|
58
|
+
* The ports this replaces each carried a hand-tuned cutoff (`v > 150` in one
|
|
59
|
+
* mode, `v > 140` in the other), which is two magic numbers that disagree with
|
|
60
|
+
* each other and neither of which survives a re-tinted ramp. One contrast
|
|
61
|
+
* calculation answers it for any ramp, in any theme.
|
|
62
|
+
*/
|
|
63
|
+
declare function dmxPaletteInk(palette: Uint8Array, level: number): string;
|
|
64
|
+
/**
|
|
65
|
+
* How many slots of one universe are carrying anything.
|
|
66
|
+
*
|
|
67
|
+
* The only honest summary of a bar or a grid for a reader who cannot see it —
|
|
68
|
+
* and cheap enough (512 reads) to recompute on every frame that actually
|
|
69
|
+
* arrives.
|
|
70
|
+
*
|
|
71
|
+
* @param data - The frame, or a multi-universe buffer.
|
|
72
|
+
* @param offset - Where this universe starts in `data`. Defaults to `0`.
|
|
73
|
+
* @param slots - How many slots to read. Defaults to a full universe.
|
|
74
|
+
*/
|
|
75
|
+
declare function activeChannels(data: Uint8Array | undefined, offset?: number, slots?: number): number;
|
|
76
|
+
//#endregion
|
|
77
|
+
export { DMX_RAMP_NAMES, DMX_SLOTS, DmxRamp, VALUE_RAMP_TOKENS, activeChannels, dmxPalette, dmxPaletteColor, dmxPaletteInk };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { resolveToken } from "../charts/_token.js";
|
|
2
|
+
import { converter, parse } from "culori";
|
|
3
|
+
//#region src/dmx/_ramp.ts
|
|
4
|
+
/**
|
|
5
|
+
* The byte layer: how big a universe is, and what colour a level is.
|
|
6
|
+
*
|
|
7
|
+
* Everything in this group repaints at frame rate, which rules out doing colour
|
|
8
|
+
* work per cell per frame. So the conversion happens once, into a 768-byte
|
|
9
|
+
* lookup table, and a repaint is three array reads. That is the whole reason
|
|
10
|
+
* these are `Uint8Array`s rather than a `(level) => string` function.
|
|
11
|
+
*
|
|
12
|
+
* Two ramps, for two different questions:
|
|
13
|
+
*
|
|
14
|
+
* - **mono** answers "how bright is this channel?" — and answers it by *being*
|
|
15
|
+
* that brightness. The byte is the grey, with no conversion at all, which is
|
|
16
|
+
* the reading a lighting operator already has in their hands from the desk.
|
|
17
|
+
* It is the one place in this system that does not read a colour token, and
|
|
18
|
+
* the reason is the same reason `--cue-data-ground` is true black in every
|
|
19
|
+
* theme: a level readout that a theme could re-tint is a level readout you
|
|
20
|
+
* cannot trust.
|
|
21
|
+
* - **value** answers "which channels are hot?" — and for that it borrows the
|
|
22
|
+
* status vocabulary the rest of the console already means something by:
|
|
23
|
+
* ground, then info, ok, warn, danger. Those *are* tokens, resolved against
|
|
24
|
+
* the theme in force where the grid is mounted, so the ramp re-hues with the
|
|
25
|
+
* theme like every other colour here.
|
|
26
|
+
*
|
|
27
|
+
* @internal Not part of the public API surface beyond the `/dmx` barrel.
|
|
28
|
+
*/
|
|
29
|
+
/** Channels in one DMX512 universe. Not a preference — it is the protocol. */
|
|
30
|
+
const DMX_SLOTS = 512;
|
|
31
|
+
/** Levels a DMX slot can carry: a single byte. */
|
|
32
|
+
const LEVELS = 256;
|
|
33
|
+
/** The highest level, and the divisor every ramp position is taken against. */
|
|
34
|
+
const MAX_LEVEL = 255;
|
|
35
|
+
/** The two cell colourings, in the order a picker should offer them. */
|
|
36
|
+
const DMX_RAMP_NAMES = ["mono", "value"];
|
|
37
|
+
/**
|
|
38
|
+
* The tokens the value ramp interpolates through, dark end first.
|
|
39
|
+
*
|
|
40
|
+
* Read as names rather than as colours so the ramp follows a theme switch, and
|
|
41
|
+
* so a console that retunes its `warn` retunes its channel grid with it.
|
|
42
|
+
*/
|
|
43
|
+
const VALUE_RAMP_TOKENS = [
|
|
44
|
+
"data-ground",
|
|
45
|
+
"info",
|
|
46
|
+
"ok",
|
|
47
|
+
"warn",
|
|
48
|
+
"danger"
|
|
49
|
+
];
|
|
50
|
+
/**
|
|
51
|
+
* dmxhub's own stops, kept as the fallback for the two moments the tokens
|
|
52
|
+
* cannot be read: a server render, and a test DOM with no stylesheet. Without
|
|
53
|
+
* them the ramp would collapse to black and a grid would go blank in SSR.
|
|
54
|
+
*/
|
|
55
|
+
const VALUE_RAMP_FALLBACK = [
|
|
56
|
+
"#000000",
|
|
57
|
+
"#0066ff",
|
|
58
|
+
"#00cc66",
|
|
59
|
+
"#ff9500",
|
|
60
|
+
"#ff3333"
|
|
61
|
+
];
|
|
62
|
+
const toRgb = converter("rgb");
|
|
63
|
+
/** A CSS colour as three 0-255 channels, or `null` when it will not parse. */
|
|
64
|
+
function toBytes(color) {
|
|
65
|
+
const parsed = parse(color);
|
|
66
|
+
if (parsed === void 0) return null;
|
|
67
|
+
const rgb = toRgb(parsed);
|
|
68
|
+
if (rgb === void 0) return null;
|
|
69
|
+
return [
|
|
70
|
+
byte(rgb.r * MAX_LEVEL),
|
|
71
|
+
byte(rgb.g * MAX_LEVEL),
|
|
72
|
+
byte(rgb.b * MAX_LEVEL)
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
/** Round and clamp into the range a channel of anything here can hold. */
|
|
76
|
+
function byte(value) {
|
|
77
|
+
if (!Number.isFinite(value)) return 0;
|
|
78
|
+
return Math.min(MAX_LEVEL, Math.max(0, Math.round(value)));
|
|
79
|
+
}
|
|
80
|
+
/** Grey, straight off the wire: level 137 is `rgb(137,137,137)`. */
|
|
81
|
+
function monoPalette() {
|
|
82
|
+
const palette = new Uint8Array(LEVELS * 3);
|
|
83
|
+
for (let level = 0; level < LEVELS; level += 1) {
|
|
84
|
+
palette[level * 3] = level;
|
|
85
|
+
palette[level * 3 + 1] = level;
|
|
86
|
+
palette[level * 3 + 2] = level;
|
|
87
|
+
}
|
|
88
|
+
return palette;
|
|
89
|
+
}
|
|
90
|
+
/** Linear interpolation across the resolved stops, one entry per level. */
|
|
91
|
+
function valuePalette(element) {
|
|
92
|
+
const stops = VALUE_RAMP_TOKENS.map((token, index) => {
|
|
93
|
+
const fallback = VALUE_RAMP_FALLBACK[index];
|
|
94
|
+
const resolved = resolveToken(token, element);
|
|
95
|
+
return (resolved === null ? null : toBytes(resolved)) ?? toBytes(fallback);
|
|
96
|
+
});
|
|
97
|
+
const palette = new Uint8Array(LEVELS * 3);
|
|
98
|
+
const last = stops.length - 1;
|
|
99
|
+
for (let level = 0; level < LEVELS; level += 1) {
|
|
100
|
+
const position = level / MAX_LEVEL * last;
|
|
101
|
+
const index = Math.min(Math.floor(position), last - 1);
|
|
102
|
+
const fraction = position - index;
|
|
103
|
+
const from = stops[index];
|
|
104
|
+
const to = stops[index + 1];
|
|
105
|
+
for (let channel = 0; channel < 3; channel += 1) palette[level * 3 + channel] = byte(from[channel] + (to[channel] - from[channel]) * fraction);
|
|
106
|
+
}
|
|
107
|
+
return palette;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The 256-entry lookup table for a ramp: `[r, g, b]` per level, flat.
|
|
111
|
+
*
|
|
112
|
+
* Rebuild it whenever the theme the grid is mounted in changes — it is a
|
|
113
|
+
* snapshot of resolved tokens, not a live binding.
|
|
114
|
+
*
|
|
115
|
+
* @param ramp - Which colouring. Defaults to `"mono"`.
|
|
116
|
+
* @param element - Where the value ramp's tokens resolve. Defaults to the
|
|
117
|
+
* document element; pass a node inside a portal or a nested theme for that
|
|
118
|
+
* scope. Ignored by `"mono"`, which reads no tokens.
|
|
119
|
+
*/
|
|
120
|
+
function dmxPalette(ramp = "mono", element) {
|
|
121
|
+
return ramp === "value" ? valuePalette(element) : monoPalette();
|
|
122
|
+
}
|
|
123
|
+
/** The `rgb()` string for a level. Out-of-range input clamps into a real slot. */
|
|
124
|
+
function dmxPaletteColor(palette, level) {
|
|
125
|
+
const index = byte(level) * 3;
|
|
126
|
+
return `rgb(${palette[index]}, ${palette[index + 1]}, ${palette[index + 2]})`;
|
|
127
|
+
}
|
|
128
|
+
/** WCAG relative luminance of an 8-bit sRGB triple. */
|
|
129
|
+
function luminance(red, green, blue) {
|
|
130
|
+
const channel = (value) => {
|
|
131
|
+
const srgb = value / MAX_LEVEL;
|
|
132
|
+
return srgb <= .03928 ? srgb / 12.92 : ((srgb + .055) / 1.055) ** 2.4;
|
|
133
|
+
};
|
|
134
|
+
return .2126 * channel(red) + .7152 * channel(green) + .0722 * channel(blue);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Ink for the number printed *inside* a cell: whichever of black or white has
|
|
138
|
+
* the better contrast against the cell's own fill.
|
|
139
|
+
*
|
|
140
|
+
* The ports this replaces each carried a hand-tuned cutoff (`v > 150` in one
|
|
141
|
+
* mode, `v > 140` in the other), which is two magic numbers that disagree with
|
|
142
|
+
* each other and neither of which survives a re-tinted ramp. One contrast
|
|
143
|
+
* calculation answers it for any ramp, in any theme.
|
|
144
|
+
*/
|
|
145
|
+
function dmxPaletteInk(palette, level) {
|
|
146
|
+
const index = byte(level) * 3;
|
|
147
|
+
const relative = luminance(palette[index], palette[index + 1], palette[index + 2]);
|
|
148
|
+
return (relative + .05) / .05 >= 1.05 / (relative + .05) ? "#000000" : "#ffffff";
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* How many slots of one universe are carrying anything.
|
|
152
|
+
*
|
|
153
|
+
* The only honest summary of a bar or a grid for a reader who cannot see it —
|
|
154
|
+
* and cheap enough (512 reads) to recompute on every frame that actually
|
|
155
|
+
* arrives.
|
|
156
|
+
*
|
|
157
|
+
* @param data - The frame, or a multi-universe buffer.
|
|
158
|
+
* @param offset - Where this universe starts in `data`. Defaults to `0`.
|
|
159
|
+
* @param slots - How many slots to read. Defaults to a full universe.
|
|
160
|
+
*/
|
|
161
|
+
function activeChannels(data, offset = 0, slots = 512) {
|
|
162
|
+
if (data === void 0) return 0;
|
|
163
|
+
let active = 0;
|
|
164
|
+
const end = Math.min(data.length, offset + slots);
|
|
165
|
+
for (let index = offset; index < end; index += 1) if (data[index] > 0) active += 1;
|
|
166
|
+
return active;
|
|
167
|
+
}
|
|
168
|
+
//#endregion
|
|
169
|
+
export { DMX_RAMP_NAMES, DMX_SLOTS, VALUE_RAMP_TOKENS, activeChannels, dmxPalette, dmxPaletteColor, dmxPaletteInk };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { overlaySurfaceClasses } from "../overlays/_surface.js";
|
|
4
|
+
import "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { createPortal } from "react-dom";
|
|
7
|
+
//#region src/dmx/_readout.tsx
|
|
8
|
+
/**
|
|
9
|
+
* The `CH n · v` chip every renderer in this group shows under the cursor.
|
|
10
|
+
*
|
|
11
|
+
* It is portaled rather than positioned inside the instrument for the reason
|
|
12
|
+
* every floating surface in this system is: a DMX bar lives inside a node
|
|
13
|
+
* graph, a resizable panel or a scroll container, any of which will clip or
|
|
14
|
+
* transform an absolutely positioned child. The stamped container from
|
|
15
|
+
* `useCuePortalProps` is what keeps the chip in the caller's theme once it is
|
|
16
|
+
* re-parented to `document.body`.
|
|
17
|
+
*
|
|
18
|
+
* `valueRef` exists because the number changes at frame rate. A component that
|
|
19
|
+
* re-rendered to update it would put React on the hot path of a 40 Hz stream;
|
|
20
|
+
* the renderers write to this span directly instead, and React only hears about
|
|
21
|
+
* the channel changing.
|
|
22
|
+
*
|
|
23
|
+
* @internal Not part of the public API.
|
|
24
|
+
*/
|
|
25
|
+
/** Gap in px between the cursor's row and the chip's lower edge. */
|
|
26
|
+
const READOUT_GAP = 7;
|
|
27
|
+
/** The floating channel readout. Renders `null` until the portal root exists. */
|
|
28
|
+
function DmxReadout({ container, channel, value, x, y, valueRef }) {
|
|
29
|
+
if (container === void 0) return null;
|
|
30
|
+
return createPortal(/* @__PURE__ */ jsxs("div", {
|
|
31
|
+
"data-slot": "dmx-readout",
|
|
32
|
+
className: cn(overlaySurfaceClasses, "pointer-events-none fixed z-50 -translate-x-1/2 -translate-y-full px-(--cue-space-2) py-px font-mono text-(length:--cue-text-micro) whitespace-nowrap tabular-nums text-fg-muted"),
|
|
33
|
+
style: {
|
|
34
|
+
left: x,
|
|
35
|
+
top: y - READOUT_GAP
|
|
36
|
+
},
|
|
37
|
+
children: [
|
|
38
|
+
"CH ",
|
|
39
|
+
/* @__PURE__ */ jsx("span", {
|
|
40
|
+
className: "text-fg",
|
|
41
|
+
children: channel
|
|
42
|
+
}),
|
|
43
|
+
" · ",
|
|
44
|
+
/* @__PURE__ */ jsx("span", {
|
|
45
|
+
ref: valueRef,
|
|
46
|
+
className: "text-accent",
|
|
47
|
+
children: value
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
}), container);
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { DmxReadout };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
//#region src/dmx/_universe.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Patch arithmetic: turning "this fixture starts at 129 and eats 32 channels"
|
|
4
|
+
* into a position on a bar, and finding the places two fixtures were given the
|
|
5
|
+
* same slot.
|
|
6
|
+
*
|
|
7
|
+
* Kept out of the component because a conflict is a fact about a patch, not
|
|
8
|
+
* about a rendering of one — a console wants to know before it draws anything,
|
|
9
|
+
* and a test wants to check it without a DOM.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API surface beyond the `/dmx` barrel.
|
|
12
|
+
*/
|
|
13
|
+
/** Block ink, in the shared status vocabulary plus a neutral. */
|
|
14
|
+
type DmxTone = "neutral" | "accent" | "ok" | "busy" | "warn" | "danger" | "info";
|
|
15
|
+
/** One fixture's claim on a run of channels. */
|
|
16
|
+
interface DmxAllocation {
|
|
17
|
+
/** Stable identity. Defaults to the label plus its position. */
|
|
18
|
+
id?: string;
|
|
19
|
+
/** What holds these channels: a fixture name, a group, "spare". */
|
|
20
|
+
label: string;
|
|
21
|
+
/** First channel, 1-based — the address written on the fixture. */
|
|
22
|
+
start: number;
|
|
23
|
+
/** How many channels the mode occupies. */
|
|
24
|
+
size: number;
|
|
25
|
+
/** Ink for the block. Defaults to `"neutral"`. */
|
|
26
|
+
tone?: DmxTone;
|
|
27
|
+
}
|
|
28
|
+
/** An inclusive run of channel addresses. */
|
|
29
|
+
interface ChannelRange {
|
|
30
|
+
/** First channel, 1-based. */
|
|
31
|
+
start: number;
|
|
32
|
+
/** Last channel, 1-based and inclusive. */
|
|
33
|
+
end: number;
|
|
34
|
+
}
|
|
35
|
+
/** One allocation, placed. */
|
|
36
|
+
interface AllocationBlock extends ChannelRange {
|
|
37
|
+
/** React key: the allocation's `id`, or its label plus position. */
|
|
38
|
+
key: string;
|
|
39
|
+
/** The allocation this came from, so a click can hand it straight back. */
|
|
40
|
+
allocation: DmxAllocation;
|
|
41
|
+
/** Convenience copy of `allocation.label`. */
|
|
42
|
+
label: string;
|
|
43
|
+
/** Resolved ink. */
|
|
44
|
+
tone: DmxTone;
|
|
45
|
+
/** Channels actually occupied after clamping. */
|
|
46
|
+
size: number;
|
|
47
|
+
/** Distance from the left edge of the universe, as a percentage. */
|
|
48
|
+
left: number;
|
|
49
|
+
/** Share of the universe, as a percentage. */
|
|
50
|
+
width: number;
|
|
51
|
+
/** Some slot of this run is claimed by another allocation too. */
|
|
52
|
+
conflict: boolean;
|
|
53
|
+
/** The run ran past the last slot and was cut short. */
|
|
54
|
+
clipped: boolean;
|
|
55
|
+
}
|
|
56
|
+
/** A patch, placed. */
|
|
57
|
+
interface UniverseLayout {
|
|
58
|
+
/** How many slots the frame holds. */
|
|
59
|
+
slots: number;
|
|
60
|
+
/** The placed allocations, input order preserved. */
|
|
61
|
+
blocks: AllocationBlock[];
|
|
62
|
+
/** Contested runs, merged and in address order. */
|
|
63
|
+
conflicts: ChannelRange[];
|
|
64
|
+
/** Distinct slots claimed by at least one allocation. */
|
|
65
|
+
used: number;
|
|
66
|
+
/** `used` as a whole-number percentage of `slots`. */
|
|
67
|
+
utilisation: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The ruler's addresses: the start, the end, and every 64 in between.
|
|
71
|
+
*
|
|
72
|
+
* 64 is the interval a patch sheet is written in, so these are the numbers an
|
|
73
|
+
* operator already counts by — not a tick density chosen to fill the width.
|
|
74
|
+
*/
|
|
75
|
+
declare const UNIVERSE_TICKS: readonly number[];
|
|
76
|
+
/**
|
|
77
|
+
* Where a channel sits along the bar, as a percentage.
|
|
78
|
+
*
|
|
79
|
+
* 1-based in, 0-based out: channel 1 is the left edge, and the last channel
|
|
80
|
+
* starts one slot short of the right one — a channel is a *slot* with width,
|
|
81
|
+
* not a point.
|
|
82
|
+
*
|
|
83
|
+
* @param channel - The address, 1-based.
|
|
84
|
+
* @param slots - Frame length. Defaults to a full universe.
|
|
85
|
+
*/
|
|
86
|
+
declare function channelPercent(channel: number, slots?: number): number;
|
|
87
|
+
/**
|
|
88
|
+
* Place a patch on a universe bar and find its collisions.
|
|
89
|
+
*
|
|
90
|
+
* Three rules, each one a thing a patch tool has to get right:
|
|
91
|
+
*
|
|
92
|
+
* 1. **An allocation that occupies nothing is not drawn.** A zero-width block
|
|
93
|
+
* with a two-pixel floor would draw a fixture that is not patched.
|
|
94
|
+
* 2. **A run that walks off the end is cut, not hidden** — and marked `clipped`,
|
|
95
|
+
* because "your 32-channel fixture at 500 does not fit" is exactly the thing
|
|
96
|
+
* the operator needs to see.
|
|
97
|
+
* 3. **Occupancy is counted in distinct slots.** Summing sizes would let a
|
|
98
|
+
* double patch report more capacity in use than the universe has.
|
|
99
|
+
*
|
|
100
|
+
* @param allocations - The patch, in display order.
|
|
101
|
+
* @param slots - Frame length. Defaults to a full universe.
|
|
102
|
+
*/
|
|
103
|
+
declare function universeLayout(allocations: readonly DmxAllocation[], slots?: number): UniverseLayout;
|
|
104
|
+
//#endregion
|
|
105
|
+
export { AllocationBlock, ChannelRange, DmxAllocation, DmxTone, UNIVERSE_TICKS, UniverseLayout, channelPercent, universeLayout };
|