@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,144 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { bareControlClasses, controlGroupFocusClasses, controlSurface } from "../forms/_chassis.js";
|
|
4
|
+
import { Button } from "../primitives/button.js";
|
|
5
|
+
import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/chat/composer.tsx
|
|
9
|
+
/** How tall the box may grow before it starts scrolling instead. */
|
|
10
|
+
const DEFAULT_MAX_ROWS = 8;
|
|
11
|
+
/**
|
|
12
|
+
* The thing you type into: an auto-growing textarea, a send affordance, and
|
|
13
|
+
* slots for everything a host wants to hang off them.
|
|
14
|
+
*
|
|
15
|
+
* Three decisions worth stating:
|
|
16
|
+
*
|
|
17
|
+
* - **It grows, it does not scroll.** A one-line box that hides the second half
|
|
18
|
+
* of what you wrote is the most-complained-about part of every chat UI. The
|
|
19
|
+
* box starts at the tall control rung and grows to `maxRows` before it gives
|
|
20
|
+
* up and scrolls.
|
|
21
|
+
* - **The submit gesture is a setting.** Enter-to-send is right for a chat lane
|
|
22
|
+
* and wrong for a prompt editor where every draft is three paragraphs, so
|
|
23
|
+
* both are first-class and the *other* key always inserts a newline.
|
|
24
|
+
* - **Stop is never disabled.** While a run is in flight the composer is
|
|
25
|
+
* `disabled`, but the button that ends the run cannot inherit that — a stop
|
|
26
|
+
* you cannot press is not a stop.
|
|
27
|
+
*
|
|
28
|
+
* The ref lands on the textarea rather than the form: focusing the composer is
|
|
29
|
+
* the thing hosts actually reach for.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* <Composer onSend={send} />
|
|
33
|
+
* @example
|
|
34
|
+
* <Composer submitKey="mod+enter" busy={running} onStop={abort} onSend={send} />
|
|
35
|
+
*/
|
|
36
|
+
const Composer = React.forwardRef(function Composer({ className, onSend, value: valueProp, defaultValue = "", onValueChange, placeholder = "Message", disabled = false, busy = false, onStop, submitKey = "enter", maxRows = DEFAULT_MAX_ROWS, sendLabel = "Send", stopLabel = "Stop", attachments, toolbar, hint, "aria-label": ariaLabel = "Message", ...elementProps }, ref) {
|
|
37
|
+
const isControlled = valueProp !== void 0;
|
|
38
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
|
|
39
|
+
const value = isControlled ? valueProp : uncontrolled;
|
|
40
|
+
const inputRef = React.useRef(null);
|
|
41
|
+
const setInputRef = React.useCallback((element) => {
|
|
42
|
+
inputRef.current = element;
|
|
43
|
+
if (typeof ref === "function") ref(element);
|
|
44
|
+
else if (ref !== null) ref.current = element;
|
|
45
|
+
}, [ref]);
|
|
46
|
+
useIsomorphicLayoutEffect(() => {
|
|
47
|
+
const element = inputRef.current;
|
|
48
|
+
if (element === null) return;
|
|
49
|
+
element.style.height = "auto";
|
|
50
|
+
const line = Number.parseFloat(getComputedStyle(element).lineHeight);
|
|
51
|
+
const cap = Number.isFinite(line) && line > 0 ? line * maxRows : Number.POSITIVE_INFINITY;
|
|
52
|
+
const content = element.scrollHeight;
|
|
53
|
+
if (content > 0) element.style.height = `${Math.min(content, cap)}px`;
|
|
54
|
+
else element.style.removeProperty("height");
|
|
55
|
+
element.style.overflowY = content > cap ? "auto" : "hidden";
|
|
56
|
+
}, [maxRows, value]);
|
|
57
|
+
const setValue = React.useCallback((next) => {
|
|
58
|
+
if (!isControlled) setUncontrolled(next);
|
|
59
|
+
onValueChange?.(next);
|
|
60
|
+
}, [isControlled, onValueChange]);
|
|
61
|
+
const ready = value.trim().length > 0;
|
|
62
|
+
const submit = React.useCallback(() => {
|
|
63
|
+
if (disabled || !ready) return;
|
|
64
|
+
onSend(value.trim());
|
|
65
|
+
if (!isControlled) setUncontrolled("");
|
|
66
|
+
}, [
|
|
67
|
+
disabled,
|
|
68
|
+
isControlled,
|
|
69
|
+
onSend,
|
|
70
|
+
ready,
|
|
71
|
+
value
|
|
72
|
+
]);
|
|
73
|
+
const onKeyDown = (event) => {
|
|
74
|
+
if (event.key !== "Enter" || event.nativeEvent.isComposing) return;
|
|
75
|
+
const withMod = event.metaKey || event.ctrlKey;
|
|
76
|
+
if (!(submitKey === "enter" ? !event.shiftKey && !withMod : withMod)) return;
|
|
77
|
+
event.preventDefault();
|
|
78
|
+
submit();
|
|
79
|
+
};
|
|
80
|
+
return /* @__PURE__ */ jsxs("form", {
|
|
81
|
+
"data-slot": "composer",
|
|
82
|
+
"data-busy": busy ? "" : void 0,
|
|
83
|
+
className: cn("flex min-w-0 flex-col gap-(--cue-space-2)", className),
|
|
84
|
+
onSubmit: (event) => {
|
|
85
|
+
event.preventDefault();
|
|
86
|
+
submit();
|
|
87
|
+
},
|
|
88
|
+
...elementProps,
|
|
89
|
+
children: [
|
|
90
|
+
attachments === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
91
|
+
"data-slot": "composer-attachments",
|
|
92
|
+
className: "flex min-w-0 flex-wrap items-center gap-(--cue-space-2)",
|
|
93
|
+
children: attachments
|
|
94
|
+
}),
|
|
95
|
+
/* @__PURE__ */ jsxs("div", {
|
|
96
|
+
"data-slot": "composer-field",
|
|
97
|
+
className: cn(controlSurface, controlGroupFocusClasses, "flex items-end gap-(--cue-space-3) p-(--cue-space-3)"),
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsx("textarea", {
|
|
100
|
+
ref: setInputRef,
|
|
101
|
+
rows: 1,
|
|
102
|
+
"data-slot": "composer-input",
|
|
103
|
+
"aria-label": ariaLabel,
|
|
104
|
+
placeholder,
|
|
105
|
+
disabled,
|
|
106
|
+
value,
|
|
107
|
+
className: cn(bareControlClasses, "min-h-control-lg resize-none self-stretch py-(--cue-space-2) text-(length:--cue-text-body) leading-(--cue-leading-ui)"),
|
|
108
|
+
onChange: (event) => setValue(event.target.value),
|
|
109
|
+
onKeyDown
|
|
110
|
+
}),
|
|
111
|
+
toolbar === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
112
|
+
"data-slot": "composer-toolbar",
|
|
113
|
+
className: "flex shrink-0 items-center gap-(--cue-space-2)",
|
|
114
|
+
children: toolbar
|
|
115
|
+
}),
|
|
116
|
+
busy && onStop !== void 0 ? /* @__PURE__ */ jsx(Button, {
|
|
117
|
+
type: "button",
|
|
118
|
+
variant: "outline",
|
|
119
|
+
size: "sm",
|
|
120
|
+
"data-slot": "composer-stop",
|
|
121
|
+
className: "shrink-0",
|
|
122
|
+
onClick: onStop,
|
|
123
|
+
children: stopLabel
|
|
124
|
+
}) : /* @__PURE__ */ jsx(Button, {
|
|
125
|
+
type: "submit",
|
|
126
|
+
variant: "primary",
|
|
127
|
+
size: "sm",
|
|
128
|
+
"data-slot": "composer-send",
|
|
129
|
+
className: "shrink-0",
|
|
130
|
+
disabled: disabled || !ready,
|
|
131
|
+
children: sendLabel
|
|
132
|
+
})
|
|
133
|
+
]
|
|
134
|
+
}),
|
|
135
|
+
hint === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
136
|
+
"data-slot": "composer-hint",
|
|
137
|
+
className: "flex min-w-0 items-center justify-between gap-(--cue-space-3) font-mono text-(length:--cue-text-micro) text-fg-subtle",
|
|
138
|
+
children: hint
|
|
139
|
+
})
|
|
140
|
+
]
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//#endregion
|
|
144
|
+
export { Composer };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/chat/delegation-card.d.ts
|
|
3
|
+
/** Which way the delegation runs relative to the lane you are reading. */
|
|
4
|
+
type DelegationDirection = "outbound" | "inbound";
|
|
5
|
+
/** Where the delegated work has got to. */
|
|
6
|
+
type DelegationStatus = "working" | "done" | "failed" | "idle";
|
|
7
|
+
interface DelegationCardProps extends Omit<React.ComponentPropsWithoutRef<"div">, "title" | "onToggle"> {
|
|
8
|
+
/** Slug of the agent on the other end of the delegation. */
|
|
9
|
+
agent: string;
|
|
10
|
+
/** Slug of the orchestrator, so its lane takes the theme accent. */
|
|
11
|
+
rootAgent?: string;
|
|
12
|
+
/** `outbound` (we asked them) or `inbound` (they asked us). Defaults to `"outbound"`. */
|
|
13
|
+
direction?: DelegationDirection;
|
|
14
|
+
/** What the delegate was asked to do — one line, already summarised. */
|
|
15
|
+
task?: React.ReactNode;
|
|
16
|
+
/** Where the work has got to. Omit to draw no status line at all. */
|
|
17
|
+
status?: DelegationStatus;
|
|
18
|
+
/** What the delegate is doing right now. Shown beside the spinner while `working`. */
|
|
19
|
+
activity?: React.ReactNode;
|
|
20
|
+
/** Open state when controlled. Pass with `onOpenChange`. */
|
|
21
|
+
open?: boolean;
|
|
22
|
+
/** Initial open state. Defaults to open for an inbound card, shut for an outbound one. */
|
|
23
|
+
defaultOpen?: boolean;
|
|
24
|
+
/** Called with the state the card is asking to move to. */
|
|
25
|
+
onOpenChange?: (open: boolean) => void;
|
|
26
|
+
/** What a finished delegation says. Defaults to `"Completed"`. */
|
|
27
|
+
doneLabel?: React.ReactNode;
|
|
28
|
+
/** What a failed delegation says. Defaults to `"Failed"`. */
|
|
29
|
+
failedLabel?: React.ReactNode;
|
|
30
|
+
/** The nested transcript. */
|
|
31
|
+
children?: React.ReactNode;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One delegation, folded into a card.
|
|
35
|
+
*
|
|
36
|
+
* A multi-agent run is a tree, and rendering it flat is what turns a transcript
|
|
37
|
+
* into noise: the reader loses which turns belong to which sub-agent and how
|
|
38
|
+
* deep they are. This is the fold — a one-line header naming who was asked and
|
|
39
|
+
* what for, a live status line under it, and the sub-agent's own transcript
|
|
40
|
+
* behind a disclosure, railed in that agent's colour so nesting is legible at a
|
|
41
|
+
* glance.
|
|
42
|
+
*
|
|
43
|
+
* The body is mounted and unmounted rather than height-animated. A delegation's
|
|
44
|
+
* transcript grows while it is open, and animating the height of something that
|
|
45
|
+
* changes size on its own is how a panel ends up permanently mid-transition.
|
|
46
|
+
*
|
|
47
|
+
* Direction matters to the sentence. From the caller's lane the card reads
|
|
48
|
+
* "asked researcher — …"; in the delegate's own lane it reads "chief asked
|
|
49
|
+
* — …", which is the same fact from the other side.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* <DelegationCard agent="researcher" task="find three references" status="working">
|
|
53
|
+
* {turns}
|
|
54
|
+
* </DelegationCard>
|
|
55
|
+
* @example
|
|
56
|
+
* <DelegationCard agent="chief" direction="inbound" task="draft the brief">{turns}</DelegationCard>
|
|
57
|
+
*/
|
|
58
|
+
declare const DelegationCard: React.ForwardRefExoticComponent<DelegationCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
59
|
+
//#endregion
|
|
60
|
+
export { DelegationCard, DelegationCardProps, DelegationDirection, DelegationStatus };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { agentColor } from "./agent-color.js";
|
|
4
|
+
import { CheckGlyph } from "./_glyphs.js";
|
|
5
|
+
import { Spinner } from "../primitives/spinner.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/chat/delegation-card.tsx
|
|
9
|
+
/**
|
|
10
|
+
* One delegation, folded into a card.
|
|
11
|
+
*
|
|
12
|
+
* A multi-agent run is a tree, and rendering it flat is what turns a transcript
|
|
13
|
+
* into noise: the reader loses which turns belong to which sub-agent and how
|
|
14
|
+
* deep they are. This is the fold — a one-line header naming who was asked and
|
|
15
|
+
* what for, a live status line under it, and the sub-agent's own transcript
|
|
16
|
+
* behind a disclosure, railed in that agent's colour so nesting is legible at a
|
|
17
|
+
* glance.
|
|
18
|
+
*
|
|
19
|
+
* The body is mounted and unmounted rather than height-animated. A delegation's
|
|
20
|
+
* transcript grows while it is open, and animating the height of something that
|
|
21
|
+
* changes size on its own is how a panel ends up permanently mid-transition.
|
|
22
|
+
*
|
|
23
|
+
* Direction matters to the sentence. From the caller's lane the card reads
|
|
24
|
+
* "asked researcher — …"; in the delegate's own lane it reads "chief asked
|
|
25
|
+
* — …", which is the same fact from the other side.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* <DelegationCard agent="researcher" task="find three references" status="working">
|
|
29
|
+
* {turns}
|
|
30
|
+
* </DelegationCard>
|
|
31
|
+
* @example
|
|
32
|
+
* <DelegationCard agent="chief" direction="inbound" task="draft the brief">{turns}</DelegationCard>
|
|
33
|
+
*/
|
|
34
|
+
const DelegationCard = React.forwardRef(function DelegationCard({ className, agent, rootAgent, direction = "outbound", task, status, activity, open: openProp, defaultOpen, onOpenChange, doneLabel = "Completed", failedLabel = "Failed", children, style, ...elementProps }, ref) {
|
|
35
|
+
const bodyId = React.useId();
|
|
36
|
+
const isControlled = openProp !== void 0;
|
|
37
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultOpen ?? direction === "inbound");
|
|
38
|
+
const open = isControlled ? openProp : uncontrolled;
|
|
39
|
+
const toggle = () => {
|
|
40
|
+
const next = !open;
|
|
41
|
+
if (!isControlled) setUncontrolled(next);
|
|
42
|
+
onOpenChange?.(next);
|
|
43
|
+
};
|
|
44
|
+
const color = agentColor(agent, { root: rootAgent });
|
|
45
|
+
const name = /* @__PURE__ */ jsx("span", {
|
|
46
|
+
className: "text-(--agent-color)",
|
|
47
|
+
children: agent
|
|
48
|
+
});
|
|
49
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
50
|
+
ref,
|
|
51
|
+
"data-slot": "delegation-card",
|
|
52
|
+
"data-direction": direction,
|
|
53
|
+
"data-state": open ? "open" : "closed",
|
|
54
|
+
"data-status": status,
|
|
55
|
+
className: cn("flex min-w-0 flex-col gap-(--cue-space-2) rounded-(--radius-control) border border-border px-(--cue-space-3) py-(--cue-space-2)", className),
|
|
56
|
+
style: {
|
|
57
|
+
"--agent-color": color,
|
|
58
|
+
...style
|
|
59
|
+
},
|
|
60
|
+
...elementProps,
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsxs("button", {
|
|
63
|
+
type: "button",
|
|
64
|
+
"data-slot": "delegation-card-trigger",
|
|
65
|
+
"aria-expanded": open,
|
|
66
|
+
"aria-controls": open ? bodyId : void 0,
|
|
67
|
+
className: "flex min-w-0 cursor-pointer items-center gap-(--cue-space-2) border-0 bg-transparent p-0 text-start font-mono text-(length:--cue-text-ui) text-fg-muted outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent",
|
|
68
|
+
onClick: toggle,
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ jsx("span", {
|
|
71
|
+
"aria-hidden": "true",
|
|
72
|
+
"data-slot": "delegation-card-caret",
|
|
73
|
+
className: "shrink-0 text-(length:--cue-text-micro) leading-none select-none",
|
|
74
|
+
children: open ? "▾" : "▸"
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ jsx("span", {
|
|
77
|
+
"aria-hidden": "true",
|
|
78
|
+
className: "shrink-0 text-(--agent-color)",
|
|
79
|
+
children: "●"
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ jsxs("span", {
|
|
82
|
+
"data-slot": "delegation-card-title",
|
|
83
|
+
className: "min-w-0 truncate",
|
|
84
|
+
children: [direction === "inbound" ? /* @__PURE__ */ jsxs(Fragment, { children: [name, " asked"] }) : /* @__PURE__ */ jsxs(Fragment, { children: ["asked ", name] }), task === void 0 ? null : /* @__PURE__ */ jsxs("span", {
|
|
85
|
+
className: "text-fg-subtle",
|
|
86
|
+
children: [" — ", task]
|
|
87
|
+
})]
|
|
88
|
+
})
|
|
89
|
+
]
|
|
90
|
+
}),
|
|
91
|
+
status === void 0 ? null : /* @__PURE__ */ jsxs("div", {
|
|
92
|
+
"data-slot": "delegation-card-status",
|
|
93
|
+
"data-status": status,
|
|
94
|
+
className: cn("flex min-w-0 items-center gap-(--cue-space-2) ps-(--cue-space-5) font-mono text-(length:--cue-text-micro)", status === "failed" ? "text-danger" : "text-fg-subtle"),
|
|
95
|
+
children: [
|
|
96
|
+
status === "working" ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Spinner, {
|
|
97
|
+
size: "sm",
|
|
98
|
+
label: "working",
|
|
99
|
+
"data-slot": "delegation-card-spinner",
|
|
100
|
+
className: "text-(--agent-color)"
|
|
101
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
102
|
+
className: "min-w-0 truncate",
|
|
103
|
+
children: activity ?? "working…"
|
|
104
|
+
})] }) : null,
|
|
105
|
+
status === "done" ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CheckGlyph, { className: "size-icon-sm shrink-0 text-ok" }), /* @__PURE__ */ jsx("span", {
|
|
106
|
+
className: "min-w-0 truncate",
|
|
107
|
+
children: doneLabel
|
|
108
|
+
})] }) : null,
|
|
109
|
+
status === "failed" ? /* @__PURE__ */ jsx("span", {
|
|
110
|
+
className: "min-w-0 truncate",
|
|
111
|
+
children: failedLabel
|
|
112
|
+
}) : null,
|
|
113
|
+
status === "idle" ? /* @__PURE__ */ jsx("span", {
|
|
114
|
+
className: "min-w-0 truncate",
|
|
115
|
+
children: activity ?? "waiting"
|
|
116
|
+
}) : null
|
|
117
|
+
]
|
|
118
|
+
}),
|
|
119
|
+
open ? /* @__PURE__ */ jsx("div", {
|
|
120
|
+
id: bodyId,
|
|
121
|
+
"data-slot": "delegation-card-body",
|
|
122
|
+
className: "ms-(--cue-space-3) flex min-w-0 flex-col gap-(--cue-space-2) border-s-2 [border-inline-start-color:var(--agent-color)] ps-(--cue-space-4)",
|
|
123
|
+
children
|
|
124
|
+
}) : null
|
|
125
|
+
]
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
//#endregion
|
|
129
|
+
export { DelegationCard };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AskAnswer, AskBox, AskBoxProps, AskDanger, AskKind, AskOption } from "./ask-box.js";
|
|
2
|
+
import { Message, MessageProps, MessageRole } from "./message.js";
|
|
3
|
+
import { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, AgentColorOptions, agentColor, agentColorStyle } from "./agent-color.js";
|
|
4
|
+
import { AgentPile, AgentPileEntry, AgentPileProps, AgentPileSize } from "./agent-pile.js";
|
|
5
|
+
import { Composer, ComposerProps, ComposerSubmitKey } from "./composer.js";
|
|
6
|
+
import { DelegationCard, DelegationCardProps, DelegationDirection, DelegationStatus } from "./delegation-card.js";
|
|
7
|
+
import { MessageList, MessageListProps } from "./message-list.js";
|
|
8
|
+
export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, type AgentColorOptions, AgentPile, type AgentPileEntry, type AgentPileProps, type AgentPileSize, type AskAnswer, AskBox, type AskBoxProps, type AskDanger, type AskKind, type AskOption, Composer, type ComposerProps, type ComposerSubmitKey, DelegationCard, type DelegationCardProps, type DelegationDirection, type DelegationStatus, Message, MessageList, type MessageListProps, type MessageProps, type MessageRole, agentColor, agentColorStyle };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, agentColor, agentColorStyle } from "./agent-color.js";
|
|
2
|
+
import { AgentPile } from "./agent-pile.js";
|
|
3
|
+
import { AskBox } from "./ask-box.js";
|
|
4
|
+
import { Composer } from "./composer.js";
|
|
5
|
+
import { DelegationCard } from "./delegation-card.js";
|
|
6
|
+
import { Message } from "./message.js";
|
|
7
|
+
import { MessageList } from "./message-list.js";
|
|
8
|
+
export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, AgentPile, AskBox, Composer, DelegationCard, Message, MessageList, agentColor, agentColorStyle };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/chat/message-list.d.ts
|
|
3
|
+
interface MessageListProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onScroll"> {
|
|
4
|
+
/** The turns, oldest first — normally {@link Message}s. */
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
/** Stick to the bottom as turns arrive. Defaults to `true`. */
|
|
7
|
+
follow?: boolean;
|
|
8
|
+
/** Fixed height in px at the 16px root, emitted as rem. Omit to fill the parent. */
|
|
9
|
+
height?: number;
|
|
10
|
+
/** Label on the catch-up pill. Defaults to `"Jump to latest"`. */
|
|
11
|
+
jumpLabel?: React.ReactNode;
|
|
12
|
+
/** What to say before the first turn. Defaults to `"No messages yet"`. */
|
|
13
|
+
emptyLabel?: React.ReactNode;
|
|
14
|
+
/** Accessible name for the transcript. Required in practice — name the thread. */
|
|
15
|
+
"aria-label"?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The transcript scroller: sticks to the bottom, and stops fighting you the
|
|
19
|
+
* moment you scroll up.
|
|
20
|
+
*
|
|
21
|
+
* Following is a *mode*, not a scroll position. While pinned to the bottom the
|
|
22
|
+
* view follows new turns; scroll up to read something and it lets go and offers
|
|
23
|
+
* a "jump to latest" pill instead — because a stream that yanks the viewport
|
|
24
|
+
* mid-sentence is the single most common reason people stop reading a chat
|
|
25
|
+
* pane. Coming back to the bottom re-arms it.
|
|
26
|
+
*
|
|
27
|
+
* It follows a turn that is still growing, too — the items container is watched
|
|
28
|
+
* for growth, so a streaming bubble keeps the bottom in view without the host
|
|
29
|
+
* adding anything, while something merely collapsing leaves the view alone. And
|
|
30
|
+
* when you have scrolled up, a turn that grows offers the pill instead of
|
|
31
|
+
* pulling you down.
|
|
32
|
+
*
|
|
33
|
+
* Deliberately **not** virtualised. A virtualiser needs a measurable row height
|
|
34
|
+
* and chat turns are variable-height by nature; the cost of getting that wrong
|
|
35
|
+
* (jumping scrollbars) is worse than the cost of a few hundred DOM nodes. When
|
|
36
|
+
* a thread really is unbounded, page it — do not virtualise it.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* <MessageList aria-label="Thread" height={480}>
|
|
40
|
+
* {turns.map((t) => <Message key={t.id} agent={t.agent}>{t.text}</Message>)}
|
|
41
|
+
* </MessageList>
|
|
42
|
+
*/
|
|
43
|
+
declare const MessageList: React.ForwardRefExoticComponent<MessageListProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { MessageList, MessageListProps };
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { ChevronDownGlyph } from "./_glyphs.js";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/chat/message-list.tsx
|
|
8
|
+
/** Slack, in px, for "close enough to the bottom to count as pinned". */
|
|
9
|
+
const BOTTOM_TOLERANCE = 8;
|
|
10
|
+
/** The reference root font size a `height` prop is quoted against. */
|
|
11
|
+
const ROOT_PX = 16;
|
|
12
|
+
/**
|
|
13
|
+
* The transcript scroller: sticks to the bottom, and stops fighting you the
|
|
14
|
+
* moment you scroll up.
|
|
15
|
+
*
|
|
16
|
+
* Following is a *mode*, not a scroll position. While pinned to the bottom the
|
|
17
|
+
* view follows new turns; scroll up to read something and it lets go and offers
|
|
18
|
+
* a "jump to latest" pill instead — because a stream that yanks the viewport
|
|
19
|
+
* mid-sentence is the single most common reason people stop reading a chat
|
|
20
|
+
* pane. Coming back to the bottom re-arms it.
|
|
21
|
+
*
|
|
22
|
+
* It follows a turn that is still growing, too — the items container is watched
|
|
23
|
+
* for growth, so a streaming bubble keeps the bottom in view without the host
|
|
24
|
+
* adding anything, while something merely collapsing leaves the view alone. And
|
|
25
|
+
* when you have scrolled up, a turn that grows offers the pill instead of
|
|
26
|
+
* pulling you down.
|
|
27
|
+
*
|
|
28
|
+
* Deliberately **not** virtualised. A virtualiser needs a measurable row height
|
|
29
|
+
* and chat turns are variable-height by nature; the cost of getting that wrong
|
|
30
|
+
* (jumping scrollbars) is worse than the cost of a few hundred DOM nodes. When
|
|
31
|
+
* a thread really is unbounded, page it — do not virtualise it.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* <MessageList aria-label="Thread" height={480}>
|
|
35
|
+
* {turns.map((t) => <Message key={t.id} agent={t.agent}>{t.text}</Message>)}
|
|
36
|
+
* </MessageList>
|
|
37
|
+
*/
|
|
38
|
+
const MessageList = React.forwardRef(function MessageList({ className, children, follow = true, height, jumpLabel = "Jump to latest", emptyLabel = "No messages yet", "aria-label": ariaLabel, style, ...elementProps }, ref) {
|
|
39
|
+
const scrollerRef = React.useRef(null);
|
|
40
|
+
const itemsRef = React.useRef(null);
|
|
41
|
+
const [pinned, setPinned] = React.useState(true);
|
|
42
|
+
const [behind, setBehind] = React.useState(false);
|
|
43
|
+
const lastHeightRef = React.useRef(0);
|
|
44
|
+
const count = React.Children.count(children);
|
|
45
|
+
const isEmpty = count === 0;
|
|
46
|
+
const previousCountRef = React.useRef(count);
|
|
47
|
+
const jumpToLatest = React.useCallback(() => {
|
|
48
|
+
const element = scrollerRef.current;
|
|
49
|
+
if (element === null) return;
|
|
50
|
+
element.scrollTop = element.scrollHeight;
|
|
51
|
+
setPinned(true);
|
|
52
|
+
setBehind(false);
|
|
53
|
+
}, []);
|
|
54
|
+
useIsomorphicLayoutEffect(() => {
|
|
55
|
+
const element = scrollerRef.current;
|
|
56
|
+
const added = count - previousCountRef.current;
|
|
57
|
+
previousCountRef.current = count;
|
|
58
|
+
if (element === null) return;
|
|
59
|
+
if (follow && pinned) {
|
|
60
|
+
element.scrollTop = element.scrollHeight;
|
|
61
|
+
setBehind(false);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (added > 0) setBehind(true);
|
|
65
|
+
}, [
|
|
66
|
+
count,
|
|
67
|
+
follow,
|
|
68
|
+
pinned
|
|
69
|
+
]);
|
|
70
|
+
React.useEffect(() => {
|
|
71
|
+
const element = scrollerRef.current;
|
|
72
|
+
const items = itemsRef.current;
|
|
73
|
+
if (items === null) lastHeightRef.current = 0;
|
|
74
|
+
if (element === null || items === null || typeof ResizeObserver === "undefined") return;
|
|
75
|
+
const observer = new ResizeObserver((entries) => {
|
|
76
|
+
const entry = entries[0];
|
|
77
|
+
if (entry === void 0) return;
|
|
78
|
+
const height = entry.contentRect?.height ?? entry.target.getBoundingClientRect().height;
|
|
79
|
+
const grew = height > lastHeightRef.current;
|
|
80
|
+
lastHeightRef.current = height;
|
|
81
|
+
if (!grew) return;
|
|
82
|
+
if (follow && pinned) {
|
|
83
|
+
element.scrollTop = element.scrollHeight;
|
|
84
|
+
setBehind(false);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
setBehind(true);
|
|
88
|
+
});
|
|
89
|
+
observer.observe(items);
|
|
90
|
+
return () => observer.disconnect();
|
|
91
|
+
}, [
|
|
92
|
+
follow,
|
|
93
|
+
pinned,
|
|
94
|
+
isEmpty
|
|
95
|
+
]);
|
|
96
|
+
const onScroll = React.useCallback(() => {
|
|
97
|
+
const element = scrollerRef.current;
|
|
98
|
+
if (element === null) return;
|
|
99
|
+
const atBottom = element.scrollHeight - element.scrollTop - element.clientHeight <= BOTTOM_TOLERANCE;
|
|
100
|
+
setPinned(atBottom);
|
|
101
|
+
if (atBottom) setBehind(false);
|
|
102
|
+
}, []);
|
|
103
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
104
|
+
ref,
|
|
105
|
+
"data-slot": "message-list",
|
|
106
|
+
"data-pinned": String(pinned),
|
|
107
|
+
className: cn("relative flex min-h-0 min-w-0 flex-col overflow-hidden", className),
|
|
108
|
+
style: height === void 0 ? style : {
|
|
109
|
+
height: `${height / ROOT_PX}rem`,
|
|
110
|
+
...style
|
|
111
|
+
},
|
|
112
|
+
...elementProps,
|
|
113
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
114
|
+
ref: scrollerRef,
|
|
115
|
+
role: "log",
|
|
116
|
+
"aria-label": ariaLabel,
|
|
117
|
+
tabIndex: 0,
|
|
118
|
+
"data-slot": "message-list-scroller",
|
|
119
|
+
className: "min-h-0 flex-1 overflow-y-auto outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent",
|
|
120
|
+
onScroll,
|
|
121
|
+
children: count === 0 ? /* @__PURE__ */ jsx("div", {
|
|
122
|
+
"data-slot": "message-list-empty",
|
|
123
|
+
className: "flex h-full items-center justify-center p-(--cue-space-6) font-mono text-(length:--cue-text-ui) text-fg-subtle",
|
|
124
|
+
children: emptyLabel
|
|
125
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
126
|
+
ref: itemsRef,
|
|
127
|
+
"data-slot": "message-list-items",
|
|
128
|
+
className: "flex min-w-0 flex-col items-stretch gap-(--cue-space-4) p-(--cue-space-4)",
|
|
129
|
+
children
|
|
130
|
+
})
|
|
131
|
+
}), behind ? /* @__PURE__ */ jsxs("button", {
|
|
132
|
+
type: "button",
|
|
133
|
+
"data-slot": "message-list-jump",
|
|
134
|
+
className: "absolute bottom-(--cue-space-4) left-1/2 flex -translate-x-1/2 cursor-pointer items-center gap-(--cue-space-2) rounded-(--radius-control) border border-border-overlay bg-surface-2 px-(--cue-space-4) py-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg shadow-[0_8px_24px_rgba(0,0,0,0.4)] outline-none hover:border-accent hover:text-accent focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent",
|
|
135
|
+
onClick: jumpToLatest,
|
|
136
|
+
children: [/* @__PURE__ */ jsx(ChevronDownGlyph, { className: "size-icon-sm" }), jumpLabel]
|
|
137
|
+
}) : null]
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
//#endregion
|
|
141
|
+
export { MessageList };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/chat/message.d.ts
|
|
3
|
+
/** Who is speaking. Drives the fill, the alignment and which corner the tail is on. */
|
|
4
|
+
type MessageRole = "user" | "agent" | "system";
|
|
5
|
+
interface MessageProps extends Omit<React.ComponentPropsWithoutRef<"div">, "role"> {
|
|
6
|
+
/** Who is speaking. Defaults to `"agent"`. */
|
|
7
|
+
role?: MessageRole;
|
|
8
|
+
/**
|
|
9
|
+
* The speaking agent's slug. Names the turn and inks the author line and the
|
|
10
|
+
* `--agent-color` custom property, which anything nested reads.
|
|
11
|
+
*/
|
|
12
|
+
agent?: string;
|
|
13
|
+
/** Slug of the orchestrator, so its turns take the theme accent. */
|
|
14
|
+
rootAgent?: string;
|
|
15
|
+
/** Author line override. Defaults to `"You"` for the user and to `agent` otherwise. */
|
|
16
|
+
author?: React.ReactNode;
|
|
17
|
+
/** Rendered opposite the author — pass a formatted time, not a `Date`. */
|
|
18
|
+
timestamp?: React.ReactNode;
|
|
19
|
+
/** The turn is still streaming: shows a caret and announces it. */
|
|
20
|
+
pending?: boolean;
|
|
21
|
+
/** Slot under the body — attachments, warnings, retry actions. */
|
|
22
|
+
footer?: React.ReactNode;
|
|
23
|
+
/** The turn itself. */
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One turn in a conversation.
|
|
28
|
+
*
|
|
29
|
+
* Content is rendered as React nodes, verbatim: there is no markdown or HTML
|
|
30
|
+
* path here on purpose. Model output is untrusted text, and a component that
|
|
31
|
+
* quietly parsed it would make every consumer of this library one prompt away
|
|
32
|
+
* from an injection. Callers that want rich text pass their own renderer as
|
|
33
|
+
* children and own that decision.
|
|
34
|
+
*
|
|
35
|
+
* The author line is mono micro and inked in the agent's own colour, so a
|
|
36
|
+
* multi-agent thread is scannable by hue before it is readable by name.
|
|
37
|
+
*
|
|
38
|
+
* Static markup — no `"use client"`; a transcript renders on the server.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* <Message agent="researcher" timestamp="14:02">Found three references.</Message>
|
|
42
|
+
* @example
|
|
43
|
+
* <Message role="user">Patch universe 3.</Message>
|
|
44
|
+
*/
|
|
45
|
+
declare const Message: React.ForwardRefExoticComponent<MessageProps & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { Message, MessageProps, MessageRole };
|