@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,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/instruments/_motion.ts
|
|
4
|
+
/**
|
|
5
|
+
* The JS half of the reduced-motion contract.
|
|
6
|
+
*
|
|
7
|
+
* Almost everything in this system stills itself in CSS with
|
|
8
|
+
* `motion-reduce:*`, which is both cheaper and impossible to forget on a
|
|
9
|
+
* re-render. This hook exists only for the cases CSS cannot reach: an animation
|
|
10
|
+
* driven by a timer, where honouring the preference means *not scheduling the
|
|
11
|
+
* work at all* rather than painting it without a transition.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const QUERY = "(prefers-reduced-motion: reduce)";
|
|
16
|
+
/**
|
|
17
|
+
* Whether the user has asked for reduced motion, tracked live.
|
|
18
|
+
*
|
|
19
|
+
* Starts `false` on the server and on the first client render so hydration
|
|
20
|
+
* matches, then corrects itself in a layout effect before paint.
|
|
21
|
+
*/
|
|
22
|
+
function usePrefersReducedMotion() {
|
|
23
|
+
const [reduced, setReduced] = React.useState(false);
|
|
24
|
+
React.useEffect(() => {
|
|
25
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
|
|
26
|
+
const query = window.matchMedia(QUERY);
|
|
27
|
+
setReduced(query.matches);
|
|
28
|
+
const onChange = (event) => setReduced(event.matches);
|
|
29
|
+
query.addEventListener("change", onChange);
|
|
30
|
+
return () => query.removeEventListener("change", onChange);
|
|
31
|
+
}, []);
|
|
32
|
+
return reduced;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* mulberry32 — 32 bits of state, uniform enough for jitter and fast enough to
|
|
36
|
+
* call per keystroke.
|
|
37
|
+
*
|
|
38
|
+
* Seeded rather than `Math.random()` so a simulated terminal plays the same way
|
|
39
|
+
* on every render, in every screenshot and in every test (the Phase 1 rule
|
|
40
|
+
* against unseeded randomness).
|
|
41
|
+
*
|
|
42
|
+
* @param seed - Any integer. The same seed always yields the same sequence.
|
|
43
|
+
* @returns A generator of numbers in `[0, 1)`.
|
|
44
|
+
*/
|
|
45
|
+
function mulberry32(seed) {
|
|
46
|
+
let state = seed >>> 0;
|
|
47
|
+
return () => {
|
|
48
|
+
state = state + 1831565813 >>> 0;
|
|
49
|
+
let t = state;
|
|
50
|
+
t = Math.imul(t ^ t >>> 15, t | 1);
|
|
51
|
+
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
|
|
52
|
+
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { mulberry32, usePrefersReducedMotion };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/instruments/_rem.ts
|
|
2
|
+
/**
|
|
3
|
+
* Instruments are the one group that takes raw pixel numbers as props — a
|
|
4
|
+
* meter is 4px tall, a sparkline is 72×14, a progress track is 5px — because
|
|
5
|
+
* those are the numbers a data designer thinks in, and there is no density
|
|
6
|
+
* token for "the height of a bar".
|
|
7
|
+
*
|
|
8
|
+
* They are still emitted as `rem` so the instrument scales with browser zoom
|
|
9
|
+
* and the user's root font size like everything else in the system. This is the
|
|
10
|
+
* same conversion `StatusDot` does for its diameter.
|
|
11
|
+
*
|
|
12
|
+
* @internal Not part of the public API.
|
|
13
|
+
*/
|
|
14
|
+
/** The reference root font size the px props are quoted against. */
|
|
15
|
+
const ROOT_PX = 16;
|
|
16
|
+
/** Convert a px number quoted at the 16px root into a `rem` length. */
|
|
17
|
+
function toRem(px) {
|
|
18
|
+
return `${px / ROOT_PX}rem`;
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { toRem };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/app-window-frame.d.ts
|
|
3
|
+
interface AppWindowFrameProps extends Omit<React.ComponentPropsWithoutRef<"div">, "title"> {
|
|
4
|
+
/** The document name, centred in the title bar. */
|
|
5
|
+
title?: React.ReactNode;
|
|
6
|
+
/** Draw the three window lights. Defaults to `true`. */
|
|
7
|
+
traffic?: boolean;
|
|
8
|
+
/** Contents of the toolbar row under the title bar. Omit for no toolbar. */
|
|
9
|
+
toolbar?: React.ReactNode;
|
|
10
|
+
/** Contents of the status bar along the bottom. Omit for no status bar. */
|
|
11
|
+
statusBar?: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Float the frame off the page with a drop shadow. Defaults to `true`.
|
|
14
|
+
*
|
|
15
|
+
* This is the one flat-design exception in the kit, and it is not really an
|
|
16
|
+
* exception: the component *depicts a floating window*, which is exactly the
|
|
17
|
+
* case the overlay shadow rule already carves out. Set it `false` when the
|
|
18
|
+
* frame is inlined into a page that is already a window.
|
|
19
|
+
*/
|
|
20
|
+
elevated?: boolean;
|
|
21
|
+
/** What is inside the window. */
|
|
22
|
+
children?: React.ReactNode;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A screenshot of your own app, built out of your own components.
|
|
26
|
+
*
|
|
27
|
+
* The marketing device: title bar, optional toolbar, canvas, status bar — the
|
|
28
|
+
* shape of a desktop window, wrapped around real markup. Because the contents
|
|
29
|
+
* are components rather than a PNG, the hero image re-themes with the site, is
|
|
30
|
+
* legible at any zoom, and cannot go stale the week after a redesign.
|
|
31
|
+
*
|
|
32
|
+
* Built from the real `TitleBar` and `StatusBar`, so the depiction and the
|
|
33
|
+
* product share one set of geometry tokens and can never drift apart.
|
|
34
|
+
*
|
|
35
|
+
* Static markup — no `"use client"`.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* <AppWindowFrame
|
|
39
|
+
* title="main-stage.cue"
|
|
40
|
+
* toolbar={<><Chip>File</Chip><Chip tone="ok">Live</Chip></>}
|
|
41
|
+
* statusBar={<><StatusBar.Item tone="ok">LIVE</StatusBar.Item><StatusBar.Item>30 pps</StatusBar.Item></>}
|
|
42
|
+
* >
|
|
43
|
+
* <SeamGrid columns={3}>{cells}</SeamGrid>
|
|
44
|
+
* </AppWindowFrame>
|
|
45
|
+
*/
|
|
46
|
+
declare const AppWindowFrame: React.ForwardRefExoticComponent<AppWindowFrameProps & React.RefAttributes<HTMLDivElement>>;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { AppWindowFrame, AppWindowFrameProps };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { StatusBar } from "../chrome/status-bar.js";
|
|
3
|
+
import { TitleBar } from "../chrome/title-bar.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/instruments/app-window-frame.tsx
|
|
7
|
+
/**
|
|
8
|
+
* The three lights, in the shared status vocabulary rather than in macOS hexes.
|
|
9
|
+
*
|
|
10
|
+
* `#ff5f57 / #febc2e / #28c840` are the colours of *one* operating system's
|
|
11
|
+
* chrome; on a themed page they read as three imported stickers. The status
|
|
12
|
+
* tokens are the same three hues, they re-tint per theme, and they are already
|
|
13
|
+
* the colours the rest of the console uses for stop / caution / go.
|
|
14
|
+
*/
|
|
15
|
+
const LIGHT_TONES = [
|
|
16
|
+
"bg-danger",
|
|
17
|
+
"bg-warn",
|
|
18
|
+
"bg-ok"
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* A screenshot of your own app, built out of your own components.
|
|
22
|
+
*
|
|
23
|
+
* The marketing device: title bar, optional toolbar, canvas, status bar — the
|
|
24
|
+
* shape of a desktop window, wrapped around real markup. Because the contents
|
|
25
|
+
* are components rather than a PNG, the hero image re-themes with the site, is
|
|
26
|
+
* legible at any zoom, and cannot go stale the week after a redesign.
|
|
27
|
+
*
|
|
28
|
+
* Built from the real `TitleBar` and `StatusBar`, so the depiction and the
|
|
29
|
+
* product share one set of geometry tokens and can never drift apart.
|
|
30
|
+
*
|
|
31
|
+
* Static markup — no `"use client"`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* <AppWindowFrame
|
|
35
|
+
* title="main-stage.cue"
|
|
36
|
+
* toolbar={<><Chip>File</Chip><Chip tone="ok">Live</Chip></>}
|
|
37
|
+
* statusBar={<><StatusBar.Item tone="ok">LIVE</StatusBar.Item><StatusBar.Item>30 pps</StatusBar.Item></>}
|
|
38
|
+
* >
|
|
39
|
+
* <SeamGrid columns={3}>{cells}</SeamGrid>
|
|
40
|
+
* </AppWindowFrame>
|
|
41
|
+
*/
|
|
42
|
+
const AppWindowFrame = React.forwardRef(function AppWindowFrame({ className, title, traffic = true, toolbar, statusBar, elevated = true, children, ...elementProps }, ref) {
|
|
43
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
44
|
+
ref,
|
|
45
|
+
"data-slot": "app-window-frame",
|
|
46
|
+
className: cn("flex min-w-0 flex-col overflow-hidden rounded-(--radius-surface) border border-border bg-bg", elevated ? "shadow-[0_40px_120px_-40px_rgba(0,0,0,0.9)]" : null, className),
|
|
47
|
+
...elementProps,
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ jsx(TitleBar, {
|
|
50
|
+
center: title,
|
|
51
|
+
children: traffic ? /* @__PURE__ */ jsx("span", {
|
|
52
|
+
"aria-hidden": "true",
|
|
53
|
+
"data-slot": "app-window-lights",
|
|
54
|
+
className: "flex items-center gap-(--cue-space-3)",
|
|
55
|
+
children: LIGHT_TONES.map((tone) => /* @__PURE__ */ jsx("span", {
|
|
56
|
+
"data-slot": "app-window-light",
|
|
57
|
+
className: cn("size-[0.5rem] rounded-full opacity-80", tone)
|
|
58
|
+
}, tone))
|
|
59
|
+
}) : null
|
|
60
|
+
}),
|
|
61
|
+
toolbar === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
62
|
+
"data-slot": "app-window-toolbar",
|
|
63
|
+
className: "flex h-(--cue-chrome-toolbar) shrink-0 items-center gap-(--cue-space-2) border-b border-border bg-surface-1 px-(--cue-pad-row-x) font-mono text-(length:--cue-text-label) text-fg-muted",
|
|
64
|
+
children: toolbar
|
|
65
|
+
}),
|
|
66
|
+
/* @__PURE__ */ jsx("div", {
|
|
67
|
+
"data-slot": "app-window-canvas",
|
|
68
|
+
className: "min-h-0 min-w-0 flex-1 p-(--cue-space-6)",
|
|
69
|
+
children
|
|
70
|
+
}),
|
|
71
|
+
statusBar === void 0 ? null : /* @__PURE__ */ jsx(StatusBar, { children: statusBar })
|
|
72
|
+
]
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//#endregion
|
|
76
|
+
export { AppWindowFrame };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/code-block.d.ts
|
|
3
|
+
interface CodeBlockProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
4
|
+
/** The code. Printed verbatim, already dedented by whoever produced it; the copy button copies exactly this. */
|
|
5
|
+
code: string;
|
|
6
|
+
/** What the block is, in the caption strip: a filename, an example's title. Defaults to the language. */
|
|
7
|
+
label?: string;
|
|
8
|
+
/**
|
|
9
|
+
* The fence language, on the `<pre>` as `data-language`. Defaults to `"tsx"`.
|
|
10
|
+
* `"jsx"` turns on emphasis: tag names, attribute names and punctuation in
|
|
11
|
+
* three inks the theme already has. Every other value prints plain.
|
|
12
|
+
*/
|
|
13
|
+
language?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A block of code with a copy button and no syntax-highlighter palette.
|
|
17
|
+
*
|
|
18
|
+
* Every colour a token-driven site paints has to come from the token layer, and
|
|
19
|
+
* a highlighter theme is a second palette that would need porting to every
|
|
20
|
+
* preset before it could sit beside them — so there is none. What `language="jsx"`
|
|
21
|
+
* adds is emphasis in three inks the theme already has: tag names in `--cue-fg`,
|
|
22
|
+
* attribute names in `--cue-fg-muted`, punctuation in `--cue-fg-subtle`. Mono
|
|
23
|
+
* type, the sunken ground every input uses, and a copy button that works.
|
|
24
|
+
*
|
|
25
|
+
* No directive: the copy button is the only client code, and a server page can
|
|
26
|
+
* draw the rest.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* <CodeBlock label="install" code="pnpm add @cueplusplus/ui" language="sh" />
|
|
30
|
+
* @example
|
|
31
|
+
* <CodeBlock label="JSX" language="jsx" code={'<Button variant="primary">Take cue</Button>'} />
|
|
32
|
+
*/
|
|
33
|
+
declare const CodeBlock: React.ForwardRefExoticComponent<CodeBlockProps & React.RefAttributes<HTMLDivElement>>;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { CodeBlock, CodeBlockProps };
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { Panel } from "../chrome/panel.js";
|
|
3
|
+
import { CopyButton } from "./copy-button.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/instruments/code-block.tsx
|
|
7
|
+
/** The three inks, and nothing else: a highlighter theme would be a second palette. */
|
|
8
|
+
const INK = {
|
|
9
|
+
tag: "text-fg",
|
|
10
|
+
attr: "text-fg-muted",
|
|
11
|
+
punct: "text-fg-subtle"
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The end of a `{…}` expression starting at `start`, braces balanced; the
|
|
15
|
+
* code's end if unclosed.
|
|
16
|
+
*
|
|
17
|
+
* A JS string literal inside the expression (`"…"`, `'…'`, `` `…` ``,
|
|
18
|
+
* backslash escapes honoured) is skipped whole rather than scanned for
|
|
19
|
+
* braces: `{"a { b"}` has a real `{` and a stray one sitting inside a string,
|
|
20
|
+
* and only the first is the expression's own. Treating the string as opaque
|
|
21
|
+
* is also what keeps `{"<b>hi</b>"}` a single span for the caller that uses
|
|
22
|
+
* this to find where a JSX child expression ends — the `<b>` inside never
|
|
23
|
+
* gets a chance to look like a tag.
|
|
24
|
+
*/
|
|
25
|
+
function expressionEnd(code, start) {
|
|
26
|
+
let depth = 0;
|
|
27
|
+
let index = start;
|
|
28
|
+
while (index < code.length) {
|
|
29
|
+
const ch = code[index];
|
|
30
|
+
if (ch === "\"" || ch === "'" || ch === "`") {
|
|
31
|
+
const quote = ch;
|
|
32
|
+
index += 1;
|
|
33
|
+
while (index < code.length && code[index] !== quote) index += code[index] === "\\" ? 2 : 1;
|
|
34
|
+
index += 1;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (ch === "{") depth += 1;
|
|
38
|
+
else if (ch === "}") {
|
|
39
|
+
depth -= 1;
|
|
40
|
+
if (depth === 0) return index + 1;
|
|
41
|
+
}
|
|
42
|
+
index += 1;
|
|
43
|
+
}
|
|
44
|
+
return code.length;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* JSX, cut into the four kinds this block paints.
|
|
48
|
+
*
|
|
49
|
+
* A tag opens at `<` or `</` followed by a letter — so `a < b` is text — and
|
|
50
|
+
* runs to `>` or `/>`. Inside it, a name is an attribute, `=` is punctuation,
|
|
51
|
+
* and a quoted string or a balanced `{…}` is text. Outside a tag everything is
|
|
52
|
+
* text, comments included — and a `{…}` expression child (`{"<b>hi</b>"}`, the
|
|
53
|
+
* shape `JSON.stringify` produces) stays opaque too, found with the same
|
|
54
|
+
* brace-and-string-aware scan as an attribute's expression value, so a `<`
|
|
55
|
+
* sitting inside its string can never be mistaken for a tag opening. The
|
|
56
|
+
* pieces concatenate back to the input exactly, which the suite asserts and
|
|
57
|
+
* the copy button depends on.
|
|
58
|
+
*/
|
|
59
|
+
function jsxTokens(code) {
|
|
60
|
+
const tokens = [];
|
|
61
|
+
const push = (kind, from, to) => {
|
|
62
|
+
if (to <= from) return;
|
|
63
|
+
const last = tokens.at(-1);
|
|
64
|
+
if (kind === "text" && last?.kind === "text") last.text += code.slice(from, to);
|
|
65
|
+
else tokens.push({
|
|
66
|
+
kind,
|
|
67
|
+
text: code.slice(from, to),
|
|
68
|
+
at: from
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
let index = 0;
|
|
72
|
+
while (index < code.length) {
|
|
73
|
+
const open = /^<\/?(?=[A-Za-z])/.exec(code.slice(index));
|
|
74
|
+
if (open === null) {
|
|
75
|
+
let cursor = code[index] === "{" ? expressionEnd(code, index) : index + 1;
|
|
76
|
+
while (cursor < code.length) {
|
|
77
|
+
const ch = code[cursor];
|
|
78
|
+
if (ch === "{") {
|
|
79
|
+
cursor = expressionEnd(code, cursor);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (ch === "<") break;
|
|
83
|
+
cursor += 1;
|
|
84
|
+
}
|
|
85
|
+
push("text", index, cursor);
|
|
86
|
+
index = cursor;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
push("punct", index, index + open[0].length);
|
|
90
|
+
index += open[0].length;
|
|
91
|
+
const name = /^[A-Za-z][\w.]*/.exec(code.slice(index))[0];
|
|
92
|
+
push("tag", index, index + name.length);
|
|
93
|
+
index += name.length;
|
|
94
|
+
while (index < code.length) {
|
|
95
|
+
const rest = code.slice(index);
|
|
96
|
+
const space = /^\s+/.exec(rest);
|
|
97
|
+
const close = /^\/?>/.exec(rest);
|
|
98
|
+
const attribute = /^[^\s=>/"{]+/.exec(rest);
|
|
99
|
+
if (space !== null) {
|
|
100
|
+
push("text", index, index + space[0].length);
|
|
101
|
+
index += space[0].length;
|
|
102
|
+
} else if (close !== null) {
|
|
103
|
+
push("punct", index, index + close[0].length);
|
|
104
|
+
index += close[0].length;
|
|
105
|
+
break;
|
|
106
|
+
} else if (rest.startsWith("=")) {
|
|
107
|
+
push("punct", index, index + 1);
|
|
108
|
+
index += 1;
|
|
109
|
+
} else if (rest.startsWith("\"")) {
|
|
110
|
+
const quote = code.indexOf("\"", index + 1);
|
|
111
|
+
const end = quote === -1 ? code.length : quote + 1;
|
|
112
|
+
push("text", index, end);
|
|
113
|
+
index = end;
|
|
114
|
+
} else if (rest.startsWith("{")) {
|
|
115
|
+
const end = expressionEnd(code, index);
|
|
116
|
+
push("text", index, end);
|
|
117
|
+
index = end;
|
|
118
|
+
} else if (attribute !== null) {
|
|
119
|
+
push("attr", index, index + attribute[0].length);
|
|
120
|
+
index += attribute[0].length;
|
|
121
|
+
} else {
|
|
122
|
+
push("text", index, index + 1);
|
|
123
|
+
index += 1;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return tokens;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A block of code with a copy button and no syntax-highlighter palette.
|
|
131
|
+
*
|
|
132
|
+
* Every colour a token-driven site paints has to come from the token layer, and
|
|
133
|
+
* a highlighter theme is a second palette that would need porting to every
|
|
134
|
+
* preset before it could sit beside them — so there is none. What `language="jsx"`
|
|
135
|
+
* adds is emphasis in three inks the theme already has: tag names in `--cue-fg`,
|
|
136
|
+
* attribute names in `--cue-fg-muted`, punctuation in `--cue-fg-subtle`. Mono
|
|
137
|
+
* type, the sunken ground every input uses, and a copy button that works.
|
|
138
|
+
*
|
|
139
|
+
* No directive: the copy button is the only client code, and a server page can
|
|
140
|
+
* draw the rest.
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* <CodeBlock label="install" code="pnpm add @cueplusplus/ui" language="sh" />
|
|
144
|
+
* @example
|
|
145
|
+
* <CodeBlock label="JSX" language="jsx" code={'<Button variant="primary">Take cue</Button>'} />
|
|
146
|
+
*/
|
|
147
|
+
const CodeBlock = React.forwardRef(function CodeBlock({ code, label, language = "tsx", className, ...elementProps }, ref) {
|
|
148
|
+
const body = language === "jsx" ? jsxTokens(code).map((token) => token.kind === "text" ? token.text : /* @__PURE__ */ jsx("span", {
|
|
149
|
+
"data-token": token.kind,
|
|
150
|
+
className: INK[token.kind],
|
|
151
|
+
children: token.text
|
|
152
|
+
}, token.at)) : code;
|
|
153
|
+
return /* @__PURE__ */ jsxs(Panel, {
|
|
154
|
+
...elementProps,
|
|
155
|
+
ref,
|
|
156
|
+
"data-slot": "code-block",
|
|
157
|
+
className: cn("bg-sunken", className),
|
|
158
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
159
|
+
className: "flex items-center justify-between gap-(--cue-space-4) border-b border-border px-(--cue-pad-row-x) py-(--cue-pad-row-y)",
|
|
160
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
161
|
+
"data-slot": "code-block-label",
|
|
162
|
+
className: "font-mono text-(length:--cue-text-micro) tracking-[0.15em] text-fg-subtle uppercase",
|
|
163
|
+
children: label ?? language
|
|
164
|
+
}), /* @__PURE__ */ jsx(CopyButton, { value: code })]
|
|
165
|
+
}), /* @__PURE__ */ jsx("pre", {
|
|
166
|
+
"data-language": language,
|
|
167
|
+
className: "overflow-x-auto p-(--cue-space-4) font-mono text-(length:--cue-text-ui) leading-(--cue-leading-ui) text-fg",
|
|
168
|
+
children: /* @__PURE__ */ jsx("code", { children: body })
|
|
169
|
+
})]
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
//#endregion
|
|
173
|
+
export { CodeBlock };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ButtonProps } from "../primitives/button.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/instruments/copy-button.d.ts
|
|
4
|
+
interface CopyButtonProps extends Omit<ButtonProps, "icon" | "children" | "onCopy"> {
|
|
5
|
+
/** The text to put on the clipboard. */
|
|
6
|
+
value: string;
|
|
7
|
+
/** ms the confirmation stays up before reverting. Defaults to `1200`. */
|
|
8
|
+
timeout?: number;
|
|
9
|
+
/** The idle label. Defaults to `"Copy"`. */
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
/** The confirmation label. Defaults to `"Copied"`. */
|
|
12
|
+
copiedLabel?: React.ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Called with `value` once it is actually on the clipboard. Replaces the
|
|
15
|
+
* native `onCopy` clipboard-event handler, which is meaningless on a button.
|
|
16
|
+
*/
|
|
17
|
+
onCopy?: (value: string) => void;
|
|
18
|
+
/** Called with whatever the clipboard threw. Nothing is claimed on failure. */
|
|
19
|
+
onCopyError?: (error: unknown) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Copy one string, and say so.
|
|
23
|
+
*
|
|
24
|
+
* The confirmation is a label swap rather than a colour change or a toast: at
|
|
25
|
+
* console density a toast for "copied an id" is heavier than the action, and
|
|
26
|
+
* colour alone would not be announced. The label lives in an `aria-live`
|
|
27
|
+
* region, so screen-reader users hear the state change too (WCAG 1.4.1).
|
|
28
|
+
*
|
|
29
|
+
* Failure is never dressed up as success — if both the async clipboard and the
|
|
30
|
+
* `execCommand` fallback fail, the label stays put and `onCopyError` fires.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* <CopyButton value={fixture.id} />
|
|
34
|
+
* @example
|
|
35
|
+
* <CopyButton value={dsn} variant="ghost" size="sm" copiedLabel="On the clipboard">
|
|
36
|
+
* Copy DSN
|
|
37
|
+
* </CopyButton>
|
|
38
|
+
*/
|
|
39
|
+
declare const CopyButton: React.ForwardRefExoticComponent<CopyButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
40
|
+
//#endregion
|
|
41
|
+
export { CopyButton, CopyButtonProps };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Button } from "../primitives/button.js";
|
|
3
|
+
import { CheckGlyph, CopyGlyph } from "./_glyphs.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/instruments/copy-button.tsx
|
|
7
|
+
/** How long the confirmation stays up, in ms. */
|
|
8
|
+
const DEFAULT_TIMEOUT_MS = 1200;
|
|
9
|
+
/**
|
|
10
|
+
* The synchronous fallback for browsers (and insecure origins) with no async
|
|
11
|
+
* clipboard: select a scratch textarea and let `execCommand` copy it.
|
|
12
|
+
*
|
|
13
|
+
* Returns `false` rather than throwing so the caller can re-raise whatever the
|
|
14
|
+
* real failure was — the fallback failing is never the interesting error.
|
|
15
|
+
*/
|
|
16
|
+
function copyWithExecCommand(value) {
|
|
17
|
+
if (typeof document === "undefined" || typeof document.execCommand !== "function") return false;
|
|
18
|
+
const scratch = document.createElement("textarea");
|
|
19
|
+
scratch.value = value;
|
|
20
|
+
scratch.setAttribute("readonly", "");
|
|
21
|
+
scratch.setAttribute("aria-hidden", "true");
|
|
22
|
+
scratch.style.position = "fixed";
|
|
23
|
+
scratch.style.top = "0";
|
|
24
|
+
scratch.style.left = "-9999px";
|
|
25
|
+
document.body.appendChild(scratch);
|
|
26
|
+
const selection = document.getSelection();
|
|
27
|
+
const previous = selection !== null && selection.rangeCount > 0 ? selection.getRangeAt(0) : null;
|
|
28
|
+
let copied = false;
|
|
29
|
+
try {
|
|
30
|
+
scratch.select();
|
|
31
|
+
copied = document.execCommand("copy");
|
|
32
|
+
} catch {
|
|
33
|
+
copied = false;
|
|
34
|
+
} finally {
|
|
35
|
+
scratch.remove();
|
|
36
|
+
if (previous !== null && selection !== null) {
|
|
37
|
+
selection.removeAllRanges();
|
|
38
|
+
selection.addRange(previous);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return copied;
|
|
42
|
+
}
|
|
43
|
+
/** Write to the clipboard, preferring the async API and never claiming success. */
|
|
44
|
+
async function writeToClipboard(value) {
|
|
45
|
+
const clipboard = typeof navigator === "undefined" ? void 0 : navigator.clipboard;
|
|
46
|
+
if (clipboard !== void 0 && typeof clipboard.writeText === "function") try {
|
|
47
|
+
await clipboard.writeText(value);
|
|
48
|
+
return;
|
|
49
|
+
} catch (error) {
|
|
50
|
+
if (copyWithExecCommand(value)) return;
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
if (copyWithExecCommand(value)) return;
|
|
54
|
+
throw new Error("Clipboard unavailable");
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Copy one string, and say so.
|
|
58
|
+
*
|
|
59
|
+
* The confirmation is a label swap rather than a colour change or a toast: at
|
|
60
|
+
* console density a toast for "copied an id" is heavier than the action, and
|
|
61
|
+
* colour alone would not be announced. The label lives in an `aria-live`
|
|
62
|
+
* region, so screen-reader users hear the state change too (WCAG 1.4.1).
|
|
63
|
+
*
|
|
64
|
+
* Failure is never dressed up as success — if both the async clipboard and the
|
|
65
|
+
* `execCommand` fallback fail, the label stays put and `onCopyError` fires.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* <CopyButton value={fixture.id} />
|
|
69
|
+
* @example
|
|
70
|
+
* <CopyButton value={dsn} variant="ghost" size="sm" copiedLabel="On the clipboard">
|
|
71
|
+
* Copy DSN
|
|
72
|
+
* </CopyButton>
|
|
73
|
+
*/
|
|
74
|
+
const CopyButton = React.forwardRef(function CopyButton({ value, timeout = DEFAULT_TIMEOUT_MS, children = "Copy", copiedLabel = "Copied", onCopy, onCopyError, onClick, ...buttonProps }, ref) {
|
|
75
|
+
const [copied, setCopied] = React.useState(false);
|
|
76
|
+
const timerRef = React.useRef(void 0);
|
|
77
|
+
React.useEffect(() => () => {
|
|
78
|
+
if (timerRef.current !== void 0) clearTimeout(timerRef.current);
|
|
79
|
+
}, []);
|
|
80
|
+
const handleClick = (event) => {
|
|
81
|
+
onClick?.(event);
|
|
82
|
+
if (event.defaultPrevented) return;
|
|
83
|
+
(async () => {
|
|
84
|
+
try {
|
|
85
|
+
await writeToClipboard(value);
|
|
86
|
+
} catch (error) {
|
|
87
|
+
onCopyError?.(error);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
onCopy?.(value);
|
|
91
|
+
setCopied(true);
|
|
92
|
+
if (timerRef.current !== void 0) clearTimeout(timerRef.current);
|
|
93
|
+
timerRef.current = setTimeout(() => {
|
|
94
|
+
timerRef.current = void 0;
|
|
95
|
+
setCopied(false);
|
|
96
|
+
}, timeout);
|
|
97
|
+
})();
|
|
98
|
+
};
|
|
99
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
100
|
+
ref,
|
|
101
|
+
icon: copied ? CheckGlyph : CopyGlyph,
|
|
102
|
+
"data-copied": copied ? "true" : void 0,
|
|
103
|
+
onClick: handleClick,
|
|
104
|
+
...buttonProps,
|
|
105
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
106
|
+
"aria-live": "polite",
|
|
107
|
+
children: copied ? copiedLabel : children
|
|
108
|
+
})
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
//#endregion
|
|
112
|
+
export { CopyButton };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/data-row.d.ts
|
|
3
|
+
/** What an interactive row discloses, when it discloses something. */
|
|
4
|
+
interface DataRowDisclosure {
|
|
5
|
+
/** Whether the surface this row opens is currently showing. */
|
|
6
|
+
expanded: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The `id` of the element the row opens, when that element is in the DOM.
|
|
9
|
+
*
|
|
10
|
+
* Omit it while the surface is closed and unrendered: `aria-controls`
|
|
11
|
+
* pointing at an id that does not exist is worse than no `aria-controls`.
|
|
12
|
+
*/
|
|
13
|
+
controls?: string;
|
|
14
|
+
}
|
|
15
|
+
interface DataRowRootProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
16
|
+
/**
|
|
17
|
+
* The row responds to a pointer and to the keyboard: hover wash, `cursor`,
|
|
18
|
+
* an inset focus ring and a tab stop. Defaults to `false`.
|
|
19
|
+
*/
|
|
20
|
+
interactive?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Draw the row as picked out of the list. Defaults to `false`.
|
|
23
|
+
*
|
|
24
|
+
* Sets `data-selected`, which is also what the hover-revealed action track and
|
|
25
|
+
* the accent tint key off — so a `<tr data-selected>` in the table idiom gets
|
|
26
|
+
* exactly the same treatment without going through this component.
|
|
27
|
+
*/
|
|
28
|
+
selected?: boolean;
|
|
29
|
+
/** Grey the row out and stop it responding to anything. Defaults to `false`. */
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
/** What "open this row" means — a drawer, a detail pane, a route. */
|
|
32
|
+
onActivate?: () => void;
|
|
33
|
+
/**
|
|
34
|
+
* Expose the row as a disclosure: `data-expanded` always, `aria-expanded`
|
|
35
|
+
* when the row has a `role` that can carry it, and `aria-controls` when the
|
|
36
|
+
* disclosed element is on the page.
|
|
37
|
+
*
|
|
38
|
+
* **`aria-expanded` is gated on the role, because on a bare `<div>` it is
|
|
39
|
+
* worse than nothing.** A role-less div maps to `generic`, which supports
|
|
40
|
+
* only the global attributes — so the state is dropped outright by Blink,
|
|
41
|
+
* WebKit and Gecko alike (verified through Chromium's own accessibility
|
|
42
|
+
* tree), announces nothing, and adds a critical `aria-allowed-attr` finding
|
|
43
|
+
* to any axe run over the console that used it. `role` passes straight
|
|
44
|
+
* through as a div prop, so a row that genuinely is a disclosure says which
|
|
45
|
+
* kind it is — `role="button"` for a row that opens a drawer, `role="row"`
|
|
46
|
+
* inside a grid — and gets the attribute with it. Everything else gets
|
|
47
|
+
* `data-expanded`, which styles and tests exactly as well and promises
|
|
48
|
+
* nothing to a screen reader.
|
|
49
|
+
*
|
|
50
|
+
* The row is still not given a widget role on its own account: a
|
|
51
|
+
* `role="button"` row could not legally hold the buttons and links these rows
|
|
52
|
+
* exist to contain, and that judgement belongs to the caller who knows what
|
|
53
|
+
* their row does. Where the disclosure has to be bulletproof for assistive
|
|
54
|
+
* technology, reach for `DataTree` (real `treeitem` expansion) or a
|
|
55
|
+
* `Table.GroupRow` with a real toggle button in it.
|
|
56
|
+
*/
|
|
57
|
+
disclosure?: DataRowDisclosure;
|
|
58
|
+
}
|
|
59
|
+
/** The native `<span>` surface every row slot shares, plus `className`. */
|
|
60
|
+
type DataRowSlotProps = React.ComponentPropsWithoutRef<"span">;
|
|
61
|
+
/**
|
|
62
|
+
* The dense interactive row, as one anatomy three surfaces share.
|
|
63
|
+
*
|
|
64
|
+
* `Ledger`, a grouped `Table` and `DataTree` are three drawings of the same row
|
|
65
|
+
* model, and this is the model: a marker, a label, a description, tags, a
|
|
66
|
+
* figure, and a trailing action cluster that is only there when you are looking
|
|
67
|
+
* at the row. Composing them yourself — rather than passing a `columns` array —
|
|
68
|
+
* is what keeps the primitive domain-neutral: a corpus of skills and a rig of
|
|
69
|
+
* fixtures need the same six slots and completely different columns.
|
|
70
|
+
*
|
|
71
|
+
* The slots are thin: each is a `<span>` with a `data-slot`, the type and
|
|
72
|
+
* truncation rule for its column, and nothing else. They may be used inside a
|
|
73
|
+
* `DataTree` row and inside a `Table.Cell` too — `Table.Row` carries the same
|
|
74
|
+
* `group/data-row` name, so `DataRow.Actions` reveals in the table idiom
|
|
75
|
+
* without a second implementation.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* <DataRow.Root interactive onActivate={() => open(skill)}>
|
|
79
|
+
* <DataRow.Marker><StatusDot tone="ok" /></DataRow.Marker>
|
|
80
|
+
* <DataRow.Label>{skill.name}</DataRow.Label>
|
|
81
|
+
* <DataRow.Meta>{skill.installs}</DataRow.Meta>
|
|
82
|
+
* </DataRow.Root>
|
|
83
|
+
*/
|
|
84
|
+
declare const DataRow: {
|
|
85
|
+
Root: React.ForwardRefExoticComponent<DataRowRootProps & React.RefAttributes<HTMLDivElement>>;
|
|
86
|
+
Marker: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
87
|
+
Label: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
88
|
+
Description: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
89
|
+
Tags: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
90
|
+
Meta: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
91
|
+
Actions: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
92
|
+
};
|
|
93
|
+
//#endregion
|
|
94
|
+
export { DataRow, DataRowDisclosure, DataRowRootProps, DataRowSlotProps };
|