@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,215 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { Chip } from "../primitives/chip.js";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "../system/use-isomorphic-layout-effect.js";
|
|
5
|
+
import { toRem } from "./_rem.js";
|
|
6
|
+
import { useControlHeight } from "../system/use-density.js";
|
|
7
|
+
import { ansiSpans } from "./_ansi.js";
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
11
|
+
//#region src/instruments/log-viewer.tsx
|
|
12
|
+
/** Canonical order for the filter strip — quietest first, loudest last. */
|
|
13
|
+
const LEVEL_ORDER = [
|
|
14
|
+
"debug",
|
|
15
|
+
"info",
|
|
16
|
+
"warn",
|
|
17
|
+
"error"
|
|
18
|
+
];
|
|
19
|
+
const LEVEL_TONES = {
|
|
20
|
+
debug: "text-fg-subtle",
|
|
21
|
+
info: "text-fg-muted",
|
|
22
|
+
warn: "text-warn",
|
|
23
|
+
error: "text-danger"
|
|
24
|
+
};
|
|
25
|
+
const LEVEL_CHIP_TONES = {
|
|
26
|
+
debug: "neutral",
|
|
27
|
+
info: "info",
|
|
28
|
+
warn: "warn",
|
|
29
|
+
error: "danger"
|
|
30
|
+
};
|
|
31
|
+
/** How many lines are kept before the head is dropped. */
|
|
32
|
+
const DEFAULT_MAX_LINES = 5e3;
|
|
33
|
+
/** Rows rendered beyond the viewport, so a fast scroll never shows white. */
|
|
34
|
+
const OVERSCAN = 8;
|
|
35
|
+
/** Slack, in px, for "close enough to the bottom to count as pinned". */
|
|
36
|
+
const BOTTOM_TOLERANCE = 4;
|
|
37
|
+
/** Local wall-clock, seconds resolution — the only part of a log timestamp a reader scans. */
|
|
38
|
+
function defaultTimestamp(ts) {
|
|
39
|
+
return new Date(ts).toLocaleTimeString(void 0, {
|
|
40
|
+
hour: "2-digit",
|
|
41
|
+
minute: "2-digit",
|
|
42
|
+
second: "2-digit",
|
|
43
|
+
hour12: false
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A virtualised log tail: ANSI colour, level filters, and stick-to-bottom.
|
|
48
|
+
*
|
|
49
|
+
* The four things a log pane has to get right, and the reasons each one is not
|
|
50
|
+
* optional:
|
|
51
|
+
*
|
|
52
|
+
* - **Virtualised.** Five thousand DOM rows is a frozen tab. Rows are fixed at
|
|
53
|
+
* the short control rung so the virtualiser never has to measure, which is
|
|
54
|
+
* also what keeps the scrollbar honest while lines stream in.
|
|
55
|
+
* - **ANSI as data, never as HTML.** `anser` will happily hand back a markup
|
|
56
|
+
* string, and the moment that reaches `dangerouslySetInnerHTML` any process
|
|
57
|
+
* that prints a `<script>` owns the console watching it. Colour arrives here
|
|
58
|
+
* as spans of *text* with resolved token colours (see `_ansi.ts`).
|
|
59
|
+
* - **Following is a mode, not a scroll.** While pinned to the bottom the view
|
|
60
|
+
* follows; scroll up and it stops and starts counting, so reading something
|
|
61
|
+
* is never fought by the stream. The count comes back as a pill, not as a
|
|
62
|
+
* jump.
|
|
63
|
+
* - **A cap.** An unbounded buffer is a memory leak with a progress bar. The
|
|
64
|
+
* head is dropped past `maxLines`.
|
|
65
|
+
*
|
|
66
|
+
* Ships from `@cueplusplus/ui/instruments/log-viewer`: it needs
|
|
67
|
+
* `@tanstack/react-virtual` and `anser`, both optional peers, and neither
|
|
68
|
+
* belongs in the bundle of an app that renders no logs.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* <LogViewer aria-label="Build output" height={320} lines={lines} />
|
|
72
|
+
* @example
|
|
73
|
+
* <LogViewer aria-label="Worker" height={200} follow={false} filters={["warn", "error"]} lines={lines} />
|
|
74
|
+
*/
|
|
75
|
+
const LogViewer = React.forwardRef(function LogViewer({ className, lines, follow = true, filters, height, rowHeight, maxLines = DEFAULT_MAX_LINES, formatTimestamp = defaultTimestamp, emptyLabel = "No output", newLinesLabel = (count) => `${count} new line${count === 1 ? "" : "s"}`, "aria-label": ariaLabel, ...elementProps }, ref) {
|
|
76
|
+
const measuredRow = useControlHeight("sm");
|
|
77
|
+
const row = rowHeight ?? measuredRow;
|
|
78
|
+
const scrollerRef = React.useRef(null);
|
|
79
|
+
const [muted, setMuted] = React.useState([]);
|
|
80
|
+
const [pinned, setPinned] = React.useState(true);
|
|
81
|
+
const [pending, setPending] = React.useState(0);
|
|
82
|
+
const capped = React.useMemo(() => lines.length > maxLines ? lines.slice(lines.length - maxLines) : lines, [lines, maxLines]);
|
|
83
|
+
const chips = React.useMemo(() => {
|
|
84
|
+
if (filters === false) return [];
|
|
85
|
+
if (filters !== void 0) return filters;
|
|
86
|
+
const present = new Set(capped.map((line) => line.level).filter(Boolean));
|
|
87
|
+
return LEVEL_ORDER.filter((level) => present.has(level));
|
|
88
|
+
}, [capped, filters]);
|
|
89
|
+
const hidden = React.useMemo(() => muted.filter((level) => chips.includes(level)), [chips, muted]);
|
|
90
|
+
const visible = React.useMemo(() => hidden.length === 0 ? capped : capped.filter((line) => line.level === void 0 || !hidden.includes(line.level)), [capped, hidden]);
|
|
91
|
+
const virtualizer = useVirtualizer({
|
|
92
|
+
count: visible.length,
|
|
93
|
+
getScrollElement: () => scrollerRef.current,
|
|
94
|
+
estimateSize: () => row,
|
|
95
|
+
getItemKey: (index) => visible[index].id,
|
|
96
|
+
overscan: OVERSCAN
|
|
97
|
+
});
|
|
98
|
+
const jumpToBottom = React.useCallback(() => {
|
|
99
|
+
const element = scrollerRef.current;
|
|
100
|
+
if (element === null) return;
|
|
101
|
+
element.scrollTop = element.scrollHeight;
|
|
102
|
+
setPinned(true);
|
|
103
|
+
setPending(0);
|
|
104
|
+
}, []);
|
|
105
|
+
const previousCountRef = React.useRef(visible.length);
|
|
106
|
+
useIsomorphicLayoutEffect(() => {
|
|
107
|
+
const element = scrollerRef.current;
|
|
108
|
+
const added = visible.length - previousCountRef.current;
|
|
109
|
+
previousCountRef.current = visible.length;
|
|
110
|
+
if (element === null) return;
|
|
111
|
+
if (follow && pinned) {
|
|
112
|
+
element.scrollTop = element.scrollHeight;
|
|
113
|
+
setPending(0);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (added > 0) setPending((current) => current + added);
|
|
117
|
+
}, [
|
|
118
|
+
follow,
|
|
119
|
+
pinned,
|
|
120
|
+
visible.length
|
|
121
|
+
]);
|
|
122
|
+
const onScroll = React.useCallback(() => {
|
|
123
|
+
const element = scrollerRef.current;
|
|
124
|
+
if (element === null) return;
|
|
125
|
+
const atBottom = element.scrollHeight - element.scrollTop - element.clientHeight <= BOTTOM_TOLERANCE;
|
|
126
|
+
setPinned(atBottom);
|
|
127
|
+
if (atBottom) setPending(0);
|
|
128
|
+
}, []);
|
|
129
|
+
const items = virtualizer.getVirtualItems();
|
|
130
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
131
|
+
ref,
|
|
132
|
+
"data-slot": "log-viewer",
|
|
133
|
+
className: cn("relative flex min-w-0 flex-col overflow-hidden rounded-(--radius-surface) border border-border bg-sunken", className),
|
|
134
|
+
style: { height: toRem(height) },
|
|
135
|
+
...elementProps,
|
|
136
|
+
children: [
|
|
137
|
+
chips.length === 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
138
|
+
"data-slot": "log-viewer-filters",
|
|
139
|
+
className: "flex shrink-0 items-center gap-(--cue-space-2) border-b border-border bg-surface-1 px-(--cue-pad-row-x) py-(--cue-space-2)",
|
|
140
|
+
children: chips.map((level) => {
|
|
141
|
+
const active = !muted.includes(level);
|
|
142
|
+
return /* @__PURE__ */ jsx(Chip, {
|
|
143
|
+
interactive: true,
|
|
144
|
+
"aria-pressed": active,
|
|
145
|
+
"data-level": level,
|
|
146
|
+
tone: LEVEL_CHIP_TONES[level],
|
|
147
|
+
variant: active ? "tinted" : "outline",
|
|
148
|
+
className: active ? void 0 : "opacity-50",
|
|
149
|
+
onClick: () => setMuted((current) => current.includes(level) ? current.filter((entry) => entry !== level) : [...current, level]),
|
|
150
|
+
children: level
|
|
151
|
+
}, level);
|
|
152
|
+
})
|
|
153
|
+
}),
|
|
154
|
+
/* @__PURE__ */ jsx("div", {
|
|
155
|
+
ref: scrollerRef,
|
|
156
|
+
role: "log",
|
|
157
|
+
"aria-label": ariaLabel,
|
|
158
|
+
tabIndex: 0,
|
|
159
|
+
"data-slot": "log-viewer-scroller",
|
|
160
|
+
className: "min-h-0 flex-1 overflow-auto font-mono text-(length:--cue-text-label) leading-none outline-none focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent",
|
|
161
|
+
onScroll,
|
|
162
|
+
children: visible.length === 0 ? /* @__PURE__ */ jsx("div", {
|
|
163
|
+
"data-slot": "log-viewer-empty",
|
|
164
|
+
className: "flex h-full items-center justify-center text-fg-subtle",
|
|
165
|
+
children: emptyLabel
|
|
166
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
167
|
+
"data-slot": "log-viewer-canvas",
|
|
168
|
+
className: "relative w-full",
|
|
169
|
+
style: { height: `${virtualizer.getTotalSize()}px` },
|
|
170
|
+
children: items.map((item) => {
|
|
171
|
+
const line = visible[item.index];
|
|
172
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
173
|
+
"data-slot": "log-viewer-row",
|
|
174
|
+
"data-level": line.level,
|
|
175
|
+
className: cn("absolute top-0 left-0 flex w-full items-center gap-(--cue-space-3) overflow-hidden px-(--cue-pad-row-x) whitespace-pre", LEVEL_TONES[line.level ?? "info"]),
|
|
176
|
+
style: {
|
|
177
|
+
height: `${item.size}px`,
|
|
178
|
+
transform: `translateY(${item.start}px)`
|
|
179
|
+
},
|
|
180
|
+
children: [line.ts === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
181
|
+
"data-slot": "log-viewer-ts",
|
|
182
|
+
className: "shrink-0 tabular-nums text-fg-subtle",
|
|
183
|
+
children: formatTimestamp(line.ts)
|
|
184
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
185
|
+
"data-slot": "log-viewer-text",
|
|
186
|
+
className: "min-w-0 flex-1 overflow-hidden",
|
|
187
|
+
children: line.ansi === true ? ansiSpans(line.text).map((span, index) => /* @__PURE__ */ jsx("span", {
|
|
188
|
+
"data-slot": "log-viewer-span",
|
|
189
|
+
style: {
|
|
190
|
+
color: span.color,
|
|
191
|
+
backgroundColor: span.background,
|
|
192
|
+
fontWeight: span.bold ? 600 : void 0,
|
|
193
|
+
fontStyle: span.italic ? "italic" : void 0,
|
|
194
|
+
opacity: span.dim ? .6 : void 0,
|
|
195
|
+
textDecoration: span.underline ? "underline" : span.strikethrough ? "line-through" : void 0
|
|
196
|
+
},
|
|
197
|
+
children: span.text
|
|
198
|
+
}, index)) : line.text
|
|
199
|
+
})]
|
|
200
|
+
}, item.key);
|
|
201
|
+
})
|
|
202
|
+
})
|
|
203
|
+
}),
|
|
204
|
+
pending > 0 ? /* @__PURE__ */ jsx("button", {
|
|
205
|
+
type: "button",
|
|
206
|
+
"data-slot": "log-viewer-jump",
|
|
207
|
+
className: "absolute bottom-(--cue-space-4) left-1/2 -translate-x-1/2 cursor-pointer rounded-(--radius-control) border border-border-overlay bg-surface-2 px-(--cue-space-4) py-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg shadow-[0_8px_24px_rgba(0,0,0,0.4)] outline-none hover:border-accent hover:text-accent focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent",
|
|
208
|
+
onClick: jumpToBottom,
|
|
209
|
+
children: newLinesLabel(pending)
|
|
210
|
+
}) : null
|
|
211
|
+
]
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
//#endregion
|
|
215
|
+
export { LogViewer };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/meter.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The shared status vocabulary, minus the two tones a fill level cannot mean:
|
|
5
|
+
* `info` (a meter is never advisory) and `neutral` (a level always has a
|
|
6
|
+
* reading). Same tokens as `Chip`, `StatusDot` and `Toast`.
|
|
7
|
+
*/
|
|
8
|
+
type MeterTone = "ok" | "busy" | "warn" | "danger";
|
|
9
|
+
/**
|
|
10
|
+
* Where the ceiling came from — the meter's honesty dial.
|
|
11
|
+
*
|
|
12
|
+
* - `vendor` — the provider stated the limit. Plain fill; full authority.
|
|
13
|
+
* - `estimated` — somebody typed the limit. Hatched, so an estimate never
|
|
14
|
+
* wears the authority of a reported number.
|
|
15
|
+
* - `unbounded` — there is no denominator, so no percentage exists. Drawn as a
|
|
16
|
+
* wash with no value at all: an empty bar would read as "0% used" and a full
|
|
17
|
+
* one as "exhausted", and both are inventions.
|
|
18
|
+
* - `none` — provenance not stated. Plain, and says nothing it cannot back up.
|
|
19
|
+
*/
|
|
20
|
+
type MeterProvenance = "vendor" | "estimated" | "unbounded" | "none";
|
|
21
|
+
interface MeterProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
22
|
+
/**
|
|
23
|
+
* How full, 0–100. Clamped; a non-finite value reads as 0.
|
|
24
|
+
* @min 0
|
|
25
|
+
* @max 100
|
|
26
|
+
*/
|
|
27
|
+
percent: number;
|
|
28
|
+
/** Status colour for the fill. Defaults to `"ok"`. */
|
|
29
|
+
tone?: MeterTone;
|
|
30
|
+
/**
|
|
31
|
+
* How far through the window we are *by time*, 0–1. Drawn as a 1px rule
|
|
32
|
+
* across the bar so the fill can be read against its pace: fill ahead of the
|
|
33
|
+
* tick means burning faster than the window refills. Pass `null` when there
|
|
34
|
+
* is no window.
|
|
35
|
+
*/
|
|
36
|
+
paceTick?: number | null;
|
|
37
|
+
/** Render the striped "no data" treatment instead of a level. */
|
|
38
|
+
empty?: boolean;
|
|
39
|
+
/** Where the ceiling came from. Defaults to `"vendor"`. */
|
|
40
|
+
provenance?: MeterProvenance;
|
|
41
|
+
/** Bar height in px at the 16px root, emitted as `rem`. Defaults to `4`. */
|
|
42
|
+
height?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The accessible name. A meter is nearly always a usage readout, so that is
|
|
45
|
+
* the default; override it for anything else. When there is no level to
|
|
46
|
+
* report (`empty`, or an unbounded ceiling) the state is appended to it, as
|
|
47
|
+
* in `"Usage: No data"`.
|
|
48
|
+
*/
|
|
49
|
+
label?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A quota bar that shows **pace**, not just fill.
|
|
53
|
+
*
|
|
54
|
+
* A bare percentage answers "how much is gone" but not the question that
|
|
55
|
+
* actually matters: *will it last*. 93% used is fine in the last hour of a
|
|
56
|
+
* weekly window and an emergency on the first day. So the meter carries a
|
|
57
|
+
* second mark — how far through the window we are in time — and reads the two
|
|
58
|
+
* together: fill ahead of the tick is burning faster than the window refills.
|
|
59
|
+
*
|
|
60
|
+
* The tick is deliberately quiet: a 1px rule, not a second bar. It annotates
|
|
61
|
+
* the fill and stays ignorable when someone only wants the number.
|
|
62
|
+
*
|
|
63
|
+
* Severity is never invented here — `tone` comes from whoever owns the
|
|
64
|
+
* thresholds. Likewise `provenance`: the bar changes its own texture rather
|
|
65
|
+
* than letting an estimate or a missing denominator look like a measurement.
|
|
66
|
+
*
|
|
67
|
+
* The over-pace pulse stills under `prefers-reduced-motion`; the state stays
|
|
68
|
+
* readable as `data-over-pace`.
|
|
69
|
+
*
|
|
70
|
+
* Static markup — no `"use client"`.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* <Meter percent={72} tone="warn" paceTick={0.5} />
|
|
74
|
+
* @example
|
|
75
|
+
* <Meter percent={0} empty label="Requests this month" />
|
|
76
|
+
* @example
|
|
77
|
+
* <Meter percent={40} provenance="estimated" />
|
|
78
|
+
*/
|
|
79
|
+
declare const Meter: React.ForwardRefExoticComponent<MeterProps & React.RefAttributes<HTMLDivElement>>;
|
|
80
|
+
//#endregion
|
|
81
|
+
export { Meter, MeterProps, MeterProvenance, MeterTone };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { toRem } from "./_rem.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/instruments/meter.tsx
|
|
6
|
+
const TONE_CLASSES = {
|
|
7
|
+
ok: "text-ok",
|
|
8
|
+
busy: "text-busy",
|
|
9
|
+
warn: "text-warn",
|
|
10
|
+
danger: "text-danger"
|
|
11
|
+
};
|
|
12
|
+
/** No-data stripes, drawn in the border colour so they read as "not a level". */
|
|
13
|
+
const EMPTY_STRIPES = "repeating-linear-gradient(135deg, var(--cue-border) 0 2px, transparent 2px 6px)";
|
|
14
|
+
/**
|
|
15
|
+
* The hatch over an estimated fill: cut in the page ground rather than a fixed
|
|
16
|
+
* black, so it reads the same way in light themes.
|
|
17
|
+
*/
|
|
18
|
+
const ESTIMATED_HATCH = "repeating-linear-gradient(135deg, transparent 0 2px, color-mix(in oklch, var(--cue-bg) 65%, transparent) 2px 4px)";
|
|
19
|
+
/** An unbounded meter fades out instead of ending: there is no end. */
|
|
20
|
+
const UNBOUNDED_WASH = "linear-gradient(to right, color-mix(in oklch, currentColor 45%, transparent), transparent)";
|
|
21
|
+
/** How far past the pace tick the fill must run before the bar calls it out. */
|
|
22
|
+
const OVER_PACE_MARGIN = .1;
|
|
23
|
+
/** Default bar height in px at the 16px root — a rule, not a trough. */
|
|
24
|
+
const DEFAULT_HEIGHT_PX = 4;
|
|
25
|
+
/**
|
|
26
|
+
* A quota bar that shows **pace**, not just fill.
|
|
27
|
+
*
|
|
28
|
+
* A bare percentage answers "how much is gone" but not the question that
|
|
29
|
+
* actually matters: *will it last*. 93% used is fine in the last hour of a
|
|
30
|
+
* weekly window and an emergency on the first day. So the meter carries a
|
|
31
|
+
* second mark — how far through the window we are in time — and reads the two
|
|
32
|
+
* together: fill ahead of the tick is burning faster than the window refills.
|
|
33
|
+
*
|
|
34
|
+
* The tick is deliberately quiet: a 1px rule, not a second bar. It annotates
|
|
35
|
+
* the fill and stays ignorable when someone only wants the number.
|
|
36
|
+
*
|
|
37
|
+
* Severity is never invented here — `tone` comes from whoever owns the
|
|
38
|
+
* thresholds. Likewise `provenance`: the bar changes its own texture rather
|
|
39
|
+
* than letting an estimate or a missing denominator look like a measurement.
|
|
40
|
+
*
|
|
41
|
+
* The over-pace pulse stills under `prefers-reduced-motion`; the state stays
|
|
42
|
+
* readable as `data-over-pace`.
|
|
43
|
+
*
|
|
44
|
+
* Static markup — no `"use client"`.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* <Meter percent={72} tone="warn" paceTick={0.5} />
|
|
48
|
+
* @example
|
|
49
|
+
* <Meter percent={0} empty label="Requests this month" />
|
|
50
|
+
* @example
|
|
51
|
+
* <Meter percent={40} provenance="estimated" />
|
|
52
|
+
*/
|
|
53
|
+
const Meter = React.forwardRef(function Meter({ className, percent, tone = "ok", paceTick, empty = false, provenance = "vendor", height = DEFAULT_HEIGHT_PX, label = "Usage", style, ...elementProps }, ref) {
|
|
54
|
+
const unbounded = provenance === "unbounded";
|
|
55
|
+
const pct = Math.min(100, Math.max(0, Number.isFinite(percent) ? percent : 0));
|
|
56
|
+
const hasLevel = !unbounded && !empty;
|
|
57
|
+
const stateText = unbounded ? "Unbounded" : empty ? "No data" : null;
|
|
58
|
+
const showTick = !unbounded && typeof paceTick === "number" && paceTick > .02 && paceTick < .98;
|
|
59
|
+
const overPace = hasLevel && showTick && pct / 100 > paceTick + OVER_PACE_MARGIN;
|
|
60
|
+
const trackImage = unbounded ? UNBOUNDED_WASH : empty ? EMPTY_STRIPES : void 0;
|
|
61
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
62
|
+
ref,
|
|
63
|
+
role: hasLevel ? "meter" : "img",
|
|
64
|
+
"aria-label": stateText === null ? label : `${label}: ${stateText}`,
|
|
65
|
+
"aria-valuemin": hasLevel ? 0 : void 0,
|
|
66
|
+
"aria-valuemax": hasLevel ? 100 : void 0,
|
|
67
|
+
"aria-valuenow": hasLevel ? Math.round(pct) : void 0,
|
|
68
|
+
"data-slot": "meter",
|
|
69
|
+
"data-tone": tone,
|
|
70
|
+
"data-provenance": provenance,
|
|
71
|
+
"data-empty": empty ? "true" : void 0,
|
|
72
|
+
"data-over-pace": overPace ? "true" : void 0,
|
|
73
|
+
className: cn("relative w-full overflow-hidden rounded-full bg-surface-3", TONE_CLASSES[tone], className),
|
|
74
|
+
style: {
|
|
75
|
+
height: toRem(height),
|
|
76
|
+
backgroundImage: trackImage,
|
|
77
|
+
...style
|
|
78
|
+
},
|
|
79
|
+
...elementProps,
|
|
80
|
+
children: [hasLevel ? /* @__PURE__ */ jsx("div", {
|
|
81
|
+
"data-slot": "meter-fill",
|
|
82
|
+
className: cn("absolute inset-y-0 left-0 bg-current transition-[width] duration-150 ease-out motion-reduce:transition-none", overPace ? "animate-pulse motion-reduce:animate-none" : null),
|
|
83
|
+
style: {
|
|
84
|
+
width: `${pct}%`,
|
|
85
|
+
backgroundImage: provenance === "estimated" ? ESTIMATED_HATCH : void 0
|
|
86
|
+
}
|
|
87
|
+
}) : null, showTick ? /* @__PURE__ */ jsx("div", {
|
|
88
|
+
"data-slot": "meter-tick",
|
|
89
|
+
"aria-hidden": "true",
|
|
90
|
+
className: "absolute inset-y-0 w-px bg-fg/55",
|
|
91
|
+
style: { left: `${paceTick * 100}%` }
|
|
92
|
+
}) : null]
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//#endregion
|
|
96
|
+
export { Meter };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Progress } from "@base-ui/react/progress";
|
|
3
|
+
//#region src/instruments/progress.d.ts
|
|
4
|
+
interface ProgressProps extends Omit<Progress.Root.Props, "className"> {
|
|
5
|
+
/** Extra classes for the frame that holds the header and the track. */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Extra classes for the track. */
|
|
8
|
+
trackClassName?: string;
|
|
9
|
+
/** Extra classes for the fill. */
|
|
10
|
+
indicatorClassName?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Caption above the bar, and the bar's accessible name: this layer points the
|
|
13
|
+
* `role="progressbar"` at it with `aria-labelledby` **at render**, so the name
|
|
14
|
+
* is in the markup a server sends. Pass one, or an `aria-label` — a root that
|
|
15
|
+
* already carries `aria-label` or `aria-labelledby` keeps the name it was
|
|
16
|
+
* given.
|
|
17
|
+
*/
|
|
18
|
+
label?: React.ReactNode;
|
|
19
|
+
/** Show the formatted value opposite the label. Defaults to `false`. */
|
|
20
|
+
showValue?: boolean;
|
|
21
|
+
/** Track height in px at the 16px root, emitted as `rem`. Defaults to `5`. */
|
|
22
|
+
height?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Determinate work, drawn as a filling rule.
|
|
26
|
+
*
|
|
27
|
+
* Wraps Base UI's `Progress`, so `role="progressbar"`, the value formatting and
|
|
28
|
+
* the completion status are the primitive's; this layer adds the console skin:
|
|
29
|
+
* a sunk `surface-3` track, an accent fill and a 120ms linear width transition
|
|
30
|
+
* — linear because a progress bar that eases is lying about its rate.
|
|
31
|
+
*
|
|
32
|
+
* Passing `value={null}` makes it indeterminate: the fill collapses and the
|
|
33
|
+
* track pulses instead, which says "working, size unknown" without inventing a
|
|
34
|
+
* number. The pulse stills under `prefers-reduced-motion`.
|
|
35
|
+
*
|
|
36
|
+
* Use `Meter` instead for a *level* (how full something is); a progress bar is
|
|
37
|
+
* for a *task* (how far along something is).
|
|
38
|
+
*
|
|
39
|
+
* **Named in the markup, not on hydration.** Base UI names the bar from the
|
|
40
|
+
* caption by having `Progress.Label` report its id to the root, and it reports
|
|
41
|
+
* it from a `useIsoLayoutEffect` (`@base-ui/react/utils/useRegisteredLabelId`),
|
|
42
|
+
* which the root keeps in `useState`. A render that runs no effects — SSR
|
|
43
|
+
* before hydration, `renderToStaticMarkup`, a page that never hydrates — emitted
|
|
44
|
+
* the caption with its id and a `role="progressbar"` that pointed at nothing, so
|
|
45
|
+
* the delivered HTML had a progressbar with no accessible name. Both ends are
|
|
46
|
+
* given the same `useId` here instead, so the first render is already correct
|
|
47
|
+
* and Base UI's effect later resolves the label to the id it was handed.
|
|
48
|
+
*
|
|
49
|
+
* Static markup — no `"use client"`. `useId` is the one hook it calls, and it
|
|
50
|
+
* is one a Server Component may call: React's Flight server implements `useId`
|
|
51
|
+
* in its hooks dispatcher, where the hooks a Server Component may not call are
|
|
52
|
+
* `unsupportedHook`.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* <Progress value={40} label="Rendering" showValue />
|
|
56
|
+
* @example
|
|
57
|
+
* <Progress value={null} aria-label="Connecting" />
|
|
58
|
+
*/
|
|
59
|
+
declare const Progress$1: React.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { Progress$1 as Progress, ProgressProps };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { toRem } from "./_rem.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Progress } from "@base-ui/react/progress";
|
|
6
|
+
//#region src/instruments/progress.tsx
|
|
7
|
+
/** Default track height in px at the 16px root. */
|
|
8
|
+
const DEFAULT_HEIGHT_PX = 5;
|
|
9
|
+
/**
|
|
10
|
+
* Determinate work, drawn as a filling rule.
|
|
11
|
+
*
|
|
12
|
+
* Wraps Base UI's `Progress`, so `role="progressbar"`, the value formatting and
|
|
13
|
+
* the completion status are the primitive's; this layer adds the console skin:
|
|
14
|
+
* a sunk `surface-3` track, an accent fill and a 120ms linear width transition
|
|
15
|
+
* — linear because a progress bar that eases is lying about its rate.
|
|
16
|
+
*
|
|
17
|
+
* Passing `value={null}` makes it indeterminate: the fill collapses and the
|
|
18
|
+
* track pulses instead, which says "working, size unknown" without inventing a
|
|
19
|
+
* number. The pulse stills under `prefers-reduced-motion`.
|
|
20
|
+
*
|
|
21
|
+
* Use `Meter` instead for a *level* (how full something is); a progress bar is
|
|
22
|
+
* for a *task* (how far along something is).
|
|
23
|
+
*
|
|
24
|
+
* **Named in the markup, not on hydration.** Base UI names the bar from the
|
|
25
|
+
* caption by having `Progress.Label` report its id to the root, and it reports
|
|
26
|
+
* it from a `useIsoLayoutEffect` (`@base-ui/react/utils/useRegisteredLabelId`),
|
|
27
|
+
* which the root keeps in `useState`. A render that runs no effects — SSR
|
|
28
|
+
* before hydration, `renderToStaticMarkup`, a page that never hydrates — emitted
|
|
29
|
+
* the caption with its id and a `role="progressbar"` that pointed at nothing, so
|
|
30
|
+
* the delivered HTML had a progressbar with no accessible name. Both ends are
|
|
31
|
+
* given the same `useId` here instead, so the first render is already correct
|
|
32
|
+
* and Base UI's effect later resolves the label to the id it was handed.
|
|
33
|
+
*
|
|
34
|
+
* Static markup — no `"use client"`. `useId` is the one hook it calls, and it
|
|
35
|
+
* is one a Server Component may call: React's Flight server implements `useId`
|
|
36
|
+
* in its hooks dispatcher, where the hooks a Server Component may not call are
|
|
37
|
+
* `unsupportedHook`.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* <Progress value={40} label="Rendering" showValue />
|
|
41
|
+
* @example
|
|
42
|
+
* <Progress value={null} aria-label="Connecting" />
|
|
43
|
+
*/
|
|
44
|
+
const Progress$1 = React.forwardRef(function Progress$2({ className, trackClassName, indicatorClassName, label, showValue = false, height = DEFAULT_HEIGHT_PX, ...rootProps }, ref) {
|
|
45
|
+
const hasHeader = label !== void 0 || showValue;
|
|
46
|
+
const captionId = React.useId();
|
|
47
|
+
const namedByCaller = rootProps["aria-label"] !== void 0 || rootProps["aria-labelledby"] !== void 0;
|
|
48
|
+
const namedByCaption = label !== void 0 && !namedByCaller;
|
|
49
|
+
return /* @__PURE__ */ jsxs(Progress.Root, {
|
|
50
|
+
ref,
|
|
51
|
+
"data-slot": "progress",
|
|
52
|
+
"aria-labelledby": namedByCaption ? captionId : void 0,
|
|
53
|
+
className: cn("flex w-full flex-col gap-(--cue-space-2)", className),
|
|
54
|
+
...rootProps,
|
|
55
|
+
children: [hasHeader ? /* @__PURE__ */ jsxs("div", {
|
|
56
|
+
"data-slot": "progress-header",
|
|
57
|
+
className: "flex items-baseline gap-(--cue-space-3) font-mono text-(length:--cue-text-label)",
|
|
58
|
+
children: [label === void 0 ? null : /* @__PURE__ */ jsx(Progress.Label, {
|
|
59
|
+
id: namedByCaption ? captionId : void 0,
|
|
60
|
+
"data-slot": "progress-label",
|
|
61
|
+
className: "truncate tracking-[0.15em] text-fg-subtle uppercase",
|
|
62
|
+
children: label
|
|
63
|
+
}), showValue ? /* @__PURE__ */ jsx(Progress.Value, {
|
|
64
|
+
"data-slot": "progress-value",
|
|
65
|
+
className: "ml-auto shrink-0 tabular-nums text-fg-muted"
|
|
66
|
+
}) : null]
|
|
67
|
+
}) : null, /* @__PURE__ */ jsx(Progress.Track, {
|
|
68
|
+
"data-slot": "progress-track",
|
|
69
|
+
className: cn("relative w-full overflow-hidden rounded-full bg-surface-3 data-[indeterminate]:animate-pulse motion-reduce:animate-none", trackClassName),
|
|
70
|
+
style: { height: toRem(height) },
|
|
71
|
+
children: /* @__PURE__ */ jsx(Progress.Indicator, {
|
|
72
|
+
"data-slot": "progress-indicator",
|
|
73
|
+
className: cn("bg-accent transition-[width] duration-[120ms] ease-linear motion-reduce:transition-none", indicatorClassName)
|
|
74
|
+
})
|
|
75
|
+
})]
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//#endregion
|
|
79
|
+
export { Progress$1 as Progress };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/seam-grid.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The surface a seam cell can be filled with.
|
|
5
|
+
*
|
|
6
|
+
* Anything from the elevation ladder works; what matters is that the *cell* is
|
|
7
|
+
* filled and the *container* is not, because the container's colour is what
|
|
8
|
+
* shows through the gap and becomes the seam.
|
|
9
|
+
*/
|
|
10
|
+
type SeamGround = "bg" | "sunken" | "surface-1" | "surface-2" | "surface-3";
|
|
11
|
+
interface SeamGridProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
12
|
+
/** Fixed column count. Ignored when {@link SeamGridProps.min} is set. */
|
|
13
|
+
columns?: number;
|
|
14
|
+
/**
|
|
15
|
+
* Minimum cell width in px at the 16px root. Switches the track to
|
|
16
|
+
* `auto-fit`, so the grid reflows without a media query.
|
|
17
|
+
*/
|
|
18
|
+
min?: number;
|
|
19
|
+
/** Draw a hairline rim around the whole grid as well as between the cells. */
|
|
20
|
+
bordered?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The seam idiom as a component: cells separated by hairlines, no borders.
|
|
24
|
+
*
|
|
25
|
+
* A grid whose `gap` is 1px over the border colour. Every cell paints its own
|
|
26
|
+
* ground, so the only place the container shows through is the gap — which
|
|
27
|
+
* reads as a hairline between neighbours, aligns perfectly at every corner, and
|
|
28
|
+
* never doubles up. This is snuffle's signature primitive; it was inlined at
|
|
29
|
+
* eighteen call sites before it was a component.
|
|
30
|
+
*
|
|
31
|
+
* Static markup — no `"use client"`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* <SeamGrid columns={3}>
|
|
35
|
+
* <SeamCell>001</SeamCell>
|
|
36
|
+
* <SeamCell>002</SeamCell>
|
|
37
|
+
* <SeamCell>003</SeamCell>
|
|
38
|
+
* </SeamGrid>
|
|
39
|
+
* @example
|
|
40
|
+
* // Reflowing, no media query:
|
|
41
|
+
* <SeamGrid min={180} bordered>{cells}</SeamGrid>
|
|
42
|
+
*/
|
|
43
|
+
declare const SeamGrid: React.ForwardRefExoticComponent<SeamGridProps & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
interface SeamCellProps extends React.ComponentPropsWithoutRef<"div"> {
|
|
45
|
+
/** Which rung of the elevation ladder to fill with. Defaults to `"surface-1"`. */
|
|
46
|
+
ground?: SeamGround;
|
|
47
|
+
/** Add the hover feedback of a clickable cell. Put the control inside it. */
|
|
48
|
+
interactive?: boolean;
|
|
49
|
+
/** Drop the built-in padding — for a cell that holds a chart or a canvas. */
|
|
50
|
+
flush?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* One filled cell of a {@link SeamGrid} — or of the Phase 1 `SeamList`.
|
|
54
|
+
*
|
|
55
|
+
* The fill is the load-bearing part: an unfilled cell lets the container's
|
|
56
|
+
* border colour through everywhere, not just at the gap, and the seam
|
|
57
|
+
* disappears into a solid block.
|
|
58
|
+
*
|
|
59
|
+
* Static markup — no `"use client"`.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* <SeamCell ground="sunken" flush><Sparkline values={series} /></SeamCell>
|
|
63
|
+
*/
|
|
64
|
+
declare const SeamCell: React.ForwardRefExoticComponent<SeamCellProps & React.RefAttributes<HTMLDivElement>>;
|
|
65
|
+
//#endregion
|
|
66
|
+
export { SeamCell, SeamCellProps, SeamGrid, SeamGridProps, SeamGround };
|