@cueplusplus/ui 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4028 -0
- package/LICENSE +21 -0
- package/NOTICE.md +34 -0
- package/README.md +237 -0
- package/dist/agent-runtime/_glyphs.js +43 -0
- package/dist/agent-runtime/branch-picker.d.ts +45 -0
- package/dist/agent-runtime/branch-picker.js +87 -0
- package/dist/agent-runtime/index.d.ts +4 -0
- package/dist/agent-runtime/index.js +4 -0
- package/dist/agent-runtime/tool-call-card.d.ts +69 -0
- package/dist/agent-runtime/tool-call-card.js +187 -0
- package/dist/agent-runtime/use-agent-thread.d.ts +164 -0
- package/dist/agent-runtime/use-agent-thread.js +251 -0
- package/dist/brand/_chassis.d.ts +54 -0
- package/dist/brand/_chassis.js +81 -0
- package/dist/brand/_geometry.js +41 -0
- package/dist/brand/cue-logotype.d.ts +29 -0
- package/dist/brand/cue-logotype.js +60 -0
- package/dist/brand/cue-mark.d.ts +30 -0
- package/dist/brand/cue-mark.js +61 -0
- package/dist/brand/index.d.ts +5 -0
- package/dist/brand/plussie.d.ts +67 -0
- package/dist/brand/plussie.js +125 -0
- package/dist/charts/_token.js +39 -0
- package/dist/charts/container.d.ts +58 -0
- package/dist/charts/container.js +77 -0
- package/dist/charts/index.d.ts +5 -0
- package/dist/charts/index.js +5 -0
- package/dist/charts/ramps.d.ts +140 -0
- package/dist/charts/ramps.js +615 -0
- package/dist/charts/theme.d.ts +112 -0
- package/dist/charts/theme.js +165 -0
- package/dist/charts/tones.d.ts +111 -0
- package/dist/charts/tones.js +127 -0
- package/dist/chat/_glyphs.js +55 -0
- package/dist/chat/agent-color.d.ts +84 -0
- package/dist/chat/agent-color.js +101 -0
- package/dist/chat/agent-pile.d.ts +55 -0
- package/dist/chat/agent-pile.js +121 -0
- package/dist/chat/ask-box.d.ts +88 -0
- package/dist/chat/ask-box.js +341 -0
- package/dist/chat/composer.d.ts +66 -0
- package/dist/chat/composer.js +144 -0
- package/dist/chat/delegation-card.d.ts +60 -0
- package/dist/chat/delegation-card.js +129 -0
- package/dist/chat/index.d.ts +8 -0
- package/dist/chat/index.js +8 -0
- package/dist/chat/message-list.d.ts +45 -0
- package/dist/chat/message-list.js +141 -0
- package/dist/chat/message.d.ts +47 -0
- package/dist/chat/message.js +108 -0
- package/dist/chrome/_band.js +54 -0
- package/dist/chrome/_drag.js +59 -0
- package/dist/chrome/_edge-scroller.d.ts +45 -0
- package/dist/chrome/_edge-scroller.js +149 -0
- package/dist/chrome/_glyphs.js +119 -0
- package/dist/chrome/_status-bar-item.js +85 -0
- package/dist/chrome/_status-bar.d.ts +15 -0
- package/dist/chrome/_status-bar.js +171 -0
- package/dist/chrome/_tabs-scroll.d.ts +67 -0
- package/dist/chrome/_tabs-scroll.js +73 -0
- package/dist/chrome/_tree.d.ts +75 -0
- package/dist/chrome/_tree.js +49 -0
- package/dist/chrome/app-bar.d.ts +103 -0
- package/dist/chrome/app-bar.js +175 -0
- package/dist/chrome/app-shell.d.ts +243 -0
- package/dist/chrome/app-shell.js +266 -0
- package/dist/chrome/band.d.ts +106 -0
- package/dist/chrome/band.js +97 -0
- package/dist/chrome/empty-state.d.ts +37 -0
- package/dist/chrome/empty-state.js +57 -0
- package/dist/chrome/eyebrow.d.ts +29 -0
- package/dist/chrome/eyebrow.js +36 -0
- package/dist/chrome/footer.d.ts +88 -0
- package/dist/chrome/footer.js +83 -0
- package/dist/chrome/index.d.ts +24 -0
- package/dist/chrome/index.js +22 -0
- package/dist/chrome/inspector.d.ts +61 -0
- package/dist/chrome/inspector.js +121 -0
- package/dist/chrome/navigation-menu.d.ts +80 -0
- package/dist/chrome/navigation-menu.js +121 -0
- package/dist/chrome/page-shell.d.ts +38 -0
- package/dist/chrome/page-shell.js +76 -0
- package/dist/chrome/panel.d.ts +55 -0
- package/dist/chrome/panel.js +67 -0
- package/dist/chrome/row.d.ts +82 -0
- package/dist/chrome/row.js +106 -0
- package/dist/chrome/scroll-area.d.ts +39 -0
- package/dist/chrome/scroll-area.js +70 -0
- package/dist/chrome/section-header.d.ts +42 -0
- package/dist/chrome/section-header.js +79 -0
- package/dist/chrome/segmented-control.d.ts +77 -0
- package/dist/chrome/segmented-control.js +95 -0
- package/dist/chrome/status-bar.d.ts +129 -0
- package/dist/chrome/status-bar.js +120 -0
- package/dist/chrome/tabs.d.ts +80 -0
- package/dist/chrome/tabs.js +132 -0
- package/dist/chrome/title-bar.d.ts +47 -0
- package/dist/chrome/title-bar.js +43 -0
- package/dist/chrome/toolbar.d.ts +68 -0
- package/dist/chrome/toolbar.js +83 -0
- package/dist/chrome/tree.d.ts +98 -0
- package/dist/chrome/tree.js +248 -0
- package/dist/color/_checker.js +14 -0
- package/dist/color/_convert.d.ts +52 -0
- package/dist/color/_convert.js +66 -0
- package/dist/color/_glyphs.js +28 -0
- package/dist/color/_thumb.js +15 -0
- package/dist/color/_value.js +28 -0
- package/dist/color/color-area.d.ts +27 -0
- package/dist/color/color-area.js +40 -0
- package/dist/color/color-field.d.ts +32 -0
- package/dist/color/color-field.js +43 -0
- package/dist/color/color-picker.d.ts +71 -0
- package/dist/color/color-picker.js +178 -0
- package/dist/color/color-slider.d.ts +31 -0
- package/dist/color/color-slider.js +51 -0
- package/dist/color/color-swatch.d.ts +32 -0
- package/dist/color/color-swatch.js +44 -0
- package/dist/color/index.d.ts +7 -0
- package/dist/color/index.js +7 -0
- package/dist/configurator/_export.d.ts +78 -0
- package/dist/configurator/_export.js +302 -0
- package/dist/configurator/_glyphs.js +92 -0
- package/dist/configurator/_overrides.d.ts +266 -0
- package/dist/configurator/_overrides.js +541 -0
- package/dist/configurator/configurator.d.ts +71 -0
- package/dist/configurator/configurator.js +284 -0
- package/dist/configurator/export-dialog.d.ts +30 -0
- package/dist/configurator/export-dialog.js +121 -0
- package/dist/configurator/index.d.ts +8 -0
- package/dist/configurator/index.js +8 -0
- package/dist/configurator/panel-sections.d.ts +86 -0
- package/dist/configurator/panel-sections.js +352 -0
- package/dist/configurator/token-editor.d.ts +74 -0
- package/dist/configurator/token-editor.js +152 -0
- package/dist/configurator/use-zoom.d.ts +87 -0
- package/dist/configurator/use-zoom.js +113 -0
- package/dist/date/_glyphs.js +34 -0
- package/dist/date/_segments.js +101 -0
- package/dist/date/_trigger.js +31 -0
- package/dist/date/calendar.d.ts +25 -0
- package/dist/date/calendar.js +125 -0
- package/dist/date/date-field.d.ts +34 -0
- package/dist/date/date-field.js +41 -0
- package/dist/date/date-picker.d.ts +69 -0
- package/dist/date/date-picker.js +89 -0
- package/dist/date/date-range-picker.d.ts +65 -0
- package/dist/date/date-range-picker.js +92 -0
- package/dist/date/index.d.ts +6 -0
- package/dist/date/index.js +6 -0
- package/dist/date/time-field.d.ts +29 -0
- package/dist/date/time-field.js +36 -0
- package/dist/dmx/_ramp.d.ts +77 -0
- package/dist/dmx/_ramp.js +169 -0
- package/dist/dmx/_readout.js +53 -0
- package/dist/dmx/_universe.d.ts +105 -0
- package/dist/dmx/_universe.js +112 -0
- package/dist/dmx/channel-matrix.d.ts +81 -0
- package/dist/dmx/channel-matrix.js +285 -0
- package/dist/dmx/dmx-bar.d.ts +50 -0
- package/dist/dmx/dmx-bar.js +107 -0
- package/dist/dmx/dmx-strip.d.ts +41 -0
- package/dist/dmx/dmx-strip.js +196 -0
- package/dist/dmx/index.d.ts +7 -0
- package/dist/dmx/index.js +7 -0
- package/dist/dmx/universe-grid.d.ts +61 -0
- package/dist/dmx/universe-grid.js +182 -0
- package/dist/elements/activity-graph.d.ts +40 -0
- package/dist/elements/activity-graph.js +81 -0
- package/dist/elements/agent-card.d.ts +49 -0
- package/dist/elements/agent-card.js +91 -0
- package/dist/elements/agent-handoff.d.ts +24 -0
- package/dist/elements/agent-handoff.js +53 -0
- package/dist/elements/agent-mode-badge.d.ts +72 -0
- package/dist/elements/agent-mode-badge.js +110 -0
- package/dist/elements/agent-plan.d.ts +24 -0
- package/dist/elements/agent-plan.js +74 -0
- package/dist/elements/agent-status.d.ts +29 -0
- package/dist/elements/agent-status.js +46 -0
- package/dist/elements/agent-surface.d.ts +65 -0
- package/dist/elements/agent-surface.js +68 -0
- package/dist/elements/animated-number.d.ts +86 -0
- package/dist/elements/animated-number.js +118 -0
- package/dist/elements/approval-card.d.ts +40 -0
- package/dist/elements/approval-card.js +78 -0
- package/dist/elements/artifact-card.d.ts +30 -0
- package/dist/elements/artifact-card.js +58 -0
- package/dist/elements/background-inbox.d.ts +39 -0
- package/dist/elements/background-inbox.js +60 -0
- package/dist/elements/canvas-split.d.ts +77 -0
- package/dist/elements/canvas-split.js +138 -0
- package/dist/elements/chart.d.ts +41 -0
- package/dist/elements/chart.js +117 -0
- package/dist/elements/chat-panel.d.ts +46 -0
- package/dist/elements/chat-panel.js +104 -0
- package/dist/elements/checkpoint-history.d.ts +31 -0
- package/dist/elements/checkpoint-history.js +65 -0
- package/dist/elements/clamp.d.ts +90 -0
- package/dist/elements/clamp.js +109 -0
- package/dist/elements/code-diff.d.ts +42 -0
- package/dist/elements/code-diff.js +69 -0
- package/dist/elements/code-runner.d.ts +38 -0
- package/dist/elements/code-runner.js +84 -0
- package/dist/elements/command-palette.d.ts +48 -0
- package/dist/elements/command-palette.js +129 -0
- package/dist/elements/compaction-row.d.ts +63 -0
- package/dist/elements/compaction-row.js +110 -0
- package/dist/elements/comparison-card.d.ts +47 -0
- package/dist/elements/comparison-card.js +69 -0
- package/dist/elements/composer.d.ts +274 -0
- package/dist/elements/composer.js +505 -0
- package/dist/elements/computer-use.d.ts +40 -0
- package/dist/elements/computer-use.js +92 -0
- package/dist/elements/confidence-marker.d.ts +39 -0
- package/dist/elements/confidence-marker.js +64 -0
- package/dist/elements/connection-state.d.ts +29 -0
- package/dist/elements/connection-state.js +66 -0
- package/dist/elements/context-breakdown.d.ts +30 -0
- package/dist/elements/context-breakdown.js +86 -0
- package/dist/elements/context-usage.d.ts +99 -0
- package/dist/elements/context-usage.js +225 -0
- package/dist/elements/conversation-search.d.ts +48 -0
- package/dist/elements/conversation-search.js +88 -0
- package/dist/elements/cost-meter.d.ts +33 -0
- package/dist/elements/cost-meter.js +75 -0
- package/dist/elements/data-table.d.ts +31 -0
- package/dist/elements/data-table.js +67 -0
- package/dist/elements/day-separator.d.ts +34 -0
- package/dist/elements/day-separator.js +50 -0
- package/dist/elements/diagram.d.ts +34 -0
- package/dist/elements/diagram.js +75 -0
- package/dist/elements/document-reference.d.ts +37 -0
- package/dist/elements/document-reference.js +66 -0
- package/dist/elements/draft-restore.d.ts +27 -0
- package/dist/elements/draft-restore.js +54 -0
- package/dist/elements/edit-message.d.ts +36 -0
- package/dist/elements/edit-message.js +77 -0
- package/dist/elements/elements.css +459 -0
- package/dist/elements/elicitation-form.d.ts +48 -0
- package/dist/elements/elicitation-form.js +106 -0
- package/dist/elements/empty-state.d.ts +52 -0
- package/dist/elements/empty-state.js +98 -0
- package/dist/elements/end-of-turn-summary.d.ts +60 -0
- package/dist/elements/end-of-turn-summary.js +75 -0
- package/dist/elements/error-state.d.ts +29 -0
- package/dist/elements/error-state.js +55 -0
- package/dist/elements/feedback-dialog.d.ts +36 -0
- package/dist/elements/feedback-dialog.js +81 -0
- package/dist/elements/file-tree.d.ts +45 -0
- package/dist/elements/file-tree.js +84 -0
- package/dist/elements/flow-graph.d.ts +45 -0
- package/dist/elements/flow-graph.js +78 -0
- package/dist/elements/generative/chart.js +200 -0
- package/dist/elements/generative/faults.js +111 -0
- package/dist/elements/generative/icons.d.ts +41 -0
- package/dist/elements/generative/icons.js +190 -0
- package/dist/elements/generative/intrinsics.js +483 -0
- package/dist/elements/generative/spec.d.ts +110 -0
- package/dist/elements/generative/spec.js +366 -0
- package/dist/elements/generative.css +1145 -0
- package/dist/elements/generative.d.ts +144 -0
- package/dist/elements/generative.js +126 -0
- package/dist/elements/guardrail-notice.d.ts +29 -0
- package/dist/elements/guardrail-notice.js +63 -0
- package/dist/elements/image-generation.d.ts +18 -0
- package/dist/elements/image-generation.js +64 -0
- package/dist/elements/index.d.ts +116 -0
- package/dist/elements/index.js +115 -0
- package/dist/elements/inline-citation.d.ts +43 -0
- package/dist/elements/inline-citation.js +93 -0
- package/dist/elements/job-progress.d.ts +49 -0
- package/dist/elements/job-progress.js +74 -0
- package/dist/elements/launcher-bubble.d.ts +34 -0
- package/dist/elements/launcher-bubble.js +72 -0
- package/dist/elements/live-region-announcer.d.ts +130 -0
- package/dist/elements/live-region-announcer.js +230 -0
- package/dist/elements/loading-state.d.ts +27 -0
- package/dist/elements/loading-state.js +36 -0
- package/dist/elements/map-answer.d.ts +38 -0
- package/dist/elements/map-answer.js +93 -0
- package/dist/elements/markdown.d.ts +131 -0
- package/dist/elements/markdown.js +528 -0
- package/dist/elements/math-block.d.ts +51 -0
- package/dist/elements/math-block.js +70 -0
- package/dist/elements/mcp-server-panel.d.ts +41 -0
- package/dist/elements/mcp-server-panel.js +115 -0
- package/dist/elements/memory-chips.d.ts +30 -0
- package/dist/elements/memory-chips.js +43 -0
- package/dist/elements/message-actions.d.ts +38 -0
- package/dist/elements/message-actions.js +71 -0
- package/dist/elements/message-attachment.d.ts +48 -0
- package/dist/elements/message-attachment.js +63 -0
- package/dist/elements/message-branches.d.ts +25 -0
- package/dist/elements/message-branches.js +65 -0
- package/dist/elements/message-pair.d.ts +33 -0
- package/dist/elements/message-pair.js +65 -0
- package/dist/elements/message-queue.d.ts +31 -0
- package/dist/elements/message-queue.js +80 -0
- package/dist/elements/message-timing.d.ts +33 -0
- package/dist/elements/message-timing.js +37 -0
- package/dist/elements/mobile-composer.d.ts +44 -0
- package/dist/elements/mobile-composer.js +88 -0
- package/dist/elements/model-picker.d.ts +38 -0
- package/dist/elements/model-picker.js +69 -0
- package/dist/elements/number-ticker.d.ts +18 -0
- package/dist/elements/number-ticker.js +47 -0
- package/dist/elements/onboarding.d.ts +30 -0
- package/dist/elements/onboarding.js +75 -0
- package/dist/elements/permission-grant.d.ts +35 -0
- package/dist/elements/permission-grant.js +86 -0
- package/dist/elements/permission-scopes.d.ts +215 -0
- package/dist/elements/permission-scopes.js +249 -0
- package/dist/elements/prompt-library.d.ts +43 -0
- package/dist/elements/prompt-library.js +117 -0
- package/dist/elements/queue-dock.d.ts +101 -0
- package/dist/elements/queue-dock.js +132 -0
- package/dist/elements/quota-banner.d.ts +26 -0
- package/dist/elements/quota-banner.js +66 -0
- package/dist/elements/quote-reply.d.ts +44 -0
- package/dist/elements/quote-reply.js +79 -0
- package/dist/elements/range.d.ts +29 -0
- package/dist/elements/range.js +45 -0
- package/dist/elements/read-aloud.d.ts +45 -0
- package/dist/elements/read-aloud.js +75 -0
- package/dist/elements/reasoning-effort.d.ts +36 -0
- package/dist/elements/reasoning-effort.js +67 -0
- package/dist/elements/reasoning-panel.d.ts +46 -0
- package/dist/elements/reasoning-panel.js +75 -0
- package/dist/elements/recommendation-card.d.ts +45 -0
- package/dist/elements/recommendation-card.js +83 -0
- package/dist/elements/regenerate-menu.d.ts +45 -0
- package/dist/elements/regenerate-menu.js +51 -0
- package/dist/elements/replay.d.ts +217 -0
- package/dist/elements/replay.js +498 -0
- package/dist/elements/research-report.d.ts +38 -0
- package/dist/elements/research-report.js +69 -0
- package/dist/elements/retrieval-chunks.d.ts +43 -0
- package/dist/elements/retrieval-chunks.js +81 -0
- package/dist/elements/revert-dock.d.ts +159 -0
- package/dist/elements/revert-dock.js +327 -0
- package/dist/elements/reviewable-diff.d.ts +45 -0
- package/dist/elements/reviewable-diff.js +110 -0
- package/dist/elements/risk-badge.d.ts +52 -0
- package/dist/elements/risk-badge.js +91 -0
- package/dist/elements/schedule-card.d.ts +42 -0
- package/dist/elements/schedule-card.js +90 -0
- package/dist/elements/score-breakdown.d.ts +47 -0
- package/dist/elements/score-breakdown.js +82 -0
- package/dist/elements/scroll-anchor.d.ts +32 -0
- package/dist/elements/scroll-anchor.js +123 -0
- package/dist/elements/settings-panel.d.ts +52 -0
- package/dist/elements/settings-panel.js +107 -0
- package/dist/elements/shared-conversation.d.ts +39 -0
- package/dist/elements/shared-conversation.js +68 -0
- package/dist/elements/sources.d.ts +33 -0
- package/dist/elements/sources.js +61 -0
- package/dist/elements/speaker-identity.d.ts +32 -0
- package/dist/elements/speaker-identity.js +51 -0
- package/dist/elements/spec-sheet.d.ts +31 -0
- package/dist/elements/spec-sheet.js +45 -0
- package/dist/elements/stopped-run.d.ts +22 -0
- package/dist/elements/stopped-run.js +50 -0
- package/dist/elements/streaming-text.d.ts +31 -0
- package/dist/elements/streaming-text.js +45 -0
- package/dist/elements/subagent-list.d.ts +37 -0
- package/dist/elements/subagent-list.js +79 -0
- package/dist/elements/suggestions.d.ts +30 -0
- package/dist/elements/suggestions.js +36 -0
- package/dist/elements/surfaces.d.ts +85 -0
- package/dist/elements/surfaces.js +108 -0
- package/dist/elements/tail-status.d.ts +131 -0
- package/dist/elements/tail-status.js +94 -0
- package/dist/elements/terminal-block.d.ts +29 -0
- package/dist/elements/terminal-block.js +54 -0
- package/dist/elements/thinking-indicator.d.ts +18 -0
- package/dist/elements/thinking-indicator.js +36 -0
- package/dist/elements/thread-list.d.ts +35 -0
- package/dist/elements/thread-list.js +68 -0
- package/dist/elements/thread-search.d.ts +42 -0
- package/dist/elements/thread-search.js +99 -0
- package/dist/elements/timeline.d.ts +37 -0
- package/dist/elements/timeline.js +46 -0
- package/dist/elements/todo-list.d.ts +42 -0
- package/dist/elements/todo-list.js +59 -0
- package/dist/elements/tool-call.d.ts +41 -0
- package/dist/elements/tool-call.js +85 -0
- package/dist/elements/tool-error.d.ts +39 -0
- package/dist/elements/tool-error.js +76 -0
- package/dist/elements/tool-group.d.ts +45 -0
- package/dist/elements/tool-group.js +71 -0
- package/dist/elements/tool-timeline.d.ts +65 -0
- package/dist/elements/tool-timeline.js +88 -0
- package/dist/elements/trace-waterfall.d.ts +37 -0
- package/dist/elements/trace-waterfall.js +69 -0
- package/dist/elements/transcript-rules.d.ts +67 -0
- package/dist/elements/transcript-rules.js +95 -0
- package/dist/elements/turn-footer.d.ts +74 -0
- package/dist/elements/turn-footer.js +101 -0
- package/dist/elements/typing-indicator.d.ts +16 -0
- package/dist/elements/typing-indicator.js +51 -0
- package/dist/elements/verdict-row.d.ts +89 -0
- package/dist/elements/verdict-row.js +150 -0
- package/dist/elements/vocabulary.d.ts +612 -0
- package/dist/elements/vocabulary.js +611 -0
- package/dist/elements/voice-conversation.d.ts +49 -0
- package/dist/elements/voice-conversation.js +123 -0
- package/dist/elements/web-preview.d.ts +32 -0
- package/dist/elements/web-preview.js +66 -0
- package/dist/elements/web-search.d.ts +37 -0
- package/dist/elements/web-search.js +66 -0
- package/dist/elements/work-collapse.d.ts +103 -0
- package/dist/elements/work-collapse.js +131 -0
- package/dist/flow/_frame.d.ts +52 -0
- package/dist/flow/_frame.js +38 -0
- package/dist/flow/controls.d.ts +41 -0
- package/dist/flow/controls.js +53 -0
- package/dist/flow/flow.css +121 -0
- package/dist/flow/handles.d.ts +40 -0
- package/dist/flow/handles.js +61 -0
- package/dist/flow/index.d.ts +7 -0
- package/dist/flow/index.js +7 -0
- package/dist/flow/node-card.d.ts +71 -0
- package/dist/flow/node-card.js +102 -0
- package/dist/flow/signal-edge.d.ts +60 -0
- package/dist/flow/signal-edge.js +108 -0
- package/dist/flow/use-flow-theme.d.ts +69 -0
- package/dist/flow/use-flow-theme.js +109 -0
- package/dist/forms/_chassis.d.ts +164 -0
- package/dist/forms/_chassis.js +159 -0
- package/dist/forms/_glyphs.js +143 -0
- package/dist/forms/_listbox.js +55 -0
- package/dist/forms/autocomplete.d.ts +61 -0
- package/dist/forms/autocomplete.js +88 -0
- package/dist/forms/button-group.d.ts +47 -0
- package/dist/forms/button-group.js +52 -0
- package/dist/forms/checkbox.d.ts +51 -0
- package/dist/forms/checkbox.js +98 -0
- package/dist/forms/combobox.d.ts +73 -0
- package/dist/forms/combobox.js +108 -0
- package/dist/forms/env-var-input.d.ts +74 -0
- package/dist/forms/env-var-input.js +116 -0
- package/dist/forms/field.d.ts +89 -0
- package/dist/forms/field.js +102 -0
- package/dist/forms/file-upload.d.ts +113 -0
- package/dist/forms/file-upload.js +232 -0
- package/dist/forms/index.d.ts +26 -0
- package/dist/forms/index.js +26 -0
- package/dist/forms/input-group.d.ts +36 -0
- package/dist/forms/input-group.js +59 -0
- package/dist/forms/input.d.ts +45 -0
- package/dist/forms/input.js +36 -0
- package/dist/forms/multi-select.d.ts +62 -0
- package/dist/forms/multi-select.js +107 -0
- package/dist/forms/number-field.d.ts +39 -0
- package/dist/forms/number-field.js +65 -0
- package/dist/forms/otp-field.d.ts +54 -0
- package/dist/forms/otp-field.js +59 -0
- package/dist/forms/password-input.d.ts +46 -0
- package/dist/forms/password-input.js +62 -0
- package/dist/forms/radio-group.d.ts +50 -0
- package/dist/forms/radio-group.js +64 -0
- package/dist/forms/rating.d.ts +69 -0
- package/dist/forms/rating.js +103 -0
- package/dist/forms/scrub-input.d.ts +81 -0
- package/dist/forms/scrub-input.js +249 -0
- package/dist/forms/search-input.d.ts +54 -0
- package/dist/forms/search-input.js +112 -0
- package/dist/forms/select.d.ts +75 -0
- package/dist/forms/select.js +91 -0
- package/dist/forms/slider.d.ts +44 -0
- package/dist/forms/slider.js +65 -0
- package/dist/forms/switch.d.ts +36 -0
- package/dist/forms/switch.js +71 -0
- package/dist/forms/tags-input.d.ts +69 -0
- package/dist/forms/tags-input.js +148 -0
- package/dist/forms/textarea.d.ts +39 -0
- package/dist/forms/textarea.js +37 -0
- package/dist/forms/toggle-group.d.ts +41 -0
- package/dist/forms/toggle-group.js +56 -0
- package/dist/forms/toggle.d.ts +47 -0
- package/dist/forms/toggle.js +100 -0
- package/dist/icons/containers.d.ts +89 -0
- package/dist/icons/containers.js +295 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/index.d.ts +138 -0
- package/dist/index.js +124 -0
- package/dist/instruments/_ansi.js +116 -0
- package/dist/instruments/_data-row.d.ts +68 -0
- package/dist/instruments/_data-row.js +139 -0
- package/dist/instruments/_glyphs.js +90 -0
- package/dist/instruments/_ledger-disclosure.js +103 -0
- package/dist/instruments/_ledger.d.ts +21 -0
- package/dist/instruments/_ledger.js +5 -0
- package/dist/instruments/_motion.js +56 -0
- package/dist/instruments/_rem.js +21 -0
- package/dist/instruments/app-window-frame.d.ts +48 -0
- package/dist/instruments/app-window-frame.js +76 -0
- package/dist/instruments/code-block.d.ts +35 -0
- package/dist/instruments/code-block.js +173 -0
- package/dist/instruments/copy-button.d.ts +41 -0
- package/dist/instruments/copy-button.js +112 -0
- package/dist/instruments/data-row.d.ts +94 -0
- package/dist/instruments/data-row.js +151 -0
- package/dist/instruments/data-table.d.ts +168 -0
- package/dist/instruments/data-table.js +212 -0
- package/dist/instruments/data-tree.d.ts +126 -0
- package/dist/instruments/data-tree.js +303 -0
- package/dist/instruments/group-bar.d.ts +63 -0
- package/dist/instruments/group-bar.js +122 -0
- package/dist/instruments/index.d.ts +18 -0
- package/dist/instruments/index.js +18 -0
- package/dist/instruments/ledger.d.ts +204 -0
- package/dist/instruments/ledger.js +204 -0
- package/dist/instruments/log-viewer.d.ts +74 -0
- package/dist/instruments/log-viewer.js +215 -0
- package/dist/instruments/meter.d.ts +81 -0
- package/dist/instruments/meter.js +96 -0
- package/dist/instruments/progress.d.ts +61 -0
- package/dist/instruments/progress.js +79 -0
- package/dist/instruments/seam-grid.d.ts +66 -0
- package/dist/instruments/seam-grid.js +78 -0
- package/dist/instruments/sparkline.d.ts +39 -0
- package/dist/instruments/sparkline.js +85 -0
- package/dist/instruments/stat.d.ts +35 -0
- package/dist/instruments/stat.js +59 -0
- package/dist/instruments/table.d.ts +170 -0
- package/dist/instruments/table.js +237 -0
- package/dist/instruments/terminal-frame.d.ts +89 -0
- package/dist/instruments/terminal-frame.js +256 -0
- package/dist/instruments/two-step-button.d.ts +47 -0
- package/dist/instruments/two-step-button.js +166 -0
- package/dist/instruments/usage-chart.d.ts +55 -0
- package/dist/instruments/usage-chart.js +235 -0
- package/dist/layout/_collapse.js +46 -0
- package/dist/layout/_glyphs.js +45 -0
- package/dist/layout/_ground.d.ts +22 -0
- package/dist/layout/_ground.js +9 -0
- package/dist/layout/accordion.d.ts +52 -0
- package/dist/layout/accordion.js +81 -0
- package/dist/layout/bento.d.ts +144 -0
- package/dist/layout/bento.js +266 -0
- package/dist/layout/breadcrumb.d.ts +35 -0
- package/dist/layout/breadcrumb.js +67 -0
- package/dist/layout/card.d.ts +51 -0
- package/dist/layout/card.js +76 -0
- package/dist/layout/carousel.d.ts +96 -0
- package/dist/layout/carousel.js +211 -0
- package/dist/layout/collapsible.d.ts +74 -0
- package/dist/layout/collapsible.js +126 -0
- package/dist/layout/container.d.ts +27 -0
- package/dist/layout/container.js +43 -0
- package/dist/layout/description-list.d.ts +24 -0
- package/dist/layout/description-list.js +37 -0
- package/dist/layout/frames.d.ts +70 -0
- package/dist/layout/frames.js +298 -0
- package/dist/layout/grid.d.ts +40 -0
- package/dist/layout/grid.js +48 -0
- package/dist/layout/index.d.ts +19 -0
- package/dist/layout/index.js +18 -0
- package/dist/layout/item.d.ts +65 -0
- package/dist/layout/item.js +100 -0
- package/dist/layout/link.d.ts +48 -0
- package/dist/layout/link.js +63 -0
- package/dist/layout/pagination.d.ts +54 -0
- package/dist/layout/pagination.js +121 -0
- package/dist/layout/preview.d.ts +177 -0
- package/dist/layout/preview.js +628 -0
- package/dist/layout/resizable.d.ts +38 -0
- package/dist/layout/resizable.js +68 -0
- package/dist/layout/sidebar.d.ts +105 -0
- package/dist/layout/sidebar.js +158 -0
- package/dist/layout/stack.d.ts +46 -0
- package/dist/layout/stack.js +62 -0
- package/dist/layout/stepper.d.ts +49 -0
- package/dist/layout/stepper.js +81 -0
- package/dist/layout/timeline.d.ts +43 -0
- package/dist/layout/timeline.js +63 -0
- package/dist/lib/aria-class.js +24 -0
- package/dist/lib/cn.js +18 -0
- package/dist/lib/compose.js +38 -0
- package/dist/lib/cva.d.ts +18 -0
- package/dist/lib/cva.js +65 -0
- package/dist/midi/_notes.d.ts +101 -0
- package/dist/midi/_notes.js +183 -0
- package/dist/midi/_ruler.d.ts +100 -0
- package/dist/midi/_ruler.js +105 -0
- package/dist/midi/_time.d.ts +107 -0
- package/dist/midi/_time.js +130 -0
- package/dist/midi/index.d.ts +9 -0
- package/dist/midi/index.js +9 -0
- package/dist/midi/musical-time-input.d.ts +48 -0
- package/dist/midi/musical-time-input.js +154 -0
- package/dist/midi/piano-keyboard.d.ts +50 -0
- package/dist/midi/piano-keyboard.js +197 -0
- package/dist/midi/spectrum-visualizer.d.ts +65 -0
- package/dist/midi/spectrum-visualizer.js +213 -0
- package/dist/midi/threshold-rail.d.ts +72 -0
- package/dist/midi/threshold-rail.js +214 -0
- package/dist/midi/timeline-ruler.d.ts +83 -0
- package/dist/midi/timeline-ruler.js +152 -0
- package/dist/overlays/_debounce.js +34 -0
- package/dist/overlays/_glyphs.js +59 -0
- package/dist/overlays/_surface.d.ts +70 -0
- package/dist/overlays/_surface.js +70 -0
- package/dist/overlays/_wheel.js +42 -0
- package/dist/overlays/alert-dialog.d.ts +67 -0
- package/dist/overlays/alert-dialog.js +117 -0
- package/dist/overlays/command-palette.d.ts +93 -0
- package/dist/overlays/command-palette.js +193 -0
- package/dist/overlays/context-menu.d.ts +64 -0
- package/dist/overlays/context-menu.js +78 -0
- package/dist/overlays/dialog.d.ts +72 -0
- package/dist/overlays/dialog.js +124 -0
- package/dist/overlays/drawer.d.ts +75 -0
- package/dist/overlays/drawer.js +151 -0
- package/dist/overlays/dropdown-menu.d.ts +79 -0
- package/dist/overlays/dropdown-menu.js +156 -0
- package/dist/overlays/hover-card.d.ts +58 -0
- package/dist/overlays/hover-card.js +91 -0
- package/dist/overlays/index.d.ts +15 -0
- package/dist/overlays/index.js +15 -0
- package/dist/overlays/info-tip.d.ts +41 -0
- package/dist/overlays/info-tip.js +45 -0
- package/dist/overlays/menubar.d.ts +72 -0
- package/dist/overlays/menubar.js +100 -0
- package/dist/overlays/popover.d.ts +66 -0
- package/dist/overlays/popover.js +114 -0
- package/dist/overlays/sheet.d.ts +78 -0
- package/dist/overlays/sheet.js +131 -0
- package/dist/overlays/toast.d.ts +106 -0
- package/dist/overlays/toast.js +146 -0
- package/dist/overlays/tooltip.d.ts +57 -0
- package/dist/overlays/tooltip.js +95 -0
- package/dist/primitives/avatar.d.ts +51 -0
- package/dist/primitives/avatar.js +93 -0
- package/dist/primitives/button.d.ts +58 -0
- package/dist/primitives/button.js +104 -0
- package/dist/primitives/chip.d.ts +73 -0
- package/dist/primitives/chip.js +238 -0
- package/dist/primitives/icon-button.d.ts +41 -0
- package/dist/primitives/icon-button.js +59 -0
- package/dist/primitives/index.d.ts +10 -0
- package/dist/primitives/index.js +10 -0
- package/dist/primitives/kbd.d.ts +17 -0
- package/dist/primitives/kbd.js +24 -0
- package/dist/primitives/separator.d.ts +25 -0
- package/dist/primitives/separator.js +30 -0
- package/dist/primitives/skeleton.d.ts +20 -0
- package/dist/primitives/skeleton.js +27 -0
- package/dist/primitives/spinner.d.ts +26 -0
- package/dist/primitives/spinner.js +31 -0
- package/dist/primitives/status-dot.d.ts +51 -0
- package/dist/primitives/status-dot.js +57 -0
- package/dist/styles.css +97 -0
- package/dist/system/agent-skin.d.ts +27 -0
- package/dist/system/agent-skin.js +20 -0
- package/dist/system/density.d.ts +73 -0
- package/dist/system/density.js +111 -0
- package/dist/system/index.d.ts +12 -0
- package/dist/system/index.js +10 -0
- package/dist/system/overrides.d.ts +80 -0
- package/dist/system/overrides.js +277 -0
- package/dist/system/portal.d.ts +56 -0
- package/dist/system/portal.js +193 -0
- package/dist/system/prepaint.d.ts +134 -0
- package/dist/system/prepaint.js +120 -0
- package/dist/system/theme-provider.d.ts +290 -0
- package/dist/system/theme-provider.js +543 -0
- package/dist/system/theme-registry.d.ts +53 -0
- package/dist/system/theme-registry.js +66 -0
- package/dist/system/use-density.d.ts +50 -0
- package/dist/system/use-density.js +232 -0
- package/dist/system/use-isomorphic-layout-effect.js +33 -0
- package/dist/system/use-theme.d.ts +30 -0
- package/dist/system/use-theme.js +36 -0
- package/dist/system/vocabulary.d.ts +16 -0
- package/dist/system/vocabulary.js +125 -0
- package/dist/theming/contrast.d.ts +2 -0
- package/dist/theming/contrast.js +2 -0
- package/dist/theming/create-theme.d.ts +195 -0
- package/dist/theming/create-theme.js +524 -0
- package/dist/theming/index.d.ts +4 -0
- package/dist/theming/index.js +4 -0
- package/dist/theming/serialize.d.ts +167 -0
- package/dist/theming/serialize.js +241 -0
- package/manifest/components/accordion.json +173 -0
- package/manifest/components/activity-graph.json +104 -0
- package/manifest/components/agent-card.json +150 -0
- package/manifest/components/agent-handoff.json +104 -0
- package/manifest/components/agent-mode-badge.json +102 -0
- package/manifest/components/agent-pile.json +147 -0
- package/manifest/components/agent-plan.json +74 -0
- package/manifest/components/agent-status.json +87 -0
- package/manifest/components/agent-surface.json +93 -0
- package/manifest/components/alert-dialog.json +215 -0
- package/manifest/components/animated-number.json +75 -0
- package/manifest/components/app-bar.json +297 -0
- package/manifest/components/app-shell.json +526 -0
- package/manifest/components/app-window-frame.json +124 -0
- package/manifest/components/approval-card.json +136 -0
- package/manifest/components/artifact-card.json +93 -0
- package/manifest/components/ask-box.json +288 -0
- package/manifest/components/audience-icon.json +46 -0
- package/manifest/components/autocomplete.json +262 -0
- package/manifest/components/avatar-group.json +83 -0
- package/manifest/components/avatar.json +113 -0
- package/manifest/components/background-inbox.json +79 -0
- package/manifest/components/band.json +104 -0
- package/manifest/components/bento.json +306 -0
- package/manifest/components/branch-picker.json +146 -0
- package/manifest/components/breadcrumb.json +85 -0
- package/manifest/components/button-group.json +91 -0
- package/manifest/components/button.json +163 -0
- package/manifest/components/calendar.json +65 -0
- package/manifest/components/canvas-split-body.json +66 -0
- package/manifest/components/canvas-split-document.json +55 -0
- package/manifest/components/canvas-split-header.json +97 -0
- package/manifest/components/canvas-split-line.json +66 -0
- package/manifest/components/canvas-split-message.json +70 -0
- package/manifest/components/canvas-split-thread.json +55 -0
- package/manifest/components/canvas-split.json +61 -0
- package/manifest/components/card.json +152 -0
- package/manifest/components/carousel.json +242 -0
- package/manifest/components/catalogue-icon.json +46 -0
- package/manifest/components/channel-beta-icon.json +46 -0
- package/manifest/components/channel-matrix.json +239 -0
- package/manifest/components/channel-released-icon.json +46 -0
- package/manifest/components/chart-container.json +127 -0
- package/manifest/components/chart-ramp.json +82 -0
- package/manifest/components/chart-swatch.json +72 -0
- package/manifest/components/chart-tooltip-content.json +140 -0
- package/manifest/components/chart.json +117 -0
- package/manifest/components/chat-empty-state.json +55 -0
- package/manifest/components/chat-panel-assistant-message.json +52 -0
- package/manifest/components/chat-panel-composer.json +74 -0
- package/manifest/components/chat-panel-messages.json +52 -0
- package/manifest/components/chat-panel-typing.json +52 -0
- package/manifest/components/chat-panel-user-message.json +52 -0
- package/manifest/components/chat-panel.json +58 -0
- package/manifest/components/checkbox-group.json +70 -0
- package/manifest/components/checkbox.json +106 -0
- package/manifest/components/checkpoint-history.json +91 -0
- package/manifest/components/chip.json +174 -0
- package/manifest/components/clamp.json +125 -0
- package/manifest/components/cli-tool-icon.json +46 -0
- package/manifest/components/code-block.json +107 -0
- package/manifest/components/code-diff.json +104 -0
- package/manifest/components/code-runner.json +124 -0
- package/manifest/components/collapsible.json +133 -0
- package/manifest/components/color-area.json +62 -0
- package/manifest/components/color-field.json +91 -0
- package/manifest/components/color-picker.json +235 -0
- package/manifest/components/color-slider.json +84 -0
- package/manifest/components/color-swatch.json +79 -0
- package/manifest/components/colors-section.json +70 -0
- package/manifest/components/combobox.json +265 -0
- package/manifest/components/command-palette.json +222 -0
- package/manifest/components/compaction-row.json +128 -0
- package/manifest/components/comparison-card.json +98 -0
- package/manifest/components/composer-actions.json +65 -0
- package/manifest/components/composer-attach-button.json +65 -0
- package/manifest/components/composer-attachment-chip.json +83 -0
- package/manifest/components/composer-attachments.json +60 -0
- package/manifest/components/composer-bar.json +76 -0
- package/manifest/components/composer-command-item.json +85 -0
- package/manifest/components/composer-context.json +71 -0
- package/manifest/components/composer-input.json +77 -0
- package/manifest/components/composer-menu-item.json +75 -0
- package/manifest/components/composer-menu.json +89 -0
- package/manifest/components/composer-model-item.json +82 -0
- package/manifest/components/composer-model-trigger.json +81 -0
- package/manifest/components/composer-person-item.json +86 -0
- package/manifest/components/composer-send.json +86 -0
- package/manifest/components/composer-toolbar.json +65 -0
- package/manifest/components/composer-voice-button.json +71 -0
- package/manifest/components/composer-voice.json +81 -0
- package/manifest/components/composer.json +238 -0
- package/manifest/components/computer-use.json +98 -0
- package/manifest/components/confidence-marker.json +86 -0
- package/manifest/components/connection-state.json +103 -0
- package/manifest/components/container.json +75 -0
- package/manifest/components/context-breakdown.json +72 -0
- package/manifest/components/context-menu.json +134 -0
- package/manifest/components/context-usage.json +98 -0
- package/manifest/components/conversation-search.json +111 -0
- package/manifest/components/copy-button.json +118 -0
- package/manifest/components/cost-meter.json +84 -0
- package/manifest/components/cue-logotype.json +110 -0
- package/manifest/components/cue-mark.json +111 -0
- package/manifest/components/cue-portal-frame.json +65 -0
- package/manifest/components/data-row.json +222 -0
- package/manifest/components/data-table-pagination.json +97 -0
- package/manifest/components/data-table-toolbar.json +127 -0
- package/manifest/components/data-tree.json +185 -0
- package/manifest/components/date-field.json +93 -0
- package/manifest/components/date-picker.json +255 -0
- package/manifest/components/date-range-picker.json +255 -0
- package/manifest/components/day-separator.json +63 -0
- package/manifest/components/delegation-card.json +196 -0
- package/manifest/components/density.json +93 -0
- package/manifest/components/description-list.json +91 -0
- package/manifest/components/diagram.json +126 -0
- package/manifest/components/dialog.json +222 -0
- package/manifest/components/disclosure.json +134 -0
- package/manifest/components/dmx-bar.json +107 -0
- package/manifest/components/dmx-strip.json +117 -0
- package/manifest/components/document-reference.json +108 -0
- package/manifest/components/draft-restore.json +96 -0
- package/manifest/components/drawer.json +204 -0
- package/manifest/components/dropdown-menu.json +275 -0
- package/manifest/components/edit-message.json +131 -0
- package/manifest/components/elements-command-palette.json +122 -0
- package/manifest/components/elements-composer.json +71 -0
- package/manifest/components/elements-data-table.json +75 -0
- package/manifest/components/elements-timeline.json +77 -0
- package/manifest/components/elicitation-form.json +130 -0
- package/manifest/components/empty-state-composer.json +71 -0
- package/manifest/components/empty-state-greeting.json +49 -0
- package/manifest/components/empty-state-suggestion.json +60 -0
- package/manifest/components/empty-state-suggestions.json +49 -0
- package/manifest/components/empty-state.json +111 -0
- package/manifest/components/end-of-turn-summary.json +89 -0
- package/manifest/components/env-var-input.json +194 -0
- package/manifest/components/error-state.json +93 -0
- package/manifest/components/export-dialog.json +101 -0
- package/manifest/components/eyebrow.json +59 -0
- package/manifest/components/feedback-dialog.json +133 -0
- package/manifest/components/field-description.json +66 -0
- package/manifest/components/field-error.json +87 -0
- package/manifest/components/field-label.json +66 -0
- package/manifest/components/field.json +82 -0
- package/manifest/components/file-tree.json +96 -0
- package/manifest/components/file-upload.json +204 -0
- package/manifest/components/flow-background.json +50 -0
- package/manifest/components/flow-controls.json +50 -0
- package/manifest/components/flow-graph.json +86 -0
- package/manifest/components/folder-icon.json +46 -0
- package/manifest/components/footer.json +133 -0
- package/manifest/components/frac.json +68 -0
- package/manifest/components/frames.json +210 -0
- package/manifest/components/generation-loader.json +78 -0
- package/manifest/components/generative-ui.json +125 -0
- package/manifest/components/grid.json +132 -0
- package/manifest/components/group-bar.json +122 -0
- package/manifest/components/guardrail-notice.json +109 -0
- package/manifest/components/hover-card.json +189 -0
- package/manifest/components/icon-button.json +106 -0
- package/manifest/components/image-generation.json +73 -0
- package/manifest/components/info-tip.json +133 -0
- package/manifest/components/inline-citation.json +90 -0
- package/manifest/components/input-group.json +112 -0
- package/manifest/components/input.json +121 -0
- package/manifest/components/inspector.json +199 -0
- package/manifest/components/item.json +163 -0
- package/manifest/components/job-progress.json +116 -0
- package/manifest/components/kbd.json +52 -0
- package/manifest/components/launcher-bubble.json +130 -0
- package/manifest/components/ledger.json +330 -0
- package/manifest/components/link.json +94 -0
- package/manifest/components/live-region-announcer.json +95 -0
- package/manifest/components/log-viewer.json +172 -0
- package/manifest/components/map-answer.json +97 -0
- package/manifest/components/markdown-text.json +126 -0
- package/manifest/components/math-block.json +84 -0
- package/manifest/components/mcp-server-icon.json +46 -0
- package/manifest/components/mcp-server-panel.json +102 -0
- package/manifest/components/memory-chips.json +73 -0
- package/manifest/components/menubar.json +184 -0
- package/manifest/components/message-actions.json +125 -0
- package/manifest/components/message-attachments.json +71 -0
- package/manifest/components/message-branches.json +83 -0
- package/manifest/components/message-list.json +121 -0
- package/manifest/components/message-pair.json +107 -0
- package/manifest/components/message-queue.json +85 -0
- package/manifest/components/message-timing.json +69 -0
- package/manifest/components/message.json +149 -0
- package/manifest/components/meter.json +150 -0
- package/manifest/components/mobile-composer.json +163 -0
- package/manifest/components/model-picker.json +87 -0
- package/manifest/components/multi-select.json +255 -0
- package/manifest/components/musical-time-input.json +141 -0
- package/manifest/components/navigation-menu.json +269 -0
- package/manifest/components/node-card.json +144 -0
- package/manifest/components/node-handle.json +84 -0
- package/manifest/components/number-field.json +131 -0
- package/manifest/components/number-ticker.json +67 -0
- package/manifest/components/onboarding.json +100 -0
- package/manifest/components/otp-field.json +163 -0
- package/manifest/components/page-shell.json +129 -0
- package/manifest/components/pagination.json +108 -0
- package/manifest/components/panel-header.json +89 -0
- package/manifest/components/panel.json +71 -0
- package/manifest/components/password-input.json +171 -0
- package/manifest/components/permission-grant.json +115 -0
- package/manifest/components/permission-scopes.json +184 -0
- package/manifest/components/piano-keyboard.json +149 -0
- package/manifest/components/plussie.json +140 -0
- package/manifest/components/popover.json +231 -0
- package/manifest/components/preset-section.json +80 -0
- package/manifest/components/preview.json +294 -0
- package/manifest/components/progress.json +114 -0
- package/manifest/components/prompt-library.json +122 -0
- package/manifest/components/queue-dock.json +139 -0
- package/manifest/components/quota-banner.json +113 -0
- package/manifest/components/quote-reply.json +129 -0
- package/manifest/components/radio-group.json +83 -0
- package/manifest/components/radio.json +94 -0
- package/manifest/components/rating.json +188 -0
- package/manifest/components/read-aloud.json +139 -0
- package/manifest/components/reasoning-effort.json +95 -0
- package/manifest/components/reasoning-panel.json +135 -0
- package/manifest/components/recommendation-card.json +133 -0
- package/manifest/components/regenerate-menu.json +107 -0
- package/manifest/components/replay-player.json +124 -0
- package/manifest/components/research-report.json +87 -0
- package/manifest/components/resizable.json +91 -0
- package/manifest/components/retrieval-chunks.json +98 -0
- package/manifest/components/revert-dock.json +197 -0
- package/manifest/components/reviewable-diff.json +113 -0
- package/manifest/components/risk-badge.json +89 -0
- package/manifest/components/row.json +122 -0
- package/manifest/components/schedule-card.json +121 -0
- package/manifest/components/score-breakdown.json +108 -0
- package/manifest/components/scroll-anchor.json +84 -0
- package/manifest/components/scroll-area.json +114 -0
- package/manifest/components/scrollable-tabs-list.json +91 -0
- package/manifest/components/scrub-input.json +268 -0
- package/manifest/components/seam-cell.json +91 -0
- package/manifest/components/seam-grid.json +84 -0
- package/manifest/components/seam-list.json +56 -0
- package/manifest/components/search-input.json +195 -0
- package/manifest/components/section-header.json +140 -0
- package/manifest/components/segmented-control.json +178 -0
- package/manifest/components/select.json +253 -0
- package/manifest/components/separator.json +56 -0
- package/manifest/components/settings-panel.json +152 -0
- package/manifest/components/shape-section.json +70 -0
- package/manifest/components/shared-conversation.json +107 -0
- package/manifest/components/sheet.json +210 -0
- package/manifest/components/shimmer-label.json +61 -0
- package/manifest/components/sidebar.json +245 -0
- package/manifest/components/signal-edge.json +56 -0
- package/manifest/components/skeleton.json +46 -0
- package/manifest/components/skill-icon.json +46 -0
- package/manifest/components/slider.json +106 -0
- package/manifest/components/sources.json +97 -0
- package/manifest/components/sparkline.json +89 -0
- package/manifest/components/speaker-identity.json +66 -0
- package/manifest/components/spec-sheet.json +93 -0
- package/manifest/components/spectrum-visualizer.json +147 -0
- package/manifest/components/spinner.json +71 -0
- package/manifest/components/stack-icon.json +46 -0
- package/manifest/components/stack.json +143 -0
- package/manifest/components/stacks-matrix-icon.json +46 -0
- package/manifest/components/stat.json +111 -0
- package/manifest/components/status-bar.json +233 -0
- package/manifest/components/status-dot.json +97 -0
- package/manifest/components/stepper.json +107 -0
- package/manifest/components/stopped-run.json +97 -0
- package/manifest/components/streaming-text.json +82 -0
- package/manifest/components/sub.json +45 -0
- package/manifest/components/subagent-list.json +106 -0
- package/manifest/components/suggestions.json +106 -0
- package/manifest/components/sup.json +45 -0
- package/manifest/components/swap-label.json +86 -0
- package/manifest/components/switch.json +102 -0
- package/manifest/components/table-scroll-region.json +78 -0
- package/manifest/components/table.json +306 -0
- package/manifest/components/tabs.json +156 -0
- package/manifest/components/tags-input.json +255 -0
- package/manifest/components/tail-status.json +138 -0
- package/manifest/components/terminal-block.json +111 -0
- package/manifest/components/terminal-frame.json +146 -0
- package/manifest/components/textarea.json +104 -0
- package/manifest/components/theme-configurator.json +158 -0
- package/manifest/components/theme-provider.json +228 -0
- package/manifest/components/thinking-indicator.json +69 -0
- package/manifest/components/thread-list.json +87 -0
- package/manifest/components/thread-search.json +108 -0
- package/manifest/components/threshold-rail.json +223 -0
- package/manifest/components/time-boundary.json +68 -0
- package/manifest/components/time-field.json +93 -0
- package/manifest/components/timeline-ruler.json +178 -0
- package/manifest/components/timeline.json +131 -0
- package/manifest/components/title-bar.json +97 -0
- package/manifest/components/toast.json +140 -0
- package/manifest/components/todo-list.json +76 -0
- package/manifest/components/toggle-group.json +134 -0
- package/manifest/components/toggle.json +140 -0
- package/manifest/components/token-editor.json +106 -0
- package/manifest/components/tool-call-card.json +268 -0
- package/manifest/components/tool-call.json +147 -0
- package/manifest/components/tool-error.json +141 -0
- package/manifest/components/tool-group.json +97 -0
- package/manifest/components/tool-timeline.json +147 -0
- package/manifest/components/toolbar.json +192 -0
- package/manifest/components/tooltip.json +199 -0
- package/manifest/components/trace-waterfall.json +84 -0
- package/manifest/components/tree-visibility-toggle.json +99 -0
- package/manifest/components/tree.json +182 -0
- package/manifest/components/turn-footer.json +133 -0
- package/manifest/components/two-step-button.json +150 -0
- package/manifest/components/typing-indicator.json +60 -0
- package/manifest/components/universe-grid.json +155 -0
- package/manifest/components/unread-divider.json +58 -0
- package/manifest/components/usage-chart.json +162 -0
- package/manifest/components/verdict-row.json +106 -0
- package/manifest/components/voice-conversation.json +141 -0
- package/manifest/components/web-preview.json +105 -0
- package/manifest/components/web-search.json +108 -0
- package/manifest/components/work-collapse.json +125 -0
- package/manifest/fixtures.json +776 -0
- package/manifest/manifest.json +5037 -0
- package/manifest/tokens.json +288 -0
- package/package.json +278 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { AGENT_ROOT_COLOR, agentColor } from "./agent-color.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/chat/message.tsx
|
|
6
|
+
/**
|
|
7
|
+
* The bubble's asymmetric radii — `10 10 2 10` for the user, mirrored for the
|
|
8
|
+
* agent.
|
|
9
|
+
*
|
|
10
|
+
* The tight corner is the tail, and it points at whoever is speaking: bottom
|
|
11
|
+
* right for the right-aligned user turn, bottom left for the agent's. Written
|
|
12
|
+
* against the radius tokens rather than literal pixels, so the whole family
|
|
13
|
+
* tightens with `--cue-radius-scale` at ultra-compact density instead of
|
|
14
|
+
* staying a fixed 10px blob next to 2px controls.
|
|
15
|
+
*/
|
|
16
|
+
const ROLE_RADII = {
|
|
17
|
+
user: "[border-radius:var(--radius-overlay)_var(--radius-overlay)_var(--radius-control)_var(--radius-overlay)]",
|
|
18
|
+
agent: "[border-radius:var(--radius-overlay)_var(--radius-overlay)_var(--radius-overlay)_var(--radius-control)]",
|
|
19
|
+
system: "rounded-(--radius-control)"
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Fill per role.
|
|
23
|
+
*
|
|
24
|
+
* The user's own turn is the one place in this system a solid accent fill is
|
|
25
|
+
* right: it is the reader's own voice, it appears at most every other row, and
|
|
26
|
+
* `--cue-accent-fg` exists precisely as "legible ink on the accent" (the same
|
|
27
|
+
* pair `Button` uses for `primary`). Agent turns stay on the flat surface
|
|
28
|
+
* ladder with a hairline, and a system notice is chromeless — it is chrome, not
|
|
29
|
+
* conversation.
|
|
30
|
+
*/
|
|
31
|
+
const ROLE_SURFACES = {
|
|
32
|
+
user: "ms-auto border border-transparent bg-accent text-accent-fg",
|
|
33
|
+
agent: "me-auto border border-border bg-surface-1 text-fg",
|
|
34
|
+
system: "mx-auto border border-dashed border-border bg-transparent text-fg-subtle"
|
|
35
|
+
};
|
|
36
|
+
/** How wide a bubble may get before the line length stops being readable. */
|
|
37
|
+
const MEASURE = "max-w-[min(44rem,90%)]";
|
|
38
|
+
/**
|
|
39
|
+
* One turn in a conversation.
|
|
40
|
+
*
|
|
41
|
+
* Content is rendered as React nodes, verbatim: there is no markdown or HTML
|
|
42
|
+
* path here on purpose. Model output is untrusted text, and a component that
|
|
43
|
+
* quietly parsed it would make every consumer of this library one prompt away
|
|
44
|
+
* from an injection. Callers that want rich text pass their own renderer as
|
|
45
|
+
* children and own that decision.
|
|
46
|
+
*
|
|
47
|
+
* The author line is mono micro and inked in the agent's own colour, so a
|
|
48
|
+
* multi-agent thread is scannable by hue before it is readable by name.
|
|
49
|
+
*
|
|
50
|
+
* Static markup — no `"use client"`; a transcript renders on the server.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* <Message agent="researcher" timestamp="14:02">Found three references.</Message>
|
|
54
|
+
* @example
|
|
55
|
+
* <Message role="user">Patch universe 3.</Message>
|
|
56
|
+
*/
|
|
57
|
+
const Message = React.forwardRef(function Message({ className, role = "agent", agent, rootAgent, author, timestamp, pending = false, footer, children, style, ...elementProps }, ref) {
|
|
58
|
+
const color = agent === void 0 ? AGENT_ROOT_COLOR : agentColor(agent, { root: rootAgent });
|
|
59
|
+
const name = author ?? (role === "user" ? "You" : agent);
|
|
60
|
+
const hasHeader = name !== void 0 || timestamp !== void 0;
|
|
61
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
62
|
+
ref,
|
|
63
|
+
"data-slot": "message",
|
|
64
|
+
"data-role": role,
|
|
65
|
+
"data-pending": pending ? "" : void 0,
|
|
66
|
+
className: cn("flex min-w-0 flex-col gap-(--cue-space-2) px-(--cue-space-4) py-(--cue-space-3)", MEASURE, ROLE_SURFACES[role], ROLE_RADII[role], className),
|
|
67
|
+
style: {
|
|
68
|
+
"--agent-color": color,
|
|
69
|
+
...style
|
|
70
|
+
},
|
|
71
|
+
...elementProps,
|
|
72
|
+
children: [
|
|
73
|
+
hasHeader ? /* @__PURE__ */ jsxs("div", {
|
|
74
|
+
"data-slot": "message-header",
|
|
75
|
+
className: "flex min-w-0 items-baseline justify-between gap-(--cue-space-3) font-mono text-(length:--cue-text-micro) tracking-[0.15em] uppercase",
|
|
76
|
+
children: [name === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
77
|
+
"data-slot": "message-author",
|
|
78
|
+
className: cn("min-w-0 truncate", role === "user" ? "text-accent-fg opacity-70" : "text-(--agent-color)"),
|
|
79
|
+
children: name
|
|
80
|
+
}), timestamp === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
81
|
+
"data-slot": "message-timestamp",
|
|
82
|
+
className: cn("shrink-0 tabular-nums", role === "user" ? "text-accent-fg opacity-60" : "text-fg-subtle"),
|
|
83
|
+
children: timestamp
|
|
84
|
+
})]
|
|
85
|
+
}) : null,
|
|
86
|
+
/* @__PURE__ */ jsxs("div", {
|
|
87
|
+
"data-slot": "message-body",
|
|
88
|
+
className: "relative min-w-0 text-(length:--cue-text-body) leading-(--cue-leading-ui) break-words whitespace-pre-wrap",
|
|
89
|
+
children: [children, pending ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
90
|
+
"data-slot": "message-caret",
|
|
91
|
+
"aria-hidden": "true",
|
|
92
|
+
className: "ms-[0.15em] animate-pulse motion-reduce:animate-none",
|
|
93
|
+
children: "▍"
|
|
94
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
95
|
+
className: "sr-only",
|
|
96
|
+
children: "still writing"
|
|
97
|
+
})] }) : null]
|
|
98
|
+
}),
|
|
99
|
+
footer === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
100
|
+
"data-slot": "message-footer",
|
|
101
|
+
className: "flex min-w-0 flex-wrap items-center gap-(--cue-space-2)",
|
|
102
|
+
children: footer
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//#endregion
|
|
108
|
+
export { Message };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
//#region src/chrome/_band.ts
|
|
3
|
+
/**
|
|
4
|
+
* The rule a band draws at its top edge.
|
|
5
|
+
*
|
|
6
|
+
* Spelt as `border-t-(length:--cue-band-rule)` and not as
|
|
7
|
+
* `border-t-(--cue-band-rule)`. Both compile. The second sets
|
|
8
|
+
* `border-top-color`, which would give every band a 1px rule in the token's own
|
|
9
|
+
* text as a colour — a rule that is always drawn and never right. The `length:`
|
|
10
|
+
* hint is what makes Tailwind emit `border-top-width`. It does not carry
|
|
11
|
+
* `border-border` — the element that spends this adds that itself, so both
|
|
12
|
+
* `Band` and `Footer` say in their own class list what colours their rule,
|
|
13
|
+
* rather than one of the two inheriting it silently from the other.
|
|
14
|
+
*/
|
|
15
|
+
const RULE = "border-t-(length:--cue-band-rule)";
|
|
16
|
+
/**
|
|
17
|
+
* The band recipe as class strings, for the one other element in this library
|
|
18
|
+
* that is a band and cannot be a `<section>`.
|
|
19
|
+
*
|
|
20
|
+
* `Footer` is the `contentinfo` landmark: it has to render a `<footer>`, and
|
|
21
|
+
* this library has exactly one polymorphic escape hatch (`ThemeProvider`'s
|
|
22
|
+
* `asChild`) whose own documentation calls it the one place. So rather than
|
|
23
|
+
* give `Band` a second one, or let `Footer` keep a second copy of the recipe
|
|
24
|
+
* — which is the thing spec Decision 4 refuses by name — the strings live here
|
|
25
|
+
* and both elements spend them.
|
|
26
|
+
*
|
|
27
|
+
* It lives in an underscore-prefixed chassis file rather than in `band.tsx` on
|
|
28
|
+
* purpose: `packages/docgen`'s token scanner only follows a component's imports
|
|
29
|
+
* into files whose basename starts with `_`, and `Footer` spends this recipe
|
|
30
|
+
* without rendering `<Band>` itself. Keeping the strings on `band.tsx` left
|
|
31
|
+
* `footer.json`'s published `tokensUsed` silently missing the two tokens this
|
|
32
|
+
* function spends — the rhythm and the rule — because the scanner had no reason
|
|
33
|
+
* to open a public component file it was not asked to document. This file is
|
|
34
|
+
* that reason.
|
|
35
|
+
*
|
|
36
|
+
* **Exactly those two names live here, and that is the second half of the same
|
|
37
|
+
* mechanism.** The scanner reads a chassis file whole; it does not know which
|
|
38
|
+
* branch a call takes, so every `--cue-*` written in this file is published as
|
|
39
|
+
* a token *both* elements render with. `Footer` calls this with the literal
|
|
40
|
+
* `"rule"` and types its own `width` as `ContainerWidth`, so `Band`'s other two
|
|
41
|
+
* spends — `bg-(--cue-band-ground)` for `separation="ground"` and
|
|
42
|
+
* `max-w-(--cue-measure-prose)` for `width="prose"` — are unreachable from a
|
|
43
|
+
* `<footer>` and are written in `band.tsx`, beside the prop that selects them.
|
|
44
|
+
* Moving them here would make `footer.json` claim two tokens the component
|
|
45
|
+
* cannot paint, which is the same defect as the omission this file was written
|
|
46
|
+
* to fix, pointing the other way.
|
|
47
|
+
*
|
|
48
|
+
* It is not exported from the package. A caller who wants a band uses `Band`.
|
|
49
|
+
*/
|
|
50
|
+
function bandClasses(separation) {
|
|
51
|
+
return cn("w-full py-(--cue-band-y)", separation === "rule" ? RULE : null);
|
|
52
|
+
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { bandClasses };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
//#region src/chrome/_drag.ts
|
|
2
|
+
/**
|
|
3
|
+
* The desktop drag contract, in one place because two bars now emit it.
|
|
4
|
+
*
|
|
5
|
+
* A window has exactly one way to be dragged by its chrome, and this library
|
|
6
|
+
* ships into two shells that disagree about what that way is:
|
|
7
|
+
*
|
|
8
|
+
* - **Tauri** listens for `mousedown` and walks the event's `composedPath()`,
|
|
9
|
+
* looking for `data-tauri-drag-region`. The bare form of the attribute means
|
|
10
|
+
* *this element and only this element* — the innermost element under the
|
|
11
|
+
* cursor has to be the attributed one — so a container carrying it does not
|
|
12
|
+
* hand the behaviour to its children. It also excludes anything that reads as
|
|
13
|
+
* a control (`a`, `button`, `input`, `select`, `textarea`, `label`,
|
|
14
|
+
* `summary`, `[contenteditable]`, `[tabindex]`, and the button/link/menuitem
|
|
15
|
+
* ARIA roles) for free, without being asked.
|
|
16
|
+
* - **Electron and Chromium** read the `app-region` CSS property and build a
|
|
17
|
+
* *geometric* hit-test mask from it, below the DOM's pointer-event model
|
|
18
|
+
* entirely: every painted pixel of a `drag` box drags, minus the pixels a
|
|
19
|
+
* `no-drag` box covers. It knows nothing about ancestry and excludes nothing
|
|
20
|
+
* on its own — every interactive descendant has to opt out by name.
|
|
21
|
+
*
|
|
22
|
+
* The two mechanisms fail in opposite directions, so the contract a shared
|
|
23
|
+
* component can honour is the union of both: **attribute every structural
|
|
24
|
+
* surface, carve every interactive cluster.** A bar that only attributes its
|
|
25
|
+
* root is undraggable in Tauri wherever a cell covers the root; a bar that only
|
|
26
|
+
* drags and never carves is a bar whose buttons move the window in Electron.
|
|
27
|
+
*
|
|
28
|
+
* Both spellings of the CSS property are emitted. `app-region` is the current
|
|
29
|
+
* canonical name in Electron's own documentation; `-webkit-app-region` is the
|
|
30
|
+
* legacy alias older Chromium builds still want, and neither shell minds
|
|
31
|
+
* reading a property it already understands twice.
|
|
32
|
+
*
|
|
33
|
+
* These are class strings rather than a `<div>` of their own on purpose: the
|
|
34
|
+
* surfaces that have to carry them — {@link TitleBar}'s root,
|
|
35
|
+
* `AppShell.Bar`'s root, its brand cell, its rest cell — already exist for
|
|
36
|
+
* layout reasons, and wrapping each one in a drag element would put a box in
|
|
37
|
+
* the flex arithmetic that is there for nothing but a CSS property.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Make a painted surface a window drag handle.
|
|
41
|
+
*
|
|
42
|
+
* Pair it with a bare `data-tauri-drag-region` attribute on the same element —
|
|
43
|
+
* the CSS half is Electron's and the attribute half is Tauri's, and an element
|
|
44
|
+
* with only one of them is draggable in only one shell.
|
|
45
|
+
*/
|
|
46
|
+
const DRAG_CLASSES = "[app-region:drag] [-webkit-app-region:drag]";
|
|
47
|
+
/**
|
|
48
|
+
* Carve an interactive cluster back out of the surrounding drag region.
|
|
49
|
+
*
|
|
50
|
+
* Required for Electron, where a button that merely overlaps a drag box stops
|
|
51
|
+
* receiving clicks at all; harmless in Tauri, which had already excluded a
|
|
52
|
+
* real `<button>` on its own. Anything custom enough that Tauri's tag/role
|
|
53
|
+
* heuristic would miss it — an icon "button" built from a `<div>`, a bespoke
|
|
54
|
+
* menu trigger — additionally wants `data-tauri-drag-region="false"`, which is
|
|
55
|
+
* the caller's to add on the control itself.
|
|
56
|
+
*/
|
|
57
|
+
const NO_DRAG_CLASSES = "[app-region:no-drag] [-webkit-app-region:no-drag]";
|
|
58
|
+
//#endregion
|
|
59
|
+
export { DRAG_CLASSES, NO_DRAG_CLASSES };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
//#region src/chrome/_edge-scroller.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The library's one answer to "this strip is wider than the space it has".
|
|
5
|
+
*
|
|
6
|
+
* A bar full of controls has three possible behaviours when it runs out of
|
|
7
|
+
* room: wrap, scroll, or move the surplus into a menu. This system picks
|
|
8
|
+
* **scroll**, once, and every bar that can overflow uses this module.
|
|
9
|
+
*
|
|
10
|
+
* - **Wrapping is out** because every bar here is one rung of the chrome
|
|
11
|
+
* ladder tall (`--cue-chrome-toolbar`) and sits in a layout that has already
|
|
12
|
+
* subtracted that height — `AppShell` gives the toolbar `shrink-0` beside a
|
|
13
|
+
* `min-h-0` scroller. A bar that silently becomes two rows tall steals the
|
|
14
|
+
* work area's height, and the same argument applies to a `SegmentedControl`
|
|
15
|
+
* in a page header's actions slot.
|
|
16
|
+
* - **A "more" menu is out** because it cannot be built from the children a
|
|
17
|
+
* bar actually takes. `Toolbar` accepts arbitrary nodes — buttons, groups,
|
|
18
|
+
* separators, a `Select` — and there is no honest conversion from one of
|
|
19
|
+
* those into a menu item; it would need a parallel `items` data model, a
|
|
20
|
+
* per-item measuring pass on every resize, and it would lift the surplus
|
|
21
|
+
* controls out of Base UI's roving-focus group, so the same button would be
|
|
22
|
+
* reachable by arrow key at one width and by a popover at another.
|
|
23
|
+
* - **Scrolling is what the library already does** — `ScrollableTabsList` has
|
|
24
|
+
* shipped this affordance since the tab strip was written, and its geometry
|
|
25
|
+
* was factored out into `./_tabs-scroll` for exactly this reuse. Nothing is
|
|
26
|
+
* hidden, nothing is re-parented, the roving-focus group stays intact, and
|
|
27
|
+
* the arrow keys still walk the whole bar because a focused control is
|
|
28
|
+
* scrolled into view by the browser.
|
|
29
|
+
*
|
|
30
|
+
* The affordance is two things and needs both: {@link useEdgeScroll} produces
|
|
31
|
+
* the fade mask that softens the cut, and {@link EdgeChevrons} draws the
|
|
32
|
+
* buttons that are the visible half — what sits at an overflowing edge is
|
|
33
|
+
* usually the gap *between* two controls, and fading empty space produces
|
|
34
|
+
* nothing anyone can see.
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* What a bar does when its contents are wider than the space it has.
|
|
38
|
+
*
|
|
39
|
+
* One vocabulary, shared by every bar that can overflow, because there is one
|
|
40
|
+
* behaviour: `"scroll"` is the affordance this module implements, `"clip"` is
|
|
41
|
+
* the escape hatch for a bar already inside something that scrolls.
|
|
42
|
+
*/
|
|
43
|
+
type BarOverflow = "scroll" | "clip";
|
|
44
|
+
//#endregion
|
|
45
|
+
export { BarOverflow };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { computeScrollEdges, edgeFadeMask } from "./_tabs-scroll.js";
|
|
4
|
+
import { useComposedRefs } from "../lib/compose.js";
|
|
5
|
+
import { ChevronLeftGlyph, ChevronRightGlyph } from "./_glyphs.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/chrome/_edge-scroller.tsx
|
|
9
|
+
/** Page the strip by most of a screenful, keeping a sliver of context. */
|
|
10
|
+
const NUDGE_FRACTION = .7;
|
|
11
|
+
/**
|
|
12
|
+
* What an overflowing element wears: the scroll axis, the fade, and no
|
|
13
|
+
* scrollbar.
|
|
14
|
+
*
|
|
15
|
+
* A literal rather than a computed string, because Tailwind scans source text —
|
|
16
|
+
* and the mask travels as a custom property so the prefixed and unprefixed
|
|
17
|
+
* properties are written once here instead of twice per render.
|
|
18
|
+
*
|
|
19
|
+
* The property is always set, `none` when nothing overflows, and that word is
|
|
20
|
+
* load-bearing: custom properties **inherit**. Leaving it unset on a strip that
|
|
21
|
+
* fits does not mean "no mask", it means "whatever an ancestor said" — and a
|
|
22
|
+
* `SegmentedControl` inside an overflowing `Toolbar` then wears the bar's fade
|
|
23
|
+
* and loses its own last segment to it. Measured in a real browser at 320px
|
|
24
|
+
* before it was written down. `none` is the initial value either way, so the
|
|
25
|
+
* common case still creates no compositing layer.
|
|
26
|
+
*/
|
|
27
|
+
const EDGE_SCROLLER_CLASSES = "overflow-x-auto [mask-image:var(--cue-edge-fade)] [-webkit-mask-image:var(--cue-edge-fade)] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden";
|
|
28
|
+
/**
|
|
29
|
+
* Track which edges of a horizontal scroller still hide content, and hand back
|
|
30
|
+
* the mask and the pager that go with it.
|
|
31
|
+
*
|
|
32
|
+
* @param enabled False to keep the hook mounted but inert — a component whose
|
|
33
|
+
* overflow behaviour is switched off must still call the same hooks in the same
|
|
34
|
+
* order.
|
|
35
|
+
*/
|
|
36
|
+
function useEdgeScroll(enabled = true) {
|
|
37
|
+
const ref = React.useRef(null);
|
|
38
|
+
const [edges, setEdges] = React.useState({
|
|
39
|
+
start: false,
|
|
40
|
+
end: false
|
|
41
|
+
});
|
|
42
|
+
const sync = React.useCallback(() => {
|
|
43
|
+
const el = ref.current;
|
|
44
|
+
if (el === null) return;
|
|
45
|
+
setEdges(computeScrollEdges(el.scrollLeft, el.scrollWidth, el.clientWidth));
|
|
46
|
+
}, []);
|
|
47
|
+
React.useEffect(() => {
|
|
48
|
+
if (!enabled) return;
|
|
49
|
+
const el = ref.current;
|
|
50
|
+
if (el === null) return;
|
|
51
|
+
sync();
|
|
52
|
+
el.addEventListener("scroll", sync, { passive: true });
|
|
53
|
+
const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(() => sync());
|
|
54
|
+
observer?.observe(el);
|
|
55
|
+
let observedChildren = /* @__PURE__ */ new Set();
|
|
56
|
+
const syncObservedChildren = () => {
|
|
57
|
+
const nextChildren = new Set(el.children);
|
|
58
|
+
for (const child of observedChildren) if (!nextChildren.has(child)) observer?.unobserve(child);
|
|
59
|
+
for (const child of nextChildren) if (!observedChildren.has(child)) observer?.observe(child);
|
|
60
|
+
observedChildren = nextChildren;
|
|
61
|
+
sync();
|
|
62
|
+
};
|
|
63
|
+
syncObservedChildren();
|
|
64
|
+
const mutations = typeof MutationObserver === "undefined" ? null : new MutationObserver(() => syncObservedChildren());
|
|
65
|
+
mutations?.observe(el, { childList: true });
|
|
66
|
+
return () => {
|
|
67
|
+
el.removeEventListener("scroll", sync);
|
|
68
|
+
mutations?.disconnect();
|
|
69
|
+
observer?.disconnect();
|
|
70
|
+
};
|
|
71
|
+
}, [enabled, sync]);
|
|
72
|
+
const nudge = React.useCallback((direction) => {
|
|
73
|
+
const el = ref.current;
|
|
74
|
+
el?.scrollBy?.({
|
|
75
|
+
left: direction * el.clientWidth * NUDGE_FRACTION,
|
|
76
|
+
behavior: "smooth"
|
|
77
|
+
});
|
|
78
|
+
}, []);
|
|
79
|
+
const mask = enabled ? edgeFadeMask(edges) : void 0;
|
|
80
|
+
return {
|
|
81
|
+
ref,
|
|
82
|
+
edges: enabled ? edges : {
|
|
83
|
+
start: false,
|
|
84
|
+
end: false
|
|
85
|
+
},
|
|
86
|
+
style: enabled ? { "--cue-edge-fade": mask ?? "none" } : void 0,
|
|
87
|
+
nudge
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The pager buttons over an overflowing strip, drawn only for the edges that
|
|
92
|
+
* actually hide something.
|
|
93
|
+
*
|
|
94
|
+
* Absolutely positioned, so the element they sit over must be inside a
|
|
95
|
+
* `relative` frame.
|
|
96
|
+
*/
|
|
97
|
+
function EdgeChevrons({ edges, onNudge, previousLabel, nextLabel, className }) {
|
|
98
|
+
const base = "absolute inset-y-0 z-10 flex w-(--cue-space-5) cursor-pointer items-center justify-center text-fg-muted outline-none hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent";
|
|
99
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [edges.start ? /* @__PURE__ */ jsx("button", {
|
|
100
|
+
type: "button",
|
|
101
|
+
"data-slot": "edge-scroll-previous",
|
|
102
|
+
"aria-label": previousLabel,
|
|
103
|
+
onClick: () => onNudge(-1),
|
|
104
|
+
className: cn(base, "left-0", className),
|
|
105
|
+
children: /* @__PURE__ */ jsx(ChevronLeftGlyph, { className: "size-icon-sm" })
|
|
106
|
+
}) : null, edges.end ? /* @__PURE__ */ jsx("button", {
|
|
107
|
+
type: "button",
|
|
108
|
+
"data-slot": "edge-scroll-next",
|
|
109
|
+
"aria-label": nextLabel,
|
|
110
|
+
onClick: () => onNudge(1),
|
|
111
|
+
className: cn(base, "right-0", className),
|
|
112
|
+
children: /* @__PURE__ */ jsx(ChevronRightGlyph, { className: "size-icon-sm" })
|
|
113
|
+
}) : null] });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A `<nav>` that scrolls its links, wrapped in the frame the chevrons need.
|
|
117
|
+
*
|
|
118
|
+
* A component rather than the hook that `Toolbar` and `SegmentedControl` use
|
|
119
|
+
* directly, and for one specific reason: `AppBar` has to be renderable from a
|
|
120
|
+
* **server component** — it is a site header, and the site header is where a
|
|
121
|
+
* framework reads its data — so `app-bar.tsx` carries no `"use client"`
|
|
122
|
+
* directive and cannot call a hook. The client boundary is here instead, around
|
|
123
|
+
* the one part of a bar that has state.
|
|
124
|
+
*/
|
|
125
|
+
const EdgeScrollNav = React.forwardRef(function EdgeScrollNav({ className, frameClassName, scrolls = true, previousLabel, nextLabel, style, ...elementProps }, ref) {
|
|
126
|
+
const scroll = useEdgeScroll(scrolls);
|
|
127
|
+
const navRef = useComposedRefs(ref, scroll.ref);
|
|
128
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
129
|
+
"data-slot": "app-bar-nav-frame",
|
|
130
|
+
className: cn("relative flex", frameClassName),
|
|
131
|
+
children: [/* @__PURE__ */ jsx("nav", {
|
|
132
|
+
ref: navRef,
|
|
133
|
+
className: cn(scrolls ? EDGE_SCROLLER_CLASSES : null, className),
|
|
134
|
+
...elementProps,
|
|
135
|
+
style: {
|
|
136
|
+
...style,
|
|
137
|
+
...scroll.style
|
|
138
|
+
}
|
|
139
|
+
}), /* @__PURE__ */ jsx(EdgeChevrons, {
|
|
140
|
+
edges: scroll.edges,
|
|
141
|
+
onNudge: scroll.nudge,
|
|
142
|
+
previousLabel,
|
|
143
|
+
nextLabel,
|
|
144
|
+
className: "bg-surface-1"
|
|
145
|
+
})]
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//#endregion
|
|
149
|
+
export { EDGE_SCROLLER_CLASSES, EdgeChevrons, EdgeScrollNav, useEdgeScroll };
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/chrome/_glyphs.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Shared chrome glyphs.
|
|
6
|
+
*
|
|
7
|
+
* Drawn inline rather than pulled from `lucide-react` for the same reason as
|
|
8
|
+
* `overlays/_glyphs.tsx`: a disclosure triangle and a pair of chevrons should
|
|
9
|
+
* not put an icon dependency on the render path of every collapsible section,
|
|
10
|
+
* and hand-set strokes stay hairline-thin at the 8–12px sizes console density
|
|
11
|
+
* asks for. `currentColor` everywhere — the tone comes from the parent.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
/** A right-pointing chevron. Rotate it 90° to point down. */
|
|
16
|
+
function ChevronRightGlyph(props) {
|
|
17
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
18
|
+
viewBox: "0 0 16 16",
|
|
19
|
+
fill: "none",
|
|
20
|
+
stroke: "currentColor",
|
|
21
|
+
strokeWidth: "2",
|
|
22
|
+
strokeLinecap: "round",
|
|
23
|
+
strokeLinejoin: "round",
|
|
24
|
+
"aria-hidden": "true",
|
|
25
|
+
...props,
|
|
26
|
+
children: /* @__PURE__ */ jsx("path", { d: "m6 3 5 5-5 5" })
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/** A left-pointing chevron. */
|
|
30
|
+
function ChevronLeftGlyph(props) {
|
|
31
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
32
|
+
viewBox: "0 0 16 16",
|
|
33
|
+
fill: "none",
|
|
34
|
+
stroke: "currentColor",
|
|
35
|
+
strokeWidth: "2",
|
|
36
|
+
strokeLinecap: "round",
|
|
37
|
+
strokeLinejoin: "round",
|
|
38
|
+
"aria-hidden": "true",
|
|
39
|
+
...props,
|
|
40
|
+
children: /* @__PURE__ */ jsx("path", { d: "m10 3-5 5 5 5" })
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** A solid down caret — the "this opens a panel" mark on a navigation trigger. */
|
|
44
|
+
function CaretDownGlyph(props) {
|
|
45
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
46
|
+
viewBox: "0 0 16 16",
|
|
47
|
+
fill: "currentColor",
|
|
48
|
+
"aria-hidden": "true",
|
|
49
|
+
...props,
|
|
50
|
+
children: /* @__PURE__ */ jsx("path", { d: "M11.5 6.5h-7L8 11z" })
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/** An open eye: the node is drawn normally. */
|
|
54
|
+
function EyeGlyph(props) {
|
|
55
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
56
|
+
viewBox: "0 0 16 16",
|
|
57
|
+
fill: "none",
|
|
58
|
+
stroke: "currentColor",
|
|
59
|
+
strokeWidth: "1.5",
|
|
60
|
+
strokeLinecap: "round",
|
|
61
|
+
strokeLinejoin: "round",
|
|
62
|
+
"aria-hidden": "true",
|
|
63
|
+
...props,
|
|
64
|
+
children: [/* @__PURE__ */ jsx("path", { d: "M1.5 8S4 3.5 8 3.5 14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8Z" }), /* @__PURE__ */ jsx("circle", {
|
|
65
|
+
cx: "8",
|
|
66
|
+
cy: "8",
|
|
67
|
+
r: "2"
|
|
68
|
+
})]
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/** A dashed outline: the node is drawn, but ghosted and out of the way. */
|
|
72
|
+
function GhostGlyph(props) {
|
|
73
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
74
|
+
viewBox: "0 0 16 16",
|
|
75
|
+
fill: "none",
|
|
76
|
+
stroke: "currentColor",
|
|
77
|
+
strokeWidth: "1.5",
|
|
78
|
+
strokeLinecap: "round",
|
|
79
|
+
strokeLinejoin: "round",
|
|
80
|
+
strokeDasharray: "2 2",
|
|
81
|
+
"aria-hidden": "true",
|
|
82
|
+
...props,
|
|
83
|
+
children: /* @__PURE__ */ jsx("path", { d: "M4 13V6.5a4 4 0 0 1 8 0V13l-2-1.25L8 13l-2-1.25z" })
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/** The eye with a stroke through it: the node is not drawn at all. */
|
|
87
|
+
function EyeOffGlyph(props) {
|
|
88
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
89
|
+
viewBox: "0 0 16 16",
|
|
90
|
+
fill: "none",
|
|
91
|
+
stroke: "currentColor",
|
|
92
|
+
strokeWidth: "1.5",
|
|
93
|
+
strokeLinecap: "round",
|
|
94
|
+
strokeLinejoin: "round",
|
|
95
|
+
"aria-hidden": "true",
|
|
96
|
+
...props,
|
|
97
|
+
children: [/* @__PURE__ */ jsx("path", { d: "M6.2 4A6.5 6.5 0 0 1 8 3.5C12 3.5 14.5 8 14.5 8a12 12 0 0 1-2.3 2.7M9.8 12a6.5 6.5 0 0 1-1.8.5C4 12.5 1.5 8 1.5 8A12 12 0 0 1 4.4 4.8" }), /* @__PURE__ */ jsx("path", { d: "m2.5 2.5 11 11" })]
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Three stacked strokes — the navigation trigger's mark.
|
|
102
|
+
*
|
|
103
|
+
* Only ever drawn below the shell's one breakpoint, where the navigation column
|
|
104
|
+
* has become a drawer and the bar needs something to open it with.
|
|
105
|
+
*/
|
|
106
|
+
function MenuGlyph(props) {
|
|
107
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
108
|
+
viewBox: "0 0 16 16",
|
|
109
|
+
fill: "none",
|
|
110
|
+
stroke: "currentColor",
|
|
111
|
+
strokeWidth: "1.75",
|
|
112
|
+
strokeLinecap: "round",
|
|
113
|
+
"aria-hidden": "true",
|
|
114
|
+
...props,
|
|
115
|
+
children: /* @__PURE__ */ jsx("path", { d: "M2.5 4h11M2.5 8h11M2.5 12h11" })
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
export { CaretDownGlyph, ChevronLeftGlyph, ChevronRightGlyph, EyeGlyph, EyeOffGlyph, GhostGlyph, MenuGlyph };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { statusBarItemClasses } from "./_status-bar.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
7
|
+
//#region src/chrome/_status-bar-item.tsx
|
|
8
|
+
/**
|
|
9
|
+
* The elements for which `disabled` is a real HTML attribute.
|
|
10
|
+
*
|
|
11
|
+
* Everything else — an anchor above all — has to be told it is inert some other
|
|
12
|
+
* way. Setting `disabled` on an `<a>` produces a stray attribute the parser
|
|
13
|
+
* keeps and nothing reads: not a validity error, but not a disabled link
|
|
14
|
+
* either, because there is no such thing.
|
|
15
|
+
*/
|
|
16
|
+
const DISABLEABLE_TAGS = /* @__PURE__ */ new Set([
|
|
17
|
+
"button",
|
|
18
|
+
"input",
|
|
19
|
+
"select",
|
|
20
|
+
"textarea",
|
|
21
|
+
"fieldset",
|
|
22
|
+
"optgroup"
|
|
23
|
+
]);
|
|
24
|
+
/**
|
|
25
|
+
* Whether `disabled` can be handed to whatever this renders as.
|
|
26
|
+
*
|
|
27
|
+
* A `render` that is a component rather than an intrinsic tag decides for
|
|
28
|
+
* itself — Base UI's own triggers take a `disabled` prop, and refusing to pass
|
|
29
|
+
* it would break the composition this prop exists for — so only a string tag
|
|
30
|
+
* outside the set above is refused.
|
|
31
|
+
*/
|
|
32
|
+
function takesDisabledAttribute(render) {
|
|
33
|
+
if (render === void 0) return true;
|
|
34
|
+
if (!React.isValidElement(render)) return true;
|
|
35
|
+
return typeof render.type !== "string" || DISABLEABLE_TAGS.has(render.type);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A status-bar item that is a real control: a `<button>`, or whatever `render`
|
|
39
|
+
* replaces it with.
|
|
40
|
+
*
|
|
41
|
+
* `type="button"` is supplied only when this renders its own `<button>`. A
|
|
42
|
+
* `render={<a href="…" />}` must not be handed a `type`, which on an anchor is
|
|
43
|
+
* a MIME hint and not a submit-behaviour switch — the same rule
|
|
44
|
+
* {@link IconButton} follows, and for the same reason.
|
|
45
|
+
*
|
|
46
|
+
* `disabled` is honoured on every interactive shape, by two routes. The
|
|
47
|
+
* attribute itself goes only where it means something ({@link DISABLEABLE_TAGS},
|
|
48
|
+
* plus any component `render`, which takes its own `disabled` prop); the state
|
|
49
|
+
* is stated everywhere with `aria-disabled` and `data-disabled`, which is what
|
|
50
|
+
* an anchor gets instead. `data-disabled` is not decoration — it is what greys
|
|
51
|
+
* the item out and lifts it out of the pointer's reach in `_status-bar.ts`,
|
|
52
|
+
* since `:disabled` never matches an `<a>`. The gap this closes was a
|
|
53
|
+
* `render={<button/>} disabled` that shipped enabled, clickable and undimmed.
|
|
54
|
+
*/
|
|
55
|
+
const StatusBarInteractiveItem = React.forwardRef(function StatusBarInteractiveItem({ tone, prominence, className, push, icon: Icon, render, disabled, children, elementProps }, ref) {
|
|
56
|
+
const tagProps = {
|
|
57
|
+
...render === void 0 ? { type: "button" } : {},
|
|
58
|
+
...disabled === true && takesDisabledAttribute(render) ? { disabled: true } : {},
|
|
59
|
+
...disabled === true ? {
|
|
60
|
+
"aria-disabled": true,
|
|
61
|
+
"data-disabled": ""
|
|
62
|
+
} : {}
|
|
63
|
+
};
|
|
64
|
+
return useRender({
|
|
65
|
+
render,
|
|
66
|
+
ref,
|
|
67
|
+
defaultTagName: "button",
|
|
68
|
+
props: {
|
|
69
|
+
"data-slot": "status-bar-item",
|
|
70
|
+
...tagProps,
|
|
71
|
+
...elementProps,
|
|
72
|
+
className: cn(statusBarItemClasses({
|
|
73
|
+
tone,
|
|
74
|
+
interactive: true,
|
|
75
|
+
prominence
|
|
76
|
+
}), push ? "ml-auto" : void 0, className),
|
|
77
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [Icon === void 0 ? null : /* @__PURE__ */ jsx(Icon, {
|
|
78
|
+
"aria-hidden": "true",
|
|
79
|
+
className: "size-icon-sm shrink-0"
|
|
80
|
+
}), children] })
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
//#endregion
|
|
85
|
+
export { StatusBarInteractiveItem };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "./status-bar.js";
|
|
2
|
+
//#region src/chrome/_status-bar.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* How loudly a status-bar item states itself.
|
|
5
|
+
*
|
|
6
|
+
* `quiet` is a reading — tone-coloured ink on the bar's own ground, which is
|
|
7
|
+
* what a status bar is for. `filled` is a chip: a full-height tone wash behind
|
|
8
|
+
* tone ink, for the handful of states VS Code reserves its coloured categories
|
|
9
|
+
* for (a warning, an error, the remote you are attached to). It is loud on
|
|
10
|
+
* purpose and it is meant to be rare; a bar of five filled items is a bar
|
|
11
|
+
* nobody reads.
|
|
12
|
+
*/
|
|
13
|
+
type StatusBarProminence = "quiet" | "filled";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { StatusBarProminence };
|