@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,108 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { BaseEdge, getBezierPath } from "@xyflow/react";
|
|
4
|
+
//#region src/flow/signal-edge.tsx
|
|
5
|
+
const TONE_COLORS = {
|
|
6
|
+
accent: "var(--cue-accent)",
|
|
7
|
+
ok: "var(--cue-ok)",
|
|
8
|
+
busy: "var(--cue-busy)",
|
|
9
|
+
warn: "var(--cue-warn)",
|
|
10
|
+
danger: "var(--cue-danger)",
|
|
11
|
+
info: "var(--cue-info)"
|
|
12
|
+
};
|
|
13
|
+
/** A wire nobody has switched on. */
|
|
14
|
+
const MUTED_COLOR = "var(--cue-fg-subtle)";
|
|
15
|
+
/** Selection is the loudest thing on the canvas, and it is never a hue. */
|
|
16
|
+
const SELECTED_COLOR = "var(--cue-fg)";
|
|
17
|
+
/**
|
|
18
|
+
* The class the animated overlay carries.
|
|
19
|
+
*
|
|
20
|
+
* `flow.css` owns its `@keyframes` and its reduced-motion switch; the dash
|
|
21
|
+
* pattern itself is inline, so an app that never imported the stylesheet still
|
|
22
|
+
* gets a legible dashed highlight instead of a mystery second line.
|
|
23
|
+
*/
|
|
24
|
+
const SIGNAL_EDGE_FLOW_CLASS = "cue-signal-flow";
|
|
25
|
+
/**
|
|
26
|
+
* Width of the invisible path the pointer actually hits, in px.
|
|
27
|
+
*
|
|
28
|
+
* A 1.6px wire is a nearly impossible click target and an outright impossible
|
|
29
|
+
* touch target. The library's own default is 20; 16 is the port's, and it is
|
|
30
|
+
* wide enough without swallowing the gap between two parallel wires.
|
|
31
|
+
*/
|
|
32
|
+
const SIGNAL_EDGE_INTERACTION_WIDTH = 16;
|
|
33
|
+
/** The dash and gap of the flowing overlay, in px. */
|
|
34
|
+
const FLOW_DASH = "3 8";
|
|
35
|
+
/** A pale mix of the wire's own colour: the same signal, not a second one. */
|
|
36
|
+
function flowHighlight(stroke) {
|
|
37
|
+
return `color-mix(in oklch, ${stroke} 55%, var(--cue-fg))`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A wire between two nodes, drawn as three paths.
|
|
41
|
+
*
|
|
42
|
+
* 1. **The wire.** A bezier in the tone's colour, thin and half-lit at rest.
|
|
43
|
+
* 2. **The hit path.** Sixteen invisible pixels of it, because nobody can click
|
|
44
|
+
* 1.6px. `BaseEdge` draws this one, and the edge label, for free.
|
|
45
|
+
* 3. **The pulse.** Only while `data.live` — a pale dashed overlay of the same
|
|
46
|
+
* colour, marching along the wire. This is the only animation in the group,
|
|
47
|
+
* it carries no information the opacity does not, and `flow.css` stops it
|
|
48
|
+
* dead under `prefers-reduced-motion`.
|
|
49
|
+
*
|
|
50
|
+
* State is read from props rather than from a store on purpose: an edge that
|
|
51
|
+
* subscribed to "is this route live" would re-render on every frame of a 40Hz
|
|
52
|
+
* telemetry feed, times the number of edges. The host decides when the answer
|
|
53
|
+
* changed; this component only draws it. It also means the component is a pure
|
|
54
|
+
* function of its props — no hooks, no context, no canvas needed to test it.
|
|
55
|
+
*
|
|
56
|
+
* Selection outranks everything, including the pulse: two loud treatments on one
|
|
57
|
+
* wire read as neither.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* const edges = [{ id: "r1", source: "s1", target: "m1", type: "signal", data: { live: true } }];
|
|
61
|
+
* <ReactFlow edges={edges} edgeTypes={theme.edgeTypes} />
|
|
62
|
+
*/
|
|
63
|
+
function SignalEdge({ id, sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, selected, data, style, markerStart, markerEnd, interactionWidth = 16, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius }) {
|
|
64
|
+
const [path, labelX, labelY] = getBezierPath({
|
|
65
|
+
sourceX,
|
|
66
|
+
sourceY,
|
|
67
|
+
sourcePosition,
|
|
68
|
+
targetX,
|
|
69
|
+
targetY,
|
|
70
|
+
targetPosition
|
|
71
|
+
});
|
|
72
|
+
const muted = data?.muted === true;
|
|
73
|
+
const live = data?.live === true && !muted && selected !== true;
|
|
74
|
+
const stroke = selected === true ? SELECTED_COLOR : muted ? MUTED_COLOR : TONE_COLORS[data?.tone ?? "accent"];
|
|
75
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(BaseEdge, {
|
|
76
|
+
id,
|
|
77
|
+
path,
|
|
78
|
+
markerStart,
|
|
79
|
+
markerEnd,
|
|
80
|
+
interactionWidth,
|
|
81
|
+
label,
|
|
82
|
+
labelX,
|
|
83
|
+
labelY,
|
|
84
|
+
labelStyle,
|
|
85
|
+
labelShowBg,
|
|
86
|
+
labelBgStyle,
|
|
87
|
+
labelBgPadding,
|
|
88
|
+
labelBgBorderRadius,
|
|
89
|
+
style: {
|
|
90
|
+
stroke,
|
|
91
|
+
strokeWidth: selected === true ? 2.4 : muted ? 1 : 1.6,
|
|
92
|
+
opacity: selected === true || live ? 1 : muted ? .4 : .6,
|
|
93
|
+
...style
|
|
94
|
+
}
|
|
95
|
+
}), live ? /* @__PURE__ */ jsx("path", {
|
|
96
|
+
d: path,
|
|
97
|
+
fill: "none",
|
|
98
|
+
pointerEvents: "none",
|
|
99
|
+
className: SIGNAL_EDGE_FLOW_CLASS,
|
|
100
|
+
style: {
|
|
101
|
+
stroke: flowHighlight(stroke),
|
|
102
|
+
strokeWidth: 1.9,
|
|
103
|
+
strokeDasharray: FLOW_DASH
|
|
104
|
+
}
|
|
105
|
+
}) : null] });
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { SIGNAL_EDGE_FLOW_CLASS, SIGNAL_EDGE_INTERACTION_WIDTH, SignalEdge };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ResolvedMode } from "../system/theme-provider.js";
|
|
2
|
+
import { FlowNodeTone } from "./_frame.js";
|
|
3
|
+
import { SignalEdge } from "./signal-edge.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
//#region src/flow/use-flow-theme.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* React Flow paints its own chrome — edges, handles, controls, the minimap, the
|
|
8
|
+
* selection box — from a documented set of `--xy-*` custom properties, each one
|
|
9
|
+
* consulted before the library's built-in default. Mapping that set onto this
|
|
10
|
+
* system's tokens is the whole theme: no wrapper components, no props threaded
|
|
11
|
+
* through a graph, and a theme, mode or density switch that costs nothing
|
|
12
|
+
* because every value is a *reference*, re-resolved by the browser.
|
|
13
|
+
*
|
|
14
|
+
* The map is published two ways, and they are checked against each other
|
|
15
|
+
* (`test/flow/flow-css.test.ts`):
|
|
16
|
+
*
|
|
17
|
+
* - as this object, to spread on the canvas: `<ReactFlow style={theme.style}>`;
|
|
18
|
+
* - as the `.react-flow` block of `flow.css`, for apps that would rather import
|
|
19
|
+
* a stylesheet than thread a prop.
|
|
20
|
+
*
|
|
21
|
+
* Either is enough. Both is harmless.
|
|
22
|
+
*/
|
|
23
|
+
declare const FLOW_THEME_VARIABLES: Readonly<Record<string, string>>;
|
|
24
|
+
interface FlowTheme {
|
|
25
|
+
/**
|
|
26
|
+
* The resolved mode, for `<ReactFlow colorMode>`.
|
|
27
|
+
*
|
|
28
|
+
* Only a fallback: with {@link FlowTheme.style} spread (or `flow.css`
|
|
29
|
+
* imported) every value the library would pick from its own light/dark
|
|
30
|
+
* defaults has already been overridden. It costs one prop to be right anyway
|
|
31
|
+
* for the one that has not.
|
|
32
|
+
*/
|
|
33
|
+
colorMode: ResolvedMode;
|
|
34
|
+
/** The `--xy-*` token map. Spread on `<ReactFlow style>`. */
|
|
35
|
+
style: Readonly<Record<string, string>>;
|
|
36
|
+
/** `{ signal: SignalEdge }`, stable across renders. */
|
|
37
|
+
edgeTypes: Readonly<Record<"signal", typeof SignalEdge>>;
|
|
38
|
+
/** `{ type: "signal", interactionWidth }`, stable across renders. */
|
|
39
|
+
defaultEdgeOptions: Readonly<{
|
|
40
|
+
type: "signal";
|
|
41
|
+
interactionWidth: number;
|
|
42
|
+
}>;
|
|
43
|
+
/** Frame colour per node kind, for a node's own `style`. */
|
|
44
|
+
nodeStyles: Readonly<Record<FlowNodeTone, React.CSSProperties>>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Everything a `<ReactFlow>` needs to look like it belongs to this system.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* const theme = useFlowTheme();
|
|
51
|
+
* <ReactFlow
|
|
52
|
+
* nodes={nodes}
|
|
53
|
+
* edges={edges}
|
|
54
|
+
* nodeTypes={nodeTypes}
|
|
55
|
+
* edgeTypes={theme.edgeTypes}
|
|
56
|
+
* defaultEdgeOptions={theme.defaultEdgeOptions}
|
|
57
|
+
* colorMode={theme.colorMode}
|
|
58
|
+
* style={theme.style}
|
|
59
|
+
* >
|
|
60
|
+
* <FlowBackground />
|
|
61
|
+
* <FlowControls />
|
|
62
|
+
* </ReactFlow>
|
|
63
|
+
* @example
|
|
64
|
+
* // Colour a whole class of nodes at once — the cards inherit the frame.
|
|
65
|
+
* const nodes = inputs.map((input) => ({ ...input, style: theme.nodeStyles.input }));
|
|
66
|
+
*/
|
|
67
|
+
declare function useFlowTheme(): FlowTheme;
|
|
68
|
+
//#endregion
|
|
69
|
+
export { FLOW_THEME_VARIABLES, FlowTheme, useFlowTheme };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ThemeContext } from "../system/theme-provider.js";
|
|
3
|
+
import { FLOW_NODE_FRAME_PROPERTY, flowFrameColor } from "./_frame.js";
|
|
4
|
+
import { SignalEdge } from "./signal-edge.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
//#region src/flow/use-flow-theme.ts
|
|
7
|
+
/**
|
|
8
|
+
* React Flow paints its own chrome — edges, handles, controls, the minimap, the
|
|
9
|
+
* selection box — from a documented set of `--xy-*` custom properties, each one
|
|
10
|
+
* consulted before the library's built-in default. Mapping that set onto this
|
|
11
|
+
* system's tokens is the whole theme: no wrapper components, no props threaded
|
|
12
|
+
* through a graph, and a theme, mode or density switch that costs nothing
|
|
13
|
+
* because every value is a *reference*, re-resolved by the browser.
|
|
14
|
+
*
|
|
15
|
+
* The map is published two ways, and they are checked against each other
|
|
16
|
+
* (`test/flow/flow-css.test.ts`):
|
|
17
|
+
*
|
|
18
|
+
* - as this object, to spread on the canvas: `<ReactFlow style={theme.style}>`;
|
|
19
|
+
* - as the `.react-flow` block of `flow.css`, for apps that would rather import
|
|
20
|
+
* a stylesheet than thread a prop.
|
|
21
|
+
*
|
|
22
|
+
* Either is enough. Both is harmless.
|
|
23
|
+
*/
|
|
24
|
+
const FLOW_THEME_VARIABLES = Object.freeze({
|
|
25
|
+
"--xy-background-color": "var(--cue-bg)",
|
|
26
|
+
"--xy-background-pattern-color": "var(--cue-surface-2)",
|
|
27
|
+
"--xy-edge-stroke": "var(--cue-border-strong)",
|
|
28
|
+
"--xy-edge-stroke-width": "1.5",
|
|
29
|
+
"--xy-edge-stroke-selected": "var(--cue-fg)",
|
|
30
|
+
"--xy-connectionline-stroke": "var(--cue-accent)",
|
|
31
|
+
"--xy-connectionline-stroke-width": "1.5",
|
|
32
|
+
"--xy-edge-label-background-color": "var(--cue-surface-2)",
|
|
33
|
+
"--xy-edge-label-color": "var(--cue-fg)",
|
|
34
|
+
"--xy-handle-background-color": "var(--cue-accent)",
|
|
35
|
+
"--xy-handle-border-color": "var(--cue-bg)",
|
|
36
|
+
"--xy-node-background-color": "var(--cue-surface-1)",
|
|
37
|
+
"--xy-node-border": "1px solid var(--cue-border)",
|
|
38
|
+
"--xy-node-border-radius": "var(--cue-radius-surface)",
|
|
39
|
+
"--xy-node-color": "var(--cue-fg)",
|
|
40
|
+
"--xy-node-group-background-color": "var(--cue-surface-2)",
|
|
41
|
+
"--xy-node-boxshadow-hover": "0 0 0 1px var(--cue-border-strong)",
|
|
42
|
+
"--xy-node-boxshadow-selected": "0 0 0 1px var(--cue-fg)",
|
|
43
|
+
"--xy-controls-button-background-color": "var(--cue-surface-2)",
|
|
44
|
+
"--xy-controls-button-background-color-hover": "var(--cue-surface-3)",
|
|
45
|
+
"--xy-controls-button-color": "var(--cue-fg-muted)",
|
|
46
|
+
"--xy-controls-button-color-hover": "var(--cue-accent)",
|
|
47
|
+
"--xy-controls-button-border-color": "var(--cue-border)",
|
|
48
|
+
"--xy-controls-box-shadow": "0 8px 24px rgba(0, 0, 0, 0.4)",
|
|
49
|
+
"--xy-minimap-background-color": "var(--cue-surface-1)",
|
|
50
|
+
"--xy-minimap-mask-background-color": "color-mix(in oklch, var(--cue-bg) 70%, transparent)",
|
|
51
|
+
"--xy-minimap-mask-stroke-color": "var(--cue-border)",
|
|
52
|
+
"--xy-minimap-node-background-color": "var(--cue-surface-3)",
|
|
53
|
+
"--xy-minimap-node-stroke-color": "var(--cue-border)",
|
|
54
|
+
"--xy-selection-background-color": "var(--cue-accent-soft)",
|
|
55
|
+
"--xy-selection-border": "1px dashed var(--cue-accent)",
|
|
56
|
+
"--xy-resize-background-color": "var(--cue-accent)",
|
|
57
|
+
"--xy-attribution-background-color": "color-mix(in oklch, var(--cue-bg) 70%, transparent)"
|
|
58
|
+
});
|
|
59
|
+
/** Frame colour per node kind, ready to put on a React Flow node's `style`. */
|
|
60
|
+
const NODE_STYLES = Object.freeze({
|
|
61
|
+
input: { [FLOW_NODE_FRAME_PROPERTY]: flowFrameColor("input") },
|
|
62
|
+
output: { [FLOW_NODE_FRAME_PROPERTY]: flowFrameColor("output") },
|
|
63
|
+
processing: { [FLOW_NODE_FRAME_PROPERTY]: flowFrameColor("processing") }
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* `edgeTypes` for `<ReactFlow>`.
|
|
67
|
+
*
|
|
68
|
+
* A module constant, not a fresh object: React Flow re-registers every edge when
|
|
69
|
+
* this changes identity, and warns in the console about exactly this mistake.
|
|
70
|
+
*/
|
|
71
|
+
const EDGE_TYPES = Object.freeze({ signal: SignalEdge });
|
|
72
|
+
/** `defaultEdgeOptions`: every edge is a signal edge unless it says otherwise. */
|
|
73
|
+
const DEFAULT_EDGE_OPTIONS = Object.freeze({
|
|
74
|
+
type: "signal",
|
|
75
|
+
interactionWidth: 16
|
|
76
|
+
});
|
|
77
|
+
/**
|
|
78
|
+
* Everything a `<ReactFlow>` needs to look like it belongs to this system.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* const theme = useFlowTheme();
|
|
82
|
+
* <ReactFlow
|
|
83
|
+
* nodes={nodes}
|
|
84
|
+
* edges={edges}
|
|
85
|
+
* nodeTypes={nodeTypes}
|
|
86
|
+
* edgeTypes={theme.edgeTypes}
|
|
87
|
+
* defaultEdgeOptions={theme.defaultEdgeOptions}
|
|
88
|
+
* colorMode={theme.colorMode}
|
|
89
|
+
* style={theme.style}
|
|
90
|
+
* >
|
|
91
|
+
* <FlowBackground />
|
|
92
|
+
* <FlowControls />
|
|
93
|
+
* </ReactFlow>
|
|
94
|
+
* @example
|
|
95
|
+
* // Colour a whole class of nodes at once — the cards inherit the frame.
|
|
96
|
+
* const nodes = inputs.map((input) => ({ ...input, style: theme.nodeStyles.input }));
|
|
97
|
+
*/
|
|
98
|
+
function useFlowTheme() {
|
|
99
|
+
const colorMode = React.useContext(ThemeContext)?.resolvedMode ?? "dark";
|
|
100
|
+
return React.useMemo(() => ({
|
|
101
|
+
colorMode,
|
|
102
|
+
style: FLOW_THEME_VARIABLES,
|
|
103
|
+
edgeTypes: EDGE_TYPES,
|
|
104
|
+
defaultEdgeOptions: DEFAULT_EDGE_OPTIONS,
|
|
105
|
+
nodeStyles: NODE_STYLES
|
|
106
|
+
}), [colorMode]);
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
export { FLOW_THEME_VARIABLES, useFlowTheme };
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { ClassProp, VariantProps } from "../lib/cva.js";
|
|
2
|
+
//#region src/forms/_chassis.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The rung of the density control ladder a form control sits on.
|
|
5
|
+
*
|
|
6
|
+
* Named `FormControlSize` rather than `ControlSize` because
|
|
7
|
+
* `@cueplusplus/ui/system` already exports a `ControlSize` for
|
|
8
|
+
* `useControlHeight`, and the root barrel re-exports both.
|
|
9
|
+
*/
|
|
10
|
+
type FormControlSize = "sm" | "md" | "lg";
|
|
11
|
+
/**
|
|
12
|
+
* Everything the recessed control chassis paints except the box itself.
|
|
13
|
+
*
|
|
14
|
+
* Split out from the size rung so controls that own their own geometry — a
|
|
15
|
+
* `<textarea>` that must grow, a `NumberField.Group` that packs two buttons and
|
|
16
|
+
* an input into one rim — can reuse the surface without fighting a height or a
|
|
17
|
+
* horizontal padding they do not want.
|
|
18
|
+
*
|
|
19
|
+
* Inputs are **recessed**: `bg-sunken` sets them *into* the panel rather than
|
|
20
|
+
* raising them off it, which is the portfolio-wide convention for anything the
|
|
21
|
+
* user types into.
|
|
22
|
+
*
|
|
23
|
+
* **Focus is one signal, not two.** The rim walks one rung up the border ladder
|
|
24
|
+
* on `:focus` — `border-border` to `border-border-strong` — and `:focus-visible`
|
|
25
|
+
* adds a single 2px outline, pulled back over that rim with
|
|
26
|
+
* `-outline-offset-1` so it sits flush against the control instead of floating
|
|
27
|
+
* a pixel clear of it. The recipe this replaced painted a saturated accent rim
|
|
28
|
+
* *and* an offset accent ring simultaneously, which in a dark, dense console
|
|
29
|
+
* reads as an error or a selection rather than as "the caret is here". No
|
|
30
|
+
* shipping system draws both: Carbon and Radix each draw one flush ring, and
|
|
31
|
+
* shadcn moved off the offset-ring default it used to ship.
|
|
32
|
+
*
|
|
33
|
+
* Flush is also the cheap way to stay correct. WCAG 2.4.13 accepts a 2px
|
|
34
|
+
* perimeter only when it touches the component's own outer edge; an indicator
|
|
35
|
+
* inset further, floating on a gap, has to be 3px thick to cover the same area.
|
|
36
|
+
* And because an outline is painted outside the layout box, none of this moves
|
|
37
|
+
* a control by a pixel or reflows the row it sits in.
|
|
38
|
+
*
|
|
39
|
+
* There is no quieter pointer path to fall back on, which is why the single
|
|
40
|
+
* treatment has to be quiet itself: every engine puts typing surfaces on the
|
|
41
|
+
* `:focus-visible` allowlist, so a text input matches it on a mouse click just
|
|
42
|
+
* as it does on Tab. Only the non-typing controls that ride this chassis — the
|
|
43
|
+
* `Select` trigger, the date triggers — actually distinguish the two.
|
|
44
|
+
*
|
|
45
|
+
* `--cue-focus`, not `--cue-accent`. Every theme ships both roles, and keeping
|
|
46
|
+
* them separable is what WCAG 1.4.11 needs: one role whose job is "read at 3:1
|
|
47
|
+
* against the surface behind the ring", independent of the role whose job is
|
|
48
|
+
* "look like the brand". Seventeen of the twenty theme blocks still set the two
|
|
49
|
+
* to the same value, so there the separation costs nothing on screen — but three
|
|
50
|
+
* light presets can no longer afford it. luma.light, venu.light and hivehub.light
|
|
51
|
+
* each read below 3:1 against surfaces a field actually sits on (luma.light as
|
|
52
|
+
* low as 2.45, and against four of its five grounds), so each now carries its
|
|
53
|
+
* own ring — the accent's hue stepped darker — while the accent itself stays
|
|
54
|
+
* put. Measured across all five grounds a field can land on — the sunken fill,
|
|
55
|
+
* the page background and the three surface rungs — every preset now clears
|
|
56
|
+
* 3:1, the thinnest being signal.light's 3.27. Pointing the ring at the focus
|
|
57
|
+
* role is what made that retune possible without repainting every accent
|
|
58
|
+
* surface in the theme.
|
|
59
|
+
*
|
|
60
|
+
* (Named in prose rather than as `--cue-*` on purpose: `tokensUsed` in the
|
|
61
|
+
* published manifest is scanned out of this file's text, so spelling the other
|
|
62
|
+
* four grounds as tokens would have every control on this chassis claim it
|
|
63
|
+
* paints a surface it never touches.)
|
|
64
|
+
*
|
|
65
|
+
* `--cue-danger` carries the same obligation on an invalid field, where it is
|
|
66
|
+
* the ring rather than only the rim — a 1.4.11 surface, not purely a semantic
|
|
67
|
+
* colour. It needed no retune: the red already clears 3:1 on all five grounds in
|
|
68
|
+
* every preset, thinnest at terminal.dark's 3.13. Both floors are held by
|
|
69
|
+
* `test/theming/contrast.test.ts`, which measures every block on every ground —
|
|
70
|
+
* the guard that was missing when these three shipped a ring nobody could see.
|
|
71
|
+
*
|
|
72
|
+
* The ring is an `outline` and never a `box-shadow`: `forced-colors: active`
|
|
73
|
+
* discards box shadows outright and repaints outlines in the user's own
|
|
74
|
+
* highlight colour, so an outline is the only indicator that survives
|
|
75
|
+
* high-contrast mode.
|
|
76
|
+
*
|
|
77
|
+
* **Invalid and focused: the ring turns red, it does not sit beside the rim.**
|
|
78
|
+
* `data-[invalid]:border-danger` does win the cascade over the focus rim, but
|
|
79
|
+
* winning it changes nothing on screen: an outline's band runs from
|
|
80
|
+
* `border-edge + offset` outward by its own width, so a 2px ring at
|
|
81
|
+
* `-outline-offset-1` spans from one pixel inside the border box to one pixel
|
|
82
|
+
* outside it — the whole 1px rim — and outlines paint after borders. Measured
|
|
83
|
+
* in both engines: an invalid control paints 456 danger pixels at rest and zero
|
|
84
|
+
* while focused. Pushing the ring off the rim would mean either floating it on
|
|
85
|
+
* a gap (WCAG 2.4.13 then wants 3px, and the halo is back) or insetting it
|
|
86
|
+
* further (which buries it deeper). So the ring takes the danger colour instead
|
|
87
|
+
* — `data-[invalid]:focus-visible:outline-danger` — which is the ruling shadcn
|
|
88
|
+
* and Radix both reached: the border stays danger, the ring communicates focus,
|
|
89
|
+
* and red communicates invalid whichever of the two is painting.
|
|
90
|
+
*
|
|
91
|
+
* The compound modifier outranks the plain one on specificity — an attribute
|
|
92
|
+
* selector and a pseudo-class against one pseudo-class — so its position in
|
|
93
|
+
* Tailwind's utility order cannot decide it. `focus-visible:outline-solid` and
|
|
94
|
+
* `focus-visible:outline-2` still supply the style and the width in both cases,
|
|
95
|
+
* which is why only the colour is restated.
|
|
96
|
+
*
|
|
97
|
+
* `focus-visible:outline-solid` re-declares the outline style the sibling
|
|
98
|
+
* `outline-none` switched off — see the note on `buttonChassis`.
|
|
99
|
+
*/
|
|
100
|
+
declare const controlSurface = "w-full rounded-(--radius-control) border border-border bg-sunken font-mono text-fg placeholder:text-fg-subtle outline-none focus:border-border-strong focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-1 focus-visible:outline-(--cue-focus) disabled:opacity-40 data-[disabled]:opacity-40 data-[invalid]:border-danger data-[invalid]:focus-visible:outline-danger";
|
|
101
|
+
/**
|
|
102
|
+
* The full recessed-control recipe, one variant per rung of the control ladder.
|
|
103
|
+
*
|
|
104
|
+
* Height, horizontal padding and text size move together — a control that is
|
|
105
|
+
* one rung shorter also needs to be one rung tighter and one rung smaller, or
|
|
106
|
+
* the glyphs collide with the rim.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* <input className={cn(controlVariants({ size: "sm" }), className)} />
|
|
110
|
+
*/
|
|
111
|
+
declare const controlVariants: (props?: ({
|
|
112
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
113
|
+
} & ClassProp) | undefined) => string;
|
|
114
|
+
/** `size` prop shape shared by every control that rides the chassis. */
|
|
115
|
+
type ControlVariantProps = VariantProps<typeof controlVariants>;
|
|
116
|
+
/**
|
|
117
|
+
* The chassis at its default `md` rung — the exact class list the spec pins for
|
|
118
|
+
* a plain form control. Kept as a derived constant, never a second copy, so the
|
|
119
|
+
* recipe cannot drift from {@link controlVariants}.
|
|
120
|
+
*/
|
|
121
|
+
declare const controlClasses: string;
|
|
122
|
+
/**
|
|
123
|
+
* Ink for a control nested inside something that already paints the rim (an
|
|
124
|
+
* `InputGroup`, a `NumberField.Group`).
|
|
125
|
+
*
|
|
126
|
+
* Strips the box entirely — no border, no fill, no padding, no height — and
|
|
127
|
+
* inherits the font size from the wrapper so the two never disagree about which
|
|
128
|
+
* density rung they are on.
|
|
129
|
+
*/
|
|
130
|
+
declare const bareControlClasses = "min-w-0 flex-1 border-0 bg-transparent p-0 font-mono text-[length:inherit] text-fg placeholder:text-fg-subtle outline-none disabled:opacity-40";
|
|
131
|
+
/**
|
|
132
|
+
* Focus feedback for a wrapper that owns the rim on behalf of an inner control.
|
|
133
|
+
*
|
|
134
|
+
* A `<div>` never matches `:focus-visible` itself, so a group has to read the
|
|
135
|
+
* state off its descendants — and the two halves of {@link controlSurface}'s
|
|
136
|
+
* treatment want two different questions asked of them.
|
|
137
|
+
*
|
|
138
|
+
* The rim follows plain `:focus-within`: anything focused inside strengthens the
|
|
139
|
+
* border. That is the quiet half, and it is the right answer however the focus
|
|
140
|
+
* arrived. The ring follows `:has(:focus-visible)`, so it paints only when the
|
|
141
|
+
* descendant that has focus is itself showing a focus ring. Using
|
|
142
|
+
* `:focus-within` for *both* — the recipe this replaced — is what made a mouse
|
|
143
|
+
* click inside a `SearchInput` or a `NumberField` light the whole cluster up
|
|
144
|
+
* with a saturated block, the single loudest thing in a console form.
|
|
145
|
+
*
|
|
146
|
+
* `:has()` is Baseline — Chrome 105, Safari 15.4, Firefox 121 — so no
|
|
147
|
+
* `:focus-within` fallback layer is needed at the floor this library supports.
|
|
148
|
+
*
|
|
149
|
+
* Geometry matches {@link controlSurface} exactly, down to the negative offset:
|
|
150
|
+
* a grouped field and a plain one are the same control, and a rim that differed
|
|
151
|
+
* by a pixel between them would say otherwise. The inner control stays ringless
|
|
152
|
+
* — see {@link bareControlClasses} — because two concentric rings on one field
|
|
153
|
+
* is the halo this treatment exists to remove.
|
|
154
|
+
*
|
|
155
|
+
* The invalid ruling comes with the geometry, for the same reason: at
|
|
156
|
+
* `-outline-offset-1` the ring covers the rim it is drawn over, so an invalid
|
|
157
|
+
* group in focus recolours the ring rather than pretending the red under it is
|
|
158
|
+
* still visible. `data-invalid` is read off the wrapper, which is where Base
|
|
159
|
+
* UI's `Field` stamps it and where the group already takes
|
|
160
|
+
* `data-[invalid]:border-danger` from {@link controlVariants}.
|
|
161
|
+
*/
|
|
162
|
+
declare const controlGroupFocusClasses = "focus-within:border-border-strong has-focus-visible:outline-2 has-focus-visible:outline-solid has-focus-visible:-outline-offset-1 has-focus-visible:outline-(--cue-focus) data-[invalid]:has-focus-visible:outline-danger";
|
|
163
|
+
//#endregion
|
|
164
|
+
export { ControlVariantProps, FormControlSize, bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants };
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { cva } from "../lib/cva.js";
|
|
2
|
+
//#region src/forms/_chassis.ts
|
|
3
|
+
/**
|
|
4
|
+
* Everything the recessed control chassis paints except the box itself.
|
|
5
|
+
*
|
|
6
|
+
* Split out from the size rung so controls that own their own geometry — a
|
|
7
|
+
* `<textarea>` that must grow, a `NumberField.Group` that packs two buttons and
|
|
8
|
+
* an input into one rim — can reuse the surface without fighting a height or a
|
|
9
|
+
* horizontal padding they do not want.
|
|
10
|
+
*
|
|
11
|
+
* Inputs are **recessed**: `bg-sunken` sets them *into* the panel rather than
|
|
12
|
+
* raising them off it, which is the portfolio-wide convention for anything the
|
|
13
|
+
* user types into.
|
|
14
|
+
*
|
|
15
|
+
* **Focus is one signal, not two.** The rim walks one rung up the border ladder
|
|
16
|
+
* on `:focus` — `border-border` to `border-border-strong` — and `:focus-visible`
|
|
17
|
+
* adds a single 2px outline, pulled back over that rim with
|
|
18
|
+
* `-outline-offset-1` so it sits flush against the control instead of floating
|
|
19
|
+
* a pixel clear of it. The recipe this replaced painted a saturated accent rim
|
|
20
|
+
* *and* an offset accent ring simultaneously, which in a dark, dense console
|
|
21
|
+
* reads as an error or a selection rather than as "the caret is here". No
|
|
22
|
+
* shipping system draws both: Carbon and Radix each draw one flush ring, and
|
|
23
|
+
* shadcn moved off the offset-ring default it used to ship.
|
|
24
|
+
*
|
|
25
|
+
* Flush is also the cheap way to stay correct. WCAG 2.4.13 accepts a 2px
|
|
26
|
+
* perimeter only when it touches the component's own outer edge; an indicator
|
|
27
|
+
* inset further, floating on a gap, has to be 3px thick to cover the same area.
|
|
28
|
+
* And because an outline is painted outside the layout box, none of this moves
|
|
29
|
+
* a control by a pixel or reflows the row it sits in.
|
|
30
|
+
*
|
|
31
|
+
* There is no quieter pointer path to fall back on, which is why the single
|
|
32
|
+
* treatment has to be quiet itself: every engine puts typing surfaces on the
|
|
33
|
+
* `:focus-visible` allowlist, so a text input matches it on a mouse click just
|
|
34
|
+
* as it does on Tab. Only the non-typing controls that ride this chassis — the
|
|
35
|
+
* `Select` trigger, the date triggers — actually distinguish the two.
|
|
36
|
+
*
|
|
37
|
+
* `--cue-focus`, not `--cue-accent`. Every theme ships both roles, and keeping
|
|
38
|
+
* them separable is what WCAG 1.4.11 needs: one role whose job is "read at 3:1
|
|
39
|
+
* against the surface behind the ring", independent of the role whose job is
|
|
40
|
+
* "look like the brand". Seventeen of the twenty theme blocks still set the two
|
|
41
|
+
* to the same value, so there the separation costs nothing on screen — but three
|
|
42
|
+
* light presets can no longer afford it. luma.light, venu.light and hivehub.light
|
|
43
|
+
* each read below 3:1 against surfaces a field actually sits on (luma.light as
|
|
44
|
+
* low as 2.45, and against four of its five grounds), so each now carries its
|
|
45
|
+
* own ring — the accent's hue stepped darker — while the accent itself stays
|
|
46
|
+
* put. Measured across all five grounds a field can land on — the sunken fill,
|
|
47
|
+
* the page background and the three surface rungs — every preset now clears
|
|
48
|
+
* 3:1, the thinnest being signal.light's 3.27. Pointing the ring at the focus
|
|
49
|
+
* role is what made that retune possible without repainting every accent
|
|
50
|
+
* surface in the theme.
|
|
51
|
+
*
|
|
52
|
+
* (Named in prose rather than as `--cue-*` on purpose: `tokensUsed` in the
|
|
53
|
+
* published manifest is scanned out of this file's text, so spelling the other
|
|
54
|
+
* four grounds as tokens would have every control on this chassis claim it
|
|
55
|
+
* paints a surface it never touches.)
|
|
56
|
+
*
|
|
57
|
+
* `--cue-danger` carries the same obligation on an invalid field, where it is
|
|
58
|
+
* the ring rather than only the rim — a 1.4.11 surface, not purely a semantic
|
|
59
|
+
* colour. It needed no retune: the red already clears 3:1 on all five grounds in
|
|
60
|
+
* every preset, thinnest at terminal.dark's 3.13. Both floors are held by
|
|
61
|
+
* `test/theming/contrast.test.ts`, which measures every block on every ground —
|
|
62
|
+
* the guard that was missing when these three shipped a ring nobody could see.
|
|
63
|
+
*
|
|
64
|
+
* The ring is an `outline` and never a `box-shadow`: `forced-colors: active`
|
|
65
|
+
* discards box shadows outright and repaints outlines in the user's own
|
|
66
|
+
* highlight colour, so an outline is the only indicator that survives
|
|
67
|
+
* high-contrast mode.
|
|
68
|
+
*
|
|
69
|
+
* **Invalid and focused: the ring turns red, it does not sit beside the rim.**
|
|
70
|
+
* `data-[invalid]:border-danger` does win the cascade over the focus rim, but
|
|
71
|
+
* winning it changes nothing on screen: an outline's band runs from
|
|
72
|
+
* `border-edge + offset` outward by its own width, so a 2px ring at
|
|
73
|
+
* `-outline-offset-1` spans from one pixel inside the border box to one pixel
|
|
74
|
+
* outside it — the whole 1px rim — and outlines paint after borders. Measured
|
|
75
|
+
* in both engines: an invalid control paints 456 danger pixels at rest and zero
|
|
76
|
+
* while focused. Pushing the ring off the rim would mean either floating it on
|
|
77
|
+
* a gap (WCAG 2.4.13 then wants 3px, and the halo is back) or insetting it
|
|
78
|
+
* further (which buries it deeper). So the ring takes the danger colour instead
|
|
79
|
+
* — `data-[invalid]:focus-visible:outline-danger` — which is the ruling shadcn
|
|
80
|
+
* and Radix both reached: the border stays danger, the ring communicates focus,
|
|
81
|
+
* and red communicates invalid whichever of the two is painting.
|
|
82
|
+
*
|
|
83
|
+
* The compound modifier outranks the plain one on specificity — an attribute
|
|
84
|
+
* selector and a pseudo-class against one pseudo-class — so its position in
|
|
85
|
+
* Tailwind's utility order cannot decide it. `focus-visible:outline-solid` and
|
|
86
|
+
* `focus-visible:outline-2` still supply the style and the width in both cases,
|
|
87
|
+
* which is why only the colour is restated.
|
|
88
|
+
*
|
|
89
|
+
* `focus-visible:outline-solid` re-declares the outline style the sibling
|
|
90
|
+
* `outline-none` switched off — see the note on `buttonChassis`.
|
|
91
|
+
*/
|
|
92
|
+
const controlSurface = "w-full rounded-(--radius-control) border border-border bg-sunken font-mono text-fg placeholder:text-fg-subtle outline-none focus:border-border-strong focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-1 focus-visible:outline-(--cue-focus) disabled:opacity-40 data-[disabled]:opacity-40 data-[invalid]:border-danger data-[invalid]:focus-visible:outline-danger";
|
|
93
|
+
/**
|
|
94
|
+
* The full recessed-control recipe, one variant per rung of the control ladder.
|
|
95
|
+
*
|
|
96
|
+
* Height, horizontal padding and text size move together — a control that is
|
|
97
|
+
* one rung shorter also needs to be one rung tighter and one rung smaller, or
|
|
98
|
+
* the glyphs collide with the rim.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* <input className={cn(controlVariants({ size: "sm" }), className)} />
|
|
102
|
+
*/
|
|
103
|
+
const controlVariants = cva(controlSurface, {
|
|
104
|
+
variants: { size: {
|
|
105
|
+
sm: "h-control-sm px-(--cue-space-3) text-(length:--cue-text-label)",
|
|
106
|
+
md: "h-control-md px-(--cue-space-4) text-(length:--cue-text-ui)",
|
|
107
|
+
lg: "h-control-lg px-(--cue-space-5) text-(length:--cue-text-body)"
|
|
108
|
+
} },
|
|
109
|
+
defaultVariants: { size: "md" }
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* The chassis at its default `md` rung — the exact class list the spec pins for
|
|
113
|
+
* a plain form control. Kept as a derived constant, never a second copy, so the
|
|
114
|
+
* recipe cannot drift from {@link controlVariants}.
|
|
115
|
+
*/
|
|
116
|
+
const controlClasses = controlVariants();
|
|
117
|
+
/**
|
|
118
|
+
* Ink for a control nested inside something that already paints the rim (an
|
|
119
|
+
* `InputGroup`, a `NumberField.Group`).
|
|
120
|
+
*
|
|
121
|
+
* Strips the box entirely — no border, no fill, no padding, no height — and
|
|
122
|
+
* inherits the font size from the wrapper so the two never disagree about which
|
|
123
|
+
* density rung they are on.
|
|
124
|
+
*/
|
|
125
|
+
const bareControlClasses = "min-w-0 flex-1 border-0 bg-transparent p-0 font-mono text-[length:inherit] text-fg placeholder:text-fg-subtle outline-none disabled:opacity-40";
|
|
126
|
+
/**
|
|
127
|
+
* Focus feedback for a wrapper that owns the rim on behalf of an inner control.
|
|
128
|
+
*
|
|
129
|
+
* A `<div>` never matches `:focus-visible` itself, so a group has to read the
|
|
130
|
+
* state off its descendants — and the two halves of {@link controlSurface}'s
|
|
131
|
+
* treatment want two different questions asked of them.
|
|
132
|
+
*
|
|
133
|
+
* The rim follows plain `:focus-within`: anything focused inside strengthens the
|
|
134
|
+
* border. That is the quiet half, and it is the right answer however the focus
|
|
135
|
+
* arrived. The ring follows `:has(:focus-visible)`, so it paints only when the
|
|
136
|
+
* descendant that has focus is itself showing a focus ring. Using
|
|
137
|
+
* `:focus-within` for *both* — the recipe this replaced — is what made a mouse
|
|
138
|
+
* click inside a `SearchInput` or a `NumberField` light the whole cluster up
|
|
139
|
+
* with a saturated block, the single loudest thing in a console form.
|
|
140
|
+
*
|
|
141
|
+
* `:has()` is Baseline — Chrome 105, Safari 15.4, Firefox 121 — so no
|
|
142
|
+
* `:focus-within` fallback layer is needed at the floor this library supports.
|
|
143
|
+
*
|
|
144
|
+
* Geometry matches {@link controlSurface} exactly, down to the negative offset:
|
|
145
|
+
* a grouped field and a plain one are the same control, and a rim that differed
|
|
146
|
+
* by a pixel between them would say otherwise. The inner control stays ringless
|
|
147
|
+
* — see {@link bareControlClasses} — because two concentric rings on one field
|
|
148
|
+
* is the halo this treatment exists to remove.
|
|
149
|
+
*
|
|
150
|
+
* The invalid ruling comes with the geometry, for the same reason: at
|
|
151
|
+
* `-outline-offset-1` the ring covers the rim it is drawn over, so an invalid
|
|
152
|
+
* group in focus recolours the ring rather than pretending the red under it is
|
|
153
|
+
* still visible. `data-invalid` is read off the wrapper, which is where Base
|
|
154
|
+
* UI's `Field` stamps it and where the group already takes
|
|
155
|
+
* `data-[invalid]:border-danger` from {@link controlVariants}.
|
|
156
|
+
*/
|
|
157
|
+
const controlGroupFocusClasses = "focus-within:border-border-strong has-focus-visible:outline-2 has-focus-visible:outline-solid has-focus-visible:-outline-offset-1 has-focus-visible:outline-(--cue-focus) data-[invalid]:has-focus-visible:outline-danger";
|
|
158
|
+
//#endregion
|
|
159
|
+
export { bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants };
|