@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,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { take } from "./range.js";
|
|
4
|
+
import { useMemo } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/elements/streaming-text.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Tokens arrive softly: the newest words land in blue and settle into ink.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* import { StreamingText } from "@cueplusplus/ui/elements";
|
|
12
|
+
*
|
|
13
|
+
* <StreamingText
|
|
14
|
+
* segments={[{ text: "Hello world" }, { text: "thread.tsx", mono: true }]}
|
|
15
|
+
* count={3}
|
|
16
|
+
* streaming
|
|
17
|
+
* />
|
|
18
|
+
*/
|
|
19
|
+
function StreamingText({ segments, count, streaming, className, ...props }) {
|
|
20
|
+
const words = useMemo(() => segments.flatMap((segment) => segment.text.split(" ").map((word) => ({
|
|
21
|
+
word,
|
|
22
|
+
mono: segment.mono ?? false
|
|
23
|
+
}))), [segments]);
|
|
24
|
+
const shown = take(words, count);
|
|
25
|
+
return /* @__PURE__ */ jsxs("p", {
|
|
26
|
+
"data-slot": "streaming-text",
|
|
27
|
+
className: cn("min-h-[8.5rem] max-w-sm text-(length:--cue-text-body) leading-(--cue-leading-ui) text-pretty", className),
|
|
28
|
+
...props,
|
|
29
|
+
children: [shown.map(({ word, mono: isMono }, i) => {
|
|
30
|
+
const fresh = streaming && shown.length - 1 - i < 2;
|
|
31
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
32
|
+
className: "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both duration-500 motion-reduce:animate-none",
|
|
33
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
34
|
+
className: cn("transition-colors duration-700 motion-reduce:transition-none", fresh && "text-stream", isMono && "bg-surface-2 rounded-(--radius-control) px-1.5 py-0.5 font-mono text-[0.85em]"),
|
|
35
|
+
children: word
|
|
36
|
+
}), " "]
|
|
37
|
+
}, i);
|
|
38
|
+
}), streaming && shown.length > 0 && /* @__PURE__ */ jsx("span", {
|
|
39
|
+
"aria-hidden": true,
|
|
40
|
+
className: "-mb-0.5 ml-0.5 inline-block h-4 w-0.5 animate-pulse rounded-full bg-stream"
|
|
41
|
+
})]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { StreamingText };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/elements/subagent-list.d.ts
|
|
3
|
+
/** One delegated agent: who it is and what it runs on. */
|
|
4
|
+
interface SubagentItem {
|
|
5
|
+
/** The subagent's name, as the transcript refers to it. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** The model it runs on, shown in mono beside the name. */
|
|
8
|
+
model: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Parallel workers with their own progress, models, and completions.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { SubagentList } from "@cueplusplus/ui/elements";
|
|
15
|
+
*
|
|
16
|
+
* <SubagentList
|
|
17
|
+
* agents={[{ name: "Researcher", model: "Sonnet" }]}
|
|
18
|
+
* completedCount={0}
|
|
19
|
+
* progress={[40]}
|
|
20
|
+
* showSummary={false}
|
|
21
|
+
* summaryAgent={{ name: "Summarizer", model: "Haiku" }}
|
|
22
|
+
* />
|
|
23
|
+
*/
|
|
24
|
+
declare function SubagentList({ agents, completedCount, progress, showSummary, summaryAgent, className, ...props }: Omit<ComponentProps<"div">, "children" | "agents" | "completedCount" | "progress" | "showSummary" | "summaryAgent"> & {
|
|
25
|
+
/** Parallel workers shown as cards with name and model. */
|
|
26
|
+
agents: readonly SubagentItem[];
|
|
27
|
+
/** How many agents from the start are marked complete. */
|
|
28
|
+
completedCount: number;
|
|
29
|
+
/** Per-agent progress widths used while a worker is still running. */
|
|
30
|
+
progress: readonly number[];
|
|
31
|
+
/** When true the summary agent card is revealed under the list. */
|
|
32
|
+
showSummary: boolean;
|
|
33
|
+
/** Agent shown in the summary card once showSummary is true. */
|
|
34
|
+
summaryAgent: SubagentItem;
|
|
35
|
+
}): import("react").JSX.Element;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { SubagentItem, SubagentList };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { mono, paper } from "./surfaces.js";
|
|
4
|
+
import { pct } from "./range.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { CheckIcon, Loader2Icon } from "lucide-react";
|
|
7
|
+
//#region src/elements/subagent-list.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Parallel workers with their own progress, models, and completions.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import { SubagentList } from "@cueplusplus/ui/elements";
|
|
13
|
+
*
|
|
14
|
+
* <SubagentList
|
|
15
|
+
* agents={[{ name: "Researcher", model: "Sonnet" }]}
|
|
16
|
+
* completedCount={0}
|
|
17
|
+
* progress={[40]}
|
|
18
|
+
* showSummary={false}
|
|
19
|
+
* summaryAgent={{ name: "Summarizer", model: "Haiku" }}
|
|
20
|
+
* />
|
|
21
|
+
*/
|
|
22
|
+
function SubagentList({ agents, completedCount, progress, showSummary, summaryAgent, className, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
24
|
+
"data-slot": "subagent-list",
|
|
25
|
+
className: cn("flex min-h-[14.5rem] w-full max-w-xs flex-col gap-2", className),
|
|
26
|
+
...props,
|
|
27
|
+
children: [agents.map((agent, index) => {
|
|
28
|
+
const done = index < completedCount;
|
|
29
|
+
const width = progress[index] ?? 0;
|
|
30
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
31
|
+
className: cn(paper, "flex flex-col gap-2 rounded-(--radius-overlay) px-3.5 py-2.5"),
|
|
32
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
33
|
+
className: "flex items-center gap-2",
|
|
34
|
+
children: [
|
|
35
|
+
done ? /* @__PURE__ */ jsx(CheckIcon, { className: "cue-elements-fade-in cue-elements-zoom-in-90 cue-elements-animate-in size-3.5 shrink-0 text-ok duration-200" }) : /* @__PURE__ */ jsx(Loader2Icon, { className: "text-fg-subtle size-3.5 shrink-0 animate-spin motion-reduce:animate-none" }),
|
|
36
|
+
/* @__PURE__ */ jsx("span", {
|
|
37
|
+
className: "flex-1 truncate text-(length:--cue-text-body)",
|
|
38
|
+
children: agent.name
|
|
39
|
+
}),
|
|
40
|
+
/* @__PURE__ */ jsx("span", {
|
|
41
|
+
className: cn(mono, "text-fg-subtle"),
|
|
42
|
+
children: agent.model
|
|
43
|
+
})
|
|
44
|
+
]
|
|
45
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
46
|
+
className: "bg-surface-2 h-[3px] w-full overflow-hidden rounded-full",
|
|
47
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
48
|
+
className: cn("block h-full rounded-full transition-[width] duration-700", done ? "bg-ok/70" : "bg-accent"),
|
|
49
|
+
style: { width: `${pct(width, 100)}%` }
|
|
50
|
+
})
|
|
51
|
+
})]
|
|
52
|
+
}, agent.name);
|
|
53
|
+
}), showSummary && /* @__PURE__ */ jsxs("div", {
|
|
54
|
+
className: cn("bg-surface-1 border border-border", "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in flex flex-col gap-2 rounded-(--radius-overlay) px-3.5 py-2.5 duration-300"),
|
|
55
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
56
|
+
className: "flex items-center gap-2",
|
|
57
|
+
children: [
|
|
58
|
+
/* @__PURE__ */ jsx(Loader2Icon, { className: "text-fg-subtle size-3.5 shrink-0 animate-spin motion-reduce:animate-none" }),
|
|
59
|
+
/* @__PURE__ */ jsx("span", {
|
|
60
|
+
className: "flex-1 truncate text-(length:--cue-text-body)",
|
|
61
|
+
children: summaryAgent.name
|
|
62
|
+
}),
|
|
63
|
+
/* @__PURE__ */ jsx("span", {
|
|
64
|
+
className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-subtle"),
|
|
65
|
+
children: summaryAgent.model
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
69
|
+
className: "bg-surface-2 h-[3px] w-full overflow-hidden rounded-full",
|
|
70
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
71
|
+
className: "bg-accent block h-full rounded-full transition-[width] duration-700",
|
|
72
|
+
style: { width: "42%" }
|
|
73
|
+
})
|
|
74
|
+
})]
|
|
75
|
+
})]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
export { SubagentList };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/elements/suggestions.d.ts
|
|
3
|
+
interface SuggestionsProps extends Omit<ComponentProps<"div">, "children"> {
|
|
4
|
+
/** Follow-up prompt pills rendered in order. */
|
|
5
|
+
suggestions: readonly string[];
|
|
6
|
+
/** The pill currently pressed, or null when none is selected. */
|
|
7
|
+
selectedSuggestion: string | null;
|
|
8
|
+
/** Identity key that remounts the row so the stagger entrance can replay. */
|
|
9
|
+
cycle: number;
|
|
10
|
+
/** Called when a suggestion pill is pressed. */
|
|
11
|
+
onSuggestion: (suggestion: string) => void;
|
|
12
|
+
/** pills wraps suggestions into a centered row; list stacks them as full-width rows. */
|
|
13
|
+
variant?: "pills" | "list";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Prompt pills that stagger in after a reply and invite the next turn.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* import { Suggestions } from "@cueplusplus/ui/elements";
|
|
20
|
+
*
|
|
21
|
+
* <Suggestions
|
|
22
|
+
* suggestions={["Explain more", "Show an example"]}
|
|
23
|
+
* selectedSuggestion={null}
|
|
24
|
+
* cycle={0}
|
|
25
|
+
* onSuggestion={setSelected}
|
|
26
|
+
* />
|
|
27
|
+
*/
|
|
28
|
+
declare function Suggestions({ suggestions, selectedSuggestion, cycle, onSuggestion, variant, className, ...props }: SuggestionsProps): import("react").JSX.Element;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { Suggestions, SuggestionsProps };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { paper } from "./surfaces.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/elements/suggestions.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Prompt pills that stagger in after a reply and invite the next turn.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* import { Suggestions } from "@cueplusplus/ui/elements";
|
|
11
|
+
*
|
|
12
|
+
* <Suggestions
|
|
13
|
+
* suggestions={["Explain more", "Show an example"]}
|
|
14
|
+
* selectedSuggestion={null}
|
|
15
|
+
* cycle={0}
|
|
16
|
+
* onSuggestion={setSelected}
|
|
17
|
+
* />
|
|
18
|
+
*/
|
|
19
|
+
function Suggestions({ suggestions, selectedSuggestion, cycle, onSuggestion, variant = "pills", className, ...props }) {
|
|
20
|
+
const list = variant === "list";
|
|
21
|
+
return /* @__PURE__ */ jsx("div", {
|
|
22
|
+
"data-slot": "suggestions",
|
|
23
|
+
className: cn(list ? "flex w-full max-w-sm flex-col gap-2" : "flex max-w-md flex-wrap justify-center gap-2", className),
|
|
24
|
+
...props,
|
|
25
|
+
children: suggestions.map((suggestion, index) => /* @__PURE__ */ jsx("button", {
|
|
26
|
+
type: "button",
|
|
27
|
+
"aria-pressed": selectedSuggestion === suggestion,
|
|
28
|
+
onClick: () => onSuggestion(suggestion),
|
|
29
|
+
className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in cue-elements-fill-mode-both flex cursor-pointer items-center text-(length:--cue-text-body) transition-transform duration-300 hover:-translate-y-px active:scale-[0.96] motion-reduce:animate-none", list ? "w-full rounded-(--radius-overlay) px-4 py-2.5 text-start" : "rounded-full px-4 py-2", selectedSuggestion === suggestion && "bg-accent text-accent-fg"),
|
|
30
|
+
style: { animationDelay: `${index * 70}ms` },
|
|
31
|
+
children: suggestion
|
|
32
|
+
}, suggestion))
|
|
33
|
+
}, cycle);
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Suggestions };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from "react";
|
|
2
|
+
//#region src/elements/surfaces.d.ts
|
|
3
|
+
/** A card's ground: the first raised surface, with the standard hairline. */
|
|
4
|
+
declare const paper = "bg-surface-1 border border-border";
|
|
5
|
+
/** The same card, one rung up, for anything that floats over the page. */
|
|
6
|
+
declare const floating = "bg-surface-2 border border-border-overlay";
|
|
7
|
+
/** The recessed fill: a request box, a code slab, a composer row. */
|
|
8
|
+
declare const field = "bg-fg/[0.06]";
|
|
9
|
+
/** {@link field} for something clickable. */
|
|
10
|
+
declare const fieldInteractive = "bg-fg/[0.06] transition-colors hover:bg-fg/[0.09]";
|
|
11
|
+
/** The press affordance: a 4% squash on pointer-down, stilled under reduced motion. */
|
|
12
|
+
declare const pressable = "transition-transform duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] active:scale-[0.96] motion-reduce:transition-none";
|
|
13
|
+
/** A round chromeless icon button, with the ring cue puts on everything focusable. */
|
|
14
|
+
declare const ghostButton = "flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none";
|
|
15
|
+
/** The inverse fill: accent ground, accent ink — the one loud button in a panel. */
|
|
16
|
+
declare const inkButton = "bg-accent text-accent-fg transition-[background-color,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:bg-accent-hover active:scale-[0.96] motion-reduce:transition-none";
|
|
17
|
+
/** The stacked layer of an icon crossfade. Both layers share one grid cell. */
|
|
18
|
+
declare const iconSwap = "[grid-area:1/1] transition-[opacity,scale,filter] duration-200 ease-[cubic-bezier(0.2,0,0,1)] motion-reduce:transition-none";
|
|
19
|
+
/** The icon that is showing. */
|
|
20
|
+
declare const iconSwapIn = "scale-100 opacity-100 blur-none";
|
|
21
|
+
/** The icon that is leaving: shrunk, blurred and gone. */
|
|
22
|
+
declare const iconSwapOut = "scale-[0.25] opacity-0 blur-[4px]";
|
|
23
|
+
/** The stacked layer of a label crossfade, measured by {@link SwapLabel}. */
|
|
24
|
+
declare const labelSwap = "col-start-1 row-start-1 flex w-max items-center gap-1.5 leading-none transition-[opacity,filter] duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none";
|
|
25
|
+
/** The label that is showing. */
|
|
26
|
+
declare const labelSwapIn = "opacity-100 blur-none";
|
|
27
|
+
/** The label that is leaving, and which must not be selectable while it goes. */
|
|
28
|
+
declare const labelSwapOut = "pointer-events-none select-none opacity-0 blur-[2px]";
|
|
29
|
+
/**
|
|
30
|
+
* The disclosure panel's motion, written against Base UI's collapsible.
|
|
31
|
+
*
|
|
32
|
+
* `--collapsible-panel-height` and the starting/ending style attributes are Base
|
|
33
|
+
* UI's; Radix sets neither, which is why the four collapsible elements are
|
|
34
|
+
* wired to the peer this package already requires rather than to the one
|
|
35
|
+
* upstream's registry asks for.
|
|
36
|
+
*/
|
|
37
|
+
declare const collapsePanel = "h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] data-[ending-style]:h-0 data-[starting-style]:h-0 motion-reduce:transition-none";
|
|
38
|
+
/** The streaming hue: what is happening right now, rather than what has happened. */
|
|
39
|
+
declare const live = "text-stream";
|
|
40
|
+
/** The metadata typeface: mono, one rung down, tight. Used about a hundred times. */
|
|
41
|
+
declare const mono = "font-mono text-(length:--cue-text-label) tracking-tight";
|
|
42
|
+
/**
|
|
43
|
+
* Scroll region for content that keeps its own whitespace. `whitespace-pre` in
|
|
44
|
+
* a bounded box clips a long line with no way to reach it, so the rows scroll
|
|
45
|
+
* instead.
|
|
46
|
+
*
|
|
47
|
+
* `codeSurface` wraps all the rows as one block, and the rows are its children.
|
|
48
|
+
* It cannot go on each row: `min-width: 100%` resolves against the scroll
|
|
49
|
+
* container's visible width rather than its scroll width, so a per-row width
|
|
50
|
+
* leaves every row except the longest ending its background at the fold.
|
|
51
|
+
*/
|
|
52
|
+
declare const codeScroll = "overflow-x-auto";
|
|
53
|
+
/** The block inside {@link codeScroll} that all the rows share. */
|
|
54
|
+
declare const codeSurface = "w-max min-w-full";
|
|
55
|
+
/**
|
|
56
|
+
* A label that sweeps while something is still happening.
|
|
57
|
+
*
|
|
58
|
+
* The sweep is `.cue-elements-shimmer`, declared with its keyframes in
|
|
59
|
+
* `@cueplusplus/ui/elements.css`; without that stylesheet the label simply
|
|
60
|
+
* sits still, which is also what it does under `prefers-reduced-motion`.
|
|
61
|
+
*/
|
|
62
|
+
declare function ShimmerLabel({ active, className, ...props }: ComponentProps<"span"> & {
|
|
63
|
+
/** Whether the sweep is running. Defaults to `true`. */
|
|
64
|
+
active?: boolean;
|
|
65
|
+
}): import("react").JSX.Element;
|
|
66
|
+
/**
|
|
67
|
+
* Two labels stacked in one cell, with the box's width animating between them.
|
|
68
|
+
*
|
|
69
|
+
* A `ResizeObserver` measures the layer that is showing, because the crossfade
|
|
70
|
+
* is only half the effect — a "Searching…" that becomes "Searched" has to make
|
|
71
|
+
* the row shrink, and neither layer can size the box while both are in it.
|
|
72
|
+
*
|
|
73
|
+
* The layer that is leaving is `aria-hidden`, so the outgoing text is neither
|
|
74
|
+
* announced nor copied into a selection.
|
|
75
|
+
*/
|
|
76
|
+
declare function SwapLabel({ active, children, className }: {
|
|
77
|
+
/** Which of the two children is showing. */
|
|
78
|
+
active: 0 | 1;
|
|
79
|
+
/** Exactly two labels: the resting one and the active one. */
|
|
80
|
+
children: [ReactNode, ReactNode];
|
|
81
|
+
/** Extra classes for the measured box. */
|
|
82
|
+
className?: string;
|
|
83
|
+
}): import("react").JSX.Element;
|
|
84
|
+
//#endregion
|
|
85
|
+
export { ShimmerLabel, SwapLabel, codeScroll, codeSurface, collapsePanel, field, fieldInteractive, floating, ghostButton, iconSwap, iconSwapIn, iconSwapOut, inkButton, labelSwap, labelSwapIn, labelSwapOut, live, mono, paper, pressable };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { useLayoutEffect, useRef, useState } from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/elements/surfaces.tsx
|
|
6
|
+
/** A card's ground: the first raised surface, with the standard hairline. */
|
|
7
|
+
const paper = "bg-surface-1 border border-border";
|
|
8
|
+
/** The same card, one rung up, for anything that floats over the page. */
|
|
9
|
+
const floating = "bg-surface-2 border border-border-overlay";
|
|
10
|
+
/** The recessed fill: a request box, a code slab, a composer row. */
|
|
11
|
+
const field = "bg-fg/[0.06]";
|
|
12
|
+
/** {@link field} for something clickable. */
|
|
13
|
+
const fieldInteractive = "bg-fg/[0.06] transition-colors hover:bg-fg/[0.09]";
|
|
14
|
+
/** The press affordance: a 4% squash on pointer-down, stilled under reduced motion. */
|
|
15
|
+
const pressable = "transition-transform duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] active:scale-[0.96] motion-reduce:transition-none";
|
|
16
|
+
/** A round chromeless icon button, with the ring cue puts on everything focusable. */
|
|
17
|
+
const ghostButton = "flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent motion-reduce:transition-none";
|
|
18
|
+
/** The inverse fill: accent ground, accent ink — the one loud button in a panel. */
|
|
19
|
+
const inkButton = "bg-accent text-accent-fg transition-[background-color,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:bg-accent-hover active:scale-[0.96] motion-reduce:transition-none";
|
|
20
|
+
/** The stacked layer of an icon crossfade. Both layers share one grid cell. */
|
|
21
|
+
const iconSwap = "[grid-area:1/1] transition-[opacity,scale,filter] duration-200 ease-[cubic-bezier(0.2,0,0,1)] motion-reduce:transition-none";
|
|
22
|
+
/** The icon that is showing. */
|
|
23
|
+
const iconSwapIn = "scale-100 opacity-100 blur-none";
|
|
24
|
+
/** The icon that is leaving: shrunk, blurred and gone. */
|
|
25
|
+
const iconSwapOut = "scale-[0.25] opacity-0 blur-[4px]";
|
|
26
|
+
/** The stacked layer of a label crossfade, measured by {@link SwapLabel}. */
|
|
27
|
+
const labelSwap = "col-start-1 row-start-1 flex w-max items-center gap-1.5 leading-none transition-[opacity,filter] duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none";
|
|
28
|
+
/** The label that is showing. */
|
|
29
|
+
const labelSwapIn = "opacity-100 blur-none";
|
|
30
|
+
/** The label that is leaving, and which must not be selectable while it goes. */
|
|
31
|
+
const labelSwapOut = "pointer-events-none select-none opacity-0 blur-[2px]";
|
|
32
|
+
/**
|
|
33
|
+
* The disclosure panel's motion, written against Base UI's collapsible.
|
|
34
|
+
*
|
|
35
|
+
* `--collapsible-panel-height` and the starting/ending style attributes are Base
|
|
36
|
+
* UI's; Radix sets neither, which is why the four collapsible elements are
|
|
37
|
+
* wired to the peer this package already requires rather than to the one
|
|
38
|
+
* upstream's registry asks for.
|
|
39
|
+
*/
|
|
40
|
+
const collapsePanel = "h-(--collapsible-panel-height) overflow-hidden transition-[height] duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] data-[ending-style]:h-0 data-[starting-style]:h-0 motion-reduce:transition-none";
|
|
41
|
+
/** The streaming hue: what is happening right now, rather than what has happened. */
|
|
42
|
+
const live = "text-stream";
|
|
43
|
+
/** The metadata typeface: mono, one rung down, tight. Used about a hundred times. */
|
|
44
|
+
const mono = "font-mono text-(length:--cue-text-label) tracking-tight";
|
|
45
|
+
/**
|
|
46
|
+
* Scroll region for content that keeps its own whitespace. `whitespace-pre` in
|
|
47
|
+
* a bounded box clips a long line with no way to reach it, so the rows scroll
|
|
48
|
+
* instead.
|
|
49
|
+
*
|
|
50
|
+
* `codeSurface` wraps all the rows as one block, and the rows are its children.
|
|
51
|
+
* It cannot go on each row: `min-width: 100%` resolves against the scroll
|
|
52
|
+
* container's visible width rather than its scroll width, so a per-row width
|
|
53
|
+
* leaves every row except the longest ending its background at the fold.
|
|
54
|
+
*/
|
|
55
|
+
const codeScroll = "overflow-x-auto";
|
|
56
|
+
/** The block inside {@link codeScroll} that all the rows share. */
|
|
57
|
+
const codeSurface = "w-max min-w-full";
|
|
58
|
+
/**
|
|
59
|
+
* A label that sweeps while something is still happening.
|
|
60
|
+
*
|
|
61
|
+
* The sweep is `.cue-elements-shimmer`, declared with its keyframes in
|
|
62
|
+
* `@cueplusplus/ui/elements.css`; without that stylesheet the label simply
|
|
63
|
+
* sits still, which is also what it does under `prefers-reduced-motion`.
|
|
64
|
+
*/
|
|
65
|
+
function ShimmerLabel({ active = true, className, ...props }) {
|
|
66
|
+
return /* @__PURE__ */ jsx("span", {
|
|
67
|
+
"data-slot": "shimmer-label",
|
|
68
|
+
className: cn(active && "cue-elements-shimmer motion-reduce:animate-none", className),
|
|
69
|
+
...props
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Two labels stacked in one cell, with the box's width animating between them.
|
|
74
|
+
*
|
|
75
|
+
* A `ResizeObserver` measures the layer that is showing, because the crossfade
|
|
76
|
+
* is only half the effect — a "Searching…" that becomes "Searched" has to make
|
|
77
|
+
* the row shrink, and neither layer can size the box while both are in it.
|
|
78
|
+
*
|
|
79
|
+
* The layer that is leaving is `aria-hidden`, so the outgoing text is neither
|
|
80
|
+
* announced nor copied into a selection.
|
|
81
|
+
*/
|
|
82
|
+
function SwapLabel({ active, children, className }) {
|
|
83
|
+
const restingRef = useRef(null);
|
|
84
|
+
const activeRef = useRef(null);
|
|
85
|
+
const [width, setWidth] = useState(null);
|
|
86
|
+
useLayoutEffect(() => {
|
|
87
|
+
const target = (active === 0 ? restingRef : activeRef).current;
|
|
88
|
+
if (!target) return void 0;
|
|
89
|
+
const measure = () => setWidth(Math.ceil(target.getBoundingClientRect().width));
|
|
90
|
+
measure();
|
|
91
|
+
const observer = new ResizeObserver(measure);
|
|
92
|
+
observer.observe(target);
|
|
93
|
+
return () => observer.disconnect();
|
|
94
|
+
}, [active]);
|
|
95
|
+
return /* @__PURE__ */ jsx("span", {
|
|
96
|
+
"data-slot": "swap-label",
|
|
97
|
+
style: width === null ? void 0 : { width },
|
|
98
|
+
className: cn("grid overflow-x-clip transition-[width] duration-300 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none", className),
|
|
99
|
+
children: children.map((layer, index) => /* @__PURE__ */ jsx("span", {
|
|
100
|
+
ref: index === 0 ? restingRef : activeRef,
|
|
101
|
+
"aria-hidden": active !== index,
|
|
102
|
+
className: cn(labelSwap, active === index ? labelSwapIn : labelSwapOut),
|
|
103
|
+
children: layer
|
|
104
|
+
}, index))
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
export { ShimmerLabel, SwapLabel, codeScroll, codeSurface, collapsePanel, field, fieldInteractive, floating, ghostButton, iconSwap, iconSwapIn, iconSwapOut, inkButton, labelSwap, labelSwapIn, labelSwapOut, live, mono, paper, pressable };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/elements/tail-status.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* How loudly the foot of the transcript is speaking.
|
|
5
|
+
*
|
|
6
|
+
* The attribute is Cursor's — it stamps `data-priority` on this row and on no
|
|
7
|
+
* other — and the two values are cue's smallest honest reading of it: a row is
|
|
8
|
+
* either narration a reader may ignore, or a line they are meant to act on.
|
|
9
|
+
* Nothing else in this family paints from it, so a console that wants a third
|
|
10
|
+
* level can add one in CSS against the same attribute.
|
|
11
|
+
*/
|
|
12
|
+
type TailPriority = "normal" | "attention";
|
|
13
|
+
interface TailStatusProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
14
|
+
/**
|
|
15
|
+
* What is happening, in two or three words: `Running commands`,
|
|
16
|
+
* `Searching the codebase`. `TAIL_ACTIONS` is the shipped vocabulary and this
|
|
17
|
+
* prop is a plain string, so a product with its own verbs is not stuck with
|
|
18
|
+
* these ten.
|
|
19
|
+
*/
|
|
20
|
+
action: string;
|
|
21
|
+
/**
|
|
22
|
+
* The thing the action is happening to — a path, a query, a topic. Truncates
|
|
23
|
+
* on its own so the action never has to; a sidebar transcript is 280px wide
|
|
24
|
+
* and a status line that elides its verb has said nothing.
|
|
25
|
+
*/
|
|
26
|
+
detail?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the action is still going. `true` by default, because this row is
|
|
29
|
+
* the live one; turn it off for `Idle`, `Interrupted` and `Aborted`, which
|
|
30
|
+
* stops the sweep and empties the spinner's slot without moving the text.
|
|
31
|
+
*/
|
|
32
|
+
active?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether a new `action` animates into the row that is already there, or
|
|
35
|
+
* simply replaces the text.
|
|
36
|
+
*
|
|
37
|
+
* Cursor's flag, and the reason it needs one: a narration line that changes
|
|
38
|
+
* every few hundred milliseconds should read as one row being updated, while
|
|
39
|
+
* a line that means something *different* should read as a new row. `true`
|
|
40
|
+
* (the default) keys the label on its own text so each new action fades in
|
|
41
|
+
* where the last one was; `false` leaves it unkeyed, and the words change
|
|
42
|
+
* with no motion at all. A reduced-motion reader gets the second behaviour
|
|
43
|
+
* either way.
|
|
44
|
+
*/
|
|
45
|
+
updatesInPlace?: boolean;
|
|
46
|
+
/** How loudly this row is speaking. See {@link TailPriority}. */
|
|
47
|
+
priority?: TailPriority;
|
|
48
|
+
/**
|
|
49
|
+
* Stop the run. The inline control exists only when this is given — Cursor's
|
|
50
|
+
* rule, and the right one: a Cancel that cannot cancel is worse than no
|
|
51
|
+
* Cancel.
|
|
52
|
+
*/
|
|
53
|
+
onCancel?: () => void;
|
|
54
|
+
/**
|
|
55
|
+
* What the stop control is called. `Cancel` is Cursor's word; opencode uses
|
|
56
|
+
* `Interrupt` and `Stop` for the same button.
|
|
57
|
+
*/
|
|
58
|
+
cancelLabel?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Whether this row is a live region — whether a screen reader is told each
|
|
61
|
+
* time the action changes.
|
|
62
|
+
*
|
|
63
|
+
* **Answers itself by default, and that default is the interesting part.**
|
|
64
|
+
* Left alone the row speaks when it is the only thing that can, and goes
|
|
65
|
+
* quiet the moment a {@link LiveRegionAnnouncer} is mounted anywhere on the
|
|
66
|
+
* page: the announcer's table covers the same transitions this row narrates,
|
|
67
|
+
* so a console with both — the ordinary composition — would otherwise have
|
|
68
|
+
* every state read out twice, out of step, because the two regions update at
|
|
69
|
+
* different moments.
|
|
70
|
+
*
|
|
71
|
+
* The row is the one that defers because the announcer is the better speaker:
|
|
72
|
+
* it is a queue, spaced and depth-limited and paused while the page is hidden
|
|
73
|
+
* or a modal has the reader, and it is mounted empty and left mounted, which
|
|
74
|
+
* is the only way a live region is reliably announced. This row changes
|
|
75
|
+
* several times a second and comes and goes with the run.
|
|
76
|
+
*
|
|
77
|
+
* Set it explicitly to overrule that — `true` for a console whose announcer
|
|
78
|
+
* is fed something other than these actions, `false` for one that narrates
|
|
79
|
+
* the foot of the transcript some other way. An explicit answer always wins.
|
|
80
|
+
*/
|
|
81
|
+
announce?: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The live row at the foot of a transcript: what the run is doing, right now.
|
|
85
|
+
*
|
|
86
|
+
* The one row every shipping agent UI has and no component catalogue ships. It
|
|
87
|
+
* is not a spinner and not a toast — it is a transcript row with
|
|
88
|
+
* `role="status"`, which is what makes it the *only* element in this family a
|
|
89
|
+
* screen reader is told about without being asked. Everything else here is
|
|
90
|
+
* drawn and left alone; this one announces itself politely each time the action
|
|
91
|
+
* changes, which is exactly the behaviour a person who cannot see the spinner
|
|
92
|
+
* needs and exactly the behaviour that becomes unbearable if it is used for
|
|
93
|
+
* anything else. One per transcript, at the foot, and nowhere else.
|
|
94
|
+
*
|
|
95
|
+
* **Unless something better is speaking.** {@link LiveRegionAnnouncer} is this
|
|
96
|
+
* family's other live region, and its table of transitions covers what this row
|
|
97
|
+
* narrates; a console that mounts both would have the run read out twice. So
|
|
98
|
+
* mounting an announcer takes the speech away from this row automatically — the
|
|
99
|
+
* words stay on the screen, the `role="status"` goes, and `data-announces` says
|
|
100
|
+
* which of the two it is doing. {@link TailStatusProps.announce} overrules it in
|
|
101
|
+
* either direction.
|
|
102
|
+
*
|
|
103
|
+
* The action and the detail are separate props rather than one composed string
|
|
104
|
+
* because they truncate differently: the action is short and must survive, the
|
|
105
|
+
* detail is a path and must not push it off the row.
|
|
106
|
+
*
|
|
107
|
+
* State is a prop, as everywhere in this family. The row holds no timer, counts
|
|
108
|
+
* nothing, and does not know whether the run is healthy — `active` says whether
|
|
109
|
+
* the sweep runs, `action` says what it says, and the caller changes both.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* import { TailStatus, TAIL_ACTIONS } from "@cueplusplus/ui/elements";
|
|
113
|
+
*
|
|
114
|
+
* <TailStatus
|
|
115
|
+
* action={TAIL_ACTIONS.searchingCode}
|
|
116
|
+
* detail="composer.tsx"
|
|
117
|
+
* onCancel={stop}
|
|
118
|
+
* />
|
|
119
|
+
* @example
|
|
120
|
+
* // Settled: no sweep, no spinner, and the text changes without motion.
|
|
121
|
+
* <TailStatus action={TAIL_ACTIONS.interrupted} active={false} updatesInPlace={false} />
|
|
122
|
+
* @example
|
|
123
|
+
* // Composed with the announcer: this row draws the state, the queue speaks it.
|
|
124
|
+
* <>
|
|
125
|
+
* <TailStatus action={TAIL_ACTIONS.running} detail="pnpm test" />
|
|
126
|
+
* <LiveRegionAnnouncer messages={log} />
|
|
127
|
+
* </>
|
|
128
|
+
*/
|
|
129
|
+
declare const TailStatus: React.ForwardRefExoticComponent<TailStatusProps & React.RefAttributes<HTMLDivElement>>;
|
|
130
|
+
//#endregion
|
|
131
|
+
export { TailPriority, TailStatus, TailStatusProps };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { ShimmerLabel, ghostButton, mono } from "./surfaces.js";
|
|
4
|
+
import { useAnnouncerPresent } from "./live-region-announcer.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Loader2Icon } from "lucide-react";
|
|
8
|
+
//#region src/elements/tail-status.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The live row at the foot of a transcript: what the run is doing, right now.
|
|
11
|
+
*
|
|
12
|
+
* The one row every shipping agent UI has and no component catalogue ships. It
|
|
13
|
+
* is not a spinner and not a toast — it is a transcript row with
|
|
14
|
+
* `role="status"`, which is what makes it the *only* element in this family a
|
|
15
|
+
* screen reader is told about without being asked. Everything else here is
|
|
16
|
+
* drawn and left alone; this one announces itself politely each time the action
|
|
17
|
+
* changes, which is exactly the behaviour a person who cannot see the spinner
|
|
18
|
+
* needs and exactly the behaviour that becomes unbearable if it is used for
|
|
19
|
+
* anything else. One per transcript, at the foot, and nowhere else.
|
|
20
|
+
*
|
|
21
|
+
* **Unless something better is speaking.** {@link LiveRegionAnnouncer} is this
|
|
22
|
+
* family's other live region, and its table of transitions covers what this row
|
|
23
|
+
* narrates; a console that mounts both would have the run read out twice. So
|
|
24
|
+
* mounting an announcer takes the speech away from this row automatically — the
|
|
25
|
+
* words stay on the screen, the `role="status"` goes, and `data-announces` says
|
|
26
|
+
* which of the two it is doing. {@link TailStatusProps.announce} overrules it in
|
|
27
|
+
* either direction.
|
|
28
|
+
*
|
|
29
|
+
* The action and the detail are separate props rather than one composed string
|
|
30
|
+
* because they truncate differently: the action is short and must survive, the
|
|
31
|
+
* detail is a path and must not push it off the row.
|
|
32
|
+
*
|
|
33
|
+
* State is a prop, as everywhere in this family. The row holds no timer, counts
|
|
34
|
+
* nothing, and does not know whether the run is healthy — `active` says whether
|
|
35
|
+
* the sweep runs, `action` says what it says, and the caller changes both.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* import { TailStatus, TAIL_ACTIONS } from "@cueplusplus/ui/elements";
|
|
39
|
+
*
|
|
40
|
+
* <TailStatus
|
|
41
|
+
* action={TAIL_ACTIONS.searchingCode}
|
|
42
|
+
* detail="composer.tsx"
|
|
43
|
+
* onCancel={stop}
|
|
44
|
+
* />
|
|
45
|
+
* @example
|
|
46
|
+
* // Settled: no sweep, no spinner, and the text changes without motion.
|
|
47
|
+
* <TailStatus action={TAIL_ACTIONS.interrupted} active={false} updatesInPlace={false} />
|
|
48
|
+
* @example
|
|
49
|
+
* // Composed with the announcer: this row draws the state, the queue speaks it.
|
|
50
|
+
* <>
|
|
51
|
+
* <TailStatus action={TAIL_ACTIONS.running} detail="pnpm test" />
|
|
52
|
+
* <LiveRegionAnnouncer messages={log} />
|
|
53
|
+
* </>
|
|
54
|
+
*/
|
|
55
|
+
const TailStatus = React.forwardRef(function TailStatus({ action, detail, active = true, updatesInPlace = true, priority = "normal", onCancel, cancelLabel = "Cancel", announce, className, ...elementProps }, ref) {
|
|
56
|
+
const spokenFor = useAnnouncerPresent();
|
|
57
|
+
const announces = announce ?? !spokenFor;
|
|
58
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
59
|
+
ref,
|
|
60
|
+
role: announces ? "status" : void 0,
|
|
61
|
+
"data-slot": "tail-status",
|
|
62
|
+
"data-announces": String(announces),
|
|
63
|
+
"data-priority": priority,
|
|
64
|
+
"data-updates-in-place": String(updatesInPlace),
|
|
65
|
+
className: cn("flex w-full items-center gap-2.5 py-1.5", className),
|
|
66
|
+
...elementProps,
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ jsx("span", {
|
|
69
|
+
"aria-hidden": true,
|
|
70
|
+
className: "flex size-3.5 shrink-0 items-center justify-center",
|
|
71
|
+
children: active ? /* @__PURE__ */ jsx(Loader2Icon, { className: "size-3.5 animate-spin text-stream motion-reduce:animate-none" }) : null
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ jsxs("span", {
|
|
74
|
+
className: cn("flex min-w-0 flex-1 items-baseline gap-1.5 text-(length:--cue-text-ui)", updatesInPlace && "cue-elements-fade-in cue-elements-animate-in duration-200 motion-reduce:animate-none"),
|
|
75
|
+
children: [/* @__PURE__ */ jsx(ShimmerLabel, {
|
|
76
|
+
active,
|
|
77
|
+
className: cn("shrink-0", priority === "attention" ? "text-fg" : "text-fg-muted"),
|
|
78
|
+
children: action
|
|
79
|
+
}), detail === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
80
|
+
className: cn(mono, "text-fg-subtle min-w-0 truncate"),
|
|
81
|
+
children: detail
|
|
82
|
+
})]
|
|
83
|
+
}, updatesInPlace ? action : void 0),
|
|
84
|
+
onCancel === void 0 ? null : /* @__PURE__ */ jsx("button", {
|
|
85
|
+
type: "button",
|
|
86
|
+
onClick: onCancel,
|
|
87
|
+
className: cn(ghostButton, mono, "shrink-0 rounded-(--radius-control) px-2 py-1 uppercase"),
|
|
88
|
+
children: cancelLabel
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//#endregion
|
|
94
|
+
export { TailStatus };
|