@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,66 @@
|
|
|
1
|
+
import { clampChroma, converter, formatHex, formatHex8, inGamut, parse } from "culori";
|
|
2
|
+
//#region src/color/_convert.ts
|
|
3
|
+
const toOklch = converter("oklch");
|
|
4
|
+
const srgb = inGamut("rgb");
|
|
5
|
+
/** Round to `digits` and drop trailing zeros, so `0.70000` prints as `0.7`. */
|
|
6
|
+
function round(value, digits) {
|
|
7
|
+
return String(Number(value.toFixed(digits)));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Convert any CSS colour string to `#rrggbb` (or `#rrggbbaa` when it carries
|
|
11
|
+
* alpha).
|
|
12
|
+
*
|
|
13
|
+
* The bridge into React Aria's colour parts, which only parse sRGB notations —
|
|
14
|
+
* hand them an `oklch()` token value and they throw. Colours outside the sRGB
|
|
15
|
+
* gamut have their **chroma** pulled in rather than their channels clipped:
|
|
16
|
+
* clipping `oklch(0.7 0.4 30)` gives pure red, losing the lightness the author
|
|
17
|
+
* chose, while clamping keeps it at `#ff6551`.
|
|
18
|
+
*
|
|
19
|
+
* @param input - Any CSS colour string.
|
|
20
|
+
* @returns The lower-case hex string, or `null` if the input is not a colour.
|
|
21
|
+
* @example
|
|
22
|
+
* toHexString("oklch(0.7 0.15 30)") // "#ed7665"
|
|
23
|
+
*/
|
|
24
|
+
function toHexString(input) {
|
|
25
|
+
const parsed = parse(input);
|
|
26
|
+
if (parsed === void 0) return null;
|
|
27
|
+
const inSrgb = srgb(parsed) ? parsed : clampChroma(parsed, "oklch", "rgb");
|
|
28
|
+
const alpha = parsed.alpha;
|
|
29
|
+
return alpha === void 0 || alpha >= 1 ? formatHex(inSrgb) : formatHex8(inSrgb);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Re-print a colour in one of the two notations the suite writes.
|
|
33
|
+
*
|
|
34
|
+
* The oklch form is emitted at the precision a round trip needs — four decimals
|
|
35
|
+
* of lightness and chroma, two of hue — which is exactly enough for
|
|
36
|
+
* `toHexString(formatColorString(hex, "oklch")) === hex` across the sRGB cube.
|
|
37
|
+
* An achromatic colour has no hue, so it prints `0` rather than `NaN`.
|
|
38
|
+
*
|
|
39
|
+
* @param input - Any CSS colour string.
|
|
40
|
+
* @param format - The notation to write.
|
|
41
|
+
* @returns The formatted colour, or `null` if the input is not a colour.
|
|
42
|
+
* @example
|
|
43
|
+
* formatColorString("#3fa9f5", "oklch") // "oklch(0.7083 0.1466 244.05)"
|
|
44
|
+
*/
|
|
45
|
+
function formatColorString(input, format) {
|
|
46
|
+
const hex = toHexString(input);
|
|
47
|
+
if (hex === null) return null;
|
|
48
|
+
if (format === "hex") return hex;
|
|
49
|
+
const color = toOklch(parse(hex));
|
|
50
|
+
if (color === void 0) return null;
|
|
51
|
+
const body = `${round(color.l, 4)} ${round(color.c, 4)} ${round(color.h ?? 0, 2)}`;
|
|
52
|
+
const alpha = color.alpha;
|
|
53
|
+
return alpha === void 0 || alpha >= 1 ? `oklch(${body})` : `oklch(${body} / ${round(alpha, 3)})`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Which notation a value is authored in, so a control can hand back what it was
|
|
57
|
+
* given instead of quietly rewriting a token file into hex.
|
|
58
|
+
*
|
|
59
|
+
* @param input - Any CSS colour string.
|
|
60
|
+
* @returns `"oklch"` for an `oklch()` value, `"hex"` for everything else.
|
|
61
|
+
*/
|
|
62
|
+
function detectColorFormat(input) {
|
|
63
|
+
return /^\s*oklch\(/i.test(input) ? "oklch" : "hex";
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { detectColorFormat, formatColorString, toHexString };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/color/_glyphs.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Glyphs for the colour group.
|
|
6
|
+
*
|
|
7
|
+
* Drawn inline for the same reason as `forms/_glyphs.tsx`: one icon on one
|
|
8
|
+
* button should not put an icon dependency on the render path, and hand-set
|
|
9
|
+
* strokes stay hairline-thin at the 8–12px sizes console density asks for.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
/** An eyedropper: sample a colour from anywhere on the screen. */
|
|
14
|
+
function EyedropperGlyph(props) {
|
|
15
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
16
|
+
viewBox: "0 0 16 16",
|
|
17
|
+
fill: "none",
|
|
18
|
+
stroke: "currentColor",
|
|
19
|
+
strokeWidth: "1.25",
|
|
20
|
+
strokeLinecap: "round",
|
|
21
|
+
strokeLinejoin: "round",
|
|
22
|
+
"aria-hidden": "true",
|
|
23
|
+
...props,
|
|
24
|
+
children: /* @__PURE__ */ jsx("path", { d: "M10.5 2.5a1.8 1.8 0 0 1 2.5 2.5l-1.4 1.4 1 1-1.2 1.2-1-1-4.3 4.3-2.6.6.6-2.6 4.3-4.3-1-1L8.6 3.4l1 1z" })
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { EyedropperGlyph };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/color/_thumb.ts
|
|
2
|
+
/**
|
|
3
|
+
* The draggable puck shared by the colour area and every colour rail.
|
|
4
|
+
*
|
|
5
|
+
* The one place in this system where a ring is not a token colour: the thumb
|
|
6
|
+
* sits on top of arbitrary user colour, so it needs a light rim *and* a dark
|
|
7
|
+
* halo to stay visible against both ends of the spectrum. `--cue-fg` /
|
|
8
|
+
* `--cue-bg` supply the pair, which keeps it theme-driven without pretending a
|
|
9
|
+
* single token could do the job.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
const colorThumbClasses = "size-[0.875rem] rounded-full border-2 border-fg shadow-[0_0_0_1px_var(--cue-bg)] outline-none data-[focus-visible]:outline-2 data-[focus-visible]:outline-solid data-[focus-visible]:outline-offset-2 data-[focus-visible]:outline-accent data-[dragging]:scale-110 data-[disabled]:opacity-40";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { colorThumbClasses };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { toHexString } from "./_convert.js";
|
|
2
|
+
import { parseColor } from "react-aria-components";
|
|
3
|
+
//#region src/color/_value.ts
|
|
4
|
+
/**
|
|
5
|
+
* Turn whatever the caller passed into something React Aria can hold.
|
|
6
|
+
*
|
|
7
|
+
* React Aria parses `#rgb`, `rgb()`, `hsl()` and `hsb()` and *keeps the space
|
|
8
|
+
* it was given* — which matters, because a slider for `channel="hue"` only
|
|
9
|
+
* exists on an HSL or HSB colour. So the library gets first refusal: only when
|
|
10
|
+
* it cannot parse the string (an `oklch()` token, a named colour) does this
|
|
11
|
+
* fall back to converting through culori, which necessarily lands in sRGB.
|
|
12
|
+
*
|
|
13
|
+
* Converting unconditionally would be simpler and wrong: it would quietly turn
|
|
14
|
+
* every `hsl()` into a hex value and break the hue rail.
|
|
15
|
+
*
|
|
16
|
+
* @internal Not part of the public API.
|
|
17
|
+
*/
|
|
18
|
+
function toAriaColor(value) {
|
|
19
|
+
if (typeof value !== "string") return value;
|
|
20
|
+
try {
|
|
21
|
+
return parseColor(value);
|
|
22
|
+
} catch {
|
|
23
|
+
const hex = toHexString(value);
|
|
24
|
+
return parseColor(hex ?? value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { toAriaColor };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ColorAreaProps } from "react-aria-components";
|
|
3
|
+
//#region src/color/color-area.d.ts
|
|
4
|
+
interface ColorAreaProps$1 extends Omit<ColorAreaProps, "children"> {
|
|
5
|
+
/** Extra classes for the thumb. */
|
|
6
|
+
thumbClassName?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The two-axis colour field — saturation against brightness, by default.
|
|
10
|
+
*
|
|
11
|
+
* Wraps React Aria's `ColorArea`, so the pointer maths, the two hidden range
|
|
12
|
+
* inputs that make it keyboard- and screen-reader-operable, and the gradient
|
|
13
|
+
* background are the library's. This layer adds the rim, the radius and the
|
|
14
|
+
* shared thumb.
|
|
15
|
+
*
|
|
16
|
+
* String values may be written in any notation this suite reads, `oklch()`
|
|
17
|
+
* included — React Aria only parses sRGB, so they are converted on the way in.
|
|
18
|
+
*
|
|
19
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
20
|
+
* `@cueplusplus/ui/color`.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* <ColorArea aria-label="Saturation and brightness" value={color} onChange={setColor} />
|
|
24
|
+
*/
|
|
25
|
+
declare function ColorArea$1({ className, thumbClassName, value, defaultValue, ...areaProps }: ColorAreaProps$1): React.JSX.Element;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { ColorArea$1 as ColorArea, ColorAreaProps$1 as ColorAreaProps };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ariaClassName } from "../lib/aria-class.js";
|
|
3
|
+
import { colorThumbClasses } from "./_thumb.js";
|
|
4
|
+
import { toAriaColor } from "./_value.js";
|
|
5
|
+
import "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { ColorArea, ColorThumb } from "react-aria-components";
|
|
8
|
+
//#region src/color/color-area.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The two-axis colour field — saturation against brightness, by default.
|
|
11
|
+
*
|
|
12
|
+
* Wraps React Aria's `ColorArea`, so the pointer maths, the two hidden range
|
|
13
|
+
* inputs that make it keyboard- and screen-reader-operable, and the gradient
|
|
14
|
+
* background are the library's. This layer adds the rim, the radius and the
|
|
15
|
+
* shared thumb.
|
|
16
|
+
*
|
|
17
|
+
* String values may be written in any notation this suite reads, `oklch()`
|
|
18
|
+
* included — React Aria only parses sRGB, so they are converted on the way in.
|
|
19
|
+
*
|
|
20
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
21
|
+
* `@cueplusplus/ui/color`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* <ColorArea aria-label="Saturation and brightness" value={color} onChange={setColor} />
|
|
25
|
+
*/
|
|
26
|
+
function ColorArea$1({ className, thumbClassName, value, defaultValue, ...areaProps }) {
|
|
27
|
+
return /* @__PURE__ */ jsx(ColorArea, {
|
|
28
|
+
"data-slot": "color-area",
|
|
29
|
+
className: ariaClassName("relative h-[9rem] w-full touch-none rounded-(--radius-control) border border-border outline-none data-[disabled]:opacity-40", className),
|
|
30
|
+
value: toAriaColor(value),
|
|
31
|
+
defaultValue: toAriaColor(defaultValue),
|
|
32
|
+
...areaProps,
|
|
33
|
+
children: /* @__PURE__ */ jsx(ColorThumb, {
|
|
34
|
+
"data-slot": "color-thumb",
|
|
35
|
+
className: ariaClassName(colorThumbClasses, thumbClassName)
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { ColorArea$1 as ColorArea };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { FormControlSize } from "../forms/_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { ColorFieldProps, InputProps } from "react-aria-components";
|
|
4
|
+
//#region src/color/color-field.d.ts
|
|
5
|
+
interface ColorFieldProps$1 extends Omit<ColorFieldProps, "children"> {
|
|
6
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
7
|
+
size?: FormControlSize;
|
|
8
|
+
/** Extra classes for the input itself. */
|
|
9
|
+
inputClassName?: InputProps["className"];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A typed colour value — the whole colour as hex, or one channel as a number.
|
|
13
|
+
*
|
|
14
|
+
* Wraps React Aria's `ColorField`, so parsing, arrow-key stepping and the
|
|
15
|
+
* commit-on-blur behaviour are the library's; the input rides the same recessed
|
|
16
|
+
* chassis as every other text control.
|
|
17
|
+
*
|
|
18
|
+
* React Aria only parses sRGB notations, so it edits **hex**. For a field that
|
|
19
|
+
* also accepts `oklch()` — the notation this system's tokens are authored in —
|
|
20
|
+
* use `ColorPicker`, which owns the conversion.
|
|
21
|
+
*
|
|
22
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
23
|
+
* `@cueplusplus/ui/color`.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* <ColorField aria-label="Accent" value={color} onChange={setColor} />
|
|
27
|
+
* @example
|
|
28
|
+
* <ColorField aria-label="Red" channel="red" colorSpace="rgb" size="sm" />
|
|
29
|
+
*/
|
|
30
|
+
declare function ColorField$1({ size, className, inputClassName, value, defaultValue, ...fieldProps }: ColorFieldProps$1): React.JSX.Element;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { ColorField$1 as ColorField, ColorFieldProps$1 as ColorFieldProps };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { controlVariants } from "../forms/_chassis.js";
|
|
4
|
+
import { ariaClassName } from "../lib/aria-class.js";
|
|
5
|
+
import { toAriaColor } from "./_value.js";
|
|
6
|
+
import "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import { ColorField, Input } from "react-aria-components";
|
|
9
|
+
//#region src/color/color-field.tsx
|
|
10
|
+
/**
|
|
11
|
+
* A typed colour value — the whole colour as hex, or one channel as a number.
|
|
12
|
+
*
|
|
13
|
+
* Wraps React Aria's `ColorField`, so parsing, arrow-key stepping and the
|
|
14
|
+
* commit-on-blur behaviour are the library's; the input rides the same recessed
|
|
15
|
+
* chassis as every other text control.
|
|
16
|
+
*
|
|
17
|
+
* React Aria only parses sRGB notations, so it edits **hex**. For a field that
|
|
18
|
+
* also accepts `oklch()` — the notation this system's tokens are authored in —
|
|
19
|
+
* use `ColorPicker`, which owns the conversion.
|
|
20
|
+
*
|
|
21
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
22
|
+
* `@cueplusplus/ui/color`.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* <ColorField aria-label="Accent" value={color} onChange={setColor} />
|
|
26
|
+
* @example
|
|
27
|
+
* <ColorField aria-label="Red" channel="red" colorSpace="rgb" size="sm" />
|
|
28
|
+
*/
|
|
29
|
+
function ColorField$1({ size, className, inputClassName, value, defaultValue, ...fieldProps }) {
|
|
30
|
+
return /* @__PURE__ */ jsx(ColorField, {
|
|
31
|
+
"data-slot": "color-field",
|
|
32
|
+
className: ariaClassName("inline-flex flex-col gap-(--cue-space-1)", className),
|
|
33
|
+
value: toAriaColor(value),
|
|
34
|
+
defaultValue: toAriaColor(defaultValue),
|
|
35
|
+
...fieldProps,
|
|
36
|
+
children: /* @__PURE__ */ jsx(Input, {
|
|
37
|
+
"data-slot": "color-field-input",
|
|
38
|
+
className: ariaClassName(cn(controlVariants({ size }), "uppercase"), inputClassName)
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { ColorField$1 as ColorField };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ColorFormat } from "./_convert.js";
|
|
2
|
+
import { FormControlSize } from "../forms/_chassis.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/color/color-picker.d.ts
|
|
5
|
+
interface ColorPickerProps {
|
|
6
|
+
/** The colour, in any notation this suite reads. Use with `onValueChange`. */
|
|
7
|
+
value?: string;
|
|
8
|
+
/** Initial colour for an uncontrolled picker. Defaults to `"#000000"`. */
|
|
9
|
+
defaultValue?: string;
|
|
10
|
+
/** Called with the new colour, written in the picker's output notation. */
|
|
11
|
+
onValueChange?: (value: string) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Notation to write back. Defaults to the notation the current value arrived
|
|
14
|
+
* in — hand it an `oklch()` token and you get `oklch()` back, so editing a
|
|
15
|
+
* theme file never silently rewrites it into hex.
|
|
16
|
+
*/
|
|
17
|
+
format?: ColorFormat;
|
|
18
|
+
/** Show the alpha rail and keep alpha in the output. Defaults to `false`. */
|
|
19
|
+
alpha?: boolean;
|
|
20
|
+
/** Accessible name for the trigger. Defaults to `"Color"`. */
|
|
21
|
+
label?: 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
|
+
/** Print the value beside the swatch on the trigger. Defaults to `true`. */
|
|
27
|
+
showValue?: boolean;
|
|
28
|
+
/** Name for the hidden input, when the picker is part of a form. */
|
|
29
|
+
name?: string;
|
|
30
|
+
/** Id forwarded to the trigger. */
|
|
31
|
+
id?: string;
|
|
32
|
+
/** Extra classes for the trigger. */
|
|
33
|
+
className?: string;
|
|
34
|
+
/** Extra classes for the popup surface. */
|
|
35
|
+
popupClassName?: string;
|
|
36
|
+
/** Open state, for a controlled popover. */
|
|
37
|
+
open?: boolean;
|
|
38
|
+
/** Initial open state. */
|
|
39
|
+
defaultOpen?: boolean;
|
|
40
|
+
/** Called when the popover opens or closes. */
|
|
41
|
+
onOpenChange?: (open: boolean) => void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A colour, edited in a popover: two-axis area, hue rail, optional alpha rail,
|
|
45
|
+
* a text field that speaks hex *and* oklch, and an eyedropper where the browser
|
|
46
|
+
* has one.
|
|
47
|
+
*
|
|
48
|
+
* Composed from the React Aria colour parts rather than wrapping a single
|
|
49
|
+
* primitive, because no primitive owns the combination. Two decisions are this
|
|
50
|
+
* component's own:
|
|
51
|
+
*
|
|
52
|
+
* - **Notation in, notation out.** React Aria only parses sRGB; this system's
|
|
53
|
+
* tokens are authored in `oklch()`. The picker converts on both edges
|
|
54
|
+
* (culori), and writes back in the notation it was given unless `format` says
|
|
55
|
+
* otherwise. This is what makes it usable as the theme configurator's editor.
|
|
56
|
+
* - **Hue survives black.** The working colour is held as HSB and only re-read
|
|
57
|
+
* from the incoming string when that string changes for some *other* reason,
|
|
58
|
+
* so dragging the area down to black and back does not reset the hue — the
|
|
59
|
+
* defect every naive "derive state from the value" picker has.
|
|
60
|
+
*
|
|
61
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
62
|
+
* `@cueplusplus/ui/color`.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* <ColorPicker label="Accent" value={accent} onValueChange={setAccent} />
|
|
66
|
+
* @example
|
|
67
|
+
* <ColorPicker label="Scrim" value="oklch(0.2 0 0 / 0.55)" alpha format="oklch" />
|
|
68
|
+
*/
|
|
69
|
+
declare function ColorPicker({ value, defaultValue, onValueChange, format, alpha, label, size, disabled, showValue, name, id, className, popupClassName, open, defaultOpen, onOpenChange }: ColorPickerProps): React.JSX.Element;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { ColorPicker, ColorPickerProps };
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { controlVariants } from "../forms/_chassis.js";
|
|
4
|
+
import { IconButton } from "../primitives/icon-button.js";
|
|
5
|
+
import { Popover } from "../overlays/popover.js";
|
|
6
|
+
import { detectColorFormat, formatColorString, toHexString } from "./_convert.js";
|
|
7
|
+
import { ColorArea as ColorArea$1 } from "./color-area.js";
|
|
8
|
+
import { EyedropperGlyph } from "./_glyphs.js";
|
|
9
|
+
import { ColorSlider as ColorSlider$1 } from "./color-slider.js";
|
|
10
|
+
import { ColorSwatch as ColorSwatch$1 } from "./color-swatch.js";
|
|
11
|
+
import * as React from "react";
|
|
12
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { parseColor } from "react-aria-components";
|
|
14
|
+
//#region src/color/color-picker.tsx
|
|
15
|
+
/** Fallback when a caller opens the picker with nothing selected. */
|
|
16
|
+
const FALLBACK_COLOR = "#000000";
|
|
17
|
+
/** Parse anything the suite reads into the HSB colour the parts work in. */
|
|
18
|
+
function toHsb(input) {
|
|
19
|
+
return parseColor(toHexString(input) ?? FALLBACK_COLOR).toFormat("hsb");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A colour, edited in a popover: two-axis area, hue rail, optional alpha rail,
|
|
23
|
+
* a text field that speaks hex *and* oklch, and an eyedropper where the browser
|
|
24
|
+
* has one.
|
|
25
|
+
*
|
|
26
|
+
* Composed from the React Aria colour parts rather than wrapping a single
|
|
27
|
+
* primitive, because no primitive owns the combination. Two decisions are this
|
|
28
|
+
* component's own:
|
|
29
|
+
*
|
|
30
|
+
* - **Notation in, notation out.** React Aria only parses sRGB; this system's
|
|
31
|
+
* tokens are authored in `oklch()`. The picker converts on both edges
|
|
32
|
+
* (culori), and writes back in the notation it was given unless `format` says
|
|
33
|
+
* otherwise. This is what makes it usable as the theme configurator's editor.
|
|
34
|
+
* - **Hue survives black.** The working colour is held as HSB and only re-read
|
|
35
|
+
* from the incoming string when that string changes for some *other* reason,
|
|
36
|
+
* so dragging the area down to black and back does not reset the hue — the
|
|
37
|
+
* defect every naive "derive state from the value" picker has.
|
|
38
|
+
*
|
|
39
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
40
|
+
* `@cueplusplus/ui/color`.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* <ColorPicker label="Accent" value={accent} onValueChange={setAccent} />
|
|
44
|
+
* @example
|
|
45
|
+
* <ColorPicker label="Scrim" value="oklch(0.2 0 0 / 0.55)" alpha format="oklch" />
|
|
46
|
+
*/
|
|
47
|
+
function ColorPicker({ value, defaultValue, onValueChange, format, alpha = false, label = "Color", size, disabled, showValue = true, name, id, className, popupClassName, open, defaultOpen, onOpenChange }) {
|
|
48
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue ?? FALLBACK_COLOR);
|
|
49
|
+
const current = value ?? uncontrolled;
|
|
50
|
+
const outputFormat = format ?? detectColorFormat(current);
|
|
51
|
+
const [color, setColor] = React.useState(() => toHsb(current));
|
|
52
|
+
const emitted = React.useRef(null);
|
|
53
|
+
React.useEffect(() => {
|
|
54
|
+
if (current === emitted.current) return;
|
|
55
|
+
setColor(toHsb(current));
|
|
56
|
+
}, [current]);
|
|
57
|
+
const [draft, setDraft] = React.useState(current);
|
|
58
|
+
const [draftInvalid, setDraftInvalid] = React.useState(false);
|
|
59
|
+
React.useEffect(() => {
|
|
60
|
+
setDraft(current);
|
|
61
|
+
setDraftInvalid(false);
|
|
62
|
+
}, [current]);
|
|
63
|
+
const [hasEyeDropper, setHasEyeDropper] = React.useState(false);
|
|
64
|
+
React.useEffect(() => {
|
|
65
|
+
setHasEyeDropper(typeof window !== "undefined" && "EyeDropper" in window);
|
|
66
|
+
}, []);
|
|
67
|
+
const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen ?? false);
|
|
68
|
+
const isOpen = open ?? uncontrolledOpen;
|
|
69
|
+
const setOpen = (next) => {
|
|
70
|
+
if (open === void 0) setUncontrolledOpen(next);
|
|
71
|
+
onOpenChange?.(next);
|
|
72
|
+
};
|
|
73
|
+
const applyColor = (next) => {
|
|
74
|
+
setColor(next);
|
|
75
|
+
const hex = next.toString(alpha ? "hexa" : "hex");
|
|
76
|
+
const out = formatColorString(hex, outputFormat) ?? hex;
|
|
77
|
+
emitted.current = out;
|
|
78
|
+
if (value === void 0) setUncontrolled(out);
|
|
79
|
+
onValueChange?.(out);
|
|
80
|
+
};
|
|
81
|
+
const applyString = (next) => {
|
|
82
|
+
const hex = toHexString(next);
|
|
83
|
+
if (hex === null) {
|
|
84
|
+
setDraftInvalid(true);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
setDraftInvalid(false);
|
|
88
|
+
applyColor(parseColor(hex).toFormat("hsb"));
|
|
89
|
+
};
|
|
90
|
+
const pickFromScreen = () => {
|
|
91
|
+
const EyeDropper = globalThis.EyeDropper;
|
|
92
|
+
if (EyeDropper === void 0) return;
|
|
93
|
+
new EyeDropper().open().then((result) => applyString(result.sRGBHex)).catch(() => {});
|
|
94
|
+
};
|
|
95
|
+
return /* @__PURE__ */ jsxs(Popover.Root, {
|
|
96
|
+
open: isOpen,
|
|
97
|
+
onOpenChange: setOpen,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsxs(Popover.Trigger, {
|
|
100
|
+
render: /* @__PURE__ */ jsx("button", {
|
|
101
|
+
type: "button",
|
|
102
|
+
id,
|
|
103
|
+
disabled,
|
|
104
|
+
"aria-label": label,
|
|
105
|
+
"data-slot": "color-picker-trigger",
|
|
106
|
+
className: cn(controlVariants({ size }), "flex w-auto cursor-pointer items-center gap-(--cue-space-2) text-left", className)
|
|
107
|
+
}),
|
|
108
|
+
children: [/* @__PURE__ */ jsx(ColorSwatch$1, {
|
|
109
|
+
color,
|
|
110
|
+
size: "sm"
|
|
111
|
+
}), showValue ? /* @__PURE__ */ jsx("span", {
|
|
112
|
+
className: "truncate tabular-nums",
|
|
113
|
+
children: current
|
|
114
|
+
}) : null]
|
|
115
|
+
}),
|
|
116
|
+
/* @__PURE__ */ jsxs(Popover.Content, {
|
|
117
|
+
className: cn("w-[14rem] gap-(--cue-space-3) p-(--cue-space-3)", popupClassName),
|
|
118
|
+
align: "start",
|
|
119
|
+
"data-slot": "color-picker-popup",
|
|
120
|
+
children: [
|
|
121
|
+
/* @__PURE__ */ jsx(ColorArea$1, {
|
|
122
|
+
"aria-label": "Saturation and brightness",
|
|
123
|
+
xChannel: "saturation",
|
|
124
|
+
yChannel: "brightness",
|
|
125
|
+
value: color,
|
|
126
|
+
onChange: applyColor
|
|
127
|
+
}),
|
|
128
|
+
/* @__PURE__ */ jsxs("div", {
|
|
129
|
+
className: "flex items-center gap-(--cue-space-2)",
|
|
130
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
131
|
+
className: "flex min-w-0 flex-1 flex-col gap-(--cue-space-2)",
|
|
132
|
+
children: [/* @__PURE__ */ jsx(ColorSlider$1, {
|
|
133
|
+
"aria-label": "Hue",
|
|
134
|
+
channel: "hue",
|
|
135
|
+
value: color,
|
|
136
|
+
onChange: applyColor
|
|
137
|
+
}), alpha ? /* @__PURE__ */ jsx(ColorSlider$1, {
|
|
138
|
+
"aria-label": "Alpha",
|
|
139
|
+
channel: "alpha",
|
|
140
|
+
value: color,
|
|
141
|
+
onChange: applyColor
|
|
142
|
+
}) : null]
|
|
143
|
+
}), hasEyeDropper ? /* @__PURE__ */ jsx(IconButton, {
|
|
144
|
+
"aria-label": "Pick a color from the screen",
|
|
145
|
+
icon: EyedropperGlyph,
|
|
146
|
+
size: "sm",
|
|
147
|
+
onClick: pickFromScreen
|
|
148
|
+
}) : null]
|
|
149
|
+
}),
|
|
150
|
+
/* @__PURE__ */ jsx("input", {
|
|
151
|
+
type: "text",
|
|
152
|
+
"aria-label": "Color value",
|
|
153
|
+
"aria-invalid": draftInvalid ? "true" : void 0,
|
|
154
|
+
spellCheck: false,
|
|
155
|
+
autoComplete: "off",
|
|
156
|
+
"data-slot": "color-picker-value",
|
|
157
|
+
className: cn(controlVariants({ size: "sm" }), "font-mono"),
|
|
158
|
+
value: draft,
|
|
159
|
+
onChange: (event) => setDraft(event.target.value),
|
|
160
|
+
onBlur: () => applyString(draft),
|
|
161
|
+
onKeyDown: (event) => {
|
|
162
|
+
if (event.key !== "Enter") return;
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
applyString(draft);
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
]
|
|
168
|
+
}),
|
|
169
|
+
name === void 0 ? null : /* @__PURE__ */ jsx("input", {
|
|
170
|
+
type: "hidden",
|
|
171
|
+
name,
|
|
172
|
+
value: current
|
|
173
|
+
})
|
|
174
|
+
]
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
//#endregion
|
|
178
|
+
export { ColorPicker };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ColorSliderProps } from "react-aria-components";
|
|
3
|
+
//#region src/color/color-slider.d.ts
|
|
4
|
+
interface ColorSliderProps$1 extends Omit<ColorSliderProps, "children"> {
|
|
5
|
+
/** Extra classes for the frame around the track. */
|
|
6
|
+
frameClassName?: string;
|
|
7
|
+
/** Extra classes for the gradient track. */
|
|
8
|
+
trackClassName?: string;
|
|
9
|
+
/** Extra classes for the thumb. */
|
|
10
|
+
thumbClassName?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* One channel of a colour, as a rail: hue, alpha, lightness, a single RGB
|
|
14
|
+
* channel.
|
|
15
|
+
*
|
|
16
|
+
* Wraps React Aria's `ColorSlider`, which paints the channel's gradient and
|
|
17
|
+
* owns the keyboard and pointer behaviour. The alpha channel gets the
|
|
18
|
+
* transparency checkerboard — without it, "half transparent" and "half grey"
|
|
19
|
+
* are the same picture. It goes on the frame rather than the track because
|
|
20
|
+
* React Aria writes the gradient into the track's inline `background`, which
|
|
21
|
+
* would paint straight over a checkerboard set by a class.
|
|
22
|
+
*
|
|
23
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
24
|
+
* `@cueplusplus/ui/color`.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* <ColorSlider aria-label="Hue" channel="hue" value={color} onChange={setColor} />
|
|
28
|
+
*/
|
|
29
|
+
declare function ColorSlider$1({ className, frameClassName, trackClassName, thumbClassName, channel, value, defaultValue, ...sliderProps }: ColorSliderProps$1): React.JSX.Element;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { ColorSlider$1 as ColorSlider, ColorSliderProps$1 as ColorSliderProps };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { ariaClassName } from "../lib/aria-class.js";
|
|
4
|
+
import { colorThumbClasses } from "./_thumb.js";
|
|
5
|
+
import { toAriaColor } from "./_value.js";
|
|
6
|
+
import "./_checker.js";
|
|
7
|
+
import "react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
import { ColorSlider, ColorThumb, SliderTrack } from "react-aria-components";
|
|
10
|
+
//#region src/color/color-slider.tsx
|
|
11
|
+
/**
|
|
12
|
+
* One channel of a colour, as a rail: hue, alpha, lightness, a single RGB
|
|
13
|
+
* channel.
|
|
14
|
+
*
|
|
15
|
+
* Wraps React Aria's `ColorSlider`, which paints the channel's gradient and
|
|
16
|
+
* owns the keyboard and pointer behaviour. The alpha channel gets the
|
|
17
|
+
* transparency checkerboard — without it, "half transparent" and "half grey"
|
|
18
|
+
* are the same picture. It goes on the frame rather than the track because
|
|
19
|
+
* React Aria writes the gradient into the track's inline `background`, which
|
|
20
|
+
* would paint straight over a checkerboard set by a class.
|
|
21
|
+
*
|
|
22
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
23
|
+
* `@cueplusplus/ui/color`.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* <ColorSlider aria-label="Hue" channel="hue" value={color} onChange={setColor} />
|
|
27
|
+
*/
|
|
28
|
+
function ColorSlider$1({ className, frameClassName, trackClassName, thumbClassName, channel, value, defaultValue, ...sliderProps }) {
|
|
29
|
+
return /* @__PURE__ */ jsx(ColorSlider, {
|
|
30
|
+
"data-slot": "color-slider",
|
|
31
|
+
channel,
|
|
32
|
+
className: ariaClassName("w-full touch-none data-[disabled]:opacity-40", className),
|
|
33
|
+
value: toAriaColor(value),
|
|
34
|
+
defaultValue: toAriaColor(defaultValue),
|
|
35
|
+
...sliderProps,
|
|
36
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
37
|
+
"data-slot": "color-slider-frame",
|
|
38
|
+
className: cn("relative rounded-full border border-border", channel === "alpha" && "bg-[repeating-conic-gradient(var(--cue-surface-3)_0%_25%,var(--cue-surface-1)_0%_50%)] bg-[length:0.5rem_0.5rem]", frameClassName),
|
|
39
|
+
children: /* @__PURE__ */ jsx(SliderTrack, {
|
|
40
|
+
"data-slot": "color-slider-track",
|
|
41
|
+
className: ariaClassName("relative h-icon-sm w-full rounded-full", trackClassName),
|
|
42
|
+
children: /* @__PURE__ */ jsx(ColorThumb, {
|
|
43
|
+
"data-slot": "color-thumb",
|
|
44
|
+
className: ariaClassName(cn(colorThumbClasses, "top-1/2"), thumbClassName)
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { ColorSlider$1 as ColorSlider };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ColorSwatchProps } from "react-aria-components";
|
|
3
|
+
//#region src/color/color-swatch.d.ts
|
|
4
|
+
/** Rung of the icon ladder a swatch sits on. */
|
|
5
|
+
type ColorSwatchSize = "sm" | "md" | "lg";
|
|
6
|
+
interface ColorSwatchProps$1 extends Omit<ColorSwatchProps, "className"> {
|
|
7
|
+
/** Rung of the icon ladder. Defaults to `"md"`. */
|
|
8
|
+
size?: ColorSwatchSize;
|
|
9
|
+
/** Extra classes for the frame. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A colour, shown as a chip.
|
|
14
|
+
*
|
|
15
|
+
* Two elements rather than one: the frame carries the rim, the radius and the
|
|
16
|
+
* transparency checkerboard, and React Aria's `ColorSwatch` paints the colour
|
|
17
|
+
* on top of it. One element cannot do both — the library writes the colour into
|
|
18
|
+
* the inline `background-color`, which paints *behind* a background image, so a
|
|
19
|
+
* checkerboard set on the same element would cover the colour instead of
|
|
20
|
+
* backing it.
|
|
21
|
+
*
|
|
22
|
+
* Takes any notation this suite reads, `oklch()` included.
|
|
23
|
+
*
|
|
24
|
+
* `react-aria-components` is an **optional peer**: import this from
|
|
25
|
+
* `@cueplusplus/ui/color`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* <ColorSwatch color="oklch(0.7 0.15 30)" />
|
|
29
|
+
*/
|
|
30
|
+
declare function ColorSwatch$1({ size, className, color, ...swatchProps }: ColorSwatchProps$1): React.JSX.Element;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { ColorSwatch$1 as ColorSwatch, ColorSwatchProps$1 as ColorSwatchProps, ColorSwatchSize };
|