@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,77 @@
|
|
|
1
|
+
import { BarOverflow } from "./_edge-scroller.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { ToggleGroup } from "@base-ui/react/toggle-group";
|
|
4
|
+
//#region src/chrome/segmented-control.d.ts
|
|
5
|
+
/** The rung of the density control ladder a segmented control sits on. */
|
|
6
|
+
type SegmentedControlSize = "sm" | "md" | "lg";
|
|
7
|
+
/** One segment of a {@link SegmentedControl}. */
|
|
8
|
+
interface SegmentedControlItem {
|
|
9
|
+
/** The value reported when this segment is picked. Must be unique. */
|
|
10
|
+
value: string;
|
|
11
|
+
/** What the segment says. Keep it to one word where possible. */
|
|
12
|
+
label: React.ReactNode;
|
|
13
|
+
/** Optional leading icon (e.g. a lucide icon), drawn `aria-hidden`. */
|
|
14
|
+
icon?: React.ElementType;
|
|
15
|
+
/** Grey this segment out and make it unpickable. */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
}
|
|
18
|
+
interface SegmentedControlProps extends Omit<ToggleGroup.Props<string>, "value" | "defaultValue" | "onValueChange" | "multiple" | "className" | "children"> {
|
|
19
|
+
/** The segments, in display order. */
|
|
20
|
+
items: readonly SegmentedControlItem[];
|
|
21
|
+
/** The picked value when controlled. Pass with `onValueChange`. */
|
|
22
|
+
value?: string;
|
|
23
|
+
/** The initially picked value when uncontrolled. */
|
|
24
|
+
defaultValue?: string;
|
|
25
|
+
/** Called with the newly picked value. Never called with `undefined`. */
|
|
26
|
+
onValueChange?: (value: string) => void;
|
|
27
|
+
/** Which rung of the control ladder to sit on. Defaults to `"md"`. */
|
|
28
|
+
size?: SegmentedControlSize;
|
|
29
|
+
/** Extra classes for the group frame. */
|
|
30
|
+
className?: string;
|
|
31
|
+
/** Extra classes for every segment. */
|
|
32
|
+
itemClassName?: string;
|
|
33
|
+
/**
|
|
34
|
+
* What the control does when its segments do not fit. Defaults to `"scroll"`.
|
|
35
|
+
*
|
|
36
|
+
* The same behaviour `Toolbar` has, from the same module, for the same
|
|
37
|
+
* reason: a switcher with five segments in a page header's actions slot runs
|
|
38
|
+
* off a phone-width screen, and wrapping it would turn a one-rung control
|
|
39
|
+
* into a two-row block that no longer reads as one switch. `"scroll"` keeps
|
|
40
|
+
* the rim and the height, scrolls the segments inside them, fades the
|
|
41
|
+
* overflowing edge and offers a pager chevron there.
|
|
42
|
+
*
|
|
43
|
+
* `"clip"` is the old behaviour, for a control already inside something that
|
|
44
|
+
* scrolls.
|
|
45
|
+
*/
|
|
46
|
+
overflow?: BarOverflow;
|
|
47
|
+
/** Accessible name for the chevron that reveals segments off the leading edge. */
|
|
48
|
+
previousLabel?: string;
|
|
49
|
+
/** Accessible name for the chevron that reveals segments off the trailing edge. */
|
|
50
|
+
nextLabel?: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A one-of-N switch drawn as a row of segments: the console's view picker.
|
|
54
|
+
*
|
|
55
|
+
* Built on Base UI's `ToggleGroup`, so arrow-key roving focus and the
|
|
56
|
+
* pressed-state ARIA come from the primitive. Two rules are added on top:
|
|
57
|
+
*
|
|
58
|
+
* 1. **It cannot be emptied.** A toggle group lets you unpress the pressed
|
|
59
|
+
* item; a segmented control is a choice between N things, so clicking the
|
|
60
|
+
* active segment is a no-op rather than a way to end up with nothing
|
|
61
|
+
* selected. This is why the underlying group is always controlled here, even
|
|
62
|
+
* when the wrapper is not.
|
|
63
|
+
* 2. **The active segment is tinted, not filled** — see {@link ITEM_CLASSES}.
|
|
64
|
+
*
|
|
65
|
+
* Give the group an `aria-label`: on its own it is an unnamed group of buttons.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* <SegmentedControl
|
|
69
|
+
* aria-label="View"
|
|
70
|
+
* value={view}
|
|
71
|
+
* onValueChange={setView}
|
|
72
|
+
* items={[{ value: "beams", label: "Beams" }, { value: "patch", label: "Patch" }]}
|
|
73
|
+
* />
|
|
74
|
+
*/
|
|
75
|
+
declare const SegmentedControl: React.ForwardRefExoticComponent<Omit<SegmentedControlProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
76
|
+
//#endregion
|
|
77
|
+
export { SegmentedControl, SegmentedControlItem, SegmentedControlProps, SegmentedControlSize };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { useComposedRefs } from "../lib/compose.js";
|
|
4
|
+
import { EDGE_SCROLLER_CLASSES, EdgeChevrons, useEdgeScroll } from "./_edge-scroller.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Toggle } from "@base-ui/react/toggle";
|
|
8
|
+
import { ToggleGroup } from "@base-ui/react/toggle-group";
|
|
9
|
+
//#region src/chrome/segmented-control.tsx
|
|
10
|
+
const ITEM_SIZES = {
|
|
11
|
+
sm: "h-control-sm px-(--cue-space-3) text-(length:--cue-text-label)",
|
|
12
|
+
md: "h-control-md px-(--cue-space-4) text-(length:--cue-text-ui)",
|
|
13
|
+
lg: "h-control-lg px-(--cue-space-5) text-(length:--cue-text-body)"
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The pressed segment is marked with `accent-soft` and accent ink — never a
|
|
17
|
+
* solid accent fill. A solid bar inside a small control reads as a second,
|
|
18
|
+
* louder button and drowns the labels around it (the luma defect ruling); the
|
|
19
|
+
* soft tint says "this one" at exactly the volume a view switcher deserves.
|
|
20
|
+
*/
|
|
21
|
+
const ITEM_CLASSES = "inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-(--cue-space-2) whitespace-nowrap rounded-(--radius-control) font-mono text-fg-muted transition-colors duration-150 outline-none hover:text-fg data-[pressed]:bg-accent-soft data-[pressed]:text-accent 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-[disabled]:pointer-events-none data-[disabled]:opacity-40";
|
|
22
|
+
/**
|
|
23
|
+
* A one-of-N switch drawn as a row of segments: the console's view picker.
|
|
24
|
+
*
|
|
25
|
+
* Built on Base UI's `ToggleGroup`, so arrow-key roving focus and the
|
|
26
|
+
* pressed-state ARIA come from the primitive. Two rules are added on top:
|
|
27
|
+
*
|
|
28
|
+
* 1. **It cannot be emptied.** A toggle group lets you unpress the pressed
|
|
29
|
+
* item; a segmented control is a choice between N things, so clicking the
|
|
30
|
+
* active segment is a no-op rather than a way to end up with nothing
|
|
31
|
+
* selected. This is why the underlying group is always controlled here, even
|
|
32
|
+
* when the wrapper is not.
|
|
33
|
+
* 2. **The active segment is tinted, not filled** — see {@link ITEM_CLASSES}.
|
|
34
|
+
*
|
|
35
|
+
* Give the group an `aria-label`: on its own it is an unnamed group of buttons.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* <SegmentedControl
|
|
39
|
+
* aria-label="View"
|
|
40
|
+
* value={view}
|
|
41
|
+
* onValueChange={setView}
|
|
42
|
+
* items={[{ value: "beams", label: "Beams" }, { value: "patch", label: "Patch" }]}
|
|
43
|
+
* />
|
|
44
|
+
*/
|
|
45
|
+
const SegmentedControl = React.forwardRef(function SegmentedControl({ items, value: valueProp, defaultValue, onValueChange, size = "md", className, itemClassName, overflow = "scroll", previousLabel = "Show earlier segments", nextLabel = "Show later segments", ...groupProps }, ref) {
|
|
46
|
+
const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);
|
|
47
|
+
const value = valueProp ?? uncontrolledValue;
|
|
48
|
+
const scrolls = overflow === "scroll";
|
|
49
|
+
const scroll = useEdgeScroll(scrolls);
|
|
50
|
+
const groupRef = useComposedRefs(ref, scroll.ref);
|
|
51
|
+
const handleValueChange = (groupValue) => {
|
|
52
|
+
const next = groupValue[0];
|
|
53
|
+
if (next === void 0 || next === value) return;
|
|
54
|
+
if (valueProp === void 0) setUncontrolledValue(next);
|
|
55
|
+
onValueChange?.(next);
|
|
56
|
+
};
|
|
57
|
+
const iconSize = size === "sm" ? "size-icon-sm" : "size-icon-md";
|
|
58
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
59
|
+
"data-slot": "segmented-control-frame",
|
|
60
|
+
className: cn("relative inline-flex max-w-full min-w-0 shrink-0 items-center rounded-(--radius-control) border border-border bg-surface-1 p-(--cue-space-1)", className),
|
|
61
|
+
children: [/* @__PURE__ */ jsx(ToggleGroup, {
|
|
62
|
+
ref: groupRef,
|
|
63
|
+
value: value === void 0 ? [] : [value],
|
|
64
|
+
onValueChange: handleValueChange,
|
|
65
|
+
"data-slot": "segmented-control",
|
|
66
|
+
className: cn("inline-flex min-w-0 items-center gap-(--cue-space-1)", scrolls ? EDGE_SCROLLER_CLASSES : null),
|
|
67
|
+
...groupProps,
|
|
68
|
+
style: {
|
|
69
|
+
...groupProps.style,
|
|
70
|
+
...scroll.style
|
|
71
|
+
},
|
|
72
|
+
children: items.map((item) => {
|
|
73
|
+
const Icon = item.icon;
|
|
74
|
+
return /* @__PURE__ */ jsxs(Toggle, {
|
|
75
|
+
value: item.value,
|
|
76
|
+
disabled: item.disabled,
|
|
77
|
+
"data-slot": "segmented-control-item",
|
|
78
|
+
className: cn(ITEM_CLASSES, ITEM_SIZES[size], itemClassName),
|
|
79
|
+
children: [Icon === void 0 ? null : /* @__PURE__ */ jsx(Icon, {
|
|
80
|
+
"aria-hidden": "true",
|
|
81
|
+
className: cn("shrink-0", iconSize)
|
|
82
|
+
}), item.label]
|
|
83
|
+
}, item.value);
|
|
84
|
+
})
|
|
85
|
+
}), /* @__PURE__ */ jsx(EdgeChevrons, {
|
|
86
|
+
edges: scroll.edges,
|
|
87
|
+
onNudge: scroll.nudge,
|
|
88
|
+
previousLabel,
|
|
89
|
+
nextLabel,
|
|
90
|
+
className: "rounded-(--radius-control) bg-surface-1"
|
|
91
|
+
})]
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//#endregion
|
|
95
|
+
export { SegmentedControl };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { StatusBarProminence } from "./_status-bar.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
//#region src/chrome/status-bar.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Ink for a status-bar item. `neutral` inherits the bar's own subtle grey; the
|
|
7
|
+
* rest are the shared status vocabulary, so "3 faults" in the status bar is the
|
|
8
|
+
* same red as the danger `Chip` that raised it.
|
|
9
|
+
*/
|
|
10
|
+
type StatusBarTone = "neutral" | "accent" | "ok" | "busy" | "warn" | "danger" | "info";
|
|
11
|
+
/** Props for {@link StatusBar}: the native `<div>` surface plus `className`. */
|
|
12
|
+
type StatusBarProps = React.ComponentPropsWithoutRef<"div">;
|
|
13
|
+
interface StatusBarItemProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
14
|
+
/** Ink for this item. Defaults to the bar's own subtle grey. */
|
|
15
|
+
tone?: StatusBarTone;
|
|
16
|
+
/**
|
|
17
|
+
* Start the trailing cluster here: pushes this item and everything after it
|
|
18
|
+
* to the far edge. Cheaper and more robust than a spacer element, which a
|
|
19
|
+
* caller has to remember to keep in the right place.
|
|
20
|
+
*/
|
|
21
|
+
push?: boolean;
|
|
22
|
+
/** Optional leading icon (e.g. a lucide icon), drawn `aria-hidden`. */
|
|
23
|
+
icon?: React.ElementType;
|
|
24
|
+
/**
|
|
25
|
+
* Make the item a real control: a `<button type="button">` with hover, press
|
|
26
|
+
* and keyboard-focus feedback. Defaults to `false`.
|
|
27
|
+
*
|
|
28
|
+
* A native button, not a `<div>` with an `onClick` — keyboard order is DOM
|
|
29
|
+
* order, `Enter` and `Space` work because the platform makes them work, and
|
|
30
|
+
* assistive technology is told what the thing is by the element rather than
|
|
31
|
+
* by a role attribute that has to be kept honest by hand.
|
|
32
|
+
*
|
|
33
|
+
* **An icon-only interactive item needs an `aria-label`.** There is no text
|
|
34
|
+
* for a screen reader to read and the icon is drawn `aria-hidden`, so without
|
|
35
|
+
* one the control announces as "button" and nothing else.
|
|
36
|
+
*/
|
|
37
|
+
interactive?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* How loudly the item states itself. Defaults to `"quiet"`.
|
|
40
|
+
*
|
|
41
|
+
* `quiet` is a reading: tone ink on the bar's own ground. `filled` is a chip
|
|
42
|
+
* — a full-height tone wash behind tone ink — for the small set of states
|
|
43
|
+
* that earn a colour of their own: a warning, an error, the remote you are
|
|
44
|
+
* attached to. It is loud deliberately, and a bar of five filled items is a
|
|
45
|
+
* bar nobody reads.
|
|
46
|
+
*/
|
|
47
|
+
prominence?: StatusBarProminence;
|
|
48
|
+
/**
|
|
49
|
+
* Replace the rendered element (Base UI render prop) — `render={<a href="…" />}`
|
|
50
|
+
* for a status item that navigates.
|
|
51
|
+
*
|
|
52
|
+
* Implies {@link StatusBarItemProps.interactive}: whatever is rendered gets
|
|
53
|
+
* the control chassis, because an element a reader can click has to look like
|
|
54
|
+
* one whether it is a button or a link.
|
|
55
|
+
*/
|
|
56
|
+
render?: useRender.RenderProp;
|
|
57
|
+
/**
|
|
58
|
+
* Grey the control out, take it out of the pointer's reach and announce it as
|
|
59
|
+
* disabled. Defaults to `false`. Ignored by a static item, which is a reading
|
|
60
|
+
* and not a control.
|
|
61
|
+
*
|
|
62
|
+
* Honoured whatever {@link StatusBarItemProps.render} renders, but by two
|
|
63
|
+
* routes: the `disabled` attribute where it means something — the default
|
|
64
|
+
* `<button>`, a form control, a component that takes a `disabled` prop of its
|
|
65
|
+
* own — and `aria-disabled` plus `data-disabled` everywhere, which is all an
|
|
66
|
+
* anchor gets. There is no such thing as a disabled link; a link that should
|
|
67
|
+
* not be followed should not be a link, and this states the intent rather
|
|
68
|
+
* than pretending to enforce it.
|
|
69
|
+
*/
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
}
|
|
72
|
+
interface StatusBarGroupProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
73
|
+
/**
|
|
74
|
+
* Start the trailing cluster at this group: pushes it and everything after it
|
|
75
|
+
* to the far edge, exactly as `push` does on a single item.
|
|
76
|
+
*/
|
|
77
|
+
push?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* What the cluster is called. Optional, and worth giving whenever the members
|
|
80
|
+
* only make sense together — "Repository", "Connection" — because a `group`
|
|
81
|
+
* with no name is a landmark a screen reader reads straight past.
|
|
82
|
+
*/
|
|
83
|
+
"aria-label"?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The quiet strip along the bottom of a window.
|
|
87
|
+
*
|
|
88
|
+
* The smallest type in the system in the subtlest ink: a status bar is read
|
|
89
|
+
* when you go looking for it and ignored otherwise, so it must never compete
|
|
90
|
+
* with the work above it. Height comes from `--cue-chrome-statusbar`, and the
|
|
91
|
+
* bar clips rather than wrapping — one rung of the frame, always, whatever it
|
|
92
|
+
* is asked to hold.
|
|
93
|
+
*
|
|
94
|
+
* Items come in two kinds and the difference is deliberate. A plain
|
|
95
|
+
* `StatusBar.Item` is a **reading**: a `<div>`, inert by construction, with no
|
|
96
|
+
* hover, no focus and nothing to click — which is what most of a status bar is.
|
|
97
|
+
* `interactive` (or a `render`) makes one a **control**, and only then does it
|
|
98
|
+
* grow the button chassis, the full-height hover fill and the inset focus ring.
|
|
99
|
+
* `StatusBar.Group` fuses adjacent items into one segmented control.
|
|
100
|
+
*
|
|
101
|
+
* Not a live region — a status bar changes constantly (frame counters, DMX
|
|
102
|
+
* output), and announcing every change would make the app unusable with a
|
|
103
|
+
* screen reader. Put anything that genuinely must be announced in a `Toast`.
|
|
104
|
+
*
|
|
105
|
+
* Static markup — no `"use client"`. A bar of readings renders on the server
|
|
106
|
+
* and ships no JavaScript at all; the interactive item is the one part that
|
|
107
|
+
* crosses the boundary, and it crosses it alone (`./_status-bar-item.tsx`).
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* <StatusBar>
|
|
111
|
+
* <StatusBar.Item icon={Plug} tone="ok">Art-Net connected</StatusBar.Item>
|
|
112
|
+
* <StatusBar.Item push>512 channels</StatusBar.Item>
|
|
113
|
+
* </StatusBar>
|
|
114
|
+
* @example
|
|
115
|
+
* // The VS Code shape: a clickable cluster left, a loud state right.
|
|
116
|
+
* <StatusBar>
|
|
117
|
+
* <StatusBar.Group aria-label="Repository">
|
|
118
|
+
* <StatusBar.Item interactive icon={GitBranch}>main</StatusBar.Item>
|
|
119
|
+
* <StatusBar.Item interactive icon={ArrowUp}>2</StatusBar.Item>
|
|
120
|
+
* </StatusBar.Group>
|
|
121
|
+
* <StatusBar.Item push interactive prominence="filled" tone="danger">3 faults</StatusBar.Item>
|
|
122
|
+
* </StatusBar>
|
|
123
|
+
*/
|
|
124
|
+
declare const StatusBar: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>> & {
|
|
125
|
+
Item: React.ForwardRefExoticComponent<StatusBarItemProps & React.RefAttributes<HTMLElement>>;
|
|
126
|
+
Group: React.ForwardRefExoticComponent<StatusBarGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
127
|
+
};
|
|
128
|
+
//#endregion
|
|
129
|
+
export { StatusBar, StatusBarGroupProps, StatusBarItemProps, type StatusBarProminence, StatusBarProps, StatusBarTone };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { STATUS_BAR_GROUP_CLASSES, statusBarItemClasses } from "./_status-bar.js";
|
|
3
|
+
import { StatusBarInteractiveItem } from "./_status-bar-item.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/chrome/status-bar.tsx
|
|
7
|
+
const StatusBarRoot = React.forwardRef(function StatusBar({ className, ...elementProps }, ref) {
|
|
8
|
+
return /* @__PURE__ */ jsx("div", {
|
|
9
|
+
ref,
|
|
10
|
+
"data-slot": "status-bar",
|
|
11
|
+
className: cn("flex h-(--cue-chrome-statusbar) w-full shrink-0 items-center gap-(--cue-space-4) overflow-x-clip border-t border-border bg-surface-1 px-(--cue-pad-row-x) font-mono text-(length:--cue-text-label) text-fg-subtle", className),
|
|
12
|
+
...elementProps
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* One reading in the bar: a mode, a count, a connection state — or, given
|
|
17
|
+
* `interactive`, one control in it.
|
|
18
|
+
*/
|
|
19
|
+
const StatusBarItem = React.forwardRef(function StatusBarItem({ className, tone = "neutral", push = false, icon: Icon, interactive = false, prominence = "quiet", render, disabled, children, ...elementProps }, ref) {
|
|
20
|
+
if (interactive || render !== void 0) return /* @__PURE__ */ jsx(StatusBarInteractiveItem, {
|
|
21
|
+
ref,
|
|
22
|
+
tone,
|
|
23
|
+
prominence,
|
|
24
|
+
className,
|
|
25
|
+
push,
|
|
26
|
+
icon: Icon,
|
|
27
|
+
render,
|
|
28
|
+
disabled,
|
|
29
|
+
elementProps,
|
|
30
|
+
children
|
|
31
|
+
});
|
|
32
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
33
|
+
ref,
|
|
34
|
+
"data-slot": "status-bar-item",
|
|
35
|
+
className: cn(statusBarItemClasses({
|
|
36
|
+
tone,
|
|
37
|
+
prominence
|
|
38
|
+
}), push ? "ml-auto" : void 0, className),
|
|
39
|
+
...elementProps,
|
|
40
|
+
children: [Icon === void 0 ? null : /* @__PURE__ */ jsx(Icon, {
|
|
41
|
+
"aria-hidden": "true",
|
|
42
|
+
className: "size-icon-sm shrink-0"
|
|
43
|
+
}), children]
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* Items that belong to each other, one pixel apart.
|
|
48
|
+
*
|
|
49
|
+
* The bar spaces its readings at `--cue-space-4` because they are unrelated
|
|
50
|
+
* facts. A branch name and its ahead/behind count are not unrelated facts; they
|
|
51
|
+
* are one control that happens to have two halves, and the gap between them is
|
|
52
|
+
* what says so. This is VS Code's `compact` mechanic — the seam collapses, and
|
|
53
|
+
* hovering either half grounds both while the half under the cursor goes one
|
|
54
|
+
* rung further — expressed as a wrapper rather than as an id-reference between
|
|
55
|
+
* two items, because a design system's items do not have ids to point at.
|
|
56
|
+
*
|
|
57
|
+
* A `role="group"` rather than nothing: the members are announced as a set, and
|
|
58
|
+
* the DOM order they are announced in is the order they are read in. Give it an
|
|
59
|
+
* `aria-label` when the members only make sense together.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* <StatusBar.Group aria-label="Repository">
|
|
63
|
+
* <StatusBar.Item interactive icon={GitBranch}>main</StatusBar.Item>
|
|
64
|
+
* <StatusBar.Item interactive icon={ArrowUp}>2</StatusBar.Item>
|
|
65
|
+
* </StatusBar.Group>
|
|
66
|
+
*/
|
|
67
|
+
const StatusBarGroup = React.forwardRef(function StatusBarGroup({ className, push = false, role = "group", ...elementProps }, ref) {
|
|
68
|
+
return /* @__PURE__ */ jsx("div", {
|
|
69
|
+
ref,
|
|
70
|
+
"data-slot": "status-bar-group",
|
|
71
|
+
role,
|
|
72
|
+
className: cn(STATUS_BAR_GROUP_CLASSES, push ? "ml-auto" : void 0, className),
|
|
73
|
+
...elementProps
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
/**
|
|
77
|
+
* The quiet strip along the bottom of a window.
|
|
78
|
+
*
|
|
79
|
+
* The smallest type in the system in the subtlest ink: a status bar is read
|
|
80
|
+
* when you go looking for it and ignored otherwise, so it must never compete
|
|
81
|
+
* with the work above it. Height comes from `--cue-chrome-statusbar`, and the
|
|
82
|
+
* bar clips rather than wrapping — one rung of the frame, always, whatever it
|
|
83
|
+
* is asked to hold.
|
|
84
|
+
*
|
|
85
|
+
* Items come in two kinds and the difference is deliberate. A plain
|
|
86
|
+
* `StatusBar.Item` is a **reading**: a `<div>`, inert by construction, with no
|
|
87
|
+
* hover, no focus and nothing to click — which is what most of a status bar is.
|
|
88
|
+
* `interactive` (or a `render`) makes one a **control**, and only then does it
|
|
89
|
+
* grow the button chassis, the full-height hover fill and the inset focus ring.
|
|
90
|
+
* `StatusBar.Group` fuses adjacent items into one segmented control.
|
|
91
|
+
*
|
|
92
|
+
* Not a live region — a status bar changes constantly (frame counters, DMX
|
|
93
|
+
* output), and announcing every change would make the app unusable with a
|
|
94
|
+
* screen reader. Put anything that genuinely must be announced in a `Toast`.
|
|
95
|
+
*
|
|
96
|
+
* Static markup — no `"use client"`. A bar of readings renders on the server
|
|
97
|
+
* and ships no JavaScript at all; the interactive item is the one part that
|
|
98
|
+
* crosses the boundary, and it crosses it alone (`./_status-bar-item.tsx`).
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* <StatusBar>
|
|
102
|
+
* <StatusBar.Item icon={Plug} tone="ok">Art-Net connected</StatusBar.Item>
|
|
103
|
+
* <StatusBar.Item push>512 channels</StatusBar.Item>
|
|
104
|
+
* </StatusBar>
|
|
105
|
+
* @example
|
|
106
|
+
* // The VS Code shape: a clickable cluster left, a loud state right.
|
|
107
|
+
* <StatusBar>
|
|
108
|
+
* <StatusBar.Group aria-label="Repository">
|
|
109
|
+
* <StatusBar.Item interactive icon={GitBranch}>main</StatusBar.Item>
|
|
110
|
+
* <StatusBar.Item interactive icon={ArrowUp}>2</StatusBar.Item>
|
|
111
|
+
* </StatusBar.Group>
|
|
112
|
+
* <StatusBar.Item push interactive prominence="filled" tone="danger">3 faults</StatusBar.Item>
|
|
113
|
+
* </StatusBar>
|
|
114
|
+
*/
|
|
115
|
+
const StatusBar = Object.assign(StatusBarRoot, {
|
|
116
|
+
Item: StatusBarItem,
|
|
117
|
+
Group: StatusBarGroup
|
|
118
|
+
});
|
|
119
|
+
//#endregion
|
|
120
|
+
export { StatusBar };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Tabs } from "@base-ui/react/tabs";
|
|
3
|
+
//#region src/chrome/tabs.d.ts
|
|
4
|
+
interface TabsRootProps extends Omit<Tabs.Root.Props, "className"> {
|
|
5
|
+
/** Extra classes for the tabs frame. */
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
interface TabsListProps extends Omit<Tabs.List.Props, "className"> {
|
|
9
|
+
/** Extra classes for the strip. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
interface TabsTabProps extends Omit<Tabs.Tab.Props, "className"> {
|
|
13
|
+
/** Extra classes for the tab button. */
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
interface TabsPanelProps extends Omit<Tabs.Panel.Props, "className"> {
|
|
17
|
+
/** Extra classes for the panel. */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
interface ScrollableTabsListProps extends TabsListProps {
|
|
21
|
+
/**
|
|
22
|
+
* Classes for the outer frame (background, rim). It spans the full width even
|
|
23
|
+
* while the strip inside it is scrolled.
|
|
24
|
+
*/
|
|
25
|
+
containerClassName?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The active tab's value. When it changes, that tab is scrolled into view — a
|
|
28
|
+
* tab selected in code (a deep link, a keyboard shortcut) can be off-screen.
|
|
29
|
+
*/
|
|
30
|
+
activeValue?: Tabs.Tab.Value;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A {@link TabsList} that scrolls when its tabs do not fit, and says so.
|
|
34
|
+
*
|
|
35
|
+
* Use instead of `Tabs.List` wherever the tab count can outgrow the container:
|
|
36
|
+
* a plain flex row silently clips its labels ("SETTINGS" rendering as "INGS"),
|
|
37
|
+
* which reads as a layout bug rather than as "scroll me".
|
|
38
|
+
*
|
|
39
|
+
* The affordance is two things, and it needs both. The mask fades the content
|
|
40
|
+
* at whichever edge still hides tabs; the chevron buttons are the visible half,
|
|
41
|
+
* because what sits at an overflowing edge is usually the gap *between* two
|
|
42
|
+
* tabs and fading empty space produces nothing anyone can see. The chevrons
|
|
43
|
+
* double as the control for anyone without a horizontal-scroll device.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* <Tabs.Root defaultValue={view}>
|
|
47
|
+
* <ScrollableTabsList activeValue={view}>
|
|
48
|
+
* {views.map((v) => <Tabs.Tab key={v} value={v}>{v}</Tabs.Tab>)}
|
|
49
|
+
* </ScrollableTabsList>
|
|
50
|
+
* </Tabs.Root>
|
|
51
|
+
*/
|
|
52
|
+
declare const ScrollableTabsList: React.ForwardRefExoticComponent<Omit<ScrollableTabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
|
+
/**
|
|
54
|
+
* One surface, several views.
|
|
55
|
+
*
|
|
56
|
+
* Wraps Base UI's `Tabs`, so roving focus, `aria-controls` wiring and
|
|
57
|
+
* activation semantics are the primitive's. This layer adds the console skin:
|
|
58
|
+
* a hairline strip, mono labels and an accent underline for the active tab.
|
|
59
|
+
*
|
|
60
|
+
* Reach for {@link ScrollableTabsList} instead of `Tabs.List` when the number of
|
|
61
|
+
* tabs is data-driven and can outgrow its container.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* <Tabs.Root defaultValue="patch">
|
|
65
|
+
* <Tabs.List>
|
|
66
|
+
* <Tabs.Tab value="patch">Patch</Tabs.Tab>
|
|
67
|
+
* <Tabs.Tab value="cues">Cues</Tabs.Tab>
|
|
68
|
+
* </Tabs.List>
|
|
69
|
+
* <Tabs.Panel value="patch">…</Tabs.Panel>
|
|
70
|
+
* <Tabs.Panel value="cues">…</Tabs.Panel>
|
|
71
|
+
* </Tabs.Root>
|
|
72
|
+
*/
|
|
73
|
+
declare const Tabs$1: {
|
|
74
|
+
Root: React.ForwardRefExoticComponent<Omit<TabsRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
75
|
+
List: React.ForwardRefExoticComponent<Omit<TabsListProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
76
|
+
Tab: React.ForwardRefExoticComponent<Omit<TabsTabProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
77
|
+
Panel: React.ForwardRefExoticComponent<Omit<TabsPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
export { ScrollableTabsList, ScrollableTabsListProps, Tabs$1 as Tabs, TabsListProps, TabsPanelProps, TabsRootProps, TabsTabProps };
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { EDGE_SCROLLER_CLASSES, EdgeChevrons, useEdgeScroll } from "./_edge-scroller.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { Tabs } from "@base-ui/react/tabs";
|
|
7
|
+
//#region src/chrome/tabs.tsx
|
|
8
|
+
/** Groups a tab list with its panels and owns the selected value. */
|
|
9
|
+
const TabsRoot = React.forwardRef(function TabsRoot({ className, ...elementProps }, ref) {
|
|
10
|
+
return /* @__PURE__ */ jsx(Tabs.Root, {
|
|
11
|
+
ref,
|
|
12
|
+
"data-slot": "tabs",
|
|
13
|
+
className: cn("flex min-w-0 flex-col gap-(--cue-space-4) data-[orientation=vertical]:flex-row", className),
|
|
14
|
+
...elementProps
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* The strip of tabs, hung off a hairline.
|
|
19
|
+
*
|
|
20
|
+
* The rule belongs to the list rather than to the active tab so it spans the
|
|
21
|
+
* full width even when the tabs do not — which is what makes the selected tab's
|
|
22
|
+
* accent underline read as a mark *on* a rule rather than as a floating dash.
|
|
23
|
+
*/
|
|
24
|
+
const TabsList = React.forwardRef(function TabsList({ className, ...elementProps }, ref) {
|
|
25
|
+
return /* @__PURE__ */ jsx(Tabs.List, {
|
|
26
|
+
ref,
|
|
27
|
+
"data-slot": "tabs-list",
|
|
28
|
+
className: cn("relative flex items-center gap-(--cue-space-1) border-b border-border data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch data-[orientation=vertical]:border-b-0 data-[orientation=vertical]:border-r", className),
|
|
29
|
+
...elementProps
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* One tab. Selected state is an accent underline sitting on the list's rule —
|
|
34
|
+
* never a filled pill, which at console density turns a row of four tabs into a
|
|
35
|
+
* row of four buttons and loses the "one surface, several views" reading.
|
|
36
|
+
*/
|
|
37
|
+
const TabsTab = React.forwardRef(function TabsTab({ className, ...elementProps }, ref) {
|
|
38
|
+
return /* @__PURE__ */ jsx(Tabs.Tab, {
|
|
39
|
+
ref,
|
|
40
|
+
"data-slot": "tabs-tab",
|
|
41
|
+
className: cn("relative inline-flex h-control-md shrink-0 cursor-pointer items-center justify-center gap-(--cue-space-2) rounded-t-(--radius-control) px-(--cue-space-4) font-mono text-(length:--cue-text-ui) whitespace-nowrap text-fg-muted transition-colors duration-150 outline-none select-none", "hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent", "data-[disabled]:pointer-events-none data-[disabled]:opacity-40", "after:absolute after:inset-x-0 after:-bottom-px after:h-px after:bg-transparent after:content-['']", "data-[active]:text-accent data-[active]:after:bg-accent", className),
|
|
42
|
+
...elementProps
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
/** The body shown for the matching tab. Focusable, so keyboard users land in it. */
|
|
46
|
+
const TabsPanel = React.forwardRef(function TabsPanel({ className, ...elementProps }, ref) {
|
|
47
|
+
return /* @__PURE__ */ jsx(Tabs.Panel, {
|
|
48
|
+
ref,
|
|
49
|
+
"data-slot": "tabs-panel",
|
|
50
|
+
className: cn("min-w-0 outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent", className),
|
|
51
|
+
...elementProps
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* A {@link TabsList} that scrolls when its tabs do not fit, and says so.
|
|
56
|
+
*
|
|
57
|
+
* Use instead of `Tabs.List` wherever the tab count can outgrow the container:
|
|
58
|
+
* a plain flex row silently clips its labels ("SETTINGS" rendering as "INGS"),
|
|
59
|
+
* which reads as a layout bug rather than as "scroll me".
|
|
60
|
+
*
|
|
61
|
+
* The affordance is two things, and it needs both. The mask fades the content
|
|
62
|
+
* at whichever edge still hides tabs; the chevron buttons are the visible half,
|
|
63
|
+
* because what sits at an overflowing edge is usually the gap *between* two
|
|
64
|
+
* tabs and fading empty space produces nothing anyone can see. The chevrons
|
|
65
|
+
* double as the control for anyone without a horizontal-scroll device.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* <Tabs.Root defaultValue={view}>
|
|
69
|
+
* <ScrollableTabsList activeValue={view}>
|
|
70
|
+
* {views.map((v) => <Tabs.Tab key={v} value={v}>{v}</Tabs.Tab>)}
|
|
71
|
+
* </ScrollableTabsList>
|
|
72
|
+
* </Tabs.Root>
|
|
73
|
+
*/
|
|
74
|
+
const ScrollableTabsList = React.forwardRef(function ScrollableTabsList({ className, containerClassName, activeValue, children, ...listProps }, ref) {
|
|
75
|
+
const scroll = useEdgeScroll();
|
|
76
|
+
React.useEffect(() => {
|
|
77
|
+
scroll.ref.current?.querySelector("[data-slot='tabs-tab'][data-active]")?.scrollIntoView?.({
|
|
78
|
+
block: "nearest",
|
|
79
|
+
inline: "nearest"
|
|
80
|
+
});
|
|
81
|
+
}, [activeValue]);
|
|
82
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
83
|
+
"data-slot": "tabs-scroll-frame",
|
|
84
|
+
className: cn("relative min-w-0", containerClassName),
|
|
85
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
86
|
+
ref: scroll.ref,
|
|
87
|
+
"data-slot": "tabs-scroller",
|
|
88
|
+
className: EDGE_SCROLLER_CLASSES,
|
|
89
|
+
style: scroll.style,
|
|
90
|
+
children: /* @__PURE__ */ jsx(TabsList, {
|
|
91
|
+
ref,
|
|
92
|
+
className: cn("w-max", className),
|
|
93
|
+
...listProps,
|
|
94
|
+
children
|
|
95
|
+
})
|
|
96
|
+
}), /* @__PURE__ */ jsx(EdgeChevrons, {
|
|
97
|
+
edges: scroll.edges,
|
|
98
|
+
onNudge: scroll.nudge,
|
|
99
|
+
previousLabel: "Show earlier tabs",
|
|
100
|
+
nextLabel: "Show later tabs",
|
|
101
|
+
className: "bg-surface-2"
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* One surface, several views.
|
|
107
|
+
*
|
|
108
|
+
* Wraps Base UI's `Tabs`, so roving focus, `aria-controls` wiring and
|
|
109
|
+
* activation semantics are the primitive's. This layer adds the console skin:
|
|
110
|
+
* a hairline strip, mono labels and an accent underline for the active tab.
|
|
111
|
+
*
|
|
112
|
+
* Reach for {@link ScrollableTabsList} instead of `Tabs.List` when the number of
|
|
113
|
+
* tabs is data-driven and can outgrow its container.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* <Tabs.Root defaultValue="patch">
|
|
117
|
+
* <Tabs.List>
|
|
118
|
+
* <Tabs.Tab value="patch">Patch</Tabs.Tab>
|
|
119
|
+
* <Tabs.Tab value="cues">Cues</Tabs.Tab>
|
|
120
|
+
* </Tabs.List>
|
|
121
|
+
* <Tabs.Panel value="patch">…</Tabs.Panel>
|
|
122
|
+
* <Tabs.Panel value="cues">…</Tabs.Panel>
|
|
123
|
+
* </Tabs.Root>
|
|
124
|
+
*/
|
|
125
|
+
const Tabs$1 = {
|
|
126
|
+
Root: TabsRoot,
|
|
127
|
+
List: TabsList,
|
|
128
|
+
Tab: TabsTab,
|
|
129
|
+
Panel: TabsPanel
|
|
130
|
+
};
|
|
131
|
+
//#endregion
|
|
132
|
+
export { ScrollableTabsList, Tabs$1 as Tabs };
|