@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,81 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/forms/scrub-input.d.ts
|
|
4
|
+
interface ScrubInputProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue" | "onDragStart" | "onDragEnd"> {
|
|
5
|
+
/** The value. Always controlled — a scrub is a stream of edits, not a state to lose. */
|
|
6
|
+
value: number;
|
|
7
|
+
/**
|
|
8
|
+
* Called with every new value: each drag frame, each arrow-key step, and the
|
|
9
|
+
* committed result of a typed edit. Not a DOM change event.
|
|
10
|
+
*/
|
|
11
|
+
onChange: (value: number) => void;
|
|
12
|
+
/** Called only for values produced by a drag, for hosts that throttle live writes. */
|
|
13
|
+
onLiveDrag?: (value: number) => void;
|
|
14
|
+
/** Called once when a drag actually begins — after the click threshold, not on press. */
|
|
15
|
+
onDragStart?: () => void;
|
|
16
|
+
/** Called once when a drag ends. */
|
|
17
|
+
onDragEnd?: () => void;
|
|
18
|
+
/**
|
|
19
|
+
* Called once per finished gesture: pointer-up after a drag, each key step, a
|
|
20
|
+
* committed typed value. Hang undo entries, network writes and persistence
|
|
21
|
+
* here — `onChange` fires dozens of times per drag.
|
|
22
|
+
*/
|
|
23
|
+
onCommit?: (value: number) => void;
|
|
24
|
+
/** Lower bound. Defaults to `-Infinity`. */
|
|
25
|
+
min?: number;
|
|
26
|
+
/** Upper bound. Defaults to `Infinity`. */
|
|
27
|
+
max?: number;
|
|
28
|
+
/** Grid the value snaps to. Defaults to `1`. */
|
|
29
|
+
step?: number;
|
|
30
|
+
/** Decimal places shown. Defaults to whatever `step` implies. */
|
|
31
|
+
precision?: number;
|
|
32
|
+
/** Suffix drawn after the number — `%`, `s`, `dB`. */
|
|
33
|
+
unit?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The units this value can be expressed in. With more than one the suffix
|
|
36
|
+
* becomes a button that cycles through them and reports via `onUnitChange`.
|
|
37
|
+
*/
|
|
38
|
+
units?: readonly string[];
|
|
39
|
+
/** Called with the next unit when the suffix is clicked. */
|
|
40
|
+
onUnitChange?: (unit: string) => void;
|
|
41
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
42
|
+
size?: FormControlSize;
|
|
43
|
+
/** Refuse dragging, typing and keyboard steps. */
|
|
44
|
+
disabled?: boolean;
|
|
45
|
+
/** Accessible name for the control. */
|
|
46
|
+
"aria-label"?: string;
|
|
47
|
+
/** Id of the element naming the control. */
|
|
48
|
+
"aria-labelledby"?: string;
|
|
49
|
+
/** Extra classes for the control. */
|
|
50
|
+
className?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A number you scrub: drag up to raise it, down to lower it, click to type it.
|
|
54
|
+
*
|
|
55
|
+
* The console's answer to `<input type="number">`. Native spinners are two 4px
|
|
56
|
+
* arrows that only appear on hover — unusable at this density and invisible on
|
|
57
|
+
* touch — while a slider costs 200px of width to say one number. Dragging on the
|
|
58
|
+
* number itself costs nothing and is the interaction every audio and lighting
|
|
59
|
+
* tool has converged on: pointer capture so the cursor may leave the box, Shift
|
|
60
|
+
* for fine adjustment, `cursor-ns-resize` to advertise the axis.
|
|
61
|
+
*
|
|
62
|
+
* Click-to-type is not a fallback, it is the other half of the control: a
|
|
63
|
+
* gesture is for *approximately*, typing is for *exactly*, and a value you can
|
|
64
|
+
* only reach by dragging is a value you cannot enter from a cue sheet.
|
|
65
|
+
*
|
|
66
|
+
* `role="spinbutton"` is what makes any of this reachable without a pointer —
|
|
67
|
+
* arrow keys step, Page keys jump ten, Home/End go to the bounds — and it is why
|
|
68
|
+
* the resting element is not an `<input>`: a spinbutton announces its value,
|
|
69
|
+
* where a text box would announce its editable string on every drag frame.
|
|
70
|
+
*
|
|
71
|
+
* The `onChange`/`onCommit` split is the same undo-coalescing contract as
|
|
72
|
+
* {@link Slider}: one drag is one undo entry, not two hundred.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* <ScrubInput aria-label="Intensity" value={level} onChange={setLevel} onCommit={pushUndo} />
|
|
76
|
+
* @example
|
|
77
|
+
* <ScrubInput aria-label="Fade" value={fade} onChange={setFade} step={0.1} unit="s" min={0} />
|
|
78
|
+
*/
|
|
79
|
+
declare const ScrubInput: React.ForwardRefExoticComponent<ScrubInputProps & React.RefAttributes<HTMLDivElement>>;
|
|
80
|
+
//#endregion
|
|
81
|
+
export { ScrubInput, ScrubInputProps };
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { bareControlClasses, controlGroupFocusClasses, controlVariants } from "./_chassis.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/forms/scrub-input.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Pixels of vertical travel per step. Two pixels per step is the Ableton/Live
|
|
9
|
+
* feel the audit called out: fast enough to cross a 0–100 range in a flick,
|
|
10
|
+
* slow enough that a single value is reachable without the fine modifier.
|
|
11
|
+
*/
|
|
12
|
+
const PIXELS_PER_STEP = 2;
|
|
13
|
+
/**
|
|
14
|
+
* How much Shift slows a drag. Quarter speed — same value grid, four times the
|
|
15
|
+
* travel per step, which is precision of *control* rather than sub-step values
|
|
16
|
+
* the caller never asked for.
|
|
17
|
+
*/
|
|
18
|
+
const FINE_FACTOR = .25;
|
|
19
|
+
/** Travel, in px, before a press counts as a drag rather than a click. */
|
|
20
|
+
const DRAG_THRESHOLD_PX = 3;
|
|
21
|
+
/** Arrow keys move one step; Page keys move ten. */
|
|
22
|
+
const PAGE_FACTOR = 10;
|
|
23
|
+
/** Snap to the step grid, clamp to the bounds, and drop float noise. */
|
|
24
|
+
function quantise(raw, { min, max, step, precision }) {
|
|
25
|
+
const snapped = Math.round(raw / step) * step;
|
|
26
|
+
const clamped = Math.min(max, Math.max(min, snapped));
|
|
27
|
+
const factor = 10 ** precision;
|
|
28
|
+
return Math.round(clamped * factor) / factor;
|
|
29
|
+
}
|
|
30
|
+
/** Decimal places implied by a step, when the caller did not say. */
|
|
31
|
+
function precisionOf(step) {
|
|
32
|
+
const text = String(step);
|
|
33
|
+
const dot = text.indexOf(".");
|
|
34
|
+
return dot === -1 ? 0 : Math.min(6, text.length - dot - 1);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A number you scrub: drag up to raise it, down to lower it, click to type it.
|
|
38
|
+
*
|
|
39
|
+
* The console's answer to `<input type="number">`. Native spinners are two 4px
|
|
40
|
+
* arrows that only appear on hover — unusable at this density and invisible on
|
|
41
|
+
* touch — while a slider costs 200px of width to say one number. Dragging on the
|
|
42
|
+
* number itself costs nothing and is the interaction every audio and lighting
|
|
43
|
+
* tool has converged on: pointer capture so the cursor may leave the box, Shift
|
|
44
|
+
* for fine adjustment, `cursor-ns-resize` to advertise the axis.
|
|
45
|
+
*
|
|
46
|
+
* Click-to-type is not a fallback, it is the other half of the control: a
|
|
47
|
+
* gesture is for *approximately*, typing is for *exactly*, and a value you can
|
|
48
|
+
* only reach by dragging is a value you cannot enter from a cue sheet.
|
|
49
|
+
*
|
|
50
|
+
* `role="spinbutton"` is what makes any of this reachable without a pointer —
|
|
51
|
+
* arrow keys step, Page keys jump ten, Home/End go to the bounds — and it is why
|
|
52
|
+
* the resting element is not an `<input>`: a spinbutton announces its value,
|
|
53
|
+
* where a text box would announce its editable string on every drag frame.
|
|
54
|
+
*
|
|
55
|
+
* The `onChange`/`onCommit` split is the same undo-coalescing contract as
|
|
56
|
+
* {@link Slider}: one drag is one undo entry, not two hundred.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* <ScrubInput aria-label="Intensity" value={level} onChange={setLevel} onCommit={pushUndo} />
|
|
60
|
+
* @example
|
|
61
|
+
* <ScrubInput aria-label="Fade" value={fade} onChange={setFade} step={0.1} unit="s" min={0} />
|
|
62
|
+
*/
|
|
63
|
+
const ScrubInput = React.forwardRef(function ScrubInput({ className, value, onChange, onLiveDrag, onDragStart, onDragEnd, onCommit, min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY, step = 1, precision, unit, units, onUnitChange, size = "md", disabled = false, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...elementProps }, ref) {
|
|
64
|
+
const decimals = precision ?? precisionOf(step);
|
|
65
|
+
const bounds = React.useMemo(() => ({
|
|
66
|
+
min,
|
|
67
|
+
max,
|
|
68
|
+
step,
|
|
69
|
+
precision: decimals
|
|
70
|
+
}), [
|
|
71
|
+
decimals,
|
|
72
|
+
max,
|
|
73
|
+
min,
|
|
74
|
+
step
|
|
75
|
+
]);
|
|
76
|
+
const [editing, setEditing] = React.useState(false);
|
|
77
|
+
const [draft, setDraft] = React.useState("");
|
|
78
|
+
const editorRef = React.useRef(null);
|
|
79
|
+
/** Escape has already discarded this edit; a trailing blur must not undo that. */
|
|
80
|
+
const abandoned = React.useRef(false);
|
|
81
|
+
/** Live gesture state. A ref, not state: a drag must not re-render to track itself. */
|
|
82
|
+
const gesture = React.useRef(null);
|
|
83
|
+
const display = value.toFixed(decimals);
|
|
84
|
+
const valueText = unit === void 0 ? display : `${display} ${unit}`;
|
|
85
|
+
const emit = React.useCallback((next, fromDrag) => {
|
|
86
|
+
if (next === value) return false;
|
|
87
|
+
onChange(next);
|
|
88
|
+
if (fromDrag) onLiveDrag?.(next);
|
|
89
|
+
return true;
|
|
90
|
+
}, [
|
|
91
|
+
onChange,
|
|
92
|
+
onLiveDrag,
|
|
93
|
+
value
|
|
94
|
+
]);
|
|
95
|
+
const beginEditing = React.useCallback(() => {
|
|
96
|
+
abandoned.current = false;
|
|
97
|
+
setDraft(value.toFixed(decimals));
|
|
98
|
+
setEditing(true);
|
|
99
|
+
}, [decimals, value]);
|
|
100
|
+
const handlePointerDown = (event) => {
|
|
101
|
+
if (disabled || editing || event.button !== 0) return;
|
|
102
|
+
gesture.current = {
|
|
103
|
+
pointerId: event.pointerId,
|
|
104
|
+
startY: event.clientY,
|
|
105
|
+
startValue: value,
|
|
106
|
+
dragging: false,
|
|
107
|
+
last: value
|
|
108
|
+
};
|
|
109
|
+
event.currentTarget.setPointerCapture?.(event.pointerId);
|
|
110
|
+
};
|
|
111
|
+
const handlePointerMove = (event) => {
|
|
112
|
+
const active = gesture.current;
|
|
113
|
+
if (active === null || active.pointerId !== event.pointerId) return;
|
|
114
|
+
const travel = active.startY - event.clientY;
|
|
115
|
+
if (!active.dragging) {
|
|
116
|
+
if (Math.abs(travel) < DRAG_THRESHOLD_PX) return;
|
|
117
|
+
active.dragging = true;
|
|
118
|
+
onDragStart?.();
|
|
119
|
+
}
|
|
120
|
+
const scale = event.shiftKey ? FINE_FACTOR : 1;
|
|
121
|
+
const next = quantise(active.startValue + travel / PIXELS_PER_STEP * step * scale, bounds);
|
|
122
|
+
if (next === active.last) return;
|
|
123
|
+
active.last = next;
|
|
124
|
+
emit(next, true);
|
|
125
|
+
};
|
|
126
|
+
const endGesture = (event) => {
|
|
127
|
+
const active = gesture.current;
|
|
128
|
+
if (active === null || active.pointerId !== event.pointerId) return;
|
|
129
|
+
gesture.current = null;
|
|
130
|
+
event.currentTarget.releasePointerCapture?.(event.pointerId);
|
|
131
|
+
if (!active.dragging) {
|
|
132
|
+
if (!disabled) beginEditing();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
onDragEnd?.();
|
|
136
|
+
onCommit?.(active.last);
|
|
137
|
+
};
|
|
138
|
+
React.useEffect(() => {
|
|
139
|
+
if (editing) editorRef.current?.select();
|
|
140
|
+
}, [editing]);
|
|
141
|
+
const commitDraft = React.useCallback(() => {
|
|
142
|
+
setEditing(false);
|
|
143
|
+
if (abandoned.current) return;
|
|
144
|
+
const parsed = Number.parseFloat(draft);
|
|
145
|
+
if (Number.isNaN(parsed)) return;
|
|
146
|
+
const next = quantise(parsed, bounds);
|
|
147
|
+
if (emit(next, false)) onCommit?.(next);
|
|
148
|
+
}, [
|
|
149
|
+
bounds,
|
|
150
|
+
draft,
|
|
151
|
+
emit,
|
|
152
|
+
onCommit
|
|
153
|
+
]);
|
|
154
|
+
const handleKeyDown = (event) => {
|
|
155
|
+
if (disabled) return;
|
|
156
|
+
let next = null;
|
|
157
|
+
if (event.key === "ArrowUp") next = value + step;
|
|
158
|
+
else if (event.key === "ArrowDown") next = value - step;
|
|
159
|
+
else if (event.key === "PageUp") next = value + step * PAGE_FACTOR;
|
|
160
|
+
else if (event.key === "PageDown") next = value - step * PAGE_FACTOR;
|
|
161
|
+
else if (event.key === "Home" && Number.isFinite(min)) next = min;
|
|
162
|
+
else if (event.key === "End" && Number.isFinite(max)) next = max;
|
|
163
|
+
else if (event.key === "Enter") {
|
|
164
|
+
event.preventDefault();
|
|
165
|
+
beginEditing();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (next === null) return;
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
const quantised = quantise(next, bounds);
|
|
171
|
+
if (emit(quantised, false)) onCommit?.(quantised);
|
|
172
|
+
};
|
|
173
|
+
const cycleUnit = () => {
|
|
174
|
+
if (units === void 0 || units.length === 0) return;
|
|
175
|
+
const index = unit === void 0 ? -1 : units.indexOf(unit);
|
|
176
|
+
onUnitChange?.(units[(index + 1) % units.length]);
|
|
177
|
+
};
|
|
178
|
+
if (editing) return /* @__PURE__ */ jsxs("div", {
|
|
179
|
+
...elementProps,
|
|
180
|
+
ref,
|
|
181
|
+
"data-slot": "scrub-input-editor",
|
|
182
|
+
className: cn(controlVariants({ size }), "flex items-center gap-(--cue-space-2)", controlGroupFocusClasses, className),
|
|
183
|
+
children: [/* @__PURE__ */ jsx("input", {
|
|
184
|
+
ref: editorRef,
|
|
185
|
+
type: "text",
|
|
186
|
+
inputMode: "decimal",
|
|
187
|
+
"aria-label": ariaLabel,
|
|
188
|
+
"aria-labelledby": ariaLabelledBy,
|
|
189
|
+
value: draft,
|
|
190
|
+
autoFocus: true,
|
|
191
|
+
onChange: (event) => setDraft(event.currentTarget.value),
|
|
192
|
+
onBlur: commitDraft,
|
|
193
|
+
onKeyDown: (event) => {
|
|
194
|
+
if (event.key === "Enter") {
|
|
195
|
+
event.preventDefault();
|
|
196
|
+
commitDraft();
|
|
197
|
+
} else if (event.key === "Escape") {
|
|
198
|
+
event.preventDefault();
|
|
199
|
+
abandoned.current = true;
|
|
200
|
+
setEditing(false);
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
className: cn(bareControlClasses, "text-right tabular-nums", "[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none")
|
|
204
|
+
}), unit === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
205
|
+
className: "shrink-0 text-fg-subtle select-none",
|
|
206
|
+
children: unit
|
|
207
|
+
})]
|
|
208
|
+
});
|
|
209
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
210
|
+
...elementProps,
|
|
211
|
+
ref,
|
|
212
|
+
role: "spinbutton",
|
|
213
|
+
"data-slot": "scrub-input",
|
|
214
|
+
tabIndex: disabled ? -1 : 0,
|
|
215
|
+
"aria-label": ariaLabel,
|
|
216
|
+
"aria-labelledby": ariaLabelledBy,
|
|
217
|
+
"aria-valuenow": value,
|
|
218
|
+
"aria-valuemin": Number.isFinite(min) ? min : void 0,
|
|
219
|
+
"aria-valuemax": Number.isFinite(max) ? max : void 0,
|
|
220
|
+
"aria-valuetext": valueText,
|
|
221
|
+
"aria-disabled": disabled ? true : void 0,
|
|
222
|
+
onPointerDown: handlePointerDown,
|
|
223
|
+
onPointerMove: handlePointerMove,
|
|
224
|
+
onPointerUp: endGesture,
|
|
225
|
+
onPointerCancel: endGesture,
|
|
226
|
+
onKeyDown: handleKeyDown,
|
|
227
|
+
className: cn(controlVariants({ size }), "flex touch-none items-center justify-between gap-(--cue-space-2) select-none", disabled ? "cursor-default opacity-40" : "cursor-ns-resize", className),
|
|
228
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
229
|
+
"data-slot": "scrub-input-value",
|
|
230
|
+
className: "truncate tabular-nums",
|
|
231
|
+
children: display
|
|
232
|
+
}), unit === void 0 ? null : units === void 0 || units.length < 2 ? /* @__PURE__ */ jsx("span", {
|
|
233
|
+
"data-slot": "scrub-input-unit",
|
|
234
|
+
className: "shrink-0 text-fg-subtle",
|
|
235
|
+
children: unit
|
|
236
|
+
}) : /* @__PURE__ */ jsx("button", {
|
|
237
|
+
type: "button",
|
|
238
|
+
"data-slot": "scrub-input-unit",
|
|
239
|
+
"aria-label": `Unit: ${unit}`,
|
|
240
|
+
disabled,
|
|
241
|
+
onPointerDown: (event) => event.stopPropagation(),
|
|
242
|
+
onClick: cycleUnit,
|
|
243
|
+
className: "shrink-0 cursor-pointer rounded-(--radius-control) border-0 bg-transparent p-0 font-mono text-[length:inherit] 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 disabled:pointer-events-none",
|
|
244
|
+
children: unit
|
|
245
|
+
})]
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
//#endregion
|
|
249
|
+
export { ScrubInput };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import { InputProps } from "./input.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/forms/search-input.d.ts
|
|
5
|
+
interface SearchInputProps extends Omit<InputProps, "type" | "size" | "value" | "defaultValue" | "onValueChange" | "children"> {
|
|
6
|
+
/** Current query. Supply it with `onValueChange` for a controlled input. */
|
|
7
|
+
value?: string;
|
|
8
|
+
/** Initial query for an uncontrolled input. */
|
|
9
|
+
defaultValue?: string;
|
|
10
|
+
/** Fired on every keystroke, and with `""` when the query is cleared. */
|
|
11
|
+
onValueChange?: (value: string) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Quiet period in ms before {@link SearchInputProps.onDebouncedChange} fires.
|
|
14
|
+
* Defaults to `250`. `0` fires it synchronously with every keystroke.
|
|
15
|
+
*/
|
|
16
|
+
debounce?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Fired once the user stops typing for `debounce` ms — the callback to hang a
|
|
19
|
+
* query or a filter recomputation on. Clearing flushes it immediately, because
|
|
20
|
+
* "show me everything again" should never wait.
|
|
21
|
+
*/
|
|
22
|
+
onDebouncedChange?: (value: string) => void;
|
|
23
|
+
/** Fired when the query is cleared, by Escape or by the clear button. */
|
|
24
|
+
onClear?: () => void;
|
|
25
|
+
/** Leading glyph component. Defaults to a magnifier. */
|
|
26
|
+
icon?: React.ElementType;
|
|
27
|
+
/** Accessible name for the clear button. Defaults to `"Clear search"`. */
|
|
28
|
+
clearLabel?: string;
|
|
29
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
30
|
+
size?: FormControlSize;
|
|
31
|
+
/** Extra classes for the group that wraps the icon, the input and the clear button. */
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A filter box: leading magnifier, Escape to clear, and a debounced change
|
|
36
|
+
* callback for whatever the query drives.
|
|
37
|
+
*
|
|
38
|
+
* Escape-to-clear is the reason this is a component and not a recipe. It is the
|
|
39
|
+
* behaviour every console filter needs and the one every hand-rolled search box
|
|
40
|
+
* forgets, and getting it right means also stopping the key from bubbling into a
|
|
41
|
+
* dialog that would otherwise close underneath the user.
|
|
42
|
+
*
|
|
43
|
+
* Debouncing is deliberately separate from `onValueChange`: the input stays
|
|
44
|
+
* responsive on every keystroke while the expensive work waits for the typing to
|
|
45
|
+
* stop. Clearing flushes the debounce rather than scheduling it.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* <SearchInput aria-label="Filter cues" onDebouncedChange={setQuery} />
|
|
49
|
+
* @example
|
|
50
|
+
* <SearchInput value={q} onValueChange={setQ} debounce={0} size="sm" />
|
|
51
|
+
*/
|
|
52
|
+
declare const SearchInput: React.ForwardRefExoticComponent<Omit<SearchInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
53
|
+
//#endregion
|
|
54
|
+
export { SearchInput, SearchInputProps };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { InputGroup } from "./input-group.js";
|
|
4
|
+
import { Input } from "./input.js";
|
|
5
|
+
import { CrossGlyph, SearchGlyph } from "./_glyphs.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
//#region src/forms/search-input.tsx
|
|
9
|
+
const DEFAULT_DEBOUNCE_MS = 250;
|
|
10
|
+
/**
|
|
11
|
+
* A filter box: leading magnifier, Escape to clear, and a debounced change
|
|
12
|
+
* callback for whatever the query drives.
|
|
13
|
+
*
|
|
14
|
+
* Escape-to-clear is the reason this is a component and not a recipe. It is the
|
|
15
|
+
* behaviour every console filter needs and the one every hand-rolled search box
|
|
16
|
+
* forgets, and getting it right means also stopping the key from bubbling into a
|
|
17
|
+
* dialog that would otherwise close underneath the user.
|
|
18
|
+
*
|
|
19
|
+
* Debouncing is deliberately separate from `onValueChange`: the input stays
|
|
20
|
+
* responsive on every keystroke while the expensive work waits for the typing to
|
|
21
|
+
* stop. Clearing flushes the debounce rather than scheduling it.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* <SearchInput aria-label="Filter cues" onDebouncedChange={setQuery} />
|
|
25
|
+
* @example
|
|
26
|
+
* <SearchInput value={q} onValueChange={setQ} debounce={0} size="sm" />
|
|
27
|
+
*/
|
|
28
|
+
const SearchInput = React.forwardRef(function SearchInput({ className, value, defaultValue, onValueChange, onChange, onKeyDown, debounce = DEFAULT_DEBOUNCE_MS, onDebouncedChange, onClear, icon: Icon = SearchGlyph, clearLabel = "Clear search", size, ...elementProps }, ref) {
|
|
29
|
+
const isControlled = value !== void 0;
|
|
30
|
+
const [internal, setInternal] = React.useState(defaultValue ?? "");
|
|
31
|
+
const current = isControlled ? value : internal;
|
|
32
|
+
const innerRef = React.useRef(null);
|
|
33
|
+
const setRefs = React.useCallback((node) => {
|
|
34
|
+
innerRef.current = node;
|
|
35
|
+
if (typeof ref === "function") ref(node);
|
|
36
|
+
else if (ref !== null) ref.current = node;
|
|
37
|
+
}, [ref]);
|
|
38
|
+
const debouncedRef = React.useRef(onDebouncedChange);
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
debouncedRef.current = onDebouncedChange;
|
|
41
|
+
}, [onDebouncedChange]);
|
|
42
|
+
const lastNotified = React.useRef(current);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
const notify = debouncedRef.current;
|
|
45
|
+
if (notify === void 0 || current === lastNotified.current) return;
|
|
46
|
+
if (debounce <= 0) {
|
|
47
|
+
lastNotified.current = current;
|
|
48
|
+
notify(current);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const timer = setTimeout(() => {
|
|
52
|
+
lastNotified.current = current;
|
|
53
|
+
notify(current);
|
|
54
|
+
}, debounce);
|
|
55
|
+
return () => clearTimeout(timer);
|
|
56
|
+
}, [current, debounce]);
|
|
57
|
+
const commit = React.useCallback((next) => {
|
|
58
|
+
if (!isControlled) setInternal(next);
|
|
59
|
+
onValueChange?.(next);
|
|
60
|
+
}, [isControlled, onValueChange]);
|
|
61
|
+
const clear = React.useCallback(() => {
|
|
62
|
+
commit("");
|
|
63
|
+
lastNotified.current = "";
|
|
64
|
+
debouncedRef.current?.("");
|
|
65
|
+
onClear?.();
|
|
66
|
+
innerRef.current?.focus();
|
|
67
|
+
}, [commit, onClear]);
|
|
68
|
+
const handleChange = React.useCallback((event) => {
|
|
69
|
+
onChange?.(event);
|
|
70
|
+
commit(event.currentTarget.value);
|
|
71
|
+
}, [commit, onChange]);
|
|
72
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
73
|
+
onKeyDown?.(event);
|
|
74
|
+
if (event.defaultPrevented || event.key !== "Escape") return;
|
|
75
|
+
if (current === "") return;
|
|
76
|
+
event.preventDefault();
|
|
77
|
+
event.stopPropagation();
|
|
78
|
+
clear();
|
|
79
|
+
}, [
|
|
80
|
+
clear,
|
|
81
|
+
current,
|
|
82
|
+
onKeyDown
|
|
83
|
+
]);
|
|
84
|
+
return /* @__PURE__ */ jsx(InputGroup, {
|
|
85
|
+
size,
|
|
86
|
+
className,
|
|
87
|
+
leading: /* @__PURE__ */ jsx(Icon, {
|
|
88
|
+
"data-slot": "search-icon",
|
|
89
|
+
"aria-hidden": "true",
|
|
90
|
+
className: "size-icon-md"
|
|
91
|
+
}),
|
|
92
|
+
trailing: current === "" ? void 0 : /* @__PURE__ */ jsx("button", {
|
|
93
|
+
type: "button",
|
|
94
|
+
"aria-label": clearLabel,
|
|
95
|
+
onClick: clear,
|
|
96
|
+
className: "flex shrink-0 cursor-pointer items-center justify-center rounded-(--radius-control) 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",
|
|
97
|
+
children: /* @__PURE__ */ jsx(CrossGlyph, { className: "size-icon-sm" })
|
|
98
|
+
}),
|
|
99
|
+
children: /* @__PURE__ */ jsx(Input, {
|
|
100
|
+
ref: setRefs,
|
|
101
|
+
type: "search",
|
|
102
|
+
"data-slot": "search-input",
|
|
103
|
+
value: current,
|
|
104
|
+
onChange: handleChange,
|
|
105
|
+
onKeyDown: handleKeyDown,
|
|
106
|
+
className: cn("[&::-webkit-search-cancel-button]:appearance-none"),
|
|
107
|
+
...elementProps
|
|
108
|
+
})
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
//#endregion
|
|
112
|
+
export { SearchInput };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/forms/select.d.ts
|
|
4
|
+
/** One row in a {@link Select}. */
|
|
5
|
+
interface SelectOption {
|
|
6
|
+
/** Submitted value and identity of the row. */
|
|
7
|
+
value: string;
|
|
8
|
+
/** What the user reads, in the trigger as well as the list. */
|
|
9
|
+
label: React.ReactNode;
|
|
10
|
+
/** Grey the row out and skip it during keyboard navigation. */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface SelectProps {
|
|
14
|
+
/** The rows, in display order. */
|
|
15
|
+
items: readonly SelectOption[];
|
|
16
|
+
/** Selected value. Use with `onValueChange` for a controlled select. */
|
|
17
|
+
value?: string | null;
|
|
18
|
+
/** Initially selected value for an uncontrolled select. */
|
|
19
|
+
defaultValue?: string | null;
|
|
20
|
+
/** Called with the newly selected value (`null` when cleared). */
|
|
21
|
+
onValueChange?: (value: string | null) => void;
|
|
22
|
+
/** Shown in the trigger while nothing is selected. */
|
|
23
|
+
placeholder?: React.ReactNode;
|
|
24
|
+
/** Rung of the control ladder for the trigger. Defaults to `"md"`. */
|
|
25
|
+
size?: FormControlSize;
|
|
26
|
+
/** Prevent opening and grey the trigger out. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
/** Require a value before the owning form submits. */
|
|
29
|
+
required?: boolean;
|
|
30
|
+
/** Name for the hidden input, when the select is part of a form. */
|
|
31
|
+
name?: string;
|
|
32
|
+
/** Id forwarded to the select's hidden input. */
|
|
33
|
+
id?: string;
|
|
34
|
+
/** Accessible name for the trigger, when no {@link FieldLabel} names it. */
|
|
35
|
+
"aria-label"?: string;
|
|
36
|
+
/** Id of the element naming the trigger. */
|
|
37
|
+
"aria-labelledby"?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Lock interaction to the popup while it is open. Defaults to `true`, matching
|
|
40
|
+
* Base UI; set `false` inside a canvas or a drag surface that must keep
|
|
41
|
+
* receiving pointer events.
|
|
42
|
+
*/
|
|
43
|
+
modal?: boolean;
|
|
44
|
+
/** Extra classes for the trigger. */
|
|
45
|
+
className?: string;
|
|
46
|
+
/** Extra classes for the popup surface. */
|
|
47
|
+
popupClassName?: string;
|
|
48
|
+
/** Distance in px between the trigger and the popup. Defaults to `4`. */
|
|
49
|
+
sideOffset?: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A dropdown for choosing one of a known set of values.
|
|
53
|
+
*
|
|
54
|
+
* The trigger rides the recessed control chassis so a select lines up with the
|
|
55
|
+
* {@link Input}s beside it; the popup wears the overlay surface
|
|
56
|
+
* (`surface-2` + `border-overlay` + the overlay radius) that every floating
|
|
57
|
+
* element in this system shares. Rows are one `control-sm` tall — the list is
|
|
58
|
+
* meant to show a dozen options without scrolling.
|
|
59
|
+
*
|
|
60
|
+
* The popup is portalled through {@link useCuePortalProps}, so it carries the
|
|
61
|
+
* caller's `data-theme` / `data-density` / `data-mode` even though it mounts at
|
|
62
|
+
* the end of `<body>`. Without that a select opened inside an ultra-compact
|
|
63
|
+
* island would render at the page's density.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* <Select
|
|
67
|
+
* aria-label="Blend mode"
|
|
68
|
+
* items={[{ value: "htp", label: "HTP" }, { value: "ltp", label: "LTP" }]}
|
|
69
|
+
* value={mode}
|
|
70
|
+
* onValueChange={setMode}
|
|
71
|
+
* />
|
|
72
|
+
*/
|
|
73
|
+
declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLButtonElement>>;
|
|
74
|
+
//#endregion
|
|
75
|
+
export { Select, SelectOption, SelectProps };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { controlVariants } from "./_chassis.js";
|
|
4
|
+
import { useCuePortalProps } from "../system/portal.js";
|
|
5
|
+
import { CaretGlyph, TickGlyph } from "./_glyphs.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { Select } from "@base-ui/react/select";
|
|
9
|
+
//#region src/forms/select.tsx
|
|
10
|
+
/**
|
|
11
|
+
* A dropdown for choosing one of a known set of values.
|
|
12
|
+
*
|
|
13
|
+
* The trigger rides the recessed control chassis so a select lines up with the
|
|
14
|
+
* {@link Input}s beside it; the popup wears the overlay surface
|
|
15
|
+
* (`surface-2` + `border-overlay` + the overlay radius) that every floating
|
|
16
|
+
* element in this system shares. Rows are one `control-sm` tall — the list is
|
|
17
|
+
* meant to show a dozen options without scrolling.
|
|
18
|
+
*
|
|
19
|
+
* The popup is portalled through {@link useCuePortalProps}, so it carries the
|
|
20
|
+
* caller's `data-theme` / `data-density` / `data-mode` even though it mounts at
|
|
21
|
+
* the end of `<body>`. Without that a select opened inside an ultra-compact
|
|
22
|
+
* island would render at the page's density.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* <Select
|
|
26
|
+
* aria-label="Blend mode"
|
|
27
|
+
* items={[{ value: "htp", label: "HTP" }, { value: "ltp", label: "LTP" }]}
|
|
28
|
+
* value={mode}
|
|
29
|
+
* onValueChange={setMode}
|
|
30
|
+
* />
|
|
31
|
+
*/
|
|
32
|
+
const Select$1 = React.forwardRef(function Select$2({ items, value, defaultValue, onValueChange, placeholder, size, disabled, required, name, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, modal, className, popupClassName, sideOffset = 4 }, ref) {
|
|
33
|
+
const portalProps = useCuePortalProps();
|
|
34
|
+
const handleValueChange = React.useCallback((next) => {
|
|
35
|
+
onValueChange?.(next ?? null);
|
|
36
|
+
}, [onValueChange]);
|
|
37
|
+
return /* @__PURE__ */ jsxs(Select.Root, {
|
|
38
|
+
items,
|
|
39
|
+
value,
|
|
40
|
+
defaultValue,
|
|
41
|
+
onValueChange: onValueChange === void 0 ? void 0 : handleValueChange,
|
|
42
|
+
disabled,
|
|
43
|
+
required,
|
|
44
|
+
name,
|
|
45
|
+
id,
|
|
46
|
+
modal,
|
|
47
|
+
children: [/* @__PURE__ */ jsxs(Select.Trigger, {
|
|
48
|
+
ref,
|
|
49
|
+
"data-slot": "select-trigger",
|
|
50
|
+
"aria-label": ariaLabel,
|
|
51
|
+
"aria-labelledby": ariaLabelledBy,
|
|
52
|
+
className: cn(controlVariants({ size }), "flex cursor-default items-center justify-between gap-(--cue-space-3) text-left", "hover:not-data-disabled:border-border-strong", className),
|
|
53
|
+
children: [/* @__PURE__ */ jsx(Select.Value, {
|
|
54
|
+
className: "truncate data-[placeholder]:text-fg-subtle",
|
|
55
|
+
placeholder
|
|
56
|
+
}), /* @__PURE__ */ jsx(Select.Icon, {
|
|
57
|
+
className: "flex shrink-0 items-center text-fg-subtle",
|
|
58
|
+
children: /* @__PURE__ */ jsx(CaretGlyph, { className: "size-icon-md" })
|
|
59
|
+
})]
|
|
60
|
+
}), /* @__PURE__ */ jsx(Select.Portal, {
|
|
61
|
+
...portalProps,
|
|
62
|
+
children: /* @__PURE__ */ jsx(Select.Positioner, {
|
|
63
|
+
className: "z-50 outline-none",
|
|
64
|
+
sideOffset,
|
|
65
|
+
alignItemWithTrigger: false,
|
|
66
|
+
children: /* @__PURE__ */ jsx(Select.Popup, {
|
|
67
|
+
"data-slot": "select-popup",
|
|
68
|
+
className: cn("min-w-(--anchor-width) origin-(--transform-origin) overflow-hidden rounded-(--radius-overlay) border border-border-overlay bg-surface-2 py-(--cue-space-1) shadow-[0_8px_24px_rgba(0,0,0,0.4)] outline-none", "transition-[opacity,scale] duration-100 ease-out motion-reduce:transition-none", "data-[starting-style]:scale-[0.98] data-[starting-style]:opacity-0", "data-[ending-style]:scale-[0.98] data-[ending-style]:opacity-0", popupClassName),
|
|
69
|
+
children: /* @__PURE__ */ jsx(Select.List, {
|
|
70
|
+
className: "max-h-(--available-height) overflow-y-auto",
|
|
71
|
+
children: items.map((item) => /* @__PURE__ */ jsxs(Select.Item, {
|
|
72
|
+
value: item.value,
|
|
73
|
+
disabled: item.disabled,
|
|
74
|
+
"data-slot": "select-item",
|
|
75
|
+
className: "flex h-control-sm cursor-default items-center gap-(--cue-space-2) px-(--cue-space-3) font-mono text-(length:--cue-text-ui) text-fg-muted outline-none select-none data-[highlighted]:bg-accent-soft data-[highlighted]:text-fg data-[selected]:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-40",
|
|
76
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
77
|
+
className: "flex size-icon-sm shrink-0 items-center justify-center",
|
|
78
|
+
children: /* @__PURE__ */ jsx(Select.ItemIndicator, { children: /* @__PURE__ */ jsx(TickGlyph, { className: "size-icon-sm" }) })
|
|
79
|
+
}), /* @__PURE__ */ jsx(Select.ItemText, {
|
|
80
|
+
className: "truncate",
|
|
81
|
+
children: item.label
|
|
82
|
+
})]
|
|
83
|
+
}, item.value))
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
})]
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//#endregion
|
|
91
|
+
export { Select$1 as Select };
|