@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,117 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { field, paper } from "./surfaces.js";
|
|
4
|
+
import { useId } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { BookmarkIcon } from "lucide-react";
|
|
7
|
+
//#region src/elements/prompt-library.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Prompts you saved, searchable, with their variables shown before you insert one.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import { PromptLibrary } from "@cueplusplus/ui/elements";
|
|
13
|
+
*
|
|
14
|
+
* <PromptLibrary
|
|
15
|
+
* prompts={prompts}
|
|
16
|
+
* query={query}
|
|
17
|
+
* selectedId={selectedId}
|
|
18
|
+
* onQueryChange={setQuery}
|
|
19
|
+
* onSelect={setSelectedId}
|
|
20
|
+
* onInsert={insert}
|
|
21
|
+
* />
|
|
22
|
+
*/
|
|
23
|
+
function PromptLibrary({ prompts, query, selectedId, onQueryChange, onSelect, onInsert, className, ...props }) {
|
|
24
|
+
const listId = useId();
|
|
25
|
+
const optionId = (id) => `${listId}-${id}`;
|
|
26
|
+
const matches = prompts.filter((prompt) => prompt.name.toLowerCase().includes(query.toLowerCase()));
|
|
27
|
+
const selected = matches.find((prompt) => prompt.id === selectedId);
|
|
28
|
+
const move = (delta) => {
|
|
29
|
+
if (matches.length === 0) return;
|
|
30
|
+
const at = matches.findIndex((prompt) => prompt.id === selectedId);
|
|
31
|
+
const next = matches[((at === -1 ? delta > 0 ? -1 : 0 : at) + delta + matches.length) % matches.length];
|
|
32
|
+
if (next) onSelect?.(next.id);
|
|
33
|
+
};
|
|
34
|
+
const onKeyDown = (event) => {
|
|
35
|
+
if (event.nativeEvent.isComposing) return;
|
|
36
|
+
if (event.key === "ArrowDown") {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
move(1);
|
|
39
|
+
} else if (event.key === "ArrowUp") {
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
move(-1);
|
|
42
|
+
} else if (event.key === "Enter" && selected) {
|
|
43
|
+
event.preventDefault();
|
|
44
|
+
onInsert?.(selected.id);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
48
|
+
"data-slot": "prompt-library",
|
|
49
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-2 rounded-(--radius-overlay) p-3", className),
|
|
50
|
+
...props,
|
|
51
|
+
children: [
|
|
52
|
+
/* @__PURE__ */ jsxs("div", {
|
|
53
|
+
className: cn(field, "flex items-center gap-2 rounded-(--radius-surface) px-2.5 py-1.5"),
|
|
54
|
+
children: [/* @__PURE__ */ jsx(BookmarkIcon, { className: "text-fg-subtle size-3.5 shrink-0" }), /* @__PURE__ */ jsx("input", {
|
|
55
|
+
value: query,
|
|
56
|
+
onChange: (event) => onQueryChange?.(event.target.value),
|
|
57
|
+
onKeyDown,
|
|
58
|
+
placeholder: "Search prompts",
|
|
59
|
+
"aria-label": "Search saved prompts",
|
|
60
|
+
role: "combobox",
|
|
61
|
+
"aria-expanded": matches.length > 0,
|
|
62
|
+
"aria-controls": listId,
|
|
63
|
+
"aria-autocomplete": "list",
|
|
64
|
+
"aria-activedescendant": selected ? optionId(selected.id) : void 0,
|
|
65
|
+
className: "text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-body) outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent"
|
|
66
|
+
})]
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ jsx("div", {
|
|
69
|
+
id: listId,
|
|
70
|
+
role: "listbox",
|
|
71
|
+
"aria-label": "Saved prompts",
|
|
72
|
+
className: "flex flex-col",
|
|
73
|
+
children: matches.map((prompt) => /* @__PURE__ */ jsxs("button", {
|
|
74
|
+
id: optionId(prompt.id),
|
|
75
|
+
type: "button",
|
|
76
|
+
role: "option",
|
|
77
|
+
tabIndex: -1,
|
|
78
|
+
"aria-selected": prompt.id === selectedId,
|
|
79
|
+
onMouseDown: (event) => event.preventDefault(),
|
|
80
|
+
onClick: () => onSelect?.(prompt.id),
|
|
81
|
+
onDoubleClick: () => onInsert?.(prompt.id),
|
|
82
|
+
className: cn("flex items-center gap-2 rounded-(--radius-surface) px-2 py-1.5 text-start transition-colors", prompt.id === selectedId ? "bg-surface-1" : "hover:bg-surface-1"),
|
|
83
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
84
|
+
className: "min-w-0 flex-1 truncate text-(length:--cue-text-body)",
|
|
85
|
+
children: prompt.name
|
|
86
|
+
}), prompt.variables.length > 0 && /* @__PURE__ */ jsxs("span", {
|
|
87
|
+
className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-subtle shrink-0"),
|
|
88
|
+
children: [prompt.variables.length, " vars"]
|
|
89
|
+
})]
|
|
90
|
+
}, prompt.id))
|
|
91
|
+
}),
|
|
92
|
+
matches.length === 0 && /* @__PURE__ */ jsxs("span", {
|
|
93
|
+
className: "text-fg-subtle block px-2 py-3 text-center text-(length:--cue-text-ui) break-words",
|
|
94
|
+
children: [
|
|
95
|
+
"Nothing matches “",
|
|
96
|
+
query,
|
|
97
|
+
"”"
|
|
98
|
+
]
|
|
99
|
+
}),
|
|
100
|
+
selected && /* @__PURE__ */ jsxs("div", {
|
|
101
|
+
className: cn("bg-fg/[0.06]", "cue-elements-fade-in cue-elements-animate-in flex flex-col gap-2 rounded-(--radius-surface) p-2.5 duration-200"),
|
|
102
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
103
|
+
className: "text-fg-muted text-(length:--cue-text-ui) leading-(--cue-leading-ui) break-words",
|
|
104
|
+
children: selected.body
|
|
105
|
+
}), selected.variables.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
106
|
+
className: "flex flex-wrap gap-1",
|
|
107
|
+
children: selected.variables.map((variable) => /* @__PURE__ */ jsx("span", {
|
|
108
|
+
className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "bg-bg text-fg-muted rounded-(--radius-control) px-1.5 py-0.5"),
|
|
109
|
+
children: `{${variable}}`
|
|
110
|
+
}, variable))
|
|
111
|
+
})]
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
export { PromptLibrary };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { QueueLabels } from "./vocabulary.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/elements/queue-dock.d.ts
|
|
4
|
+
/** A turn typed while a run was still out, waiting its place in the queue. */
|
|
5
|
+
interface QueuedFollowUp {
|
|
6
|
+
/** Identifies the entry, and what every callback reports. */
|
|
7
|
+
id: string;
|
|
8
|
+
/** What they typed. One line in the dock, however long it is in the composer. */
|
|
9
|
+
text: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The dock's summary line: `3 queued messages`.
|
|
13
|
+
*
|
|
14
|
+
* opencode's pluralised summary, and the reason it is a function rather than a
|
|
15
|
+
* template is the singular: `1 queued messages` is the tell that a queue was
|
|
16
|
+
* built by somebody who never had exactly one thing in it. Zero has an answer
|
|
17
|
+
* too, for the callers that show the dock's line somewhere the dock itself is
|
|
18
|
+
* not — a status bar, a tooltip — even though {@link QueueDock} draws nothing
|
|
19
|
+
* at all when the queue is empty.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* formatQueueSummary(3); // "3 queued messages"
|
|
23
|
+
* formatQueueSummary(1); // "1 queued message"
|
|
24
|
+
* formatQueueSummary(0); // "Nothing queued"
|
|
25
|
+
*/
|
|
26
|
+
declare function formatQueueSummary(count: number): string;
|
|
27
|
+
interface QueueDockProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
28
|
+
/**
|
|
29
|
+
* The turns waiting to send, in the order they will drain. Ordering is the
|
|
30
|
+
* caller's: Cursor lets a person drag one up the list, and a component that
|
|
31
|
+
* sorted the array it was given could not be dragged.
|
|
32
|
+
*/
|
|
33
|
+
messages: readonly QueuedFollowUp[];
|
|
34
|
+
/** Whether the entries are showing, or only the summary line. */
|
|
35
|
+
open: boolean;
|
|
36
|
+
/** Called when the dock is expanded or collapsed. */
|
|
37
|
+
onOpenChange?: (open: boolean) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Put this turn back in the composer to be rewritten. The control exists
|
|
40
|
+
* only when this is given.
|
|
41
|
+
*/
|
|
42
|
+
onEdit?: (id: string) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Send this turn now rather than waiting for the run to finish — Cursor's
|
|
45
|
+
* `Send now`, Zed's steer button. The control exists only when this is given.
|
|
46
|
+
*/
|
|
47
|
+
onSendNow?: (id: string) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Drop this turn before it ever sends. The control exists only when this is
|
|
50
|
+
* given.
|
|
51
|
+
*/
|
|
52
|
+
onRemove?: (id: string) => void;
|
|
53
|
+
/**
|
|
54
|
+
* The summary line, replacing the one {@link formatQueueSummary} would build
|
|
55
|
+
* — for a dock that counts something else: `2 follow-ups`, `3 steps queued`.
|
|
56
|
+
*/
|
|
57
|
+
summary?: string;
|
|
58
|
+
/**
|
|
59
|
+
* Copy for the five controls, merged over `QUEUE_LABELS`. Partial: overriding
|
|
60
|
+
* `sendNow` does not cost you the other four.
|
|
61
|
+
*/
|
|
62
|
+
labels?: Partial<QueueLabels>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* What you typed while it was still working, stacked and still yours to change.
|
|
66
|
+
*
|
|
67
|
+
* The dock over the composer, and one of the two elements the teardown found
|
|
68
|
+
* missing everywhere. Its whole reason to exist is the three things you can do
|
|
69
|
+
* to a queued turn *before* it sends: rewrite it now that you have seen what
|
|
70
|
+
* the run did, jump it to the front, or drop it. A queue you can only watch is
|
|
71
|
+
* a queue you will let send something you no longer mean.
|
|
72
|
+
*
|
|
73
|
+
* It folds. Four queued turns above a composer is a wall, so the collapsed
|
|
74
|
+
* state is one line — `4 queued messages` — and the entries come back on a
|
|
75
|
+
* click. Open state is a prop like everything else in this family, so a
|
|
76
|
+
* scripted replay of the dock is arithmetic rather than a component with a mind
|
|
77
|
+
* of its own.
|
|
78
|
+
*
|
|
79
|
+
* An empty queue draws **nothing**: no line, no empty state, no rule. Every
|
|
80
|
+
* product in the study does the same, and it is the right answer — a dock that
|
|
81
|
+
* announces it has nothing in it is a permanent strip of chrome apologising for
|
|
82
|
+
* itself.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* import { QueueDock } from "@cueplusplus/ui/elements";
|
|
86
|
+
*
|
|
87
|
+
* <QueueDock
|
|
88
|
+
* messages={queued}
|
|
89
|
+
* open={open}
|
|
90
|
+
* onOpenChange={setOpen}
|
|
91
|
+
* onEdit={(id) => lift(id)}
|
|
92
|
+
* onSendNow={(id) => steer(id)}
|
|
93
|
+
* onRemove={(id) => drop(id)}
|
|
94
|
+
* />
|
|
95
|
+
* @example
|
|
96
|
+
* // Read-only: the same dock in a shared transcript, with nothing to press.
|
|
97
|
+
* <QueueDock messages={queued} open />
|
|
98
|
+
*/
|
|
99
|
+
declare const QueueDock: React.ForwardRefExoticComponent<QueueDockProps & React.RefAttributes<HTMLDivElement>>;
|
|
100
|
+
//#endregion
|
|
101
|
+
export { QueueDock, QueueDockProps, QueuedFollowUp, formatQueueSummary };
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { field, ghostButton, mono, paper } from "./surfaces.js";
|
|
4
|
+
import { QUEUE_LABELS } from "./vocabulary.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { ChevronRightIcon, PencilIcon, SendHorizontalIcon, XIcon } from "lucide-react";
|
|
8
|
+
//#region src/elements/queue-dock.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The dock's summary line: `3 queued messages`.
|
|
11
|
+
*
|
|
12
|
+
* opencode's pluralised summary, and the reason it is a function rather than a
|
|
13
|
+
* template is the singular: `1 queued messages` is the tell that a queue was
|
|
14
|
+
* built by somebody who never had exactly one thing in it. Zero has an answer
|
|
15
|
+
* too, for the callers that show the dock's line somewhere the dock itself is
|
|
16
|
+
* not — a status bar, a tooltip — even though {@link QueueDock} draws nothing
|
|
17
|
+
* at all when the queue is empty.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* formatQueueSummary(3); // "3 queued messages"
|
|
21
|
+
* formatQueueSummary(1); // "1 queued message"
|
|
22
|
+
* formatQueueSummary(0); // "Nothing queued"
|
|
23
|
+
*/
|
|
24
|
+
function formatQueueSummary(count) {
|
|
25
|
+
if (!Number.isFinite(count) || count <= 0) return "Nothing queued";
|
|
26
|
+
const whole = Math.floor(count);
|
|
27
|
+
return `${whole} queued message${whole === 1 ? "" : "s"}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* What you typed while it was still working, stacked and still yours to change.
|
|
31
|
+
*
|
|
32
|
+
* The dock over the composer, and one of the two elements the teardown found
|
|
33
|
+
* missing everywhere. Its whole reason to exist is the three things you can do
|
|
34
|
+
* to a queued turn *before* it sends: rewrite it now that you have seen what
|
|
35
|
+
* the run did, jump it to the front, or drop it. A queue you can only watch is
|
|
36
|
+
* a queue you will let send something you no longer mean.
|
|
37
|
+
*
|
|
38
|
+
* It folds. Four queued turns above a composer is a wall, so the collapsed
|
|
39
|
+
* state is one line — `4 queued messages` — and the entries come back on a
|
|
40
|
+
* click. Open state is a prop like everything else in this family, so a
|
|
41
|
+
* scripted replay of the dock is arithmetic rather than a component with a mind
|
|
42
|
+
* of its own.
|
|
43
|
+
*
|
|
44
|
+
* An empty queue draws **nothing**: no line, no empty state, no rule. Every
|
|
45
|
+
* product in the study does the same, and it is the right answer — a dock that
|
|
46
|
+
* announces it has nothing in it is a permanent strip of chrome apologising for
|
|
47
|
+
* itself.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* import { QueueDock } from "@cueplusplus/ui/elements";
|
|
51
|
+
*
|
|
52
|
+
* <QueueDock
|
|
53
|
+
* messages={queued}
|
|
54
|
+
* open={open}
|
|
55
|
+
* onOpenChange={setOpen}
|
|
56
|
+
* onEdit={(id) => lift(id)}
|
|
57
|
+
* onSendNow={(id) => steer(id)}
|
|
58
|
+
* onRemove={(id) => drop(id)}
|
|
59
|
+
* />
|
|
60
|
+
* @example
|
|
61
|
+
* // Read-only: the same dock in a shared transcript, with nothing to press.
|
|
62
|
+
* <QueueDock messages={queued} open />
|
|
63
|
+
*/
|
|
64
|
+
const QueueDock = React.forwardRef(function QueueDock({ messages, open, onOpenChange, onEdit, onSendNow, onRemove, summary, labels, className, ...elementProps }, ref) {
|
|
65
|
+
if (messages.length === 0) return null;
|
|
66
|
+
const copy = {
|
|
67
|
+
...QUEUE_LABELS,
|
|
68
|
+
...labels
|
|
69
|
+
};
|
|
70
|
+
const said = summary ?? formatQueueSummary(messages.length);
|
|
71
|
+
const actionClassName = cn(ghostButton, "size-6 shrink-0");
|
|
72
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
73
|
+
ref,
|
|
74
|
+
"data-slot": "queue-dock",
|
|
75
|
+
"data-open": String(open),
|
|
76
|
+
className: cn(paper, "flex w-full flex-col rounded-(--radius-overlay)", className),
|
|
77
|
+
...elementProps,
|
|
78
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
79
|
+
type: "button",
|
|
80
|
+
"aria-expanded": open,
|
|
81
|
+
title: open ? copy.collapse : copy.expand,
|
|
82
|
+
onClick: () => onOpenChange?.(!open),
|
|
83
|
+
className: "hover:bg-surface-2 flex items-center gap-2.5 rounded-(--radius-overlay) px-3 py-2 text-start transition-colors focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent motion-reduce:transition-none",
|
|
84
|
+
children: [/* @__PURE__ */ jsx(ChevronRightIcon, {
|
|
85
|
+
"aria-hidden": true,
|
|
86
|
+
className: cn("text-fg-subtle size-3 shrink-0 transition-transform duration-200 motion-reduce:transition-none", open && "rotate-90")
|
|
87
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
88
|
+
className: "text-fg-muted min-w-0 flex-1 truncate text-(length:--cue-text-ui)",
|
|
89
|
+
children: said
|
|
90
|
+
})]
|
|
91
|
+
}), open ? /* @__PURE__ */ jsx("ul", {
|
|
92
|
+
"data-slot": "queue-dock-entries",
|
|
93
|
+
className: "flex flex-col gap-1 px-2 pb-2",
|
|
94
|
+
children: messages.map((message, index) => /* @__PURE__ */ jsxs("li", {
|
|
95
|
+
className: cn(field, "flex items-center gap-2 rounded-(--radius-control) py-1.5 pe-1.5 ps-2.5"),
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ jsx("span", {
|
|
98
|
+
className: cn(mono, "text-fg-subtle w-3 shrink-0 tabular-nums"),
|
|
99
|
+
children: index + 1
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ jsx("span", {
|
|
102
|
+
className: "text-fg-muted min-w-0 flex-1 truncate text-(length:--cue-text-ui)",
|
|
103
|
+
children: message.text
|
|
104
|
+
}),
|
|
105
|
+
onEdit === void 0 ? null : /* @__PURE__ */ jsx("button", {
|
|
106
|
+
type: "button",
|
|
107
|
+
"aria-label": `${copy.edit}: ${message.text}`,
|
|
108
|
+
onClick: () => onEdit(message.id),
|
|
109
|
+
className: actionClassName,
|
|
110
|
+
children: /* @__PURE__ */ jsx(PencilIcon, { className: "size-3" })
|
|
111
|
+
}),
|
|
112
|
+
onSendNow === void 0 ? null : /* @__PURE__ */ jsx("button", {
|
|
113
|
+
type: "button",
|
|
114
|
+
"aria-label": `${copy.sendNow}: ${message.text}`,
|
|
115
|
+
onClick: () => onSendNow(message.id),
|
|
116
|
+
className: actionClassName,
|
|
117
|
+
children: /* @__PURE__ */ jsx(SendHorizontalIcon, { className: "size-3" })
|
|
118
|
+
}),
|
|
119
|
+
onRemove === void 0 ? null : /* @__PURE__ */ jsx("button", {
|
|
120
|
+
type: "button",
|
|
121
|
+
"aria-label": `${copy.remove}: ${message.text}`,
|
|
122
|
+
onClick: () => onRemove(message.id),
|
|
123
|
+
className: actionClassName,
|
|
124
|
+
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3" })
|
|
125
|
+
})
|
|
126
|
+
]
|
|
127
|
+
}, message.id))
|
|
128
|
+
}) : null]
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
//#endregion
|
|
132
|
+
export { QueueDock, formatQueueSummary };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/elements/quota-banner.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* How much is left, when it comes back, and the way to get more.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import { QuotaBanner } from "@cueplusplus/ui/elements";
|
|
8
|
+
*
|
|
9
|
+
* <QuotaBanner used={47} limit={50} unit="messages" resetsIn="3h 12m" upgradeLabel="Upgrade" />
|
|
10
|
+
*/
|
|
11
|
+
declare function QuotaBanner({ used, limit, unit, resetsIn, upgradeLabel, onUpgrade, className, ...props }: Omit<ComponentProps<"div">, "children" | "used" | "limit" | "unit" | "resetsIn" | "upgradeLabel" | "onUpgrade"> & {
|
|
12
|
+
/** How much has been consumed. */
|
|
13
|
+
used: number;
|
|
14
|
+
/** The allowance. The banner turns amber at 90 percent. */
|
|
15
|
+
limit: number;
|
|
16
|
+
/** What is being counted: messages, runs, credits. */
|
|
17
|
+
unit: string;
|
|
18
|
+
/** Pre-formatted time until the window rolls over. */
|
|
19
|
+
resetsIn: string;
|
|
20
|
+
/** Label for the way out. */
|
|
21
|
+
upgradeLabel: string;
|
|
22
|
+
/** Called from the upgrade action. */
|
|
23
|
+
onUpgrade?: () => void;
|
|
24
|
+
}): import("react").JSX.Element;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { QuotaBanner };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { inkButton, mono, paper } from "./surfaces.js";
|
|
4
|
+
import { pct } from "./range.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/elements/quota-banner.tsx
|
|
7
|
+
/**
|
|
8
|
+
* How much is left, when it comes back, and the way to get more.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* import { QuotaBanner } from "@cueplusplus/ui/elements";
|
|
12
|
+
*
|
|
13
|
+
* <QuotaBanner used={47} limit={50} unit="messages" resetsIn="3h 12m" upgradeLabel="Upgrade" />
|
|
14
|
+
*/
|
|
15
|
+
function QuotaBanner({ used, limit, unit, resetsIn, upgradeLabel, onUpgrade, className, ...props }) {
|
|
16
|
+
const left = Math.max(0, limit - used);
|
|
17
|
+
const tight = (limit === 0 ? 0 : used / limit) >= .9;
|
|
18
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
19
|
+
"data-slot": "quota-banner",
|
|
20
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-(--radius-overlay) p-3.5", className),
|
|
21
|
+
...props,
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ jsxs("div", {
|
|
24
|
+
className: "flex items-baseline gap-2",
|
|
25
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
26
|
+
className: cn("text-(length:--cue-text-body) font-medium", tight && "text-warn"),
|
|
27
|
+
children: [
|
|
28
|
+
left,
|
|
29
|
+
" ",
|
|
30
|
+
unit,
|
|
31
|
+
" left"
|
|
32
|
+
]
|
|
33
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
34
|
+
className: cn(mono, "text-fg-subtle ms-auto tabular-nums"),
|
|
35
|
+
children: ["resets in ", resetsIn]
|
|
36
|
+
})]
|
|
37
|
+
}),
|
|
38
|
+
/* @__PURE__ */ jsx("span", {
|
|
39
|
+
className: "bg-surface-2 h-1 w-full overflow-hidden rounded-full",
|
|
40
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
41
|
+
className: cn("block h-full rounded-full transition-[width] duration-500 motion-reduce:transition-none", tight ? "bg-warn" : "bg-surface-3"),
|
|
42
|
+
style: { width: `${pct(used, limit)}%` }
|
|
43
|
+
})
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ jsxs("div", {
|
|
46
|
+
className: "flex items-center gap-2",
|
|
47
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
48
|
+
className: cn(mono, "text-fg-subtle tabular-nums"),
|
|
49
|
+
children: [
|
|
50
|
+
used,
|
|
51
|
+
" of ",
|
|
52
|
+
limit,
|
|
53
|
+
" used"
|
|
54
|
+
]
|
|
55
|
+
}), /* @__PURE__ */ jsx("button", {
|
|
56
|
+
type: "button",
|
|
57
|
+
onClick: onUpgrade,
|
|
58
|
+
className: cn(inkButton, "ms-auto flex h-7 items-center rounded-full px-3 text-(length:--cue-text-ui) font-medium"),
|
|
59
|
+
children: upgradeLabel
|
|
60
|
+
})]
|
|
61
|
+
})
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { QuotaBanner };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/elements/quote-reply.d.ts
|
|
3
|
+
/** One offer in the selection toolbar: quote the passage, or act on it. */
|
|
4
|
+
interface QuoteAction {
|
|
5
|
+
/** Identifies the action, and what `onAction` reports. */
|
|
6
|
+
key: string;
|
|
7
|
+
/** The word on the button. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Which of the three glyphs it takes — the element owns the icon set, not the caller. */
|
|
10
|
+
icon: "quote" | "explain" | "rewrite";
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Select a phrase in an answer and a toolbar offers to quote, explain, or rewrite it.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { QuoteReply } from "@cueplusplus/ui/elements";
|
|
17
|
+
*
|
|
18
|
+
* <QuoteReply
|
|
19
|
+
* before="The regression happens because "
|
|
20
|
+
* selection="the converter drops parts with no text"
|
|
21
|
+
* after=", so the turn never lands."
|
|
22
|
+
* actions={actions}
|
|
23
|
+
* toolbarVisible
|
|
24
|
+
* onAction={handle}
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
declare function QuoteReply({ before, selection, after, actions, toolbarVisible, quoted, onAction, className, ...props }: Omit<ComponentProps<"div">, "children" | "before" | "selection" | "after" | "actions" | "toolbarVisible" | "quoted" | "onAction"> & {
|
|
28
|
+
/** Text preceding the selection. */
|
|
29
|
+
before: string;
|
|
30
|
+
/** The highlighted run the actions apply to. */
|
|
31
|
+
selection: string;
|
|
32
|
+
/** Text following the selection. */
|
|
33
|
+
after: string;
|
|
34
|
+
/** What the toolbar offers. Each action names one of the three built-in icons. */
|
|
35
|
+
actions: readonly QuoteAction[];
|
|
36
|
+
/** Whether the floating toolbar is showing. Drive it from your own selection handler. */
|
|
37
|
+
toolbarVisible: boolean;
|
|
38
|
+
/** Once quoted, the text carried into the composer, shown under a rule. */
|
|
39
|
+
quoted?: string;
|
|
40
|
+
/** Called with the key of the action that was chosen. */
|
|
41
|
+
onAction?: (key: string) => void;
|
|
42
|
+
}): import("react").JSX.Element;
|
|
43
|
+
//#endregion
|
|
44
|
+
export { QuoteAction, QuoteReply };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import "./surfaces.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { PencilLineIcon, QuoteIcon, SparklesIcon } from "lucide-react";
|
|
6
|
+
//#region src/elements/quote-reply.tsx
|
|
7
|
+
const ICON = {
|
|
8
|
+
quote: QuoteIcon,
|
|
9
|
+
explain: SparklesIcon,
|
|
10
|
+
rewrite: PencilLineIcon
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Select a phrase in an answer and a toolbar offers to quote, explain, or rewrite it.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { QuoteReply } from "@cueplusplus/ui/elements";
|
|
17
|
+
*
|
|
18
|
+
* <QuoteReply
|
|
19
|
+
* before="The regression happens because "
|
|
20
|
+
* selection="the converter drops parts with no text"
|
|
21
|
+
* after=", so the turn never lands."
|
|
22
|
+
* actions={actions}
|
|
23
|
+
* toolbarVisible
|
|
24
|
+
* onAction={handle}
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
function QuoteReply({ before, selection, after, actions, toolbarVisible, quoted, onAction, className, ...props }) {
|
|
28
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
29
|
+
"data-slot": "quote-reply",
|
|
30
|
+
className: cn("flex w-full max-w-sm flex-col gap-2.5", className),
|
|
31
|
+
...props,
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ jsxs("p", {
|
|
34
|
+
className: "relative text-(length:--cue-text-body) leading-(--cue-leading-ui)",
|
|
35
|
+
children: [
|
|
36
|
+
/* @__PURE__ */ jsx("span", {
|
|
37
|
+
className: "text-fg-muted",
|
|
38
|
+
children: before
|
|
39
|
+
}),
|
|
40
|
+
/* @__PURE__ */ jsx("span", {
|
|
41
|
+
className: "text-fg rounded-(--radius-control) bg-stream/25 px-0.5",
|
|
42
|
+
children: selection
|
|
43
|
+
}),
|
|
44
|
+
/* @__PURE__ */ jsx("span", {
|
|
45
|
+
className: "text-fg-muted",
|
|
46
|
+
children: after
|
|
47
|
+
})
|
|
48
|
+
]
|
|
49
|
+
}),
|
|
50
|
+
/* @__PURE__ */ jsx("div", {
|
|
51
|
+
className: "flex h-9 items-start",
|
|
52
|
+
children: toolbarVisible && /* @__PURE__ */ jsx("div", {
|
|
53
|
+
className: cn("bg-surface-2 border border-border-overlay", "cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-slide-in-from-top-1 cue-elements-animate-in flex items-center gap-0.5 rounded-full p-1 duration-200"),
|
|
54
|
+
children: actions.map((action) => {
|
|
55
|
+
const Icon = ICON[action.icon];
|
|
56
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
57
|
+
type: "button",
|
|
58
|
+
onClick: () => onAction?.(action.key),
|
|
59
|
+
className: "text-fg-muted hover:bg-surface-2 hover:text-fg flex h-7 items-center gap-1.5 rounded-full px-2.5 text-(length:--cue-text-ui) font-medium transition-[background-color,color,scale] duration-150 active:scale-[0.96]",
|
|
60
|
+
children: [/* @__PURE__ */ jsx(Icon, { className: "size-3.5" }), action.label]
|
|
61
|
+
}, action.key);
|
|
62
|
+
})
|
|
63
|
+
})
|
|
64
|
+
}),
|
|
65
|
+
quoted && /* @__PURE__ */ jsxs("div", {
|
|
66
|
+
className: "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in flex flex-col gap-1 duration-300",
|
|
67
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
68
|
+
className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-subtle"),
|
|
69
|
+
children: "replying to"
|
|
70
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
71
|
+
className: "border-border-strong text-fg-muted border-s-2 ps-2.5 text-(length:--cue-text-ui) leading-(--cue-leading-ui)",
|
|
72
|
+
children: quoted
|
|
73
|
+
})]
|
|
74
|
+
})
|
|
75
|
+
]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//#endregion
|
|
79
|
+
export { QuoteReply };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/elements/range.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Range normalization for the numeric props the elements take.
|
|
4
|
+
*
|
|
5
|
+
* Elements are driven by a caller's state, so a prop can arrive negative, past
|
|
6
|
+
* the end of its collection, or NaN. Left raw, those reach the DOM: a negative
|
|
7
|
+
* percentage is an invalid CSS width that the browser drops, leaving a bar at
|
|
8
|
+
* its natural full width, and a negative slice length counts from the end of
|
|
9
|
+
* the array instead of returning nothing.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Constrains a value to `min…max`. NaN is decided first and maps to `min`.
|
|
13
|
+
* For any other value, an empty collection can invert the bounds and `max`
|
|
14
|
+
* wins there: `clamp(3, 1, 0)` is `0`, which is what lets a floor of one item
|
|
15
|
+
* still yield none.
|
|
16
|
+
*/
|
|
17
|
+
declare function clamp(value: number, min: number, max: number): number;
|
|
18
|
+
/** The first `count` items, for a `count` that may be out of range. */
|
|
19
|
+
declare function take<T>(items: readonly T[], count: number): T[];
|
|
20
|
+
/** The position `index` names in `items`, for an `index` out of range. */
|
|
21
|
+
declare function indexIn<T>(items: readonly T[], index: number): number;
|
|
22
|
+
/** The item at `index`, for an `index` that may be out of range. */
|
|
23
|
+
declare function at<T>(items: readonly T[], index: number): T | undefined;
|
|
24
|
+
/** `value` as a share of `total`, as a percentage in `0…100`. */
|
|
25
|
+
declare function pct(value: number, total: number): number;
|
|
26
|
+
/** A count of completed items out of `total`, in `0…total`. */
|
|
27
|
+
declare function progressOf(index: number, total: number): number;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { at, clamp, indexIn, pct, progressOf, take };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/elements/range.ts
|
|
2
|
+
/**
|
|
3
|
+
* Range normalization for the numeric props the elements take.
|
|
4
|
+
*
|
|
5
|
+
* Elements are driven by a caller's state, so a prop can arrive negative, past
|
|
6
|
+
* the end of its collection, or NaN. Left raw, those reach the DOM: a negative
|
|
7
|
+
* percentage is an invalid CSS width that the browser drops, leaving a bar at
|
|
8
|
+
* its natural full width, and a negative slice length counts from the end of
|
|
9
|
+
* the array instead of returning nothing.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Constrains a value to `min…max`. NaN is decided first and maps to `min`.
|
|
13
|
+
* For any other value, an empty collection can invert the bounds and `max`
|
|
14
|
+
* wins there: `clamp(3, 1, 0)` is `0`, which is what lets a floor of one item
|
|
15
|
+
* still yield none.
|
|
16
|
+
*/
|
|
17
|
+
function clamp(value, min, max) {
|
|
18
|
+
if (Number.isNaN(value)) return min;
|
|
19
|
+
return Math.min(max, Math.max(min, value));
|
|
20
|
+
}
|
|
21
|
+
/** The first `count` items, for a `count` that may be out of range. */
|
|
22
|
+
function take(items, count) {
|
|
23
|
+
return items.slice(0, Math.floor(clamp(count, 0, items.length)));
|
|
24
|
+
}
|
|
25
|
+
/** The position `index` names in `items`, for an `index` out of range. */
|
|
26
|
+
function indexIn(items, index) {
|
|
27
|
+
return Math.floor(clamp(index, 0, Math.max(0, items.length - 1)));
|
|
28
|
+
}
|
|
29
|
+
/** The item at `index`, for an `index` that may be out of range. */
|
|
30
|
+
function at(items, index) {
|
|
31
|
+
if (items.length === 0) return void 0;
|
|
32
|
+
return items[indexIn(items, index)];
|
|
33
|
+
}
|
|
34
|
+
/** `value` as a share of `total`, as a percentage in `0…100`. */
|
|
35
|
+
function pct(value, total) {
|
|
36
|
+
if (!(total > 0)) return 0;
|
|
37
|
+
return clamp(value / total * 100, 0, 100);
|
|
38
|
+
}
|
|
39
|
+
/** A count of completed items out of `total`, in `0…total`. */
|
|
40
|
+
function progressOf(index, total) {
|
|
41
|
+
if (!(total > 0)) return 0;
|
|
42
|
+
return Math.floor(clamp(index, 0, total));
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { at, clamp, indexIn, pct, progressOf, take };
|