@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,230 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/elements/live-region-announcer.tsx
|
|
6
|
+
/**
|
|
7
|
+
* The mounted announcers, and everyone who wants to know about them.
|
|
8
|
+
*
|
|
9
|
+
* This exists because two elements in this family are live regions and a
|
|
10
|
+
* console that mounts both — the obvious composition — had every state spoken
|
|
11
|
+
* twice: once by `TailStatus`, whose row is a `role="status"`, and once by the
|
|
12
|
+
* queue below, whose {@link ANNOUNCEMENTS} table covers the same transitions.
|
|
13
|
+
* Two polite regions saying the same sentence is not redundancy a reader can
|
|
14
|
+
* ignore; it is the transcript read out twice, out of step, because the two
|
|
15
|
+
* regions update at different moments.
|
|
16
|
+
*
|
|
17
|
+
* The contract is that **the announcer is the speech channel and the tail row
|
|
18
|
+
* is a picture of the run**, so the row is what goes quiet. Not the other way
|
|
19
|
+
* round, for three reasons: this region covers nine transitions the row can
|
|
20
|
+
* never show (an error, a permission request, a finished answer); it is mounted
|
|
21
|
+
* empty and stays mounted, which is the only way a live region is reliably
|
|
22
|
+
* announced at all, while a tail row comes and goes with the run; and its whole
|
|
23
|
+
* mechanism — spacing, depth, the pause rules — exists because narration that
|
|
24
|
+
* changes several times a second is unusable when it is spoken. A row that
|
|
25
|
+
* narrates at that rate is exactly what this was built to stand in front of.
|
|
26
|
+
*
|
|
27
|
+
* Module state rather than React context, deliberately. Context would need a
|
|
28
|
+
* provider above both elements, and the composition that has the bug — an
|
|
29
|
+
* announcer and a tail row as siblings, neither knowing about the other — is
|
|
30
|
+
* the one that would not have it. The cost is that this is per *module
|
|
31
|
+
* instance*, not per React root: two independent consoles on one page share the
|
|
32
|
+
* count, and the second one's row would go quiet because the first one's
|
|
33
|
+
* announcer is mounted. That is what {@link TailStatusProps.announce} is for —
|
|
34
|
+
* an explicit answer always wins over this one.
|
|
35
|
+
*/
|
|
36
|
+
const speakers = { announcers: 0 };
|
|
37
|
+
/** Everyone rendering against {@link speakers}. */
|
|
38
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
39
|
+
/** Subscribe to mounts and unmounts, for `useSyncExternalStore`. */
|
|
40
|
+
function subscribeToAnnouncers(onChange) {
|
|
41
|
+
listeners.add(onChange);
|
|
42
|
+
return () => {
|
|
43
|
+
listeners.delete(onChange);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const countAnnouncers = () => speakers.announcers;
|
|
47
|
+
/**
|
|
48
|
+
* On the server there is nobody to announce anything and no effect has run, so
|
|
49
|
+
* the answer is zero — which is also what the client's first render sees, since
|
|
50
|
+
* registration happens in an effect. Hydration matches, and the row flips to
|
|
51
|
+
* quiet in the same commit that mounts the announcer.
|
|
52
|
+
*/
|
|
53
|
+
const noAnnouncers = () => 0;
|
|
54
|
+
/** Take a place among the speakers, and give it back. */
|
|
55
|
+
function claimAnnouncer() {
|
|
56
|
+
speakers.announcers += 1;
|
|
57
|
+
for (const listener of listeners) listener();
|
|
58
|
+
return () => {
|
|
59
|
+
speakers.announcers -= 1;
|
|
60
|
+
for (const listener of listeners) listener();
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Whether the page is out of sight, asked of the document rather than
|
|
65
|
+
* remembered from an effect.
|
|
66
|
+
*
|
|
67
|
+
* The difference is the whole of the pause rule. A mount effect that reads
|
|
68
|
+
* `visibilityState` into state cannot be read back until the render after it,
|
|
69
|
+
* so every other effect in that same flush — including the one that pumps the
|
|
70
|
+
* queue — runs against `false` and the announcer spends a message before it has
|
|
71
|
+
* learned where it is. A session restored into a background tab would read its
|
|
72
|
+
* backlog out over whatever the reader is doing in the foreground, which is the
|
|
73
|
+
* one moment this rule exists for.
|
|
74
|
+
*/
|
|
75
|
+
const pageHidden = () => typeof document !== "undefined" && document.visibilityState === "hidden";
|
|
76
|
+
/**
|
|
77
|
+
* On the server nothing is on anybody's screen, so the answer is `false` — and
|
|
78
|
+
* it is the answer a hydrating client has to give too, or the markup it renders
|
|
79
|
+
* and the markup it was handed disagree. The gate below does not wait for that
|
|
80
|
+
* to settle; it asks {@link pageHidden} itself.
|
|
81
|
+
*/
|
|
82
|
+
const pageShown = () => false;
|
|
83
|
+
/** Subscribe to the tab going out of sight and coming back. */
|
|
84
|
+
function subscribeToVisibility(onChange) {
|
|
85
|
+
if (typeof document === "undefined") return () => {};
|
|
86
|
+
document.addEventListener("visibilitychange", onChange);
|
|
87
|
+
return () => document.removeEventListener("visibilitychange", onChange);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Whether a {@link LiveRegionAnnouncer} is mounted and will do the speaking.
|
|
91
|
+
*
|
|
92
|
+
* The hook behind this family's one-speaker rule: an announcer and a
|
|
93
|
+
* `TailStatus` in the same console would otherwise narrate the same run twice,
|
|
94
|
+
* so the row asks this and goes quiet. Exported because a console with a status
|
|
95
|
+
* row of its own owes a reader the same courtesy — ask before becoming a second
|
|
96
|
+
* live region.
|
|
97
|
+
*
|
|
98
|
+
* @returns `true` while at least one announcer is mounted anywhere in the page.
|
|
99
|
+
* @example
|
|
100
|
+
* const spokenFor = useAnnouncerPresent();
|
|
101
|
+
* <div role={spokenFor ? undefined : "status"}>{action}</div>
|
|
102
|
+
*/
|
|
103
|
+
function useAnnouncerPresent() {
|
|
104
|
+
return React.useSyncExternalStore(subscribeToAnnouncers, countAnnouncers, noAnnouncers) > 0;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* One polite region, and a queue that makes it audible.
|
|
108
|
+
*
|
|
109
|
+
* The element in this family with no visual design at all, and the one that
|
|
110
|
+
* decides whether the rest of it can be used without a screen. An agent
|
|
111
|
+
* transcript is a stream of state changes, and the naive wiring — an
|
|
112
|
+
* `aria-live` region bound to the current status — announces almost none of
|
|
113
|
+
* them: polite announcements replace each other, so a region updated four times
|
|
114
|
+
* a second speaks once and swallows the rest.
|
|
115
|
+
*
|
|
116
|
+
* So this is a queue with four rules, all of them the reference's:
|
|
117
|
+
*
|
|
118
|
+
* - **Spacing.** One announcement every `spacing` milliseconds, so each is
|
|
119
|
+
* spoken instead of overwritten.
|
|
120
|
+
* - **Depth, oldest dropped.** A backlog behind a busy run is history; the
|
|
121
|
+
* newest five are what a reader needs.
|
|
122
|
+
* - **Paused while the page is hidden**, so a background tab does not read a
|
|
123
|
+
* run out over whatever the reader is actually doing, and paused on demand
|
|
124
|
+
* through `paused` while a modal has their attention. Both are in force from
|
|
125
|
+
* the first render rather than the first effect, so an announcer mounted into
|
|
126
|
+
* a hidden tab with a backlog does not spend a line of it learning where it
|
|
127
|
+
* is.
|
|
128
|
+
* - **The trailing space.** A screen reader ignores a live region set to the
|
|
129
|
+
* text it already holds; the same message twice is announced twice by
|
|
130
|
+
* appending a space to the second, which changes the string without changing
|
|
131
|
+
* a word of it.
|
|
132
|
+
*
|
|
133
|
+
* The region itself is mounted empty and stays mounted. A live region added to
|
|
134
|
+
* the document at the same moment as its text is a region most assistive
|
|
135
|
+
* technologies never announce, which is the most common way this fails in
|
|
136
|
+
* practice.
|
|
137
|
+
*
|
|
138
|
+
* What to say is the caller's: {@link ANNOUNCEMENTS} carries the nine
|
|
139
|
+
* transitions the study found announced, as templates a console can extend or
|
|
140
|
+
* translate.
|
|
141
|
+
*
|
|
142
|
+
* **It is the surface's one speaker.** `TailStatus` is a `role="status"` too,
|
|
143
|
+
* and a console that mounts both — which is the ordinary shape of an agent
|
|
144
|
+
* console — would have every state read out twice. So mounting this hands the
|
|
145
|
+
* speaking to it: a `TailStatus` anywhere on the page notices (through
|
|
146
|
+
* {@link useAnnouncerPresent}) and renders as an ordinary row, keeping its words
|
|
147
|
+
* on the screen and taking them out of the accessibility tree. Feed this the
|
|
148
|
+
* transitions that row would have narrated, or set `announce` on the row to
|
|
149
|
+
* decide the other way.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* import { ANNOUNCEMENTS, LiveRegionAnnouncer } from "@cueplusplus/ui/elements";
|
|
153
|
+
*
|
|
154
|
+
* // One per surface, mounted for the life of the transcript.
|
|
155
|
+
* <LiveRegionAnnouncer messages={log} paused={dialogOpen} />
|
|
156
|
+
* @example
|
|
157
|
+
* // Composed with the transcript's live row: the row draws, this one speaks.
|
|
158
|
+
* <>
|
|
159
|
+
* <TailStatus action={TAIL_ACTIONS.searchingCode} detail="composer.tsx" />
|
|
160
|
+
* <LiveRegionAnnouncer messages={log} />
|
|
161
|
+
* </>
|
|
162
|
+
* @example
|
|
163
|
+
* // The log is a caller's append-only list of what happened.
|
|
164
|
+
* setLog((was) => [...was, ANNOUNCEMENTS.working]);
|
|
165
|
+
*/
|
|
166
|
+
const LiveRegionAnnouncer = React.forwardRef(function LiveRegionAnnouncer({ messages, spacing = 400, depth = 5, paused = false, announceOnMount = false, className, ...elementProps }, ref) {
|
|
167
|
+
const [spoken, setSpoken] = React.useState("");
|
|
168
|
+
const hidden = React.useSyncExternalStore(subscribeToVisibility, pageHidden, pageShown);
|
|
169
|
+
const queue = React.useRef([]);
|
|
170
|
+
const seen = React.useRef(announceOnMount ? 0 : messages.length);
|
|
171
|
+
const timer = React.useRef(null);
|
|
172
|
+
const held = React.useRef(paused || pageHidden());
|
|
173
|
+
const halted = paused || hidden;
|
|
174
|
+
/**
|
|
175
|
+
* Speak the head of the queue, then hold the region for `spacing` before
|
|
176
|
+
* looking again. A pump that is already inside its gap does nothing: the
|
|
177
|
+
* timeout's own tail is what drains the rest.
|
|
178
|
+
*/
|
|
179
|
+
const pump = React.useCallback(() => {
|
|
180
|
+
if (timer.current !== null || held.current) return;
|
|
181
|
+
const next = queue.current.shift();
|
|
182
|
+
if (next === void 0) return;
|
|
183
|
+
setSpoken((was) => was === next ? `${next} ` : next);
|
|
184
|
+
timer.current = setTimeout(() => {
|
|
185
|
+
timer.current = null;
|
|
186
|
+
pump();
|
|
187
|
+
}, Math.max(0, spacing));
|
|
188
|
+
}, [spacing]);
|
|
189
|
+
React.useEffect(() => claimAnnouncer(), []);
|
|
190
|
+
React.useEffect(() => {
|
|
191
|
+
held.current = paused || pageHidden();
|
|
192
|
+
if (!held.current) pump();
|
|
193
|
+
}, [
|
|
194
|
+
hidden,
|
|
195
|
+
paused,
|
|
196
|
+
pump
|
|
197
|
+
]);
|
|
198
|
+
React.useEffect(() => {
|
|
199
|
+
if (messages.length < seen.current) {
|
|
200
|
+
seen.current = messages.length;
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (messages.length === seen.current) return;
|
|
204
|
+
const arrived = messages.slice(seen.current);
|
|
205
|
+
seen.current = messages.length;
|
|
206
|
+
queue.current = [...queue.current, ...arrived].slice(-Math.max(1, depth));
|
|
207
|
+
pump();
|
|
208
|
+
}, [
|
|
209
|
+
depth,
|
|
210
|
+
messages,
|
|
211
|
+
pump
|
|
212
|
+
]);
|
|
213
|
+
React.useEffect(() => () => {
|
|
214
|
+
if (timer.current !== null) clearTimeout(timer.current);
|
|
215
|
+
timer.current = null;
|
|
216
|
+
}, []);
|
|
217
|
+
return /* @__PURE__ */ jsx("div", {
|
|
218
|
+
ref,
|
|
219
|
+
"data-slot": "live-region-announcer",
|
|
220
|
+
"data-paused": String(halted),
|
|
221
|
+
role: "status",
|
|
222
|
+
"aria-live": "polite",
|
|
223
|
+
"aria-atomic": "true",
|
|
224
|
+
className: cn("sr-only", className),
|
|
225
|
+
...elementProps,
|
|
226
|
+
children: spoken
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
//#endregion
|
|
230
|
+
export { LiveRegionAnnouncer, useAnnouncerPresent };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/elements/loading-state.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The shape the nine cells take: dots, hard squares, or softened ones.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import { GenerationLoader } from "@cueplusplus/ui/elements";
|
|
8
|
+
*
|
|
9
|
+
* <GenerationLoader label="Generating" tick={24} />
|
|
10
|
+
*/
|
|
11
|
+
type GenerationLoaderVariant = "dots" | "squares" | "rounded";
|
|
12
|
+
interface GenerationLoaderProps extends Omit<ComponentProps<"div">, "children"> {
|
|
13
|
+
/** Status copy shown under the pixel grid while the model has nothing else to show. */
|
|
14
|
+
label: string;
|
|
15
|
+
/** Animation clock that advances the pixel pattern and the elapsed seconds counter. */
|
|
16
|
+
tick: number;
|
|
17
|
+
/** Cell shape of the pixel matrix. */
|
|
18
|
+
variant?: GenerationLoaderVariant;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The wait before there is anything to show. A nine-cell matrix keeps time under a
|
|
22
|
+
* shimmering label, driven by a `tick` the caller advances — so a paused replay pauses
|
|
23
|
+
* the loader too.
|
|
24
|
+
*/
|
|
25
|
+
declare function GenerationLoader({ label, tick, variant, className, ...props }: GenerationLoaderProps): import("react").JSX.Element;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { GenerationLoader, GenerationLoaderProps, GenerationLoaderVariant };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { ShimmerLabel } from "./surfaces.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/elements/loading-state.tsx
|
|
6
|
+
const CELL_SHAPES = {
|
|
7
|
+
dots: "rounded-full",
|
|
8
|
+
squares: "rounded-none",
|
|
9
|
+
rounded: "rounded-(--radius-control)"
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The wait before there is anything to show. A nine-cell matrix keeps time under a
|
|
13
|
+
* shimmering label, driven by a `tick` the caller advances — so a paused replay pauses
|
|
14
|
+
* the loader too.
|
|
15
|
+
*/
|
|
16
|
+
function GenerationLoader({ label, tick, variant = "dots", className, ...props }) {
|
|
17
|
+
const pixelOffset = Math.floor(tick / 3);
|
|
18
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
19
|
+
"data-slot": "generation-loader",
|
|
20
|
+
className: cn("flex flex-col items-center gap-4", className),
|
|
21
|
+
...props,
|
|
22
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
23
|
+
"aria-hidden": true,
|
|
24
|
+
className: "grid grid-cols-3 gap-1",
|
|
25
|
+
children: Array.from({ length: 9 }, (_, index) => {
|
|
26
|
+
const active = (index * 2 + pixelOffset) % 9 < 3;
|
|
27
|
+
return /* @__PURE__ */ jsx("span", { className: cn("bg-accent size-2 transition-opacity duration-300 motion-reduce:transition-none", CELL_SHAPES[variant], active ? "opacity-90" : "opacity-15") }, index);
|
|
28
|
+
})
|
|
29
|
+
}), /* @__PURE__ */ jsx(ShimmerLabel, {
|
|
30
|
+
className: "text-fg-muted relative inline-block text-(length:--cue-text-body)",
|
|
31
|
+
children: label
|
|
32
|
+
})]
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { GenerationLoader };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/elements/map-answer.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* One place in a location answer: what it is called, where it sits, and its one line
|
|
5
|
+
* of detail.
|
|
6
|
+
*/
|
|
7
|
+
interface MapPin {
|
|
8
|
+
/** Stable identity for the list key and for the callbacks that report a selection. */
|
|
9
|
+
id: string;
|
|
10
|
+
/** Place name, shown on the pin and in the list below it. */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Secondary fact: a distance, a duration, a rating. */
|
|
13
|
+
detail: string;
|
|
14
|
+
/** Horizontal position as a percentage. */
|
|
15
|
+
x: number;
|
|
16
|
+
/** Vertical position as a percentage. */
|
|
17
|
+
y: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A location answer: pins, a route between them, and the list they came from.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* import { MapAnswer } from "@cueplusplus/ui/elements";
|
|
24
|
+
*
|
|
25
|
+
* <MapAnswer pins={pins} activeId="b" route onSelect={setActive} />
|
|
26
|
+
*/
|
|
27
|
+
declare function MapAnswer({ pins, activeId, route, onSelect, className, ...props }: Omit<ComponentProps<"div">, "children" | "pins" | "activeId" | "route" | "onSelect"> & {
|
|
28
|
+
/** Places in the answer, positioned as percentages so the element needs no tiles. */
|
|
29
|
+
pins: readonly MapPin[];
|
|
30
|
+
/** Which pin is selected, in both the plot and the list. */
|
|
31
|
+
activeId: string;
|
|
32
|
+
/** Draws a dashed path through the pins in order. */
|
|
33
|
+
route?: boolean;
|
|
34
|
+
/** Called when a pin or its list row is chosen. Both surfaces report the same id. */
|
|
35
|
+
onSelect?: (id: string) => void;
|
|
36
|
+
}): import("react").JSX.Element;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { MapAnswer, MapPin };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { field, mono, paper } from "./surfaces.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/elements/map-answer.tsx
|
|
6
|
+
/**
|
|
7
|
+
* A location answer: pins, a route between them, and the list they came from.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* import { MapAnswer } from "@cueplusplus/ui/elements";
|
|
11
|
+
*
|
|
12
|
+
* <MapAnswer pins={pins} activeId="b" route onSelect={setActive} />
|
|
13
|
+
*/
|
|
14
|
+
function MapAnswer({ pins, activeId, route, onSelect, className, ...props }) {
|
|
15
|
+
const path = pins.map((pin) => `${pin.x},${pin.y}`).join(" ");
|
|
16
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
17
|
+
"data-slot": "map-answer",
|
|
18
|
+
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-(--radius-overlay)", className),
|
|
19
|
+
...props,
|
|
20
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
21
|
+
className: cn(field, "relative h-40"),
|
|
22
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
23
|
+
viewBox: "0 0 100 100",
|
|
24
|
+
preserveAspectRatio: "none",
|
|
25
|
+
"aria-hidden": true,
|
|
26
|
+
className: "absolute inset-0 size-full",
|
|
27
|
+
children: [
|
|
28
|
+
[
|
|
29
|
+
18,
|
|
30
|
+
42,
|
|
31
|
+
66,
|
|
32
|
+
88
|
|
33
|
+
].map((y) => /* @__PURE__ */ jsx("line", {
|
|
34
|
+
x1: "0",
|
|
35
|
+
x2: "100",
|
|
36
|
+
y1: y,
|
|
37
|
+
y2: y,
|
|
38
|
+
className: "stroke-fg-subtle",
|
|
39
|
+
strokeWidth: "0.6"
|
|
40
|
+
}, `h${y}`)),
|
|
41
|
+
[
|
|
42
|
+
22,
|
|
43
|
+
50,
|
|
44
|
+
74
|
|
45
|
+
].map((x) => /* @__PURE__ */ jsx("line", {
|
|
46
|
+
x1: x,
|
|
47
|
+
x2: x,
|
|
48
|
+
y1: "0",
|
|
49
|
+
y2: "100",
|
|
50
|
+
className: "stroke-fg-subtle",
|
|
51
|
+
strokeWidth: "0.6"
|
|
52
|
+
}, `v${x}`)),
|
|
53
|
+
route && pins.length > 1 && /* @__PURE__ */ jsx("polyline", {
|
|
54
|
+
points: path,
|
|
55
|
+
fill: "none",
|
|
56
|
+
strokeWidth: "1.2",
|
|
57
|
+
strokeDasharray: "3 2",
|
|
58
|
+
strokeLinecap: "round",
|
|
59
|
+
className: "stroke-stream/60"
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
}), pins.map((pin) => /* @__PURE__ */ jsx("button", {
|
|
63
|
+
type: "button",
|
|
64
|
+
"aria-label": pin.label,
|
|
65
|
+
"aria-current": pin.id === activeId || void 0,
|
|
66
|
+
onClick: () => onSelect?.(pin.id),
|
|
67
|
+
className: "focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent absolute flex size-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full outline-none",
|
|
68
|
+
style: {
|
|
69
|
+
left: `${pin.x}%`,
|
|
70
|
+
top: `${pin.y}%`
|
|
71
|
+
},
|
|
72
|
+
children: /* @__PURE__ */ jsx("span", { className: cn("block rounded-full border-2 transition-all duration-200 motion-reduce:transition-none", pin.id === activeId ? "border-bg size-3.5 bg-stream" : "border-bg bg-surface-3 size-2.5") })
|
|
73
|
+
}, pin.id))]
|
|
74
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
75
|
+
className: "flex flex-col",
|
|
76
|
+
children: pins.map((pin) => /* @__PURE__ */ jsxs("button", {
|
|
77
|
+
type: "button",
|
|
78
|
+
"aria-current": pin.id === activeId || void 0,
|
|
79
|
+
onClick: () => onSelect?.(pin.id),
|
|
80
|
+
className: cn("border-border flex items-baseline gap-2 border-t px-3.5 py-2 text-start transition-colors", pin.id === activeId ? "bg-surface-1" : "hover:bg-surface-1"),
|
|
81
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
82
|
+
className: "text-fg-muted min-w-0 flex-1 truncate text-(length:--cue-text-body)",
|
|
83
|
+
children: pin.label
|
|
84
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
85
|
+
className: cn(mono, "text-fg-subtle shrink-0"),
|
|
86
|
+
children: pin.detail
|
|
87
|
+
})]
|
|
88
|
+
}, pin.id))
|
|
89
|
+
})]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
export { MapAnswer };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/elements/markdown.d.ts
|
|
3
|
+
/** A fenced block, handed to a highlighter that was opted into. */
|
|
4
|
+
interface MarkdownCodeBlock {
|
|
5
|
+
/**
|
|
6
|
+
* The info string's first word — `ts` from ` ```ts ` — or `undefined` when
|
|
7
|
+
* the fence carried none. Matched against `language-[\w+#.-]+`; anything
|
|
8
|
+
* else was dropped by the sanitizer before it got here.
|
|
9
|
+
*/
|
|
10
|
+
language?: string;
|
|
11
|
+
/** The block's text, exactly as the model wrote it. Never markup. */
|
|
12
|
+
code: string;
|
|
13
|
+
}
|
|
14
|
+
interface MarkdownTextProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
15
|
+
/**
|
|
16
|
+
* The markdown source. Untrusted model output is precisely what this prop is
|
|
17
|
+
* for — see the component's own documentation for what is and is not
|
|
18
|
+
* rendered.
|
|
19
|
+
*/
|
|
20
|
+
children: string;
|
|
21
|
+
/**
|
|
22
|
+
* The turn is still arriving, so hide the token being typed.
|
|
23
|
+
*
|
|
24
|
+
* Off by default, because sealing is a small edit to the source and a
|
|
25
|
+
* settled document should be rendered as written. Turn it on for the tail of
|
|
26
|
+
* a stream and off again when the turn completes; the rendered output is
|
|
27
|
+
* identical once nothing is half-written.
|
|
28
|
+
*/
|
|
29
|
+
streaming?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Where a link opens. `_blank` by default: a transcript that navigates away
|
|
32
|
+
* loses the run. `rel` is not configurable — every link gets
|
|
33
|
+
* `noopener noreferrer nofollow` whatever this says.
|
|
34
|
+
*/
|
|
35
|
+
target?: "_blank" | "_self";
|
|
36
|
+
/**
|
|
37
|
+
* The heading level `#` renders at; `##` and below follow it, clamped at
|
|
38
|
+
* `h6`. Defaults to `2`, because model output is a passage inside a page
|
|
39
|
+
* that already owns its `h1`.
|
|
40
|
+
*/
|
|
41
|
+
headingLevel?: 2 | 3 | 4;
|
|
42
|
+
/**
|
|
43
|
+
* Render fenced code blocks with something other than plain text — a
|
|
44
|
+
* highlighter, a copy button, a diff view.
|
|
45
|
+
*
|
|
46
|
+
* Unset, a block is a `<pre><code>` containing the model's characters and
|
|
47
|
+
* nothing else. That is the default on purpose: a highlighter is a second
|
|
48
|
+
* parser over the same untrusted string, usually one that emits HTML, and
|
|
49
|
+
* opting into it should be a line of code somebody wrote rather than a
|
|
50
|
+
* behaviour they inherited.
|
|
51
|
+
*/
|
|
52
|
+
renderCodeBlock?: (block: MarkdownCodeBlock) => React.ReactNode;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Model output, rendered.
|
|
56
|
+
*
|
|
57
|
+
* The one component in this library that turns a string into markup, and the
|
|
58
|
+
* only one that has to be argued for rather than described. Everywhere else —
|
|
59
|
+
* `Message`, `AskBox`, every element in this group — text is text: a string
|
|
60
|
+
* arrives from a model and is placed in the DOM as characters, because a
|
|
61
|
+
* component that quietly parsed it would put every consumer of this library one
|
|
62
|
+
* prompt away from an injection. This one parses, so it states in full what it
|
|
63
|
+
* will and will not do with what it is given.
|
|
64
|
+
*
|
|
65
|
+
* **Threat model.** The input is hostile. Assume the string was written by a
|
|
66
|
+
* model that was told to write it by a web page it fetched, a file it read, or
|
|
67
|
+
* a tool result it did not verify — the practical shape of prompt injection is
|
|
68
|
+
* not "the model turned evil", it is "the model faithfully relayed an
|
|
69
|
+
* attacker's bytes". Three things follow.
|
|
70
|
+
*
|
|
71
|
+
* - **No raw HTML, ever, and not by filtering it.** Markup in the source has no
|
|
72
|
+
* path to the DOM, and the first reason is an absence rather than a setting.
|
|
73
|
+
* `react-markdown` hands `remark-rehype` its own `allowDangerousHtml: true`
|
|
74
|
+
* and spreads it *over* whatever `remarkRehypeOptions` says, so the option
|
|
75
|
+
* cannot be turned off from here and `<img onerror=…>` does become a `raw`
|
|
76
|
+
* node. A `raw` node is a span of source text rather than an element, and the
|
|
77
|
+
* one thing that turns it into markup is `rehype-raw`. Nothing in this package
|
|
78
|
+
* depends on that plugin, and a test asserts it never will — so the string has
|
|
79
|
+
* no parser to reach. `rehype-sanitize` then drops the `raw` type outright,
|
|
80
|
+
* and react-markdown's own `skipHtml` removes whatever is left. Three gates,
|
|
81
|
+
* none of which is a deny-list of dangerous tags. A `<script>`, an
|
|
82
|
+
* `<iframe>`, an `<svg>` and an `onclick=` are all the same non-event: there
|
|
83
|
+
* is nothing in the tree for them to be.
|
|
84
|
+
* - **Attributes are enumerated, not filtered.** An element that is not in the
|
|
85
|
+
* schema renders nothing; an element that is renders only the attributes
|
|
86
|
+
* named beside it — `href`/`title` on a link, `src`/`alt`/`title` on an
|
|
87
|
+
* image, `language-…` on a `code`. No element in the subset accepts `id`,
|
|
88
|
+
* `style`, `srcset`, `formaction` or any `on*` handler, so none of them has
|
|
89
|
+
* an attribute to arrive on.
|
|
90
|
+
* - **URLs are allow-listed twice.** `http`, `https` and `mailto` on both
|
|
91
|
+
* `href` and `src`; a relative URL stays relative; everything else — a
|
|
92
|
+
* `javascript:` link, a `data:text/html` image, `vbscript:`, `blob:`,
|
|
93
|
+
* `file:`, `//host` — loses the attribute and leaves an inert element
|
|
94
|
+
* behind. Every link also carries `rel="noopener noreferrer nofollow"`,
|
|
95
|
+
* which is not a prop: reverse tabnabbing, referrer leakage of a private
|
|
96
|
+
* console URL, and SEO laundering through a transcript are all things a
|
|
97
|
+
* caller should not be able to turn off by accident.
|
|
98
|
+
*
|
|
99
|
+
* **The subset.** Paragraphs, ATX and setext headings, bullet and ordered
|
|
100
|
+
* lists, block quotes, thematic breaks, fenced and indented code, inline code,
|
|
101
|
+
* emphasis, strong, strikethrough, links, images, and hard breaks. No GFM
|
|
102
|
+
* plugin is enabled, so no tables, task lists, footnotes or autolink literals —
|
|
103
|
+
* an explicit `<https://…>` autolink still works. Fenced blocks are plain text
|
|
104
|
+
* unless {@link MarkdownTextProps.renderCodeBlock} is given.
|
|
105
|
+
*
|
|
106
|
+
* **Streaming.** Pass `streaming` while the turn is arriving and the token the
|
|
107
|
+
* model is halfway through typing is hidden rather than rendered as
|
|
108
|
+
* punctuation: no asterisks flickering through every bold run, no half-written
|
|
109
|
+
* URL, no fence that opens a code block one frame and closes it the next. The
|
|
110
|
+
* words appear as they arrive; only their formatting waits for the closing
|
|
111
|
+
* token.
|
|
112
|
+
*
|
|
113
|
+
* `react-markdown` and `rehype-sanitize` are optional peers of this subpath
|
|
114
|
+
* alone, which is why this component is not re-exported from
|
|
115
|
+
* `@cueplusplus/ui/elements`: a console that renders a transcript without
|
|
116
|
+
* markdown should install neither.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* <Message agent="researcher">
|
|
120
|
+
* <MarkdownText>{turn.text}</MarkdownText>
|
|
121
|
+
* </Message>
|
|
122
|
+
* @example
|
|
123
|
+
* <MarkdownText streaming={turn.status === "running"}>{turn.text}</MarkdownText>
|
|
124
|
+
* @example
|
|
125
|
+
* <MarkdownText renderCodeBlock={({ language, code }) => <Highlight lang={language} code={code} />}>
|
|
126
|
+
* {answer}
|
|
127
|
+
* </MarkdownText>
|
|
128
|
+
*/
|
|
129
|
+
declare const MarkdownText: React.ForwardRefExoticComponent<MarkdownTextProps & React.RefAttributes<HTMLDivElement>>;
|
|
130
|
+
//#endregion
|
|
131
|
+
export { MarkdownCodeBlock, MarkdownText, MarkdownTextProps };
|