@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,237 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region src/instruments/table.tsx
|
|
5
|
+
/**
|
|
6
|
+
* A named horizontal viewport for a table wider than its container.
|
|
7
|
+
*
|
|
8
|
+
* The region is independently keyboard-focusable so keyboard users can reach
|
|
9
|
+
* native horizontal scrolling. It adds no table semantics of its own; place a
|
|
10
|
+
* compound {@link Table} inside it and keep the table's caption.
|
|
11
|
+
*/
|
|
12
|
+
const TableScrollRegion = React.forwardRef(function TableScrollRegion({ className, ...elementProps }, ref) {
|
|
13
|
+
return /* @__PURE__ */ jsx("div", {
|
|
14
|
+
ref,
|
|
15
|
+
...elementProps,
|
|
16
|
+
role: "region",
|
|
17
|
+
tabIndex: 0,
|
|
18
|
+
"data-slot": "table-scroll-region",
|
|
19
|
+
className: cn("overflow-x-auto outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent", className)
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* The table frame. Owns the type, the collapse and the numeric alignment rule.
|
|
24
|
+
*
|
|
25
|
+
* `data-numeric` is the contract, not a prop: the alignment and
|
|
26
|
+
* `tabular-nums` live in one descendant selector here, so a hand-written
|
|
27
|
+
* `<td data-numeric>` inside a data-driven body lines up exactly like a
|
|
28
|
+
* `<Table.Cell numeric>`. Figures that do not share a column width are
|
|
29
|
+
* unreadable as a column, which is the whole point of a table.
|
|
30
|
+
*/
|
|
31
|
+
const TableRoot = React.forwardRef(function TableRoot({ className, ...elementProps }, ref) {
|
|
32
|
+
return /* @__PURE__ */ jsx("table", {
|
|
33
|
+
ref,
|
|
34
|
+
"data-slot": "table",
|
|
35
|
+
className: cn("w-full border-collapse font-mono text-(length:--cue-text-ui) text-fg", "[&_[data-numeric]]:text-right [&_[data-numeric]]:tabular-nums", className),
|
|
36
|
+
...elementProps
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
/** The header band. Sticky-able by the caller; sized by the row padding tokens. */
|
|
40
|
+
const TableHeader = React.forwardRef(function TableHeader({ className, ...elementProps }, ref) {
|
|
41
|
+
return /* @__PURE__ */ jsx("thead", {
|
|
42
|
+
ref,
|
|
43
|
+
"data-slot": "table-header",
|
|
44
|
+
className,
|
|
45
|
+
...elementProps
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
/** The data band. */
|
|
49
|
+
const TableBody = React.forwardRef(function TableBody({ className, ...elementProps }, ref) {
|
|
50
|
+
return /* @__PURE__ */ jsx("tbody", {
|
|
51
|
+
ref,
|
|
52
|
+
"data-slot": "table-body",
|
|
53
|
+
className,
|
|
54
|
+
...elementProps
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* One row, separated by a hairline underneath — dropped on the last row so the
|
|
59
|
+
* table never draws a rule against the panel rim it sits in. In a `<thead>` the
|
|
60
|
+
* "last row" is the header row itself, so the header's own bottom border (on
|
|
61
|
+
* the cells) is the only rule there and the two can never stack into 2px.
|
|
62
|
+
*
|
|
63
|
+
* Every row carries the `group/data-row` name unconditionally. It paints
|
|
64
|
+
* nothing by itself, and it is what lets a `DataRow.Actions` cluster inside a
|
|
65
|
+
* `Table.Cell` reveal on hover, on focus and on selection with no second
|
|
66
|
+
* implementation of that idiom for the table — the whole point of the three
|
|
67
|
+
* idioms sharing one row anatomy.
|
|
68
|
+
*
|
|
69
|
+
* **The focus half of that reveal is the caller's to supply here.** A `<tr>` is
|
|
70
|
+
* not focusable and this component does not make it one — a tab stop on every
|
|
71
|
+
* row of a long table is a tab stop a keyboard user has to walk past hundreds
|
|
72
|
+
* of times, which is the reason `Ledger` rows opt in individually. So the
|
|
73
|
+
* reveal-on-focus only happens if the row *contains* something focusable
|
|
74
|
+
* outside the hidden track: a link on the row's name, a checkbox in the leading
|
|
75
|
+
* cell, any real control. Without one, `:focus-within` can never fire — content
|
|
76
|
+
* inside a `visibility: hidden` subtree cannot be focused, so the track cannot
|
|
77
|
+
* bootstrap its own reveal — and a hidden action cluster is then reachable by
|
|
78
|
+
* pointer only, which is a WCAG 2.1.1 failure the screen gives no sign of. A
|
|
79
|
+
* table whose only per-row controls live in a hidden track wants either a
|
|
80
|
+
* focusable cell beside it or an always-visible cluster.
|
|
81
|
+
*
|
|
82
|
+
* A caller who instead makes the *row* focusable — a `tabIndex` plus
|
|
83
|
+
* {@link activateRowFromClick} and {@link activateRowFromKeyDown}, which is the
|
|
84
|
+
* shape a row that opens a drawer takes — gets the focus ring from
|
|
85
|
+
* {@link TableRowProps.interactive} and needs to draw nothing of its own.
|
|
86
|
+
*
|
|
87
|
+
* The selected tint is the row's, not the cell's: a `background` on the `<tr>`
|
|
88
|
+
* shows through every cell in it, so the fill cannot end up ragged where one
|
|
89
|
+
* cell sets a ground of its own.
|
|
90
|
+
*/
|
|
91
|
+
const TableRow = React.forwardRef(function TableRow({ className, interactive = false, selected = false, ...elementProps }, ref) {
|
|
92
|
+
return /* @__PURE__ */ jsx("tr", {
|
|
93
|
+
ref,
|
|
94
|
+
"data-slot": "table-row",
|
|
95
|
+
"data-selected": selected ? "" : void 0,
|
|
96
|
+
className: cn("group/data-row border-b border-border last:border-b-0 data-[selected]:bg-accent-soft", interactive ? "cursor-pointer outline-none hover:bg-(--cue-row-hover) focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent" : null, className),
|
|
97
|
+
...elementProps
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* A column heading: the same mono uppercase label as `SectionHeader` and
|
|
102
|
+
* `Eyebrow`, on the raised surface so the band reads as chrome rather than as
|
|
103
|
+
* the first row of data.
|
|
104
|
+
*
|
|
105
|
+
* **Sticky swaps the bottom border for an inset shadow.** `Table.Root` collapses
|
|
106
|
+
* its borders, and a collapsed border belongs to the table's shared grid rather
|
|
107
|
+
* than to the cell — so when a cell detaches to stay at the top of the scroll
|
|
108
|
+
* container, its rule stays behind with the rows and the stuck band appears to
|
|
109
|
+
* lose its edge. An inset `box-shadow` is a paint effect on the cell itself, so
|
|
110
|
+
* it travels with it. The alternative — putting the whole table on
|
|
111
|
+
* `border-separate` — would change the geometry of every table in the library
|
|
112
|
+
* to fix one that scrolls.
|
|
113
|
+
*
|
|
114
|
+
* The opaque `bg-surface-1` is not decoration either: a transparent sticky cell
|
|
115
|
+
* is a sticky cell you read the rows through. A caller who wants the header on
|
|
116
|
+
* the page's own ground can pass `className="bg-bg"` — what it must not pass is
|
|
117
|
+
* nothing.
|
|
118
|
+
*/
|
|
119
|
+
const TableHead = React.forwardRef(function TableHead({ className, numeric = false, sticky = false, scope = "col", ...elementProps }, ref) {
|
|
120
|
+
return /* @__PURE__ */ jsx("th", {
|
|
121
|
+
ref,
|
|
122
|
+
scope,
|
|
123
|
+
"data-slot": "table-head",
|
|
124
|
+
"data-numeric": numeric ? "" : void 0,
|
|
125
|
+
className: cn("border-b border-border bg-surface-1 px-(--cue-pad-row-x) py-(--cue-pad-row-y) text-left font-mono text-(length:--cue-text-label) font-normal tracking-[0.15em] whitespace-nowrap text-fg-subtle uppercase", sticky ? "sticky top-0 z-3 border-b-0 shadow-[inset_0_-1px_0_var(--cue-hair-strong)]" : null, className),
|
|
126
|
+
...elementProps
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
/** `headingLevel` as a tag name, so the outline is real elements, not roles. */
|
|
130
|
+
const headingTag = (level) => `h${level}`;
|
|
131
|
+
/**
|
|
132
|
+
* The label slot's own treatment, worn by the `<span>` and by every heading
|
|
133
|
+
* level alike — which is the point: the two forms have to be indistinguishable.
|
|
134
|
+
*
|
|
135
|
+
* Everything here is a no-op on a `<span>` and a correction on a heading, and
|
|
136
|
+
* each of the four exists because a UA stylesheet sets it on `<h2>`–`<h6>`:
|
|
137
|
+
*
|
|
138
|
+
* - `inline` — headings are `display: block`, and a block label would push the
|
|
139
|
+
* count onto a second line. This is the one that breaks the layout outright.
|
|
140
|
+
* - `text-[length:inherit]` — `<h2>` is `1.5em` and `<h6>` is `0.67em`, so
|
|
141
|
+
* without this the divider's type would change with the level it was given,
|
|
142
|
+
* which is a heading level leaking into the visual design.
|
|
143
|
+
* - `font-normal` — headings come bold, and a bold micro-label in a dense list
|
|
144
|
+
* reads as a second kind of emphasis (the same ruling as `Ledger`'s heading).
|
|
145
|
+
* - `m-0` — headings carry a block margin that would thicken the divider row.
|
|
146
|
+
*
|
|
147
|
+
* Preflight already does the middle two for consumers who import it, but the
|
|
148
|
+
* library does not assume the consumer's reset: the divider has to look the
|
|
149
|
+
* same either way. Tracking, case and colour are *not* restated — no UA rule
|
|
150
|
+
* touches them, so they inherit from the `<th>` that owns the recipe, and a
|
|
151
|
+
* second copy of a treatment is exactly how two surfaces drift apart.
|
|
152
|
+
*/
|
|
153
|
+
const TABLE_GROUP_LABEL = "m-0 inline text-[length:inherit] font-normal";
|
|
154
|
+
/**
|
|
155
|
+
* The canonical console table: hairlines, mono figures, no zebra striping.
|
|
156
|
+
*
|
|
157
|
+
* Semantic `<table>` markup throughout — a grid of divs loses row/column
|
|
158
|
+
* announcement, and a console table is exactly the place a screen reader user
|
|
159
|
+
* needs it. Zebra rows are deliberately absent: at console density the stripes
|
|
160
|
+
* are thicker than the data.
|
|
161
|
+
*
|
|
162
|
+
* Static markup — no `"use client"`. Compose it with `Panel` for the rim.
|
|
163
|
+
* Use {@link TableScrollRegion} only when the table can exceed its container.
|
|
164
|
+
*
|
|
165
|
+
* For a grouped list, the table stays *one* table: `Table.Head sticky` docks the
|
|
166
|
+
* column names, and one `Table.Body` per group opens with a `Table.GroupRow`
|
|
167
|
+
* divider — so the columns are named once and scan straight through every group
|
|
168
|
+
* boundary. Rows may hold `DataRow` slots, and `DataRow.Actions` reveals inside
|
|
169
|
+
* a cell on hover and on selection exactly as it does in a `Ledger` row — on
|
|
170
|
+
* focus too, once the row holds something focusable outside the track, which a
|
|
171
|
+
* `<tr>` never is by itself. See {@link TableRowProps.interactive}.
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* <Table.Root>
|
|
175
|
+
* <Table.Header>
|
|
176
|
+
* <Table.Row>
|
|
177
|
+
* <Table.Head>Fixture</Table.Head>
|
|
178
|
+
* <Table.Head numeric>Address</Table.Head>
|
|
179
|
+
* </Table.Row>
|
|
180
|
+
* </Table.Header>
|
|
181
|
+
* <Table.Body>
|
|
182
|
+
* <Table.Row>
|
|
183
|
+
* <Table.Cell>Par 64</Table.Cell>
|
|
184
|
+
* <Table.Cell numeric>001</Table.Cell>
|
|
185
|
+
* </Table.Row>
|
|
186
|
+
* </Table.Body>
|
|
187
|
+
* </Table.Root>
|
|
188
|
+
*/
|
|
189
|
+
const Table = {
|
|
190
|
+
Root: TableRoot,
|
|
191
|
+
Header: TableHeader,
|
|
192
|
+
Body: TableBody,
|
|
193
|
+
Row: TableRow,
|
|
194
|
+
GroupRow: React.forwardRef(function TableGroupRow({ className, span, label, count, headingLevel, sticky = false, ...elementProps }, ref) {
|
|
195
|
+
const Label = headingLevel === void 0 ? "span" : headingTag(headingLevel);
|
|
196
|
+
return /* @__PURE__ */ jsx("tr", {
|
|
197
|
+
ref,
|
|
198
|
+
"data-slot": "table-group-row",
|
|
199
|
+
...elementProps,
|
|
200
|
+
children: /* @__PURE__ */ jsxs("th", {
|
|
201
|
+
colSpan: span,
|
|
202
|
+
scope: "rowgroup",
|
|
203
|
+
"data-slot": "table-group-cell",
|
|
204
|
+
className: cn("bg-bg px-(--cue-pad-row-x) py-(--cue-pad-row-y) text-left font-mono text-(length:--cue-text-label) font-normal tracking-[0.15em] whitespace-nowrap text-fg-subtle uppercase", sticky ? "sticky z-2 [top:var(--cue-table-group-top,0px)]" : null, className),
|
|
205
|
+
children: [/* @__PURE__ */ jsx(Label, {
|
|
206
|
+
"data-slot": "table-group-label",
|
|
207
|
+
className: TABLE_GROUP_LABEL,
|
|
208
|
+
children: label
|
|
209
|
+
}), count === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
210
|
+
"data-slot": "table-group-count",
|
|
211
|
+
className: "ml-(--cue-space-2) tabular-nums",
|
|
212
|
+
children: count
|
|
213
|
+
})]
|
|
214
|
+
})
|
|
215
|
+
});
|
|
216
|
+
}),
|
|
217
|
+
Head: TableHead,
|
|
218
|
+
Cell: React.forwardRef(function TableCell({ className, numeric = false, ...elementProps }, ref) {
|
|
219
|
+
return /* @__PURE__ */ jsx("td", {
|
|
220
|
+
ref,
|
|
221
|
+
"data-slot": "table-cell",
|
|
222
|
+
"data-numeric": numeric ? "" : void 0,
|
|
223
|
+
className: cn("px-(--cue-pad-row-x) py-(--cue-pad-row-y) align-middle", className),
|
|
224
|
+
...elementProps
|
|
225
|
+
});
|
|
226
|
+
}),
|
|
227
|
+
Caption: React.forwardRef(function TableCaption({ className, ...elementProps }, ref) {
|
|
228
|
+
return /* @__PURE__ */ jsx("caption", {
|
|
229
|
+
ref,
|
|
230
|
+
"data-slot": "table-caption",
|
|
231
|
+
className: cn("caption-bottom pt-(--cue-space-3) text-left font-mono text-(length:--cue-text-label) text-fg-subtle", className),
|
|
232
|
+
...elementProps
|
|
233
|
+
});
|
|
234
|
+
})
|
|
235
|
+
};
|
|
236
|
+
//#endregion
|
|
237
|
+
export { Table, TableScrollRegion };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/terminal-frame.d.ts
|
|
3
|
+
/** Ink for one transcript line, in the shared status vocabulary. */
|
|
4
|
+
type TerminalLineTone = "neutral" | "accent" | "ok" | "warn" | "danger" | "info";
|
|
5
|
+
/** One line of a transcript. A bare string is output; `command` makes it a prompt line. */
|
|
6
|
+
interface TerminalLine {
|
|
7
|
+
/** The text of the line, verbatim. */
|
|
8
|
+
text: string;
|
|
9
|
+
/** Prefix it with the prompt glyph — this line is something the user typed. */
|
|
10
|
+
command?: boolean;
|
|
11
|
+
/** Ink for the line. Defaults to `"neutral"`. */
|
|
12
|
+
tone?: TerminalLineTone;
|
|
13
|
+
}
|
|
14
|
+
/** Shorthand: a bare string is an output line with no tone. */
|
|
15
|
+
type TerminalFrameLine = string | TerminalLine;
|
|
16
|
+
/** One beat of a simulated session: type a command, spin, print the result. */
|
|
17
|
+
interface TerminalStep {
|
|
18
|
+
/** Typed one character at a time at the prompt. */
|
|
19
|
+
command?: string;
|
|
20
|
+
/** Label shown next to a spinner once the command "runs". */
|
|
21
|
+
pending?: string;
|
|
22
|
+
/** How long the spinner runs, in ms. Defaults to `900`. */
|
|
23
|
+
pendingMs?: number;
|
|
24
|
+
/** Printed all at once when the step finishes. */
|
|
25
|
+
output?: readonly TerminalFrameLine[];
|
|
26
|
+
}
|
|
27
|
+
/** A scripted session for {@link TerminalFrameProps.simulate}. */
|
|
28
|
+
interface TerminalScript {
|
|
29
|
+
/** The beats, in order. */
|
|
30
|
+
steps: readonly TerminalStep[];
|
|
31
|
+
/** Nominal ms per keystroke, jittered 0.6×–1.6×. Defaults to `55`. */
|
|
32
|
+
keystrokeMs?: number;
|
|
33
|
+
/** Seed for the keystroke jitter. The same seed always plays the same way. Defaults to `1`. */
|
|
34
|
+
seed?: number;
|
|
35
|
+
/** Pause after a command lands and after its output prints, in ms. Defaults to `600`. */
|
|
36
|
+
holdMs?: number;
|
|
37
|
+
}
|
|
38
|
+
interface TerminalFrameProps extends Omit<React.ComponentPropsWithoutRef<"div">, "title" | "children"> {
|
|
39
|
+
/** Name above the transcript — a log file, a host, a task. */
|
|
40
|
+
title?: React.ReactNode;
|
|
41
|
+
/** Static transcript. Rendered as a preamble when `simulate` is also set. */
|
|
42
|
+
lines?: readonly TerminalFrameLine[];
|
|
43
|
+
/** The prompt glyph in front of a command line. Defaults to `"$"`. */
|
|
44
|
+
prompt?: string;
|
|
45
|
+
/** Show a `CopyButton` in the title bar for the commands in the transcript. */
|
|
46
|
+
copy?: boolean;
|
|
47
|
+
/** What the copy button puts on the clipboard. Defaults to the command lines, one per line. */
|
|
48
|
+
copyValue?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Play the transcript out as a typed session.
|
|
51
|
+
*
|
|
52
|
+
* Pass a stable reference (a module constant, or memoised) — the player
|
|
53
|
+
* restarts whenever this prop changes identity. Under
|
|
54
|
+
* `prefers-reduced-motion` the finished transcript renders instantly and no
|
|
55
|
+
* timer is ever scheduled.
|
|
56
|
+
*/
|
|
57
|
+
simulate?: TerminalScript;
|
|
58
|
+
/** Fixed body height in px at the 16px root. Leave unset to grow with the content. */
|
|
59
|
+
height?: number;
|
|
60
|
+
/** Extra content under the transcript — an input row, a hint strip. */
|
|
61
|
+
children?: React.ReactNode;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A recessed terminal: mono, `$`-prefixed commands, optional typed playback.
|
|
65
|
+
*
|
|
66
|
+
* Recessed rather than raised — `bg-sunken` sits the transcript *into* the page
|
|
67
|
+
* the way a real console does (the snuffle convention, where the terminal
|
|
68
|
+
* surface is the only thing darker than the background).
|
|
69
|
+
*
|
|
70
|
+
* The `simulate` player is deliberately not a GIF or a video: it is text, so it
|
|
71
|
+
* copies, it scales with the type ramp, it re-themes, and it costs nothing to
|
|
72
|
+
* load. Keystrokes are jittered from a seed so a marketing screenshot is
|
|
73
|
+
* reproducible, and the whole animation is replaced by its final frame under
|
|
74
|
+
* `prefers-reduced-motion` — with no timers scheduled at all, rather than an
|
|
75
|
+
* animation that runs invisibly.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* <TerminalFrame
|
|
79
|
+
* title="install"
|
|
80
|
+
* copy
|
|
81
|
+
* lines={[{ text: "pnpm add @cueplusplus/ui", command: true }, "+ 1 package"]}
|
|
82
|
+
* />
|
|
83
|
+
* @example
|
|
84
|
+
* const SCRIPT = { steps: [{ command: "cue build", pending: "compiling", output: ["12 cues"] }] };
|
|
85
|
+
* <TerminalFrame simulate={SCRIPT} />
|
|
86
|
+
*/
|
|
87
|
+
declare const TerminalFrame: React.ForwardRefExoticComponent<TerminalFrameProps & React.RefAttributes<HTMLDivElement>>;
|
|
88
|
+
//#endregion
|
|
89
|
+
export { TerminalFrame, TerminalFrameLine, TerminalFrameProps, TerminalLine, TerminalLineTone, TerminalScript, TerminalStep };
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { CopyButton } from "./copy-button.js";
|
|
4
|
+
import { toRem } from "./_rem.js";
|
|
5
|
+
import { mulberry32, usePrefersReducedMotion } from "./_motion.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/instruments/terminal-frame.tsx
|
|
9
|
+
const LINE_TONES = {
|
|
10
|
+
neutral: "text-fg-muted",
|
|
11
|
+
accent: "text-accent",
|
|
12
|
+
ok: "text-ok",
|
|
13
|
+
warn: "text-warn",
|
|
14
|
+
danger: "text-danger",
|
|
15
|
+
info: "text-info"
|
|
16
|
+
};
|
|
17
|
+
/** The braille spinner every CLI in the portfolio uses. */
|
|
18
|
+
const SPINNER_GLYPHS = [
|
|
19
|
+
"⠋",
|
|
20
|
+
"⠙",
|
|
21
|
+
"⠹",
|
|
22
|
+
"⠸",
|
|
23
|
+
"⠼",
|
|
24
|
+
"⠴",
|
|
25
|
+
"⠦",
|
|
26
|
+
"⠧",
|
|
27
|
+
"⠇",
|
|
28
|
+
"⠏"
|
|
29
|
+
];
|
|
30
|
+
const SPINNER_MS = 80;
|
|
31
|
+
const DEFAULT_KEYSTROKE_MS = 55;
|
|
32
|
+
const DEFAULT_HOLD_MS = 600;
|
|
33
|
+
const DEFAULT_PENDING_MS = 900;
|
|
34
|
+
const DEFAULT_SEED = 1;
|
|
35
|
+
const IDLE = {
|
|
36
|
+
lines: [],
|
|
37
|
+
typing: null,
|
|
38
|
+
spinner: null,
|
|
39
|
+
done: true
|
|
40
|
+
};
|
|
41
|
+
/** Normalise the shorthand so the renderer only ever sees one shape. */
|
|
42
|
+
function toLine(line) {
|
|
43
|
+
return typeof line === "string" ? { text: line } : line;
|
|
44
|
+
}
|
|
45
|
+
/** Every line a script ends on — what reduced motion renders straight away. */
|
|
46
|
+
function finalLines(script) {
|
|
47
|
+
return script.steps.flatMap((step) => [...step.command === void 0 ? [] : [{
|
|
48
|
+
text: step.command,
|
|
49
|
+
command: true
|
|
50
|
+
}], ...(step.output ?? []).map(toLine)]);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A recessed terminal: mono, `$`-prefixed commands, optional typed playback.
|
|
54
|
+
*
|
|
55
|
+
* Recessed rather than raised — `bg-sunken` sits the transcript *into* the page
|
|
56
|
+
* the way a real console does (the snuffle convention, where the terminal
|
|
57
|
+
* surface is the only thing darker than the background).
|
|
58
|
+
*
|
|
59
|
+
* The `simulate` player is deliberately not a GIF or a video: it is text, so it
|
|
60
|
+
* copies, it scales with the type ramp, it re-themes, and it costs nothing to
|
|
61
|
+
* load. Keystrokes are jittered from a seed so a marketing screenshot is
|
|
62
|
+
* reproducible, and the whole animation is replaced by its final frame under
|
|
63
|
+
* `prefers-reduced-motion` — with no timers scheduled at all, rather than an
|
|
64
|
+
* animation that runs invisibly.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* <TerminalFrame
|
|
68
|
+
* title="install"
|
|
69
|
+
* copy
|
|
70
|
+
* lines={[{ text: "pnpm add @cueplusplus/ui", command: true }, "+ 1 package"]}
|
|
71
|
+
* />
|
|
72
|
+
* @example
|
|
73
|
+
* const SCRIPT = { steps: [{ command: "cue build", pending: "compiling", output: ["12 cues"] }] };
|
|
74
|
+
* <TerminalFrame simulate={SCRIPT} />
|
|
75
|
+
*/
|
|
76
|
+
const TerminalFrame = React.forwardRef(function TerminalFrame({ className, title, lines, prompt = "$", copy = false, copyValue, simulate, height, children, ...elementProps }, ref) {
|
|
77
|
+
const reduced = usePrefersReducedMotion();
|
|
78
|
+
const [transcript, setTranscript] = React.useState(IDLE);
|
|
79
|
+
React.useEffect(() => {
|
|
80
|
+
if (simulate === void 0) {
|
|
81
|
+
setTranscript(IDLE);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (reduced) {
|
|
85
|
+
setTranscript({
|
|
86
|
+
lines: finalLines(simulate),
|
|
87
|
+
typing: null,
|
|
88
|
+
spinner: null,
|
|
89
|
+
done: true
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
let cancelled = false;
|
|
94
|
+
let timer;
|
|
95
|
+
const sleep = (ms) => new Promise((resolve) => {
|
|
96
|
+
timer = setTimeout(resolve, ms);
|
|
97
|
+
});
|
|
98
|
+
const random = mulberry32(simulate.seed ?? DEFAULT_SEED);
|
|
99
|
+
const keystrokeMs = simulate.keystrokeMs ?? DEFAULT_KEYSTROKE_MS;
|
|
100
|
+
const holdMs = simulate.holdMs ?? DEFAULT_HOLD_MS;
|
|
101
|
+
const printed = [];
|
|
102
|
+
setTranscript({
|
|
103
|
+
lines: [],
|
|
104
|
+
typing: null,
|
|
105
|
+
spinner: null,
|
|
106
|
+
done: false
|
|
107
|
+
});
|
|
108
|
+
(async () => {
|
|
109
|
+
for (const step of simulate.steps) {
|
|
110
|
+
if (step.command !== void 0) {
|
|
111
|
+
for (let index = 1; index <= step.command.length; index += 1) {
|
|
112
|
+
await sleep(keystrokeMs * (.6 + random()));
|
|
113
|
+
if (cancelled) return;
|
|
114
|
+
setTranscript({
|
|
115
|
+
lines: [...printed],
|
|
116
|
+
typing: step.command.slice(0, index),
|
|
117
|
+
spinner: null,
|
|
118
|
+
done: false
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
await sleep(holdMs);
|
|
122
|
+
if (cancelled) return;
|
|
123
|
+
printed.push({
|
|
124
|
+
text: step.command,
|
|
125
|
+
command: true
|
|
126
|
+
});
|
|
127
|
+
setTranscript({
|
|
128
|
+
lines: [...printed],
|
|
129
|
+
typing: null,
|
|
130
|
+
spinner: null,
|
|
131
|
+
done: false
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (step.pending !== void 0) {
|
|
135
|
+
const frames = Math.max(1, Math.round((step.pendingMs ?? DEFAULT_PENDING_MS) / SPINNER_MS));
|
|
136
|
+
for (let index = 0; index < frames; index += 1) {
|
|
137
|
+
setTranscript({
|
|
138
|
+
lines: [...printed],
|
|
139
|
+
typing: null,
|
|
140
|
+
spinner: {
|
|
141
|
+
label: step.pending,
|
|
142
|
+
index
|
|
143
|
+
},
|
|
144
|
+
done: false
|
|
145
|
+
});
|
|
146
|
+
await sleep(SPINNER_MS);
|
|
147
|
+
if (cancelled) return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
for (const line of step.output ?? []) printed.push(toLine(line));
|
|
151
|
+
setTranscript({
|
|
152
|
+
lines: [...printed],
|
|
153
|
+
typing: null,
|
|
154
|
+
spinner: null,
|
|
155
|
+
done: false
|
|
156
|
+
});
|
|
157
|
+
await sleep(holdMs);
|
|
158
|
+
if (cancelled) return;
|
|
159
|
+
}
|
|
160
|
+
setTranscript({
|
|
161
|
+
lines: [...printed],
|
|
162
|
+
typing: null,
|
|
163
|
+
spinner: null,
|
|
164
|
+
done: true
|
|
165
|
+
});
|
|
166
|
+
})();
|
|
167
|
+
return () => {
|
|
168
|
+
cancelled = true;
|
|
169
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
170
|
+
};
|
|
171
|
+
}, [reduced, simulate]);
|
|
172
|
+
const preamble = (lines ?? []).map(toLine);
|
|
173
|
+
const rendered = [...preamble, ...transcript.lines];
|
|
174
|
+
const commands = [...preamble, ...simulate === void 0 ? [] : finalLines(simulate)].filter((line) => line.command === true);
|
|
175
|
+
const clipboard = copyValue ?? commands.map((line) => line.text).join("\n");
|
|
176
|
+
const simulating = simulate !== void 0 && !transcript.done;
|
|
177
|
+
const promptGlyph = /* @__PURE__ */ jsx("span", {
|
|
178
|
+
"aria-hidden": "true",
|
|
179
|
+
"data-slot": "terminal-frame-prompt",
|
|
180
|
+
className: "mr-(--cue-space-3) shrink-0 text-accent select-none",
|
|
181
|
+
children: prompt
|
|
182
|
+
});
|
|
183
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
184
|
+
ref,
|
|
185
|
+
"data-slot": "terminal-frame",
|
|
186
|
+
"data-simulating": simulate === void 0 ? void 0 : String(simulating),
|
|
187
|
+
className: cn("flex min-w-0 flex-col overflow-hidden rounded-(--radius-surface) border border-border bg-sunken font-mono text-(length:--cue-text-ui) text-fg-muted", className),
|
|
188
|
+
...elementProps,
|
|
189
|
+
children: [title === void 0 && !copy ? null : /* @__PURE__ */ jsxs("div", {
|
|
190
|
+
"data-slot": "terminal-frame-bar",
|
|
191
|
+
className: "flex h-control-md shrink-0 items-center justify-between gap-(--cue-space-3) border-b border-border px-(--cue-pad-row-x)",
|
|
192
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
193
|
+
"data-slot": "terminal-frame-title",
|
|
194
|
+
className: "min-w-0 truncate text-(length:--cue-text-label) tracking-[0.15em] text-fg-subtle uppercase",
|
|
195
|
+
children: title
|
|
196
|
+
}), copy ? /* @__PURE__ */ jsx("span", {
|
|
197
|
+
"data-slot": "terminal-frame-copy",
|
|
198
|
+
"data-value": clipboard,
|
|
199
|
+
className: "shrink-0",
|
|
200
|
+
children: /* @__PURE__ */ jsx(CopyButton, {
|
|
201
|
+
value: clipboard,
|
|
202
|
+
variant: "ghost",
|
|
203
|
+
size: "sm"
|
|
204
|
+
})
|
|
205
|
+
}) : null]
|
|
206
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
207
|
+
"data-slot": "terminal-frame-body",
|
|
208
|
+
className: "min-w-0 flex-1 overflow-auto p-(--cue-space-5) leading-(--cue-leading-ui) whitespace-pre-wrap",
|
|
209
|
+
style: height === void 0 ? void 0 : { height: toRem(height) },
|
|
210
|
+
children: [
|
|
211
|
+
rendered.map((line, index) => /* @__PURE__ */ jsxs("div", {
|
|
212
|
+
"data-slot": "terminal-frame-line",
|
|
213
|
+
"data-command": line.command === true ? "" : void 0,
|
|
214
|
+
className: cn("flex min-w-0", LINE_TONES[line.tone ?? "neutral"]),
|
|
215
|
+
children: [line.command === true ? promptGlyph : null, /* @__PURE__ */ jsx("span", {
|
|
216
|
+
className: "min-w-0 break-all",
|
|
217
|
+
children: line.text
|
|
218
|
+
})]
|
|
219
|
+
}, index)),
|
|
220
|
+
transcript.typing === null ? null : /* @__PURE__ */ jsxs("div", {
|
|
221
|
+
"data-slot": "terminal-frame-line",
|
|
222
|
+
"data-typing": "",
|
|
223
|
+
className: "flex min-w-0 text-fg",
|
|
224
|
+
children: [
|
|
225
|
+
promptGlyph,
|
|
226
|
+
/* @__PURE__ */ jsx("span", {
|
|
227
|
+
className: "min-w-0 break-all",
|
|
228
|
+
children: transcript.typing
|
|
229
|
+
}),
|
|
230
|
+
/* @__PURE__ */ jsx("span", {
|
|
231
|
+
"aria-hidden": "true",
|
|
232
|
+
className: "animate-pulse motion-reduce:animate-none",
|
|
233
|
+
children: "▍"
|
|
234
|
+
})
|
|
235
|
+
]
|
|
236
|
+
}),
|
|
237
|
+
transcript.spinner === null ? null : /* @__PURE__ */ jsxs("div", {
|
|
238
|
+
"data-slot": "terminal-frame-line",
|
|
239
|
+
"data-pending": "",
|
|
240
|
+
className: "flex min-w-0 text-fg-subtle",
|
|
241
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
242
|
+
"aria-hidden": "true",
|
|
243
|
+
className: "mr-(--cue-space-3) shrink-0 text-accent",
|
|
244
|
+
children: SPINNER_GLYPHS[transcript.spinner.index % SPINNER_GLYPHS.length]
|
|
245
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
246
|
+
className: "min-w-0 break-all",
|
|
247
|
+
children: transcript.spinner.label
|
|
248
|
+
})]
|
|
249
|
+
}),
|
|
250
|
+
children
|
|
251
|
+
]
|
|
252
|
+
})]
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//#endregion
|
|
256
|
+
export { TerminalFrame };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ButtonProps } from "../primitives/button.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/instruments/two-step-button.d.ts
|
|
4
|
+
/** Which end of the warning scale this action sits at. */
|
|
5
|
+
type TwoStepTone = "danger" | "warn";
|
|
6
|
+
interface TwoStepButtonProps extends Omit<ButtonProps, "onClick" | "variant" | "onConfirm" | "children"> {
|
|
7
|
+
/** Fired once, when the *second* press lands. */
|
|
8
|
+
onConfirm: () => void;
|
|
9
|
+
/** The idle label — name the action, not the button ("Delete rig", not "Delete"). */
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
/** Label on the armed half. Defaults to `"Confirm"`. */
|
|
12
|
+
confirmLabel?: React.ReactNode;
|
|
13
|
+
/** Label on the escape hatch. Defaults to `"Cancel"`. */
|
|
14
|
+
cancelLabel?: React.ReactNode;
|
|
15
|
+
/** How severe this is. Defaults to `"danger"`. */
|
|
16
|
+
tone?: TwoStepTone;
|
|
17
|
+
/** ms before an untouched armed state disarms itself. `0` disables. Defaults to `4000`. */
|
|
18
|
+
timeout?: number;
|
|
19
|
+
/** Called with the new armed state on every arm and disarm. */
|
|
20
|
+
onArmedChange?: (armed: boolean) => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Arm, then confirm: a destructive action that takes two deliberate presses.
|
|
24
|
+
*
|
|
25
|
+
* The most-reused interaction in the portfolio (fifteen call sites, three
|
|
26
|
+
* hand-rolled implementations) and the right shape for a destructive action
|
|
27
|
+
* that is *routine* — deleting a cue, clearing a patch. A modal
|
|
28
|
+
* `AlertDialog` is the right shape for a rare and expensive one; putting a
|
|
29
|
+
* dialog in front of an action people take twenty times an hour just teaches
|
|
30
|
+
* them to dismiss dialogs.
|
|
31
|
+
*
|
|
32
|
+
* Four ways out, because an armed button left lying around is a trap: Cancel,
|
|
33
|
+
* Escape, moving focus away, and a timeout. Focus lands on **Cancel** when the
|
|
34
|
+
* pair arms, never on the destructive half — the same ruling as a destructive
|
|
35
|
+
* dialog's default button, and it means a stuck Enter key cannot walk through
|
|
36
|
+
* both steps.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* <TwoStepButton onConfirm={() => deleteRig(id)}>Delete rig</TwoStepButton>
|
|
40
|
+
* @example
|
|
41
|
+
* <TwoStepButton tone="warn" timeout={0} confirmLabel="Reset it" onConfirm={reset}>
|
|
42
|
+
* Reset patch
|
|
43
|
+
* </TwoStepButton>
|
|
44
|
+
*/
|
|
45
|
+
declare const TwoStepButton: React.ForwardRefExoticComponent<TwoStepButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
46
|
+
//#endregion
|
|
47
|
+
export { TwoStepButton, TwoStepButtonProps, TwoStepTone };
|