@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,232 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { CrossGlyph } from "./_glyphs.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/forms/file-upload.tsx
|
|
7
|
+
/** Does `file` satisfy one clause of an `accept` string? */
|
|
8
|
+
function matchesAcceptClause(file, clause) {
|
|
9
|
+
const rule = clause.trim().toLowerCase();
|
|
10
|
+
if (rule === "") return true;
|
|
11
|
+
if (rule.startsWith(".")) return file.name.toLowerCase().endsWith(rule);
|
|
12
|
+
if (rule.endsWith("/*")) return file.type.toLowerCase().startsWith(rule.slice(0, -1));
|
|
13
|
+
return file.type.toLowerCase() === rule;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Split a drop into the files that pass the rules and the ones that do not,
|
|
17
|
+
* each with the reason it was turned away.
|
|
18
|
+
*
|
|
19
|
+
* Exported and pure because "why was my file rejected?" is the question a drop
|
|
20
|
+
* zone most often has to answer, and a caller filtering by hand would answer it
|
|
21
|
+
* differently from the component. Order is preserved, and the count ceiling
|
|
22
|
+
* keeps the *first* files rather than an arbitrary subset.
|
|
23
|
+
*
|
|
24
|
+
* @param files - Everything the drop or the file dialog produced.
|
|
25
|
+
* @param options - The rules to apply.
|
|
26
|
+
* @returns The accepted files and the reasoned rejections.
|
|
27
|
+
* @example
|
|
28
|
+
* partitionFiles(files, { accept: "image/*", maxSize: 2_000_000 })
|
|
29
|
+
*/
|
|
30
|
+
function partitionFiles(files, { accept, maxSize, maxFiles }) {
|
|
31
|
+
const clauses = accept === void 0 ? [] : accept.split(",").filter((part) => part.trim() !== "");
|
|
32
|
+
const accepted = [];
|
|
33
|
+
const rejected = [];
|
|
34
|
+
for (const file of files) if (clauses.length > 0 && !clauses.some((clause) => matchesAcceptClause(file, clause))) rejected.push({
|
|
35
|
+
file,
|
|
36
|
+
reason: "type"
|
|
37
|
+
});
|
|
38
|
+
else if (maxSize !== void 0 && file.size > maxSize) rejected.push({
|
|
39
|
+
file,
|
|
40
|
+
reason: "size"
|
|
41
|
+
});
|
|
42
|
+
else if (maxFiles !== void 0 && accepted.length >= maxFiles) rejected.push({
|
|
43
|
+
file,
|
|
44
|
+
reason: "count"
|
|
45
|
+
});
|
|
46
|
+
else accepted.push(file);
|
|
47
|
+
return {
|
|
48
|
+
accepted,
|
|
49
|
+
rejected
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** SI units, one decimal — `1536` reads as `1.5 kB`, not `1.5 KiB`. */
|
|
53
|
+
function formatBytes(bytes) {
|
|
54
|
+
if (bytes < 1e3) return `${bytes} B`;
|
|
55
|
+
const units = [
|
|
56
|
+
"kB",
|
|
57
|
+
"MB",
|
|
58
|
+
"GB",
|
|
59
|
+
"TB"
|
|
60
|
+
];
|
|
61
|
+
let value = bytes / 1e3;
|
|
62
|
+
let unit = 0;
|
|
63
|
+
while (value >= 1e3 && unit < units.length - 1) {
|
|
64
|
+
value /= 1e3;
|
|
65
|
+
unit += 1;
|
|
66
|
+
}
|
|
67
|
+
return `${value.toFixed(1)} ${units[unit]}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A drop zone with a file list under it.
|
|
71
|
+
*
|
|
72
|
+
* The zone is a real `<button>`, not a div with a drop handler: dropping is the
|
|
73
|
+
* mouse affordance, and pressing Enter on a focused button to open the file
|
|
74
|
+
* dialog is the keyboard one. A zone that only accepts drops is unusable
|
|
75
|
+
* without a pointer (WCAG 2.1.1), and it is the single most common defect in
|
|
76
|
+
* hand-rolled uploaders.
|
|
77
|
+
*
|
|
78
|
+
* State is the caller's. This component turns drops into `File[]` (plus
|
|
79
|
+
* reasoned rejections, via {@link partitionFiles}) and renders whatever rows it
|
|
80
|
+
* is handed — it never holds an upload queue, because the transport, the
|
|
81
|
+
* retries and the progress belong to the app.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* <FileUpload
|
|
85
|
+
* label="Drop show files"
|
|
86
|
+
* hint="CSV or QLab bundle, up to 20 MB"
|
|
87
|
+
* accept=".csv,.qlab"
|
|
88
|
+
* maxSize={20_000_000}
|
|
89
|
+
* files={rows}
|
|
90
|
+
* onFilesAccepted={enqueue}
|
|
91
|
+
* onFilesRejected={explain}
|
|
92
|
+
* onRemove={cancel}
|
|
93
|
+
* />
|
|
94
|
+
*/
|
|
95
|
+
const FileUpload = React.forwardRef(function FileUpload({ className, zoneClassName, label = "Drop files", hint, accept, multiple = false, maxSize, maxFiles, disabled = false, files, onFilesAccepted, onFilesRejected, onRemove, removeLabel = (file) => `Remove ${file.name}`, ...elementProps }, ref) {
|
|
96
|
+
const inputRef = React.useRef(null);
|
|
97
|
+
const [dragging, setDragging] = React.useState(false);
|
|
98
|
+
const depth = React.useRef(0);
|
|
99
|
+
const intake = (incoming) => {
|
|
100
|
+
if (disabled || incoming === null || incoming.length === 0) return;
|
|
101
|
+
const { accepted, rejected } = partitionFiles(Array.from(incoming), {
|
|
102
|
+
accept,
|
|
103
|
+
maxSize,
|
|
104
|
+
maxFiles: maxFiles ?? (multiple ? void 0 : 1)
|
|
105
|
+
});
|
|
106
|
+
if (accepted.length > 0) onFilesAccepted?.(accepted);
|
|
107
|
+
if (rejected.length > 0) onFilesRejected?.(rejected);
|
|
108
|
+
};
|
|
109
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
110
|
+
ref,
|
|
111
|
+
"data-slot": "file-upload",
|
|
112
|
+
className: cn("flex w-full flex-col gap-(--cue-space-2)", className),
|
|
113
|
+
...elementProps,
|
|
114
|
+
children: [
|
|
115
|
+
/* @__PURE__ */ jsxs("button", {
|
|
116
|
+
type: "button",
|
|
117
|
+
"data-slot": "file-upload-zone",
|
|
118
|
+
"data-dragging": dragging ? "true" : void 0,
|
|
119
|
+
disabled,
|
|
120
|
+
onClick: () => inputRef.current?.click(),
|
|
121
|
+
onDragEnter: (event) => {
|
|
122
|
+
if (disabled) return;
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
depth.current += 1;
|
|
125
|
+
setDragging(true);
|
|
126
|
+
},
|
|
127
|
+
onDragOver: (event) => {
|
|
128
|
+
if (disabled) return;
|
|
129
|
+
event.preventDefault();
|
|
130
|
+
},
|
|
131
|
+
onDragLeave: (event) => {
|
|
132
|
+
if (disabled) return;
|
|
133
|
+
event.preventDefault();
|
|
134
|
+
depth.current -= 1;
|
|
135
|
+
if (depth.current <= 0) {
|
|
136
|
+
depth.current = 0;
|
|
137
|
+
setDragging(false);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
onDrop: (event) => {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
depth.current = 0;
|
|
143
|
+
setDragging(false);
|
|
144
|
+
intake(event.dataTransfer?.files ?? null);
|
|
145
|
+
},
|
|
146
|
+
className: cn("flex w-full cursor-pointer flex-col items-center justify-center gap-(--cue-space-1) rounded-(--radius-control) border border-dashed border-border bg-sunken px-(--cue-space-4) py-(--cue-space-5) font-mono text-(length:--cue-text-ui) text-fg-muted outline-none transition-colors duration-150 hover:border-border-strong hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-40 data-[dragging=true]:border-accent data-[dragging=true]:bg-accent-soft data-[dragging=true]:text-fg motion-reduce:transition-none", zoneClassName),
|
|
147
|
+
children: [/* @__PURE__ */ jsx("span", { children: label }), hint === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
148
|
+
className: "text-(length:--cue-text-label) text-fg-subtle",
|
|
149
|
+
children: hint
|
|
150
|
+
})]
|
|
151
|
+
}),
|
|
152
|
+
/* @__PURE__ */ jsx("input", {
|
|
153
|
+
ref: inputRef,
|
|
154
|
+
type: "file",
|
|
155
|
+
hidden: true,
|
|
156
|
+
tabIndex: -1,
|
|
157
|
+
accept,
|
|
158
|
+
multiple,
|
|
159
|
+
disabled,
|
|
160
|
+
"data-slot": "file-upload-input",
|
|
161
|
+
onChange: (event) => {
|
|
162
|
+
intake(event.target.files);
|
|
163
|
+
event.target.value = "";
|
|
164
|
+
}
|
|
165
|
+
}),
|
|
166
|
+
files === void 0 || files.length === 0 ? null : /* @__PURE__ */ jsx("ul", {
|
|
167
|
+
"data-slot": "file-upload-list",
|
|
168
|
+
className: "flex flex-col gap-px",
|
|
169
|
+
children: files.map((file) => /* @__PURE__ */ jsx(FileUploadRow, {
|
|
170
|
+
file,
|
|
171
|
+
onRemove,
|
|
172
|
+
removeLabel
|
|
173
|
+
}, file.id))
|
|
174
|
+
})
|
|
175
|
+
]
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
/** One file: name, size, progress or reason, and a way out. */
|
|
179
|
+
function FileUploadRow({ file, onRemove, removeLabel }) {
|
|
180
|
+
const status = file.status ?? "pending";
|
|
181
|
+
const showProgress = status === "uploading" && file.progress !== void 0;
|
|
182
|
+
return /* @__PURE__ */ jsxs("li", {
|
|
183
|
+
"data-slot": "file-upload-row",
|
|
184
|
+
"data-status": status,
|
|
185
|
+
className: "flex min-h-control-sm items-center gap-(--cue-space-3) bg-surface-2 px-(--cue-space-3) py-(--cue-space-1) font-mono text-(length:--cue-text-label)",
|
|
186
|
+
children: [
|
|
187
|
+
/* @__PURE__ */ jsxs("div", {
|
|
188
|
+
className: "flex min-w-0 flex-1 flex-col gap-px",
|
|
189
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
190
|
+
className: "truncate text-fg",
|
|
191
|
+
children: file.name
|
|
192
|
+
}), file.error === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
193
|
+
"data-slot": "file-upload-error",
|
|
194
|
+
className: "truncate text-danger",
|
|
195
|
+
children: file.error
|
|
196
|
+
})]
|
|
197
|
+
}),
|
|
198
|
+
file.size === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
199
|
+
className: "shrink-0 tabular-nums text-fg-subtle",
|
|
200
|
+
children: formatBytes(file.size)
|
|
201
|
+
}),
|
|
202
|
+
showProgress ? /* @__PURE__ */ jsx("div", {
|
|
203
|
+
role: "progressbar",
|
|
204
|
+
"aria-label": `Uploading ${file.name}`,
|
|
205
|
+
"aria-valuenow": file.progress,
|
|
206
|
+
"aria-valuemin": 0,
|
|
207
|
+
"aria-valuemax": 100,
|
|
208
|
+
"data-slot": "file-upload-progress",
|
|
209
|
+
className: "h-px w-[4rem] shrink-0 overflow-hidden bg-surface-3",
|
|
210
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
211
|
+
className: "h-full bg-accent transition-[width] duration-[120ms] ease-linear motion-reduce:transition-none",
|
|
212
|
+
style: { width: `${file.progress}%` }
|
|
213
|
+
})
|
|
214
|
+
}) : null,
|
|
215
|
+
status === "done" ? /* @__PURE__ */ jsx("span", {
|
|
216
|
+
className: "shrink-0 text-ok",
|
|
217
|
+
"aria-hidden": "true",
|
|
218
|
+
children: "✓"
|
|
219
|
+
}) : null,
|
|
220
|
+
onRemove === void 0 ? null : /* @__PURE__ */ jsx("button", {
|
|
221
|
+
type: "button",
|
|
222
|
+
"aria-label": removeLabel(file),
|
|
223
|
+
"data-slot": "file-upload-remove",
|
|
224
|
+
onClick: () => onRemove(file.id),
|
|
225
|
+
className: "flex size-icon-sm shrink-0 cursor-pointer items-center justify-center rounded-(--radius-control) border-0 bg-transparent p-0 text-fg-subtle outline-none transition-colors hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none",
|
|
226
|
+
children: /* @__PURE__ */ jsx(CrossGlyph, { className: "size-full" })
|
|
227
|
+
})
|
|
228
|
+
]
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
export { FileUpload, partitionFiles };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ControlVariantProps, FormControlSize, bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants } from "./_chassis.js";
|
|
2
|
+
import { Autocomplete, AutocompleteProps } from "./autocomplete.js";
|
|
3
|
+
import { ButtonGroup, ButtonGroupOrientation, ButtonGroupProps } from "./button-group.js";
|
|
4
|
+
import { Checkbox, CheckboxGroup, CheckboxGroupProps, CheckboxProps } from "./checkbox.js";
|
|
5
|
+
import { Combobox, ComboboxOption, ComboboxProps } from "./combobox.js";
|
|
6
|
+
import { EnvVarInput, EnvVarInputProps, envReference, parseEnvReference } from "./env-var-input.js";
|
|
7
|
+
import { Field, FieldDescription, FieldDescriptionProps, FieldError, FieldErrorProps, FieldIssue, FieldLabel, FieldLabelProps, FieldProps } from "./field.js";
|
|
8
|
+
import { FilePartition, FilePartitionOptions, FileRejectReason, FileRejection, FileUpload, FileUploadProps, UploadFile, UploadStatus, partitionFiles } from "./file-upload.js";
|
|
9
|
+
import { Input, InputProps } from "./input.js";
|
|
10
|
+
import { InputGroup, InputGroupProps } from "./input-group.js";
|
|
11
|
+
import { MultiSelect, MultiSelectProps } from "./multi-select.js";
|
|
12
|
+
import { NumberField, NumberFieldProps } from "./number-field.js";
|
|
13
|
+
import { OTPField, OTPFieldProps } from "./otp-field.js";
|
|
14
|
+
import { PasswordInput, PasswordInputProps } from "./password-input.js";
|
|
15
|
+
import { Radio, RadioGroup, RadioGroupProps, RadioProps } from "./radio-group.js";
|
|
16
|
+
import { Rating, RatingProps, RatingSize } from "./rating.js";
|
|
17
|
+
import { ScrubInput, ScrubInputProps } from "./scrub-input.js";
|
|
18
|
+
import { SearchInput, SearchInputProps } from "./search-input.js";
|
|
19
|
+
import { Select, SelectOption, SelectProps } from "./select.js";
|
|
20
|
+
import { Slider, SliderProps } from "./slider.js";
|
|
21
|
+
import { Switch, SwitchProps } from "./switch.js";
|
|
22
|
+
import { TagsInput, TagsInputProps } from "./tags-input.js";
|
|
23
|
+
import { Textarea, TextareaProps } from "./textarea.js";
|
|
24
|
+
import { Toggle, ToggleProps } from "./toggle.js";
|
|
25
|
+
import { ToggleGroup, ToggleGroupProps } from "./toggle-group.js";
|
|
26
|
+
export { Autocomplete, type AutocompleteProps, ButtonGroup, type ButtonGroupOrientation, type ButtonGroupProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, Combobox, type ComboboxOption, type ComboboxProps, type ControlVariantProps, EnvVarInput, type EnvVarInputProps, Field, FieldDescription, type FieldDescriptionProps, FieldError, type FieldErrorProps, type FieldIssue, FieldLabel, type FieldLabelProps, type FieldProps, type FilePartition, type FilePartitionOptions, type FileRejectReason, type FileRejection, FileUpload, type FileUploadProps, type FormControlSize, Input, InputGroup, type InputGroupProps, type InputProps, MultiSelect, type MultiSelectProps, NumberField, type NumberFieldProps, OTPField, type OTPFieldProps, PasswordInput, type PasswordInputProps, Radio, RadioGroup, type RadioGroupProps, type RadioProps, Rating, type RatingProps, type RatingSize, ScrubInput, type ScrubInputProps, SearchInput, type SearchInputProps, Select, type SelectOption, type SelectProps, Slider, type SliderProps, Switch, type SwitchProps, TagsInput, type TagsInputProps, Textarea, type TextareaProps, Toggle, ToggleGroup, type ToggleGroupProps, type ToggleProps, type UploadFile, type UploadStatus, bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, envReference, parseEnvReference, partitionFiles };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Checkbox, CheckboxGroup } from "./checkbox.js";
|
|
2
|
+
import { bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants } from "./_chassis.js";
|
|
3
|
+
import { InputGroup } from "./input-group.js";
|
|
4
|
+
import { Input } from "./input.js";
|
|
5
|
+
import { NumberField } from "./number-field.js";
|
|
6
|
+
import { Radio, RadioGroup } from "./radio-group.js";
|
|
7
|
+
import { Autocomplete } from "./autocomplete.js";
|
|
8
|
+
import { ButtonGroup } from "./button-group.js";
|
|
9
|
+
import { Combobox } from "./combobox.js";
|
|
10
|
+
import { PasswordInput } from "./password-input.js";
|
|
11
|
+
import { EnvVarInput, envReference, parseEnvReference } from "./env-var-input.js";
|
|
12
|
+
import { Field, FieldDescription, FieldError, FieldLabel } from "./field.js";
|
|
13
|
+
import { FileUpload, partitionFiles } from "./file-upload.js";
|
|
14
|
+
import { MultiSelect } from "./multi-select.js";
|
|
15
|
+
import { OTPField } from "./otp-field.js";
|
|
16
|
+
import { Rating } from "./rating.js";
|
|
17
|
+
import { ScrubInput } from "./scrub-input.js";
|
|
18
|
+
import { SearchInput } from "./search-input.js";
|
|
19
|
+
import { Select } from "./select.js";
|
|
20
|
+
import { Slider } from "./slider.js";
|
|
21
|
+
import { Switch } from "./switch.js";
|
|
22
|
+
import { TagsInput } from "./tags-input.js";
|
|
23
|
+
import { Textarea } from "./textarea.js";
|
|
24
|
+
import { ToggleGroup } from "./toggle-group.js";
|
|
25
|
+
import { Toggle } from "./toggle.js";
|
|
26
|
+
export { Autocomplete, ButtonGroup, Checkbox, CheckboxGroup, Combobox, EnvVarInput, Field, FieldDescription, FieldError, FieldLabel, FileUpload, Input, InputGroup, MultiSelect, NumberField, OTPField, PasswordInput, Radio, RadioGroup, Rating, ScrubInput, SearchInput, Select, Slider, Switch, TagsInput, Textarea, Toggle, ToggleGroup, bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, envReference, parseEnvReference, partitionFiles };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/forms/input-group.d.ts
|
|
4
|
+
interface InputGroupProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
5
|
+
/** Content pinned to the left gutter — a glyph, a unit prefix, a protocol. */
|
|
6
|
+
leading?: React.ReactNode;
|
|
7
|
+
/** Content pinned to the right gutter — a unit suffix, a `Kbd`, a clear button. */
|
|
8
|
+
trailing?: React.ReactNode;
|
|
9
|
+
/** Rung of the control ladder for the whole cluster. Defaults to `"md"`. */
|
|
10
|
+
size?: FormControlSize;
|
|
11
|
+
/** The control. An {@link Input} here renders bare and fills the middle. */
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A control and its adornments, drawn as a single field.
|
|
16
|
+
*
|
|
17
|
+
* The group — not the input — owns the chassis, so there is exactly one rim and
|
|
18
|
+
* one fill however many affordances are bolted on. It publishes that fact
|
|
19
|
+
* through context: an {@link Input} rendered inside strips its own border,
|
|
20
|
+
* background, height and padding and inherits the group's font size.
|
|
21
|
+
*
|
|
22
|
+
* Focus feedback splits in two, because a `<div>` matches neither `:focus` nor
|
|
23
|
+
* `:focus-visible` itself. The rim strengthens on `:focus-within` — anything
|
|
24
|
+
* focused inside, however it got there — while the ring waits for
|
|
25
|
+
* `:has(:focus-visible)`, so a mouse click into the field does not light the
|
|
26
|
+
* whole cluster up. Both halves live on the wrapper; the inner control paints
|
|
27
|
+
* no ring of its own.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* <InputGroup leading={<Search />} trailing={<Kbd>⌘K</Kbd>}>
|
|
31
|
+
* <Input aria-label="Search cues" />
|
|
32
|
+
* </InputGroup>
|
|
33
|
+
*/
|
|
34
|
+
declare const InputGroup: React.ForwardRefExoticComponent<InputGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { InputGroup, InputGroupProps };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { controlGroupFocusClasses, controlVariants } from "./_chassis.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/forms/input-group.tsx
|
|
7
|
+
/**
|
|
8
|
+
* `true` inside an {@link InputGroup}: tells a nested control to render bare
|
|
9
|
+
* because the group already paints the rim, the fill and the height.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API; read by `input.tsx`.
|
|
12
|
+
*/
|
|
13
|
+
const InputGroupContext = React.createContext(false);
|
|
14
|
+
/**
|
|
15
|
+
* A control and its adornments, drawn as a single field.
|
|
16
|
+
*
|
|
17
|
+
* The group — not the input — owns the chassis, so there is exactly one rim and
|
|
18
|
+
* one fill however many affordances are bolted on. It publishes that fact
|
|
19
|
+
* through context: an {@link Input} rendered inside strips its own border,
|
|
20
|
+
* background, height and padding and inherits the group's font size.
|
|
21
|
+
*
|
|
22
|
+
* Focus feedback splits in two, because a `<div>` matches neither `:focus` nor
|
|
23
|
+
* `:focus-visible` itself. The rim strengthens on `:focus-within` — anything
|
|
24
|
+
* focused inside, however it got there — while the ring waits for
|
|
25
|
+
* `:has(:focus-visible)`, so a mouse click into the field does not light the
|
|
26
|
+
* whole cluster up. Both halves live on the wrapper; the inner control paints
|
|
27
|
+
* no ring of its own.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* <InputGroup leading={<Search />} trailing={<Kbd>⌘K</Kbd>}>
|
|
31
|
+
* <Input aria-label="Search cues" />
|
|
32
|
+
* </InputGroup>
|
|
33
|
+
*/
|
|
34
|
+
const InputGroup = React.forwardRef(function InputGroup({ className, leading, trailing, size, children, ...elementProps }, ref) {
|
|
35
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
36
|
+
ref,
|
|
37
|
+
"data-slot": "input-group",
|
|
38
|
+
className: cn(controlVariants({ size }), "flex items-center gap-(--cue-space-2)", controlGroupFocusClasses, className),
|
|
39
|
+
...elementProps,
|
|
40
|
+
children: [
|
|
41
|
+
leading === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
42
|
+
"data-slot": "input-group-leading",
|
|
43
|
+
className: "flex shrink-0 items-center text-fg-subtle",
|
|
44
|
+
children: leading
|
|
45
|
+
}),
|
|
46
|
+
/* @__PURE__ */ jsx(InputGroupContext.Provider, {
|
|
47
|
+
value: true,
|
|
48
|
+
children
|
|
49
|
+
}),
|
|
50
|
+
trailing === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
51
|
+
"data-slot": "input-group-trailing",
|
|
52
|
+
className: "flex shrink-0 items-center text-fg-subtle",
|
|
53
|
+
children: trailing
|
|
54
|
+
})
|
|
55
|
+
]
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//#endregion
|
|
59
|
+
export { InputGroup, InputGroupContext };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Input } from "@base-ui/react/input";
|
|
4
|
+
//#region src/forms/input.d.ts
|
|
5
|
+
interface InputProps extends Omit<Input.Props, "className" | "size"> {
|
|
6
|
+
/** Extra classes, merged over the chassis. */
|
|
7
|
+
className?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Rung of the control ladder. Defaults to `"md"`. Shadows the native `size`
|
|
10
|
+
* attribute (a character count), which nothing in a token-driven layout wants.
|
|
11
|
+
*/
|
|
12
|
+
size?: FormControlSize;
|
|
13
|
+
/**
|
|
14
|
+
* Accessible name for the input, when no `FieldLabel` names it. Declared here
|
|
15
|
+
* rather than left to the inherited attribute so the props table carries the
|
|
16
|
+
* row: a bare input outside a `Field` has no other way to be named.
|
|
17
|
+
*/
|
|
18
|
+
"aria-label"?: string;
|
|
19
|
+
/**
|
|
20
|
+
* An example of what goes in the field, shown while it is empty. Not a name:
|
|
21
|
+
* it disappears on the first keystroke, so pair it with `aria-label` or a
|
|
22
|
+
* `FieldLabel`. Declared for the props-table row, as `aria-label` is above.
|
|
23
|
+
*/
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The single-line text control.
|
|
28
|
+
*
|
|
29
|
+
* Wraps Base UI's `Input`, so dropping one inside a {@link Field} wires up the
|
|
30
|
+
* label, the description and the validity state with no `id` plumbing. Rides
|
|
31
|
+
* the recessed chassis: `bg-sunken` sets it into the panel rather than raising
|
|
32
|
+
* it off, which is how this system distinguishes "you type here" from "you
|
|
33
|
+
* press here".
|
|
34
|
+
*
|
|
35
|
+
* Inside an {@link InputGroup} it renders bare — the group owns the rim — so the
|
|
36
|
+
* two compose without a doubled border.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* <Input placeholder="e.g. Blackout" />
|
|
40
|
+
* @example
|
|
41
|
+
* <Input type="number" size="sm" defaultValue={512} />
|
|
42
|
+
*/
|
|
43
|
+
declare const Input$1: React.ForwardRefExoticComponent<Omit<InputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { Input$1 as Input, InputProps };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { bareControlClasses, controlVariants } from "./_chassis.js";
|
|
4
|
+
import { InputGroupContext } from "./input-group.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { Input } from "@base-ui/react/input";
|
|
8
|
+
//#region src/forms/input.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The single-line text control.
|
|
11
|
+
*
|
|
12
|
+
* Wraps Base UI's `Input`, so dropping one inside a {@link Field} wires up the
|
|
13
|
+
* label, the description and the validity state with no `id` plumbing. Rides
|
|
14
|
+
* the recessed chassis: `bg-sunken` sets it into the panel rather than raising
|
|
15
|
+
* it off, which is how this system distinguishes "you type here" from "you
|
|
16
|
+
* press here".
|
|
17
|
+
*
|
|
18
|
+
* Inside an {@link InputGroup} it renders bare — the group owns the rim — so the
|
|
19
|
+
* two compose without a doubled border.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <Input placeholder="e.g. Blackout" />
|
|
23
|
+
* @example
|
|
24
|
+
* <Input type="number" size="sm" defaultValue={512} />
|
|
25
|
+
*/
|
|
26
|
+
const Input$1 = React.forwardRef(function Input$2({ className, size, ...elementProps }, ref) {
|
|
27
|
+
const inGroup = React.useContext(InputGroupContext);
|
|
28
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
29
|
+
ref,
|
|
30
|
+
"data-slot": "input",
|
|
31
|
+
className: cn(inGroup ? bareControlClasses : controlVariants({ size }), className),
|
|
32
|
+
...elementProps
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Input$1 as Input };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import { ComboboxOption } from "./combobox.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/forms/multi-select.d.ts
|
|
5
|
+
interface MultiSelectProps {
|
|
6
|
+
/** The rows, in display order. Base UI filters them against what is typed. */
|
|
7
|
+
items: readonly ComboboxOption[];
|
|
8
|
+
/** Selected values. Use with `onValueChange` for a controlled field. */
|
|
9
|
+
value?: readonly string[];
|
|
10
|
+
/** Initially selected values for an uncontrolled field. */
|
|
11
|
+
defaultValue?: readonly string[];
|
|
12
|
+
/** Called with the full selection after every add or remove. */
|
|
13
|
+
onValueChange?: (value: string[]) => void;
|
|
14
|
+
/** Shown while nothing is selected — suppressed once chips fill the field. */
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
/** Shown in place of the list when the query matches nothing. */
|
|
17
|
+
emptyMessage?: React.ReactNode;
|
|
18
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
19
|
+
size?: FormControlSize;
|
|
20
|
+
/** Prevent opening and grey the field out. */
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
/** Require at least one value before the owning form submits. */
|
|
23
|
+
required?: boolean;
|
|
24
|
+
/** Name for the hidden input, when the field is part of a form. */
|
|
25
|
+
name?: string;
|
|
26
|
+
/** Id forwarded to the text input. */
|
|
27
|
+
id?: string;
|
|
28
|
+
/** Accessible name for the input, when no {@link FieldLabel} names it. */
|
|
29
|
+
"aria-label"?: string;
|
|
30
|
+
/** Id of the element naming the input. */
|
|
31
|
+
"aria-labelledby"?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Accessible name for a chip's remove button, given the row's label. Defaults
|
|
34
|
+
* to ``(label) => `Remove ${label}` ``.
|
|
35
|
+
*/
|
|
36
|
+
removeLabel?: (label: string) => string;
|
|
37
|
+
/** Extra classes for the field. */
|
|
38
|
+
className?: string;
|
|
39
|
+
/** Extra classes for the popup surface. */
|
|
40
|
+
popupClassName?: string;
|
|
41
|
+
/** Distance in px between the field and the popup. Defaults to `4`. */
|
|
42
|
+
sideOffset?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Several values out of a known set, each shown as a removable chip.
|
|
46
|
+
*
|
|
47
|
+
* The chips live *inside* the field rather than under it, which is what makes
|
|
48
|
+
* the control honest about its own size: a selection of nine trusses is visibly
|
|
49
|
+
* nine trusses tall, and nothing is hidden behind a "+6 more" the user has to
|
|
50
|
+
* open something to read. That is also why the field takes `min-h-control-*`
|
|
51
|
+
* instead of a fixed height.
|
|
52
|
+
*
|
|
53
|
+
* Backspace in an empty input removes the last chip and the chips themselves are
|
|
54
|
+
* arrow-key navigable — both come from Base UI's `Combobox.Chips`, and both are
|
|
55
|
+
* the parts hand-rolled multi-selects forget.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* <MultiSelect aria-label="Trusses" items={trusses} value={picked} onValueChange={setPicked} />
|
|
59
|
+
*/
|
|
60
|
+
declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLInputElement>>;
|
|
61
|
+
//#endregion
|
|
62
|
+
export { MultiSelect, MultiSelectProps };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { bareControlClasses, controlGroupFocusClasses, controlSurface } from "./_chassis.js";
|
|
4
|
+
import { useCuePortalProps } from "../system/portal.js";
|
|
5
|
+
import { CrossGlyph, TickGlyph } from "./_glyphs.js";
|
|
6
|
+
import { chipFieldClasses, chipRemoveClasses, listboxEmptyClasses, listboxIndicatorClasses, listboxItemClasses, listboxListClasses, listboxPopupClasses, listboxPositionerClasses, valueChipClasses } 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/multi-select.tsx
|
|
11
|
+
/** Horizontal padding and type size per rung; the height comes from the chips. */
|
|
12
|
+
const FIELD_SIZES = {
|
|
13
|
+
sm: "min-h-control-sm px-(--cue-space-2) text-(length:--cue-text-label)",
|
|
14
|
+
md: "min-h-control-md px-(--cue-space-3) text-(length:--cue-text-ui)",
|
|
15
|
+
lg: "min-h-control-lg px-(--cue-space-4) text-(length:--cue-text-body)"
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Several values out of a known set, each shown as a removable chip.
|
|
19
|
+
*
|
|
20
|
+
* The chips live *inside* the field rather than under it, which is what makes
|
|
21
|
+
* the control honest about its own size: a selection of nine trusses is visibly
|
|
22
|
+
* nine trusses tall, and nothing is hidden behind a "+6 more" the user has to
|
|
23
|
+
* open something to read. That is also why the field takes `min-h-control-*`
|
|
24
|
+
* instead of a fixed height.
|
|
25
|
+
*
|
|
26
|
+
* Backspace in an empty input removes the last chip and the chips themselves are
|
|
27
|
+
* arrow-key navigable — both come from Base UI's `Combobox.Chips`, and both are
|
|
28
|
+
* the parts hand-rolled multi-selects forget.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* <MultiSelect aria-label="Trusses" items={trusses} value={picked} onValueChange={setPicked} />
|
|
32
|
+
*/
|
|
33
|
+
const MultiSelect = React.forwardRef(function MultiSelect({ items, value, defaultValue, onValueChange, placeholder, emptyMessage = "No matches", size = "md", disabled, required, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, removeLabel = (label) => `Remove ${label}`, className, popupClassName, sideOffset = 4 }, ref) {
|
|
34
|
+
const portalProps = useCuePortalProps();
|
|
35
|
+
const resolve = React.useCallback((keys) => keys === void 0 ? void 0 : keys.map((key) => items.find((item) => item.value === key)).filter((item) => item !== void 0), [items]);
|
|
36
|
+
const handleValueChange = React.useCallback((next) => {
|
|
37
|
+
onValueChange?.(next.map((item) => item.value));
|
|
38
|
+
}, [onValueChange]);
|
|
39
|
+
return /* @__PURE__ */ jsxs(Combobox.Root, {
|
|
40
|
+
multiple: true,
|
|
41
|
+
items,
|
|
42
|
+
value: resolve(value),
|
|
43
|
+
defaultValue: resolve(defaultValue),
|
|
44
|
+
onValueChange: onValueChange === void 0 ? void 0 : handleValueChange,
|
|
45
|
+
disabled,
|
|
46
|
+
required,
|
|
47
|
+
name,
|
|
48
|
+
children: [/* @__PURE__ */ jsx(Combobox.InputGroup, {
|
|
49
|
+
"data-slot": "multi-select-group",
|
|
50
|
+
className: cn(controlSurface, FIELD_SIZES[size], controlGroupFocusClasses, className),
|
|
51
|
+
children: /* @__PURE__ */ jsx(Combobox.Chips, {
|
|
52
|
+
className: chipFieldClasses,
|
|
53
|
+
children: /* @__PURE__ */ jsx(Combobox.Value, { children: (selected) => /* @__PURE__ */ jsxs(React.Fragment, { children: [selected.map((item) => /* @__PURE__ */ jsxs(Combobox.Chip, {
|
|
54
|
+
"data-slot": "multi-select-chip",
|
|
55
|
+
className: valueChipClasses,
|
|
56
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
57
|
+
className: "truncate",
|
|
58
|
+
children: item.label
|
|
59
|
+
}), /* @__PURE__ */ jsx(Combobox.ChipRemove, {
|
|
60
|
+
"aria-label": removeLabel(item.label),
|
|
61
|
+
className: chipRemoveClasses,
|
|
62
|
+
children: /* @__PURE__ */ jsx(CrossGlyph, { className: "size-icon-sm" })
|
|
63
|
+
})]
|
|
64
|
+
}, item.value)), /* @__PURE__ */ jsx(Combobox.Input, {
|
|
65
|
+
ref,
|
|
66
|
+
id,
|
|
67
|
+
"data-slot": "multi-select-input",
|
|
68
|
+
placeholder: selected.length > 0 ? "" : placeholder,
|
|
69
|
+
"aria-label": ariaLabel,
|
|
70
|
+
"aria-labelledby": ariaLabelledBy,
|
|
71
|
+
className: cn(bareControlClasses, "h-control-sm w-auto min-w-[6ch]")
|
|
72
|
+
})] }) })
|
|
73
|
+
})
|
|
74
|
+
}), /* @__PURE__ */ jsx(Combobox.Portal, {
|
|
75
|
+
...portalProps,
|
|
76
|
+
children: /* @__PURE__ */ jsx(Combobox.Positioner, {
|
|
77
|
+
className: listboxPositionerClasses,
|
|
78
|
+
sideOffset,
|
|
79
|
+
children: /* @__PURE__ */ jsxs(Combobox.Popup, {
|
|
80
|
+
"data-slot": "multi-select-popup",
|
|
81
|
+
className: cn(listboxPopupClasses, popupClassName),
|
|
82
|
+
children: [/* @__PURE__ */ jsx(Combobox.Empty, {
|
|
83
|
+
className: listboxEmptyClasses,
|
|
84
|
+
children: emptyMessage
|
|
85
|
+
}), /* @__PURE__ */ jsx(Combobox.List, {
|
|
86
|
+
className: listboxListClasses,
|
|
87
|
+
children: (item) => /* @__PURE__ */ jsxs(Combobox.Item, {
|
|
88
|
+
value: item,
|
|
89
|
+
disabled: item.disabled,
|
|
90
|
+
"data-slot": "multi-select-item",
|
|
91
|
+
className: listboxItemClasses,
|
|
92
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
93
|
+
className: listboxIndicatorClasses,
|
|
94
|
+
children: /* @__PURE__ */ jsx(Combobox.ItemIndicator, { children: /* @__PURE__ */ jsx(TickGlyph, { className: "size-icon-sm" }) })
|
|
95
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
96
|
+
className: "truncate",
|
|
97
|
+
children: item.label
|
|
98
|
+
})]
|
|
99
|
+
}, item.value)
|
|
100
|
+
})]
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
})]
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//#endregion
|
|
107
|
+
export { MultiSelect };
|