@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,73 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/forms/combobox.d.ts
|
|
4
|
+
/** One row in a {@link Combobox} or {@link MultiSelect}. */
|
|
5
|
+
interface ComboboxOption {
|
|
6
|
+
/** Submitted value and identity of the row. */
|
|
7
|
+
value: string;
|
|
8
|
+
/** What the user reads — in the input as well as the list. Filtered on. */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Grey the row out and skip it during keyboard navigation. */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface ComboboxProps {
|
|
14
|
+
/** The rows, in display order. Base UI filters them against what is typed. */
|
|
15
|
+
items: readonly ComboboxOption[];
|
|
16
|
+
/** Selected value. Use with `onValueChange` for a controlled combobox. */
|
|
17
|
+
value?: string | null;
|
|
18
|
+
/** Initially selected value for an uncontrolled combobox. */
|
|
19
|
+
defaultValue?: string | null;
|
|
20
|
+
/** Called with the newly selected value (`null` when cleared). */
|
|
21
|
+
onValueChange?: (value: string | null) => void;
|
|
22
|
+
/** Shown while the input is empty. */
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
/** Shown in place of the list when the query matches nothing. */
|
|
25
|
+
emptyMessage?: React.ReactNode;
|
|
26
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
27
|
+
size?: FormControlSize;
|
|
28
|
+
/** Highlight the first match automatically so Enter picks it. */
|
|
29
|
+
autoHighlight?: boolean;
|
|
30
|
+
/** Prevent opening and grey the field out. */
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/** Require a value before the owning form submits. */
|
|
33
|
+
required?: boolean;
|
|
34
|
+
/** Name for the hidden input, when the combobox is part of a form. */
|
|
35
|
+
name?: string;
|
|
36
|
+
/** Id forwarded to the text input. */
|
|
37
|
+
id?: string;
|
|
38
|
+
/** Accessible name for the input, when no {@link FieldLabel} names it. */
|
|
39
|
+
"aria-label"?: string;
|
|
40
|
+
/** Id of the element naming the input. */
|
|
41
|
+
"aria-labelledby"?: string;
|
|
42
|
+
/** Accessible name for the clear button. Defaults to `"Clear selection"`. */
|
|
43
|
+
clearLabel?: string;
|
|
44
|
+
/** Extra classes for the field. */
|
|
45
|
+
className?: string;
|
|
46
|
+
/** Extra classes for the popup surface. */
|
|
47
|
+
popupClassName?: string;
|
|
48
|
+
/** Distance in px between the field and the popup. Defaults to `4`. */
|
|
49
|
+
sideOffset?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A {@link Select} you can type into: one value out of a known, filterable set.
|
|
53
|
+
*
|
|
54
|
+
* The line between this and {@link Autocomplete} is worth holding: a combobox's
|
|
55
|
+
* value is always one of `items` — the text is a *filter*, and anything not in
|
|
56
|
+
* the list cannot be chosen. An autocomplete's value is whatever the user typed
|
|
57
|
+
* and the list is only a suggestion. Pick the one whose contract matches what
|
|
58
|
+
* happens to the value downstream.
|
|
59
|
+
*
|
|
60
|
+
* The public API is string-valued like `Select`'s, even though Base UI's item
|
|
61
|
+
* values are the option objects: a caller stores `"wash"`, not an object it has
|
|
62
|
+
* to keep referentially stable across renders.
|
|
63
|
+
*
|
|
64
|
+
* The popup is portalled through {@link useCuePortalProps}, so it carries the
|
|
65
|
+
* caller's `data-theme` / `data-density` / `data-mode` even though it mounts at
|
|
66
|
+
* the end of `<body>`.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* <Combobox aria-label="Fixture" items={fixtures} value={fixture} onValueChange={setFixture} />
|
|
70
|
+
*/
|
|
71
|
+
declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
72
|
+
//#endregion
|
|
73
|
+
export { Combobox, ComboboxOption, ComboboxProps };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { bareControlClasses, controlGroupFocusClasses, controlVariants } from "./_chassis.js";
|
|
4
|
+
import { useCuePortalProps } from "../system/portal.js";
|
|
5
|
+
import { CaretGlyph, CrossGlyph, TickGlyph } from "./_glyphs.js";
|
|
6
|
+
import { listboxAdornmentClasses, listboxEmptyClasses, listboxIndicatorClasses, listboxItemClasses, listboxListClasses, listboxPopupClasses, listboxPositionerClasses } from "./_listbox.js";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { Combobox } from "@base-ui/react/combobox";
|
|
10
|
+
//#region src/forms/combobox.tsx
|
|
11
|
+
/**
|
|
12
|
+
* A {@link Select} you can type into: one value out of a known, filterable set.
|
|
13
|
+
*
|
|
14
|
+
* The line between this and {@link Autocomplete} is worth holding: a combobox's
|
|
15
|
+
* value is always one of `items` — the text is a *filter*, and anything not in
|
|
16
|
+
* the list cannot be chosen. An autocomplete's value is whatever the user typed
|
|
17
|
+
* and the list is only a suggestion. Pick the one whose contract matches what
|
|
18
|
+
* happens to the value downstream.
|
|
19
|
+
*
|
|
20
|
+
* The public API is string-valued like `Select`'s, even though Base UI's item
|
|
21
|
+
* values are the option objects: a caller stores `"wash"`, not an object it has
|
|
22
|
+
* to keep referentially stable across renders.
|
|
23
|
+
*
|
|
24
|
+
* The popup is portalled through {@link useCuePortalProps}, so it carries the
|
|
25
|
+
* caller's `data-theme` / `data-density` / `data-mode` even though it mounts at
|
|
26
|
+
* the end of `<body>`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* <Combobox aria-label="Fixture" items={fixtures} value={fixture} onValueChange={setFixture} />
|
|
30
|
+
*/
|
|
31
|
+
const Combobox$1 = React.forwardRef(function Combobox$2({ items, value, defaultValue, onValueChange, placeholder, emptyMessage = "No matches", size, autoHighlight = true, disabled, required, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, clearLabel = "Clear selection", className, popupClassName, sideOffset = 4 }, ref) {
|
|
32
|
+
const portalProps = useCuePortalProps();
|
|
33
|
+
const find = React.useCallback((key) => key === void 0 ? void 0 : items.find((item) => item.value === key) ?? null, [items]);
|
|
34
|
+
const handleValueChange = React.useCallback((next) => {
|
|
35
|
+
onValueChange?.(next?.value ?? null);
|
|
36
|
+
}, [onValueChange]);
|
|
37
|
+
return /* @__PURE__ */ jsxs(Combobox.Root, {
|
|
38
|
+
items,
|
|
39
|
+
value: find(value),
|
|
40
|
+
defaultValue: find(defaultValue),
|
|
41
|
+
onValueChange: onValueChange === void 0 ? void 0 : handleValueChange,
|
|
42
|
+
autoHighlight,
|
|
43
|
+
disabled,
|
|
44
|
+
required,
|
|
45
|
+
name,
|
|
46
|
+
children: [/* @__PURE__ */ jsxs(Combobox.InputGroup, {
|
|
47
|
+
"data-slot": "combobox-group",
|
|
48
|
+
className: cn(controlVariants({ size }), "flex items-center gap-(--cue-space-2)", controlGroupFocusClasses, className),
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ jsx(Combobox.Input, {
|
|
51
|
+
ref,
|
|
52
|
+
id,
|
|
53
|
+
"data-slot": "combobox-input",
|
|
54
|
+
placeholder,
|
|
55
|
+
"aria-label": ariaLabel,
|
|
56
|
+
"aria-labelledby": ariaLabelledBy,
|
|
57
|
+
className: cn(bareControlClasses, "truncate")
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ jsx(Combobox.Clear, {
|
|
60
|
+
"aria-label": clearLabel,
|
|
61
|
+
"data-slot": "combobox-clear",
|
|
62
|
+
className: listboxAdornmentClasses,
|
|
63
|
+
children: /* @__PURE__ */ jsx(CrossGlyph, { className: "size-icon-sm" })
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ jsx(Combobox.Trigger, {
|
|
66
|
+
"aria-label": ariaLabel === void 0 ? void 0 : `${ariaLabel} options`,
|
|
67
|
+
"data-slot": "combobox-trigger",
|
|
68
|
+
className: listboxAdornmentClasses,
|
|
69
|
+
children: /* @__PURE__ */ jsx(Combobox.Icon, {
|
|
70
|
+
className: "flex items-center",
|
|
71
|
+
children: /* @__PURE__ */ jsx(CaretGlyph, { className: "size-icon-md" })
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
}), /* @__PURE__ */ jsx(Combobox.Portal, {
|
|
76
|
+
...portalProps,
|
|
77
|
+
children: /* @__PURE__ */ jsx(Combobox.Positioner, {
|
|
78
|
+
className: listboxPositionerClasses,
|
|
79
|
+
sideOffset,
|
|
80
|
+
children: /* @__PURE__ */ jsxs(Combobox.Popup, {
|
|
81
|
+
"data-slot": "combobox-popup",
|
|
82
|
+
className: cn(listboxPopupClasses, popupClassName),
|
|
83
|
+
children: [/* @__PURE__ */ jsx(Combobox.Empty, {
|
|
84
|
+
className: listboxEmptyClasses,
|
|
85
|
+
children: emptyMessage
|
|
86
|
+
}), /* @__PURE__ */ jsx(Combobox.List, {
|
|
87
|
+
className: listboxListClasses,
|
|
88
|
+
children: (item) => /* @__PURE__ */ jsxs(Combobox.Item, {
|
|
89
|
+
value: item,
|
|
90
|
+
disabled: item.disabled,
|
|
91
|
+
"data-slot": "combobox-item",
|
|
92
|
+
className: listboxItemClasses,
|
|
93
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
94
|
+
className: listboxIndicatorClasses,
|
|
95
|
+
children: /* @__PURE__ */ jsx(Combobox.ItemIndicator, { children: /* @__PURE__ */ jsx(TickGlyph, { className: "size-icon-sm" }) })
|
|
96
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
97
|
+
className: "truncate",
|
|
98
|
+
children: item.label
|
|
99
|
+
})]
|
|
100
|
+
}, item.value)
|
|
101
|
+
})]
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
})]
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//#endregion
|
|
108
|
+
export { Combobox$1 as Combobox };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/forms/env-var-input.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Read the variable name out of an `env(NAME)` reference.
|
|
6
|
+
*
|
|
7
|
+
* @param value - The raw field value.
|
|
8
|
+
* @returns The variable name, or `null` when the value is a literal.
|
|
9
|
+
* @example
|
|
10
|
+
* parseEnvReference("env(SUPABASE_URL)"); // "SUPABASE_URL"
|
|
11
|
+
* parseEnvReference("https://example.test"); // null
|
|
12
|
+
*/
|
|
13
|
+
declare function parseEnvReference(value: string): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Build an `env(NAME)` reference.
|
|
16
|
+
*
|
|
17
|
+
* @param name - The environment variable name.
|
|
18
|
+
* @returns The reference string this control renders as a pill.
|
|
19
|
+
* @example
|
|
20
|
+
* envReference("API_KEY"); // "env(API_KEY)"
|
|
21
|
+
*/
|
|
22
|
+
declare function envReference(name: string): string;
|
|
23
|
+
interface EnvVarInputProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue"> {
|
|
24
|
+
/** The value — a literal, or an `env(NAME)` reference. Use with `onValueChange`. */
|
|
25
|
+
value?: string;
|
|
26
|
+
/** Initial value for an uncontrolled field. */
|
|
27
|
+
defaultValue?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Called with the new value: on every keystroke in the literal state, and with
|
|
30
|
+
* `""` when the variable pill is cleared. One argument, because the pill's
|
|
31
|
+
* clear button has no DOM change event to hand on.
|
|
32
|
+
*/
|
|
33
|
+
onValueChange?: (value: string) => void;
|
|
34
|
+
/** Shown while the literal field is empty. */
|
|
35
|
+
placeholder?: string;
|
|
36
|
+
/** Mask the literal value. The reference is never masked — a name is not a secret. */
|
|
37
|
+
secret?: boolean;
|
|
38
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
39
|
+
size?: FormControlSize;
|
|
40
|
+
/** Prevent editing and grey the control out. */
|
|
41
|
+
disabled?: boolean;
|
|
42
|
+
/** Name for the underlying input, when the field is part of a form. */
|
|
43
|
+
name?: string;
|
|
44
|
+
/** Id forwarded to the underlying input. */
|
|
45
|
+
id?: string;
|
|
46
|
+
/** Accessible name for the field, when no {@link FieldLabel} names it. */
|
|
47
|
+
"aria-label"?: string;
|
|
48
|
+
/** Accessible name for the pill's clear button. Defaults to `"Clear environment variable"`. */
|
|
49
|
+
clearLabel?: string;
|
|
50
|
+
/** Extra classes for the wrapper. */
|
|
51
|
+
className?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A config value that may be a literal *or* a reference to an environment
|
|
55
|
+
* variable — and looks unmistakably different in each case.
|
|
56
|
+
*
|
|
57
|
+
* When the value matches `env(NAME)` the text box is replaced by a warn-toned
|
|
58
|
+
* pill naming the variable. That swap is the entire point: a config screen full
|
|
59
|
+
* of identical text boxes gives no way to tell "this is the key" from "this is
|
|
60
|
+
* where the key comes from", and the difference decides whether the value is
|
|
61
|
+
* safe to screenshot, commit or paste into a ticket. Warn is the system's amber,
|
|
62
|
+
* so the pill reads as "resolved elsewhere — check the environment" rather than
|
|
63
|
+
* as an error.
|
|
64
|
+
*
|
|
65
|
+
* Ported from supbuddy's config editor, where the pattern earned its keep.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* <EnvVarInput aria-label="Service key" secret value={key} onValueChange={setKey} />
|
|
69
|
+
* @example
|
|
70
|
+
* <EnvVarInput aria-label="Project URL" defaultValue={envReference("SUPABASE_URL")} />
|
|
71
|
+
*/
|
|
72
|
+
declare const EnvVarInput: React.ForwardRefExoticComponent<EnvVarInputProps & React.RefAttributes<HTMLDivElement>>;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { EnvVarInput, EnvVarInputProps, envReference, parseEnvReference };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { Input } from "./input.js";
|
|
4
|
+
import { CrossGlyph, VariableGlyph } from "./_glyphs.js";
|
|
5
|
+
import { PasswordInput } from "./password-input.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/forms/env-var-input.tsx
|
|
9
|
+
/**
|
|
10
|
+
* `env(NAME)` — the indirection syntax this control understands.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately strict about the name: shell-variable rules (a letter or
|
|
13
|
+
* underscore, then letters, digits or underscores). A looser pattern would let
|
|
14
|
+
* `env(https://…)` render as a variable pill and hide a real value behind it.
|
|
15
|
+
*/
|
|
16
|
+
const ENV_REFERENCE = /^env\(([A-Za-z_][A-Za-z0-9_]*)\)$/;
|
|
17
|
+
/**
|
|
18
|
+
* Read the variable name out of an `env(NAME)` reference.
|
|
19
|
+
*
|
|
20
|
+
* @param value - The raw field value.
|
|
21
|
+
* @returns The variable name, or `null` when the value is a literal.
|
|
22
|
+
* @example
|
|
23
|
+
* parseEnvReference("env(SUPABASE_URL)"); // "SUPABASE_URL"
|
|
24
|
+
* parseEnvReference("https://example.test"); // null
|
|
25
|
+
*/
|
|
26
|
+
function parseEnvReference(value) {
|
|
27
|
+
return ENV_REFERENCE.exec(value)?.[1] ?? null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build an `env(NAME)` reference.
|
|
31
|
+
*
|
|
32
|
+
* @param name - The environment variable name.
|
|
33
|
+
* @returns The reference string this control renders as a pill.
|
|
34
|
+
* @example
|
|
35
|
+
* envReference("API_KEY"); // "env(API_KEY)"
|
|
36
|
+
*/
|
|
37
|
+
function envReference(name) {
|
|
38
|
+
return `env(${name})`;
|
|
39
|
+
}
|
|
40
|
+
/** The pill's height per rung — it stands in for the input, so it matches one. */
|
|
41
|
+
const PILL_SIZES = {
|
|
42
|
+
sm: "h-control-sm px-(--cue-space-2) text-(length:--cue-text-label)",
|
|
43
|
+
md: "h-control-md px-(--cue-space-3) text-(length:--cue-text-ui)",
|
|
44
|
+
lg: "h-control-lg px-(--cue-space-4) text-(length:--cue-text-body)"
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* A config value that may be a literal *or* a reference to an environment
|
|
48
|
+
* variable — and looks unmistakably different in each case.
|
|
49
|
+
*
|
|
50
|
+
* When the value matches `env(NAME)` the text box is replaced by a warn-toned
|
|
51
|
+
* pill naming the variable. That swap is the entire point: a config screen full
|
|
52
|
+
* of identical text boxes gives no way to tell "this is the key" from "this is
|
|
53
|
+
* where the key comes from", and the difference decides whether the value is
|
|
54
|
+
* safe to screenshot, commit or paste into a ticket. Warn is the system's amber,
|
|
55
|
+
* so the pill reads as "resolved elsewhere — check the environment" rather than
|
|
56
|
+
* as an error.
|
|
57
|
+
*
|
|
58
|
+
* Ported from supbuddy's config editor, where the pattern earned its keep.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* <EnvVarInput aria-label="Service key" secret value={key} onValueChange={setKey} />
|
|
62
|
+
* @example
|
|
63
|
+
* <EnvVarInput aria-label="Project URL" defaultValue={envReference("SUPABASE_URL")} />
|
|
64
|
+
*/
|
|
65
|
+
const EnvVarInput = React.forwardRef(function EnvVarInput({ className, value: valueProp, defaultValue, onValueChange, placeholder, secret = false, size = "md", disabled, name, id, "aria-label": ariaLabel, clearLabel = "Clear environment variable", ...elementProps }, ref) {
|
|
66
|
+
const isControlled = valueProp !== void 0;
|
|
67
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue ?? "");
|
|
68
|
+
const value = isControlled ? valueProp : uncontrolled;
|
|
69
|
+
const variable = parseEnvReference(value);
|
|
70
|
+
const commit = React.useCallback((next) => {
|
|
71
|
+
if (!isControlled) setUncontrolled(next);
|
|
72
|
+
onValueChange?.(next);
|
|
73
|
+
}, [isControlled, onValueChange]);
|
|
74
|
+
const controlProps = {
|
|
75
|
+
id,
|
|
76
|
+
name,
|
|
77
|
+
size,
|
|
78
|
+
disabled,
|
|
79
|
+
placeholder,
|
|
80
|
+
"aria-label": ariaLabel,
|
|
81
|
+
"data-slot": "env-var-input",
|
|
82
|
+
value,
|
|
83
|
+
onValueChange: (next) => commit(next)
|
|
84
|
+
};
|
|
85
|
+
return /* @__PURE__ */ jsx("div", {
|
|
86
|
+
ref,
|
|
87
|
+
"data-slot": "env-var",
|
|
88
|
+
className: cn("w-full", className),
|
|
89
|
+
...elementProps,
|
|
90
|
+
children: variable === null ? secret ? /* @__PURE__ */ jsx(PasswordInput, { ...controlProps }) : /* @__PURE__ */ jsx(Input, { ...controlProps }) : /* @__PURE__ */ jsxs("div", {
|
|
91
|
+
"data-slot": "env-var-pill",
|
|
92
|
+
className: cn("flex w-full items-center gap-(--cue-space-2) rounded-(--radius-control) border border-warn/35 bg-warn/10 font-mono text-warn", PILL_SIZES[size], disabled === true && "opacity-40"),
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ jsx(VariableGlyph, {
|
|
95
|
+
"aria-hidden": "true",
|
|
96
|
+
className: "size-icon-sm shrink-0"
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ jsx("span", {
|
|
99
|
+
"data-slot": "env-var-name",
|
|
100
|
+
className: "truncate",
|
|
101
|
+
children: variable
|
|
102
|
+
}),
|
|
103
|
+
/* @__PURE__ */ jsx("button", {
|
|
104
|
+
type: "button",
|
|
105
|
+
"aria-label": clearLabel,
|
|
106
|
+
disabled,
|
|
107
|
+
onClick: () => commit(""),
|
|
108
|
+
className: "ml-auto flex size-icon-md shrink-0 cursor-pointer items-center justify-center rounded-(--radius-control) border-0 bg-transparent p-0 text-warn outline-none transition-colors hover:bg-warn/20 focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none",
|
|
109
|
+
children: /* @__PURE__ */ jsx(CrossGlyph, { className: "size-icon-sm" })
|
|
110
|
+
})
|
|
111
|
+
]
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//#endregion
|
|
116
|
+
export { EnvVarInput, envReference, parseEnvReference };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Field } from "@base-ui/react/field";
|
|
3
|
+
//#region src/forms/field.d.ts
|
|
4
|
+
interface FieldProps extends Omit<Field.Root.Props, "className"> {
|
|
5
|
+
/** Extra classes, merged over the vertical stack defaults. */
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The labelling and validation wrapper every form control belongs in.
|
|
10
|
+
*
|
|
11
|
+
* Wraps Base UI's `Field.Root`, which generates the ids that tie
|
|
12
|
+
* {@link FieldLabel}, {@link FieldDescription} and {@link FieldError} to the
|
|
13
|
+
* control inside it — so `<FieldLabel>Cue name</FieldLabel>` names an
|
|
14
|
+
* {@link Input} with no `htmlFor`/`id` bookkeeping from the caller. Base UI also
|
|
15
|
+
* stamps `data-invalid` / `data-disabled` down the subtree, which is what the
|
|
16
|
+
* chassis' danger rim keys off.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <Field name="cue">
|
|
20
|
+
* <FieldLabel>Cue name</FieldLabel>
|
|
21
|
+
* <Input placeholder="e.g. Blackout" />
|
|
22
|
+
* <FieldDescription>Shown in the cue list.</FieldDescription>
|
|
23
|
+
* <FieldError issues={result.issues} />
|
|
24
|
+
* </Field>
|
|
25
|
+
*/
|
|
26
|
+
declare const Field$1: React.ForwardRefExoticComponent<Omit<FieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
27
|
+
interface FieldLabelProps extends Omit<Field.Label.Props, "className"> {
|
|
28
|
+
/** Extra classes, merged over the label typography. */
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The name of a field: mono, uppercase, tracked out, one rung below body text.
|
|
33
|
+
*
|
|
34
|
+
* Renders a real `<label>` wired to the field's control, so clicking it focuses
|
|
35
|
+
* (or toggles) that control.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* <FieldLabel>Universe</FieldLabel>
|
|
39
|
+
*/
|
|
40
|
+
declare const FieldLabel: React.ForwardRefExoticComponent<Omit<FieldLabelProps, "ref"> & React.RefAttributes<HTMLLabelElement>>;
|
|
41
|
+
interface FieldDescriptionProps extends Omit<Field.Description.Props, "className"> {
|
|
42
|
+
/** Extra classes, merged over the helper-text defaults. */
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Quiet helper text under a control, published to assistive tech as the
|
|
47
|
+
* control's `aria-describedby` target.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* <FieldDescription>1–512</FieldDescription>
|
|
51
|
+
*/
|
|
52
|
+
declare const FieldDescription: React.ForwardRefExoticComponent<Omit<FieldDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
|
|
53
|
+
/**
|
|
54
|
+
* One validation problem, in the shape every Standard Schema validator (Zod,
|
|
55
|
+
* Valibot, ArkType) reports it.
|
|
56
|
+
*/
|
|
57
|
+
interface FieldIssue {
|
|
58
|
+
/** Human-readable message to show under the control. */
|
|
59
|
+
readonly message: string;
|
|
60
|
+
}
|
|
61
|
+
interface FieldErrorProps extends Omit<Field.Error.Props, "className" | "children"> {
|
|
62
|
+
/** Extra classes, merged over the danger-text defaults. */
|
|
63
|
+
className?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Standard Schema issues for this field. When supplied, the component shows
|
|
66
|
+
* exactly these messages and stops consulting native `ValidityState`: an
|
|
67
|
+
* empty array renders nothing, one issue renders inline, several render as a
|
|
68
|
+
* list. Leave it `undefined` to fall back to `match` + `children`.
|
|
69
|
+
*/
|
|
70
|
+
issues?: readonly FieldIssue[];
|
|
71
|
+
/** Message to show when driving visibility from `match` instead of `issues`. */
|
|
72
|
+
children?: React.ReactNode;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The error line under a control.
|
|
76
|
+
*
|
|
77
|
+
* Two ways to drive it, and they are mutually exclusive by design:
|
|
78
|
+
* pass `issues` from a Standard Schema parse (`schema.safeParse(x).issues`) and
|
|
79
|
+
* the component owns visibility, or pass `match` + `children` and let Base UI
|
|
80
|
+
* key off the native `ValidityState`.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* <FieldError issues={result.issues} />
|
|
84
|
+
* @example
|
|
85
|
+
* <FieldError match="valueMissing">Please name the cue</FieldError>
|
|
86
|
+
*/
|
|
87
|
+
declare const FieldError: React.ForwardRefExoticComponent<Omit<FieldErrorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
88
|
+
//#endregion
|
|
89
|
+
export { Field$1 as Field, FieldDescription, FieldDescriptionProps, FieldError, FieldErrorProps, FieldIssue, FieldLabel, FieldLabelProps, FieldProps };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Field } from "@base-ui/react/field";
|
|
6
|
+
//#region src/forms/field.tsx
|
|
7
|
+
/**
|
|
8
|
+
* The labelling and validation wrapper every form control belongs in.
|
|
9
|
+
*
|
|
10
|
+
* Wraps Base UI's `Field.Root`, which generates the ids that tie
|
|
11
|
+
* {@link FieldLabel}, {@link FieldDescription} and {@link FieldError} to the
|
|
12
|
+
* control inside it — so `<FieldLabel>Cue name</FieldLabel>` names an
|
|
13
|
+
* {@link Input} with no `htmlFor`/`id` bookkeeping from the caller. Base UI also
|
|
14
|
+
* stamps `data-invalid` / `data-disabled` down the subtree, which is what the
|
|
15
|
+
* chassis' danger rim keys off.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* <Field name="cue">
|
|
19
|
+
* <FieldLabel>Cue name</FieldLabel>
|
|
20
|
+
* <Input placeholder="e.g. Blackout" />
|
|
21
|
+
* <FieldDescription>Shown in the cue list.</FieldDescription>
|
|
22
|
+
* <FieldError issues={result.issues} />
|
|
23
|
+
* </Field>
|
|
24
|
+
*/
|
|
25
|
+
const Field$1 = React.forwardRef(function Field$2({ className, ...elementProps }, ref) {
|
|
26
|
+
return /* @__PURE__ */ jsx(Field.Root, {
|
|
27
|
+
ref,
|
|
28
|
+
"data-slot": "field",
|
|
29
|
+
className: cn("flex w-full flex-col gap-(--cue-space-2)", className),
|
|
30
|
+
...elementProps
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* The name of a field: mono, uppercase, tracked out, one rung below body text.
|
|
35
|
+
*
|
|
36
|
+
* Renders a real `<label>` wired to the field's control, so clicking it focuses
|
|
37
|
+
* (or toggles) that control.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* <FieldLabel>Universe</FieldLabel>
|
|
41
|
+
*/
|
|
42
|
+
const FieldLabel = React.forwardRef(function FieldLabel({ className, ...elementProps }, ref) {
|
|
43
|
+
return /* @__PURE__ */ jsx(Field.Label, {
|
|
44
|
+
ref,
|
|
45
|
+
"data-slot": "field-label",
|
|
46
|
+
className: cn("font-mono text-(length:--cue-text-label) leading-none tracking-[0.1em] text-fg-muted uppercase select-none data-[disabled]:opacity-40", className),
|
|
47
|
+
...elementProps
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Quiet helper text under a control, published to assistive tech as the
|
|
52
|
+
* control's `aria-describedby` target.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* <FieldDescription>1–512</FieldDescription>
|
|
56
|
+
*/
|
|
57
|
+
const FieldDescription = React.forwardRef(function FieldDescription({ className, ...elementProps }, ref) {
|
|
58
|
+
return /* @__PURE__ */ jsx(Field.Description, {
|
|
59
|
+
ref,
|
|
60
|
+
"data-slot": "field-description",
|
|
61
|
+
className: cn("font-mono text-(length:--cue-text-micro) text-fg-subtle", className),
|
|
62
|
+
...elementProps
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* The error line under a control.
|
|
67
|
+
*
|
|
68
|
+
* Two ways to drive it, and they are mutually exclusive by design:
|
|
69
|
+
* pass `issues` from a Standard Schema parse (`schema.safeParse(x).issues`) and
|
|
70
|
+
* the component owns visibility, or pass `match` + `children` and let Base UI
|
|
71
|
+
* key off the native `ValidityState`.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* <FieldError issues={result.issues} />
|
|
75
|
+
* @example
|
|
76
|
+
* <FieldError match="valueMissing">Please name the cue</FieldError>
|
|
77
|
+
*/
|
|
78
|
+
const FieldError = React.forwardRef(function FieldError({ className, issues, match, children, ...elementProps }, ref) {
|
|
79
|
+
if (issues !== void 0 && issues.length === 0) return null;
|
|
80
|
+
const classes = cn("font-mono text-(length:--cue-text-micro) text-danger", className);
|
|
81
|
+
if (issues === void 0) return /* @__PURE__ */ jsx(Field.Error, {
|
|
82
|
+
ref,
|
|
83
|
+
"data-slot": "field-error",
|
|
84
|
+
match,
|
|
85
|
+
className: classes,
|
|
86
|
+
...elementProps,
|
|
87
|
+
children
|
|
88
|
+
});
|
|
89
|
+
return /* @__PURE__ */ jsx(Field.Error, {
|
|
90
|
+
ref,
|
|
91
|
+
"data-slot": "field-error",
|
|
92
|
+
match: true,
|
|
93
|
+
className: classes,
|
|
94
|
+
...elementProps,
|
|
95
|
+
children: issues.length === 1 ? issues[0]?.message : /* @__PURE__ */ jsx("ul", {
|
|
96
|
+
className: "flex flex-col gap-(--cue-space-1)",
|
|
97
|
+
children: issues.map((issue, index) => /* @__PURE__ */ jsx("li", { children: issue.message }, `${index}:${issue.message}`))
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
//#endregion
|
|
102
|
+
export { Field$1 as Field, FieldDescription, FieldError, FieldLabel };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/forms/file-upload.d.ts
|
|
3
|
+
/** Why a dropped file did not make it into the list. */
|
|
4
|
+
type FileRejectReason = "type" | "size" | "count";
|
|
5
|
+
interface FileRejection {
|
|
6
|
+
/** The file that was turned away. */
|
|
7
|
+
file: File;
|
|
8
|
+
/** Which rule turned it away. */
|
|
9
|
+
reason: FileRejectReason;
|
|
10
|
+
}
|
|
11
|
+
interface FilePartitionOptions {
|
|
12
|
+
/** An `accept` string: extensions, exact mime types, `image/*` wildcards. */
|
|
13
|
+
accept?: string;
|
|
14
|
+
/** Largest accepted file, in bytes. */
|
|
15
|
+
maxSize?: number;
|
|
16
|
+
/** How many files may be accepted in total. */
|
|
17
|
+
maxFiles?: number;
|
|
18
|
+
}
|
|
19
|
+
interface FilePartition {
|
|
20
|
+
/** Files that passed every rule, in the order they arrived. */
|
|
21
|
+
accepted: File[];
|
|
22
|
+
/** Files that failed one, each with the reason. */
|
|
23
|
+
rejected: FileRejection[];
|
|
24
|
+
}
|
|
25
|
+
/** Where a file is in its journey. Drives the row's readout. */
|
|
26
|
+
type UploadStatus = "pending" | "uploading" | "done" | "error";
|
|
27
|
+
interface UploadFile {
|
|
28
|
+
/** Stable identity — what `onRemove` reports. */
|
|
29
|
+
id: string;
|
|
30
|
+
/** File name, shown verbatim. */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Size in bytes; rendered in SI units. */
|
|
33
|
+
size?: number;
|
|
34
|
+
/** Completion 0–100. Drawn as a bar while `status` is `"uploading"`. */
|
|
35
|
+
progress?: number;
|
|
36
|
+
/** Defaults to `"pending"`. */
|
|
37
|
+
status?: UploadStatus;
|
|
38
|
+
/** Why it failed. Shown in the danger tone under the name. */
|
|
39
|
+
error?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Split a drop into the files that pass the rules and the ones that do not,
|
|
43
|
+
* each with the reason it was turned away.
|
|
44
|
+
*
|
|
45
|
+
* Exported and pure because "why was my file rejected?" is the question a drop
|
|
46
|
+
* zone most often has to answer, and a caller filtering by hand would answer it
|
|
47
|
+
* differently from the component. Order is preserved, and the count ceiling
|
|
48
|
+
* keeps the *first* files rather than an arbitrary subset.
|
|
49
|
+
*
|
|
50
|
+
* @param files - Everything the drop or the file dialog produced.
|
|
51
|
+
* @param options - The rules to apply.
|
|
52
|
+
* @returns The accepted files and the reasoned rejections.
|
|
53
|
+
* @example
|
|
54
|
+
* partitionFiles(files, { accept: "image/*", maxSize: 2_000_000 })
|
|
55
|
+
*/
|
|
56
|
+
declare function partitionFiles(files: readonly File[], { accept, maxSize, maxFiles }: FilePartitionOptions): FilePartition;
|
|
57
|
+
interface FileUploadProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onDrop" | "children"> {
|
|
58
|
+
/** The zone's own copy, and its accessible name. Defaults to `"Drop files"`. */
|
|
59
|
+
label?: React.ReactNode;
|
|
60
|
+
/** A second line under the label — the rules, in plain words. */
|
|
61
|
+
hint?: React.ReactNode;
|
|
62
|
+
/** `accept` string forwarded to the input and used for rejection. */
|
|
63
|
+
accept?: string;
|
|
64
|
+
/** Allow more than one file per drop. */
|
|
65
|
+
multiple?: boolean;
|
|
66
|
+
/** Largest accepted file, in bytes. */
|
|
67
|
+
maxSize?: number;
|
|
68
|
+
/** How many files may be accepted per drop. */
|
|
69
|
+
maxFiles?: number;
|
|
70
|
+
/** Refuse drops and grey the zone out. */
|
|
71
|
+
disabled?: boolean;
|
|
72
|
+
/** Rows to render under the zone. The caller owns upload state. */
|
|
73
|
+
files?: readonly UploadFile[];
|
|
74
|
+
/** Called with the files that passed the rules. */
|
|
75
|
+
onFilesAccepted?: (files: File[]) => void;
|
|
76
|
+
/** Called with the files that did not, each with its reason. */
|
|
77
|
+
onFilesRejected?: (rejections: FileRejection[]) => void;
|
|
78
|
+
/** Called with a row's `id` when its remove control is pressed. */
|
|
79
|
+
onRemove?: (id: string) => void;
|
|
80
|
+
/** Spoken name of a row's remove control. Defaults to `Remove <name>`. */
|
|
81
|
+
removeLabel?: (file: UploadFile) => string;
|
|
82
|
+
/** Extra classes for the drop zone. */
|
|
83
|
+
zoneClassName?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A drop zone with a file list under it.
|
|
87
|
+
*
|
|
88
|
+
* The zone is a real `<button>`, not a div with a drop handler: dropping is the
|
|
89
|
+
* mouse affordance, and pressing Enter on a focused button to open the file
|
|
90
|
+
* dialog is the keyboard one. A zone that only accepts drops is unusable
|
|
91
|
+
* without a pointer (WCAG 2.1.1), and it is the single most common defect in
|
|
92
|
+
* hand-rolled uploaders.
|
|
93
|
+
*
|
|
94
|
+
* State is the caller's. This component turns drops into `File[]` (plus
|
|
95
|
+
* reasoned rejections, via {@link partitionFiles}) and renders whatever rows it
|
|
96
|
+
* is handed — it never holds an upload queue, because the transport, the
|
|
97
|
+
* retries and the progress belong to the app.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* <FileUpload
|
|
101
|
+
* label="Drop show files"
|
|
102
|
+
* hint="CSV or QLab bundle, up to 20 MB"
|
|
103
|
+
* accept=".csv,.qlab"
|
|
104
|
+
* maxSize={20_000_000}
|
|
105
|
+
* files={rows}
|
|
106
|
+
* onFilesAccepted={enqueue}
|
|
107
|
+
* onFilesRejected={explain}
|
|
108
|
+
* onRemove={cancel}
|
|
109
|
+
* />
|
|
110
|
+
*/
|
|
111
|
+
declare const FileUpload: React.ForwardRefExoticComponent<FileUploadProps & React.RefAttributes<HTMLDivElement>>;
|
|
112
|
+
//#endregion
|
|
113
|
+
export { FilePartition, FilePartitionOptions, FileRejectReason, FileRejection, FileUpload, FileUploadProps, UploadFile, UploadStatus, partitionFiles };
|