@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,166 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { Button } from "../primitives/button.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/instruments/two-step-button.tsx
|
|
7
|
+
/**
|
|
8
|
+
* The armed confirm button's fill.
|
|
9
|
+
*
|
|
10
|
+
* Both tones now take the ink their own theme authors against them —
|
|
11
|
+
* `danger-fg` on the red, `warn-fg` on the amber — which is the same shape
|
|
12
|
+
* `Button`'s `danger` variant and `RevertDock`'s confirm paint on the red, and
|
|
13
|
+
* the only place in the package the amber's ink is spent.
|
|
14
|
+
*
|
|
15
|
+
* Both replaced literals, and both literals were wrong in the same way. The
|
|
16
|
+
* red's `text-white` measured 2.99:1 on cue's dark block, which is the default
|
|
17
|
+
* theme. The amber's `text-black` was the better guess of the two — an amber is
|
|
18
|
+
* usually light — but "usually" is not a measurement: it fell to 3.58:1 on
|
|
19
|
+
* requestport's light amber, 3.74:1 on dusk's and 4.22:1 on cue's own, because
|
|
20
|
+
* a light theme darkens its amber to clear the paper and a darkened amber wants
|
|
21
|
+
* paper back. Neither pairing could be fixed by choosing a better literal:
|
|
22
|
+
* which ink a tone can carry is a property of that tone, so each theme derives
|
|
23
|
+
* one. Both tokens clear 4.5:1 on all twenty shipped blocks, and
|
|
24
|
+
* `test/destructive-ink.test.ts` measures this string rather than trusting it.
|
|
25
|
+
*
|
|
26
|
+
* Both tokens are spelled without their prefix on purpose. `tokensUsed` in the
|
|
27
|
+
* package manifest is scanned out of the source text, *comments included*, so a
|
|
28
|
+
* `--cue-…` written in prose is published as a token this component resolves
|
|
29
|
+
* whether or not any class string resolves one. Spelling the amber's ink that
|
|
30
|
+
* way while the palette still had none would have published a token that did
|
|
31
|
+
* not exist; spelling it that way now would still put the claim in the wrong
|
|
32
|
+
* place. The class strings below are where this component names its tokens.
|
|
33
|
+
*/
|
|
34
|
+
const CONFIRM_TONES = {
|
|
35
|
+
danger: "border-transparent bg-danger text-danger-fg hover:opacity-90",
|
|
36
|
+
warn: "border-transparent bg-warn text-warn-fg hover:opacity-90"
|
|
37
|
+
};
|
|
38
|
+
/** The idle trigger: outline only, so a destructive action is never the loudest thing on screen. */
|
|
39
|
+
const IDLE_TONES = {
|
|
40
|
+
danger: "border-danger/40 text-danger hover:border-danger hover:bg-danger/10",
|
|
41
|
+
warn: "border-warn/40 text-warn hover:border-warn hover:bg-warn/10"
|
|
42
|
+
};
|
|
43
|
+
/** ms the armed state survives without input before it gives up. */
|
|
44
|
+
const DEFAULT_TIMEOUT_MS = 4e3;
|
|
45
|
+
/**
|
|
46
|
+
* Arm, then confirm: a destructive action that takes two deliberate presses.
|
|
47
|
+
*
|
|
48
|
+
* The most-reused interaction in the portfolio (fifteen call sites, three
|
|
49
|
+
* hand-rolled implementations) and the right shape for a destructive action
|
|
50
|
+
* that is *routine* — deleting a cue, clearing a patch. A modal
|
|
51
|
+
* `AlertDialog` is the right shape for a rare and expensive one; putting a
|
|
52
|
+
* dialog in front of an action people take twenty times an hour just teaches
|
|
53
|
+
* them to dismiss dialogs.
|
|
54
|
+
*
|
|
55
|
+
* Four ways out, because an armed button left lying around is a trap: Cancel,
|
|
56
|
+
* Escape, moving focus away, and a timeout. Focus lands on **Cancel** when the
|
|
57
|
+
* pair arms, never on the destructive half — the same ruling as a destructive
|
|
58
|
+
* dialog's default button, and it means a stuck Enter key cannot walk through
|
|
59
|
+
* both steps.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* <TwoStepButton onConfirm={() => deleteRig(id)}>Delete rig</TwoStepButton>
|
|
63
|
+
* @example
|
|
64
|
+
* <TwoStepButton tone="warn" timeout={0} confirmLabel="Reset it" onConfirm={reset}>
|
|
65
|
+
* Reset patch
|
|
66
|
+
* </TwoStepButton>
|
|
67
|
+
*/
|
|
68
|
+
const TwoStepButton = React.forwardRef(function TwoStepButton({ className, onConfirm, children, confirmLabel = "Confirm", cancelLabel = "Cancel", tone = "danger", timeout = DEFAULT_TIMEOUT_MS, onArmedChange, size, disabled, ...buttonProps }, ref) {
|
|
69
|
+
const [armed, setArmed] = React.useState(false);
|
|
70
|
+
const triggerRef = React.useRef(null);
|
|
71
|
+
const cancelRef = React.useRef(null);
|
|
72
|
+
const groupRef = React.useRef(null);
|
|
73
|
+
const timerRef = React.useRef(void 0);
|
|
74
|
+
const restoreFocusRef = React.useRef(false);
|
|
75
|
+
const setTriggerRef = React.useCallback((element) => {
|
|
76
|
+
triggerRef.current = element;
|
|
77
|
+
if (typeof ref === "function") ref(element);
|
|
78
|
+
else if (ref !== null) ref.current = element;
|
|
79
|
+
}, [ref]);
|
|
80
|
+
const clearTimer = React.useCallback(() => {
|
|
81
|
+
if (timerRef.current !== void 0) clearTimeout(timerRef.current);
|
|
82
|
+
timerRef.current = void 0;
|
|
83
|
+
}, []);
|
|
84
|
+
React.useEffect(() => clearTimer, [clearTimer]);
|
|
85
|
+
const disarm = React.useCallback((restoreFocus) => {
|
|
86
|
+
clearTimer();
|
|
87
|
+
restoreFocusRef.current = restoreFocus;
|
|
88
|
+
setArmed(false);
|
|
89
|
+
onArmedChange?.(false);
|
|
90
|
+
}, [clearTimer, onArmedChange]);
|
|
91
|
+
const arm = React.useCallback(() => {
|
|
92
|
+
setArmed(true);
|
|
93
|
+
onArmedChange?.(true);
|
|
94
|
+
if (timeout > 0) {
|
|
95
|
+
clearTimer();
|
|
96
|
+
timerRef.current = setTimeout(() => {
|
|
97
|
+
timerRef.current = void 0;
|
|
98
|
+
disarm(true);
|
|
99
|
+
}, timeout);
|
|
100
|
+
}
|
|
101
|
+
}, [
|
|
102
|
+
clearTimer,
|
|
103
|
+
disarm,
|
|
104
|
+
onArmedChange,
|
|
105
|
+
timeout
|
|
106
|
+
]);
|
|
107
|
+
React.useEffect(() => {
|
|
108
|
+
if (armed) {
|
|
109
|
+
cancelRef.current?.focus();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (!restoreFocusRef.current) return;
|
|
113
|
+
restoreFocusRef.current = false;
|
|
114
|
+
triggerRef.current?.focus();
|
|
115
|
+
}, [armed]);
|
|
116
|
+
if (!armed) return /* @__PURE__ */ jsx(Button, {
|
|
117
|
+
ref: setTriggerRef,
|
|
118
|
+
variant: "outline",
|
|
119
|
+
size,
|
|
120
|
+
disabled,
|
|
121
|
+
"data-slot": "two-step-button",
|
|
122
|
+
"data-tone": tone,
|
|
123
|
+
"data-armed": "false",
|
|
124
|
+
className: cn(IDLE_TONES[tone], className),
|
|
125
|
+
onClick: arm,
|
|
126
|
+
...buttonProps,
|
|
127
|
+
children
|
|
128
|
+
});
|
|
129
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
130
|
+
ref: groupRef,
|
|
131
|
+
"data-slot": "two-step-button-armed",
|
|
132
|
+
"data-tone": tone,
|
|
133
|
+
className: "inline-flex items-center gap-(--cue-space-2)",
|
|
134
|
+
onKeyDown: (event) => {
|
|
135
|
+
if (event.key !== "Escape") return;
|
|
136
|
+
event.stopPropagation();
|
|
137
|
+
disarm(true);
|
|
138
|
+
},
|
|
139
|
+
onBlur: (event) => {
|
|
140
|
+
const next = event.relatedTarget;
|
|
141
|
+
if (next !== null && groupRef.current?.contains(next) === true) return;
|
|
142
|
+
disarm(false);
|
|
143
|
+
},
|
|
144
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
145
|
+
ref: cancelRef,
|
|
146
|
+
variant: "ghost",
|
|
147
|
+
size,
|
|
148
|
+
"data-slot": "two-step-button-cancel",
|
|
149
|
+
onClick: () => disarm(true),
|
|
150
|
+
children: cancelLabel
|
|
151
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
152
|
+
variant: "outline",
|
|
153
|
+
size,
|
|
154
|
+
"data-slot": "two-step-button-confirm",
|
|
155
|
+
className: cn(CONFIRM_TONES[tone], className),
|
|
156
|
+
onClick: () => {
|
|
157
|
+
disarm(true);
|
|
158
|
+
onConfirm();
|
|
159
|
+
},
|
|
160
|
+
...buttonProps,
|
|
161
|
+
children: confirmLabel
|
|
162
|
+
})]
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
//#endregion
|
|
166
|
+
export { TwoStepButton };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/usage-chart.d.ts
|
|
3
|
+
/** One sample: a timestamp in ms, and a percentage. */
|
|
4
|
+
interface UsageChartPoint {
|
|
5
|
+
/** Epoch ms. Non-finite and non-positive timestamps are dropped. */
|
|
6
|
+
t: number;
|
|
7
|
+
/** Percentage of the ceiling. Clamped to 0–100 on the way in. */
|
|
8
|
+
v: number;
|
|
9
|
+
}
|
|
10
|
+
/** Stroke colour, in the shared status vocabulary. */
|
|
11
|
+
type UsageChartTone = "accent" | "ok" | "busy" | "warn" | "danger" | "info";
|
|
12
|
+
interface UsageChartProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
13
|
+
/** The series. Sorted and cleaned internally; order in is not order out. */
|
|
14
|
+
points: readonly UsageChartPoint[];
|
|
15
|
+
/** Stroke tone. Defaults to `"accent"`. */
|
|
16
|
+
tone?: UsageChartTone;
|
|
17
|
+
/** Plot height in px at the 16px root. Defaults to `120`. */
|
|
18
|
+
height?: number;
|
|
19
|
+
/** Break the line when consecutive samples are further apart than this, in ms. */
|
|
20
|
+
gapMs?: number;
|
|
21
|
+
/** Draw a dashed rule at this percentage — where throttling starts, say. */
|
|
22
|
+
threshold?: number;
|
|
23
|
+
/** The accessible name. Name the series; the shape is not self-describing. */
|
|
24
|
+
label?: string;
|
|
25
|
+
/** What to say when there is nothing to plot. Defaults to `"No data yet"`. */
|
|
26
|
+
emptyLabel?: string;
|
|
27
|
+
/** Format a sample's timestamp for the tooltip. Defaults to a short local date-time. */
|
|
28
|
+
formatTimestamp?: (t: number) => string;
|
|
29
|
+
/** Format a sample's value for the tooltip. Defaults to `"87%"`. */
|
|
30
|
+
formatValue?: (v: number) => string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A quota trace: where you sit against the ceiling, over time.
|
|
34
|
+
*
|
|
35
|
+
* Dependency-free inline SVG — a charting library is a large price for one
|
|
36
|
+
* line and five gridlines, and none of them draws the three things that make
|
|
37
|
+
* this chart honest:
|
|
38
|
+
*
|
|
39
|
+
* 1. **The y axis is always 0–100.** A quota chart auto-scaled to its own range
|
|
40
|
+
* makes a flat 3% look identical to a flat 95%. The ceiling is the reading,
|
|
41
|
+
* so the ceiling is always drawn.
|
|
42
|
+
* 2. **Gaps are gaps.** When the sweep does not run, the line breaks. Joining
|
|
43
|
+
* across a hole invents data — and worse, invents a *smooth* trend across
|
|
44
|
+
* exactly the window nothing is known about. The area fill stops at the
|
|
45
|
+
* break for the same reason.
|
|
46
|
+
* 3. **Out-of-range values are clamped, not plotted.** Upstream numbers are
|
|
47
|
+
* reverse-engineered and can be anything; 140% should read as a flat line on
|
|
48
|
+
* the ceiling, not as a path drawn over the axis labels.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* <UsageChart label="API requests" points={series} threshold={80} tone="warn" />
|
|
52
|
+
*/
|
|
53
|
+
declare const UsageChart: React.ForwardRefExoticComponent<UsageChartProps & React.RefAttributes<HTMLDivElement>>;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { UsageChart, UsageChartPoint, UsageChartProps, UsageChartTone };
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { toRem } from "./_rem.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/instruments/usage-chart.tsx
|
|
7
|
+
const TONE_CLASSES = {
|
|
8
|
+
accent: "text-accent",
|
|
9
|
+
ok: "text-ok",
|
|
10
|
+
busy: "text-busy",
|
|
11
|
+
warn: "text-warn",
|
|
12
|
+
danger: "text-danger",
|
|
13
|
+
info: "text-info"
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Fixed viewBox width. The SVG stretches to its container, so the internal
|
|
17
|
+
* width can be a constant and the path maths stays integer-friendly.
|
|
18
|
+
*/
|
|
19
|
+
const VIEW_WIDTH = 600;
|
|
20
|
+
/** Room for the axis labels, in viewBox units, without a layout pass. */
|
|
21
|
+
const PAD = {
|
|
22
|
+
top: 6,
|
|
23
|
+
right: 4,
|
|
24
|
+
bottom: 14,
|
|
25
|
+
left: 22
|
|
26
|
+
};
|
|
27
|
+
/** The horizontal rules. 0 and 100 are the ceiling and the floor; the rest are guides. */
|
|
28
|
+
const GRID_LINES = [
|
|
29
|
+
0,
|
|
30
|
+
25,
|
|
31
|
+
50,
|
|
32
|
+
75,
|
|
33
|
+
100
|
|
34
|
+
];
|
|
35
|
+
/** Default plot height in px at the 16px root. */
|
|
36
|
+
const DEFAULT_HEIGHT_PX = 120;
|
|
37
|
+
/** Default hole width before the line breaks: one missed quarter-hourly sweep. */
|
|
38
|
+
const DEFAULT_GAP_MS = 9e5;
|
|
39
|
+
/** Axis label size, in viewBox units — not a token, because the viewBox is not in rem. */
|
|
40
|
+
const AXIS_FONT_SIZE = 8;
|
|
41
|
+
/** Sorted, finite samples split into runs no wider than `gapMs`. */
|
|
42
|
+
function segment(points, gapMs) {
|
|
43
|
+
const clean = points.filter((point) => Number.isFinite(point.t) && Number.isFinite(point.v) && point.t >= 0).sort((a, b) => a.t - b.t);
|
|
44
|
+
if (clean.length === 0) return [];
|
|
45
|
+
const runs = [];
|
|
46
|
+
let run = [clean[0]];
|
|
47
|
+
for (let index = 1; index < clean.length; index += 1) {
|
|
48
|
+
const point = clean[index];
|
|
49
|
+
const previous = clean[index - 1];
|
|
50
|
+
if (point.t - previous.t > gapMs) {
|
|
51
|
+
runs.push(run);
|
|
52
|
+
run = [];
|
|
53
|
+
}
|
|
54
|
+
run.push(point);
|
|
55
|
+
}
|
|
56
|
+
runs.push(run);
|
|
57
|
+
return runs;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A quota trace: where you sit against the ceiling, over time.
|
|
61
|
+
*
|
|
62
|
+
* Dependency-free inline SVG — a charting library is a large price for one
|
|
63
|
+
* line and five gridlines, and none of them draws the three things that make
|
|
64
|
+
* this chart honest:
|
|
65
|
+
*
|
|
66
|
+
* 1. **The y axis is always 0–100.** A quota chart auto-scaled to its own range
|
|
67
|
+
* makes a flat 3% look identical to a flat 95%. The ceiling is the reading,
|
|
68
|
+
* so the ceiling is always drawn.
|
|
69
|
+
* 2. **Gaps are gaps.** When the sweep does not run, the line breaks. Joining
|
|
70
|
+
* across a hole invents data — and worse, invents a *smooth* trend across
|
|
71
|
+
* exactly the window nothing is known about. The area fill stops at the
|
|
72
|
+
* break for the same reason.
|
|
73
|
+
* 3. **Out-of-range values are clamped, not plotted.** Upstream numbers are
|
|
74
|
+
* reverse-engineered and can be anything; 140% should read as a flat line on
|
|
75
|
+
* the ceiling, not as a path drawn over the axis labels.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* <UsageChart label="API requests" points={series} threshold={80} tone="warn" />
|
|
79
|
+
*/
|
|
80
|
+
const UsageChart = React.forwardRef(function UsageChart({ className, points, tone = "accent", height = DEFAULT_HEIGHT_PX, gapMs = DEFAULT_GAP_MS, threshold, label, emptyLabel = "No data yet", formatTimestamp, formatValue = (value) => `${Math.round(value)}%`, ...elementProps }, ref) {
|
|
81
|
+
const gradientId = React.useId();
|
|
82
|
+
const [hover, setHover] = React.useState(null);
|
|
83
|
+
const segments = React.useMemo(() => segment(points, gapMs), [points, gapMs]);
|
|
84
|
+
const plotWidth = VIEW_WIDTH - PAD.left - PAD.right;
|
|
85
|
+
const plotHeight = height - PAD.top - PAD.bottom;
|
|
86
|
+
const floor = PAD.top + plotHeight;
|
|
87
|
+
const all = React.useMemo(() => segments.flat(), [segments]);
|
|
88
|
+
const first = all[0];
|
|
89
|
+
const last = all[all.length - 1];
|
|
90
|
+
const start = first?.t ?? 0;
|
|
91
|
+
const span = Math.max(1, (last?.t ?? start + 1) - start);
|
|
92
|
+
const round = (value) => Math.round(value * 100) / 100;
|
|
93
|
+
const x = (t) => round(PAD.left + (t - start) / span * plotWidth);
|
|
94
|
+
const y = (value) => round(PAD.top + (1 - Math.min(100, Math.max(0, value)) / 100) * plotHeight);
|
|
95
|
+
if (segments.length === 0) return /* @__PURE__ */ jsx("div", {
|
|
96
|
+
ref,
|
|
97
|
+
"data-slot": "usage-chart",
|
|
98
|
+
"data-empty": "true",
|
|
99
|
+
className: cn("flex items-center justify-center font-mono text-(length:--cue-text-label) text-fg-subtle", className),
|
|
100
|
+
style: { height: toRem(height) },
|
|
101
|
+
...elementProps,
|
|
102
|
+
children: emptyLabel
|
|
103
|
+
});
|
|
104
|
+
const linePath = (run) => run.map((point, index) => `${index === 0 ? "M" : "L"}${x(point.t).toFixed(1)},${y(point.v).toFixed(1)}`).join(" ");
|
|
105
|
+
const areaPath = (run) => `${linePath(run)} L${x(run[run.length - 1].t).toFixed(1)},${floor.toFixed(1)} L${x(run[0].t).toFixed(1)},${floor.toFixed(1)} Z`;
|
|
106
|
+
const onMove = (event) => {
|
|
107
|
+
const box = event.currentTarget.getBoundingClientRect();
|
|
108
|
+
if (box.width === 0) return;
|
|
109
|
+
const viewX = (event.clientX - box.left) / box.width * VIEW_WIDTH;
|
|
110
|
+
const t = start + (viewX - PAD.left) / plotWidth * span;
|
|
111
|
+
let nearest = all[0];
|
|
112
|
+
for (const point of all) if (Math.abs(point.t - t) < Math.abs(nearest.t - t)) nearest = point;
|
|
113
|
+
setHover({
|
|
114
|
+
x: viewX,
|
|
115
|
+
point: nearest
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
119
|
+
ref,
|
|
120
|
+
"data-slot": "usage-chart",
|
|
121
|
+
className: cn("relative min-w-0", className),
|
|
122
|
+
...elementProps,
|
|
123
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
124
|
+
role: "img",
|
|
125
|
+
"aria-label": label ?? "Usage over time",
|
|
126
|
+
"data-tone": tone,
|
|
127
|
+
viewBox: `0 0 ${VIEW_WIDTH} ${height}`,
|
|
128
|
+
preserveAspectRatio: "none",
|
|
129
|
+
className: cn("block w-full", TONE_CLASSES[tone]),
|
|
130
|
+
style: { height: toRem(height) },
|
|
131
|
+
onMouseMove: onMove,
|
|
132
|
+
onMouseLeave: () => setHover(null),
|
|
133
|
+
children: [
|
|
134
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
|
|
135
|
+
id: gradientId,
|
|
136
|
+
x1: "0",
|
|
137
|
+
y1: "0",
|
|
138
|
+
x2: "0",
|
|
139
|
+
y2: "1",
|
|
140
|
+
children: [/* @__PURE__ */ jsx("stop", {
|
|
141
|
+
offset: "0%",
|
|
142
|
+
stopColor: "currentColor",
|
|
143
|
+
stopOpacity: "0.22"
|
|
144
|
+
}), /* @__PURE__ */ jsx("stop", {
|
|
145
|
+
offset: "100%",
|
|
146
|
+
stopColor: "currentColor",
|
|
147
|
+
stopOpacity: "0"
|
|
148
|
+
})]
|
|
149
|
+
}) }),
|
|
150
|
+
/* @__PURE__ */ jsx("g", {
|
|
151
|
+
className: "text-border",
|
|
152
|
+
children: GRID_LINES.map((value) => /* @__PURE__ */ jsx("line", {
|
|
153
|
+
"data-slot": "usage-chart-grid",
|
|
154
|
+
x1: PAD.left,
|
|
155
|
+
x2: VIEW_WIDTH - PAD.right,
|
|
156
|
+
y1: y(value),
|
|
157
|
+
y2: y(value),
|
|
158
|
+
stroke: "currentColor",
|
|
159
|
+
strokeWidth: "0.5",
|
|
160
|
+
opacity: value === 0 || value === 100 ? .9 : .45
|
|
161
|
+
}, value))
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ jsx("g", {
|
|
164
|
+
className: "fill-fg-subtle font-mono",
|
|
165
|
+
children: GRID_LINES.map((value) => /* @__PURE__ */ jsx("text", {
|
|
166
|
+
"data-slot": "usage-chart-axis",
|
|
167
|
+
x: PAD.left - 4,
|
|
168
|
+
y: y(value) + 3,
|
|
169
|
+
textAnchor: "end",
|
|
170
|
+
fontSize: AXIS_FONT_SIZE,
|
|
171
|
+
children: value
|
|
172
|
+
}, value))
|
|
173
|
+
}),
|
|
174
|
+
threshold === void 0 ? null : /* @__PURE__ */ jsx("line", {
|
|
175
|
+
"data-slot": "usage-chart-threshold",
|
|
176
|
+
className: "text-danger",
|
|
177
|
+
x1: PAD.left,
|
|
178
|
+
x2: VIEW_WIDTH - PAD.right,
|
|
179
|
+
y1: y(threshold),
|
|
180
|
+
y2: y(threshold),
|
|
181
|
+
stroke: "currentColor",
|
|
182
|
+
strokeWidth: "0.75",
|
|
183
|
+
strokeDasharray: "3 3",
|
|
184
|
+
opacity: "0.7"
|
|
185
|
+
}),
|
|
186
|
+
segments.map((run, index) => /* @__PURE__ */ jsxs("g", { children: [run.length > 1 ? /* @__PURE__ */ jsx("path", {
|
|
187
|
+
"data-slot": "usage-chart-area",
|
|
188
|
+
d: areaPath(run),
|
|
189
|
+
fill: `url(#${gradientId})`
|
|
190
|
+
}) : null, /* @__PURE__ */ jsx("path", {
|
|
191
|
+
"data-slot": "usage-chart-line",
|
|
192
|
+
d: linePath(run),
|
|
193
|
+
fill: "none",
|
|
194
|
+
stroke: "currentColor",
|
|
195
|
+
strokeWidth: "1.25",
|
|
196
|
+
strokeLinejoin: "round",
|
|
197
|
+
strokeLinecap: "round",
|
|
198
|
+
vectorEffect: "non-scaling-stroke"
|
|
199
|
+
})] }, index)),
|
|
200
|
+
hover === null ? null : /* @__PURE__ */ jsxs("g", {
|
|
201
|
+
pointerEvents: "none",
|
|
202
|
+
children: [/* @__PURE__ */ jsx("line", {
|
|
203
|
+
"data-slot": "usage-chart-crosshair",
|
|
204
|
+
className: "text-fg",
|
|
205
|
+
x1: x(hover.point.t),
|
|
206
|
+
x2: x(hover.point.t),
|
|
207
|
+
y1: PAD.top,
|
|
208
|
+
y2: floor,
|
|
209
|
+
stroke: "currentColor",
|
|
210
|
+
strokeWidth: "0.5",
|
|
211
|
+
opacity: "0.5"
|
|
212
|
+
}), /* @__PURE__ */ jsx("circle", {
|
|
213
|
+
"data-slot": "usage-chart-marker",
|
|
214
|
+
cx: x(hover.point.t),
|
|
215
|
+
cy: y(hover.point.v),
|
|
216
|
+
r: "2.5",
|
|
217
|
+
fill: "currentColor"
|
|
218
|
+
})]
|
|
219
|
+
})
|
|
220
|
+
]
|
|
221
|
+
}), hover === null ? null : /* @__PURE__ */ jsx("div", {
|
|
222
|
+
"data-slot": "usage-chart-tooltip",
|
|
223
|
+
className: "pointer-events-none absolute top-0 -translate-x-1/2 rounded-(--radius-control) border border-border-overlay bg-surface-2 px-(--cue-space-3) py-(--cue-space-1) font-mono text-(length:--cue-text-label) tabular-nums text-fg",
|
|
224
|
+
style: { left: `${Math.min(88, Math.max(2, hover.x / VIEW_WIDTH * 100))}%` },
|
|
225
|
+
children: `${formatValue(hover.point.v)} · ${formatTimestamp === void 0 ? new Date(hover.point.t).toLocaleString(void 0, {
|
|
226
|
+
month: "short",
|
|
227
|
+
day: "numeric",
|
|
228
|
+
hour: "2-digit",
|
|
229
|
+
minute: "2-digit"
|
|
230
|
+
}) : formatTimestamp(hover.point.t)}`
|
|
231
|
+
})]
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
//#endregion
|
|
235
|
+
export { UsageChart };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/layout/_collapse.ts
|
|
2
|
+
/**
|
|
3
|
+
* The one disclosure recipe, shared by `Accordion` and `Collapsible`.
|
|
4
|
+
*
|
|
5
|
+
* Both wrap a Base UI primitive that speaks the same state vocabulary
|
|
6
|
+
* (`data-panel-open` on the trigger, a measured `--*-panel-height` on the
|
|
7
|
+
* panel), so the skin is written once here rather than twice — a change to how
|
|
8
|
+
* a section opens is then a one-line change, and the tests can assert the same
|
|
9
|
+
* recipe on both.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* The summary row: one rung of the density control ladder, mono, padded to the
|
|
15
|
+
* same gutters as a `Row` so a stack of sections lines up with a stack of rows.
|
|
16
|
+
*
|
|
17
|
+
* `focus-visible:outline-solid` re-declares the outline style the sibling
|
|
18
|
+
* `outline-none` switched off — see the note on `buttonChassis`. The ring is
|
|
19
|
+
* inset (`-outline-offset-2`) because sections live inside `overflow-hidden`
|
|
20
|
+
* panels, where an outset ring on the first row would be clipped by the rim.
|
|
21
|
+
*/
|
|
22
|
+
const collapseTriggerClasses = "group/collapse flex h-control-md w-full cursor-pointer items-center gap-(--cue-space-3) px-(--cue-pad-row-x) text-left font-mono text-(length:--cue-text-ui) text-fg-muted transition-colors duration-150 outline-none select-none hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent data-[panel-open]:text-fg data-[disabled]:pointer-events-none data-[disabled]:opacity-40";
|
|
23
|
+
/** The label between the summary row's gutters — truncates, never wraps. */
|
|
24
|
+
const collapseLabelClasses = "min-w-0 flex-1 truncate";
|
|
25
|
+
/**
|
|
26
|
+
* The caret at the end of a summary row. Rotation is driven off the trigger's
|
|
27
|
+
* own `data-panel-open`, so nothing in React has to know the section is open.
|
|
28
|
+
*/
|
|
29
|
+
const collapseCaretClasses = "size-icon-sm shrink-0 text-fg-subtle transition-transform duration-150 ease-out group-data-[panel-open]/collapse:rotate-90 motion-reduce:transition-none";
|
|
30
|
+
/**
|
|
31
|
+
* Enter/exit for a panel, animated from the height Base UI measures for us.
|
|
32
|
+
*
|
|
33
|
+
* The animating element carries no padding on purpose: padding is part of the
|
|
34
|
+
* box's height, so it would be counted into the `0 → measured` transition and
|
|
35
|
+
* make the panel jump at both ends. The body lives one element in — see
|
|
36
|
+
* {@link collapsePanelBodyClasses}.
|
|
37
|
+
*/
|
|
38
|
+
const PANEL_MOTION = "overflow-hidden transition-[height] duration-150 ease-out motion-reduce:transition-none data-[starting-style]:h-0 data-[ending-style]:h-0";
|
|
39
|
+
/** {@link PANEL_MOTION} against the accordion's measured height. */
|
|
40
|
+
const accordionPanelClasses = `${PANEL_MOTION} h-(--accordion-panel-height)`;
|
|
41
|
+
/** {@link PANEL_MOTION} against the collapsible's measured height. */
|
|
42
|
+
const collapsiblePanelClasses = `${PANEL_MOTION} h-(--collapsible-panel-height)`;
|
|
43
|
+
/** The padded body inside a panel: aligned to the summary row's gutters. */
|
|
44
|
+
const collapsePanelBodyClasses = "px-(--cue-pad-row-x) pt-(--cue-space-1) pb-(--cue-space-4) font-mono text-(length:--cue-text-ui) leading-(--cue-leading-ui) text-fg-muted";
|
|
45
|
+
//#endregion
|
|
46
|
+
export { accordionPanelClasses, collapseCaretClasses, collapseLabelClasses, collapsePanelBodyClasses, collapseTriggerClasses, collapsiblePanelClasses };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/layout/_glyphs.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Shared layout glyphs.
|
|
6
|
+
*
|
|
7
|
+
* Drawn inline rather than pulled from `lucide-react` for the same reason as
|
|
8
|
+
* `chrome/_glyphs.tsx` and `overlays/_glyphs.tsx`: a caret on an accordion row
|
|
9
|
+
* and a chevron on a pager should not put an icon dependency on the render path
|
|
10
|
+
* of every page, and hand-set strokes stay hairline-thin at the 8–12px sizes
|
|
11
|
+
* console density asks for. `currentColor` everywhere — the tone comes from the
|
|
12
|
+
* parent.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the public API.
|
|
15
|
+
*/
|
|
16
|
+
/** A right-pointing chevron. Rotate it 90° to point down. */
|
|
17
|
+
function ChevronRightGlyph(props) {
|
|
18
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
19
|
+
viewBox: "0 0 16 16",
|
|
20
|
+
fill: "none",
|
|
21
|
+
stroke: "currentColor",
|
|
22
|
+
strokeWidth: "2",
|
|
23
|
+
strokeLinecap: "round",
|
|
24
|
+
strokeLinejoin: "round",
|
|
25
|
+
"aria-hidden": "true",
|
|
26
|
+
...props,
|
|
27
|
+
children: /* @__PURE__ */ jsx("path", { d: "m6 3 5 5-5 5" })
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/** A left-pointing chevron. */
|
|
31
|
+
function ChevronLeftGlyph(props) {
|
|
32
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
33
|
+
viewBox: "0 0 16 16",
|
|
34
|
+
fill: "none",
|
|
35
|
+
stroke: "currentColor",
|
|
36
|
+
strokeWidth: "2",
|
|
37
|
+
strokeLinecap: "round",
|
|
38
|
+
strokeLinejoin: "round",
|
|
39
|
+
"aria-hidden": "true",
|
|
40
|
+
...props,
|
|
41
|
+
children: /* @__PURE__ */ jsx("path", { d: "m10 3-5 5 5 5" })
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { ChevronLeftGlyph, ChevronRightGlyph };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/layout/_ground.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The three grounds a stage or a canvas may paint, and the classes for each.
|
|
4
|
+
*
|
|
5
|
+
* One table and not two, because `Preview`'s stage and `Frames.Root`'s canvas
|
|
6
|
+
* take the same three members and a second copy would be the one that drifted.
|
|
7
|
+
* Static literals, because Tailwind scans source text and never a computed
|
|
8
|
+
* string.
|
|
9
|
+
*
|
|
10
|
+
* `dots` is written as three classes in exactly the order `STAGE_CLASS` carried
|
|
11
|
+
* them before this table existed — `bg-surface-1`, then the radial gradient,
|
|
12
|
+
* then its size. `cn` is `twMerge(clsx(...))`, which keeps the order it is
|
|
13
|
+
* given, so composing head + ground + tail reproduces today's string token for
|
|
14
|
+
* token. `preview.test.tsx`'s byte gate is what holds that.
|
|
15
|
+
*
|
|
16
|
+
* @internal Not part of the public API. The type is re-exported from
|
|
17
|
+
* `./preview`, which is where §4.1 of the showroom spec declares it.
|
|
18
|
+
*/
|
|
19
|
+
/** The stage's ground, in the settings popover's own words. */
|
|
20
|
+
type PreviewGround = "plain" | "dots" | "none";
|
|
21
|
+
//#endregion
|
|
22
|
+
export { PreviewGround };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/layout/_ground.ts
|
|
2
|
+
/** What each ground paints. `"none"` paints nothing, so whatever is behind shows through. */
|
|
3
|
+
const GROUND_CLASSES = {
|
|
4
|
+
plain: "bg-surface-1",
|
|
5
|
+
dots: "bg-surface-1 bg-[radial-gradient(circle,var(--cue-hair-strong)_1px,transparent_1.3px)] bg-[length:14px_14px]",
|
|
6
|
+
none: ""
|
|
7
|
+
};
|
|
8
|
+
//#endregion
|
|
9
|
+
export { GROUND_CLASSES };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Accordion } from "@base-ui/react/accordion";
|
|
3
|
+
//#region src/layout/accordion.d.ts
|
|
4
|
+
interface AccordionRootProps extends Omit<Accordion.Root.Props, "className"> {
|
|
5
|
+
/** Extra classes for the accordion frame. */
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
interface AccordionItemProps extends Omit<Accordion.Item.Props, "className"> {
|
|
9
|
+
/** Extra classes for the section. */
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
interface AccordionHeaderProps extends Omit<Accordion.Header.Props, "className"> {
|
|
13
|
+
/** Extra classes for the heading. */
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
interface AccordionTriggerProps extends Omit<Accordion.Trigger.Props, "className"> {
|
|
17
|
+
/** Extra classes for the summary row. */
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
interface AccordionPanelProps extends Omit<Accordion.Panel.Props, "className"> {
|
|
21
|
+
/** Extra classes for the animating box. Padding belongs on `bodyClassName`. */
|
|
22
|
+
className?: string;
|
|
23
|
+
/** Extra classes for the padded body inside it. */
|
|
24
|
+
bodyClassName?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A stack of sections, one (or several) open at a time.
|
|
28
|
+
*
|
|
29
|
+
* Wraps Base UI's `Accordion`, so the disclosure ARIA, keyboard handling and
|
|
30
|
+
* open-state bookkeeping are the primitive's. This layer adds the console skin:
|
|
31
|
+
* hairline separation, mono summary rows on the control ladder, and a height
|
|
32
|
+
* transition that respects `prefers-reduced-motion`.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* <Accordion.Root>
|
|
36
|
+
* <Accordion.Item value="routing">
|
|
37
|
+
* <Accordion.Header><Accordion.Trigger>routing</Accordion.Trigger></Accordion.Header>
|
|
38
|
+
* <Accordion.Panel>…</Accordion.Panel>
|
|
39
|
+
* </Accordion.Item>
|
|
40
|
+
* </Accordion.Root>
|
|
41
|
+
* @example
|
|
42
|
+
* <Accordion.Root multiple defaultValue={["routing"]}>…</Accordion.Root>
|
|
43
|
+
*/
|
|
44
|
+
declare const Accordion$1: {
|
|
45
|
+
Root: React.ForwardRefExoticComponent<Omit<AccordionRootProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
Item: React.ForwardRefExoticComponent<Omit<AccordionItemProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
47
|
+
Header: React.ForwardRefExoticComponent<Omit<AccordionHeaderProps, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
|
|
48
|
+
Trigger: React.ForwardRefExoticComponent<Omit<AccordionTriggerProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
49
|
+
Panel: React.ForwardRefExoticComponent<Omit<AccordionPanelProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { Accordion$1 as Accordion, AccordionHeaderProps, AccordionItemProps, AccordionPanelProps, AccordionRootProps, AccordionTriggerProps };
|