@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,303 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { flattenTree } from "../chrome/_tree.js";
|
|
4
|
+
import { ChevronRightGlyph } from "../chrome/_glyphs.js";
|
|
5
|
+
import { activateRowFromClick, dataRowVariants } from "./_data-row.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/instruments/data-tree.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The hierarchy guides, drawn as a background rather than as characters or
|
|
11
|
+
* borders.
|
|
12
|
+
*
|
|
13
|
+
* One hairline per ancestor level, from a `repeating-linear-gradient` whose
|
|
14
|
+
* period is the indent step and whose painted width is `depth × step` — so the
|
|
15
|
+
* rules stop exactly where the row's own content begins. Three properties of
|
|
16
|
+
* this mechanism are the reason it is not box-drawing glyphs and not a stack of
|
|
17
|
+
* `border-left` spacers:
|
|
18
|
+
*
|
|
19
|
+
* - It is a `background-image`, so the row's hover and selection
|
|
20
|
+
* `background-color` cannot cover it, move it or switch it off. A guide drawn
|
|
21
|
+
* with borders on spacer elements has to be re-tinted for every row state.
|
|
22
|
+
* - It costs no DOM. A tree of two thousand visible rows adds no elements per
|
|
23
|
+
* level, which is what makes a virtualized variant of this row viable later.
|
|
24
|
+
* - It is a picture of structure, not a picture of a tree: `├` and `└` in a mono
|
|
25
|
+
* grid are characters a screen reader may read out and a proportional font
|
|
26
|
+
* destroys.
|
|
27
|
+
*
|
|
28
|
+
* The step is `--cue-data-tree-indent` (default `1.25rem`), a local custom
|
|
29
|
+
* property so a `@container` rule can tighten the tree at the same breakpoint it
|
|
30
|
+
* sheds a column — and switch the guides off entirely at the width where an
|
|
31
|
+
* indent is more expensive than it is informative.
|
|
32
|
+
*/
|
|
33
|
+
const DATA_TREE_GUIDES = [
|
|
34
|
+
"bg-no-repeat",
|
|
35
|
+
"[background-image:repeating-linear-gradient(to_right,var(--cue-hair)_0,var(--cue-hair)_1px,transparent_1px,transparent_var(--cue-data-tree-indent,1.25rem))]",
|
|
36
|
+
"[background-size:calc(var(--depth)_*_var(--cue-data-tree-indent,1.25rem))_100%]",
|
|
37
|
+
"[background-position:var(--cue-pad-row-x)_0]"
|
|
38
|
+
].join(" ");
|
|
39
|
+
/**
|
|
40
|
+
* `DataTreeItem` as the shape `flattenTree` walks, plus a way back.
|
|
41
|
+
*
|
|
42
|
+
* `flattenTree` (`src/chrome/_tree.ts`) is the outline algorithm this library
|
|
43
|
+
* already has, and re-implementing "which rows are visible, at what level, in
|
|
44
|
+
* what position of what set" for a second tree is how two trees start
|
|
45
|
+
* disagreeing about what a collapse hides. It reads `id`, `children` and
|
|
46
|
+
* `disabled`; its `TreeItem` also *declares* a `label`, which a data row does
|
|
47
|
+
* not have — its content is columns. So the walk maps to that shape with a null
|
|
48
|
+
* label and hands back an index from id to the caller's own item, which is what
|
|
49
|
+
* the row renderer reads.
|
|
50
|
+
*
|
|
51
|
+
* @param items The roots, in display order.
|
|
52
|
+
* @returns The outline `flattenTree` accepts, and the items keyed by id.
|
|
53
|
+
*/
|
|
54
|
+
function outlineOf(items) {
|
|
55
|
+
const byId = /* @__PURE__ */ new Map();
|
|
56
|
+
const walk = (nodes) => nodes.map((node) => {
|
|
57
|
+
byId.set(node.id, node);
|
|
58
|
+
const outlineNode = {
|
|
59
|
+
id: node.id,
|
|
60
|
+
label: null,
|
|
61
|
+
disabled: node.disabled
|
|
62
|
+
};
|
|
63
|
+
if (node.children !== void 0) outlineNode.children = walk(node.children);
|
|
64
|
+
return outlineNode;
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
outline: walk(items),
|
|
68
|
+
byId
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* A hierarchy of multi-column rows: the tree idiom over the `DataRow` anatomy.
|
|
73
|
+
*
|
|
74
|
+
* ## The ARIA pattern, chosen before the component was written
|
|
75
|
+
*
|
|
76
|
+
* `role="treegrid"` is **rejected** for this foundation. It is the semantically
|
|
77
|
+
* exact answer — tabular *and* hierarchical — and it is the one with the worst
|
|
78
|
+
* real-world assistive-technology record: Adrian Roselli's survey of expando
|
|
79
|
+
* tables calls its support poor and notes that the APG's own worked example
|
|
80
|
+
* carries unresolved issues; fancytree's maintainer describes treegrid support
|
|
81
|
+
* as unproven ground; MUI X shipped hierarchical rows with no `aria-level` /
|
|
82
|
+
* `aria-expanded` / `aria-setsize` at all and retrofitted them later. Treegrid
|
|
83
|
+
* earns its cost when cells are individually interactive or editable, because
|
|
84
|
+
* then a reader genuinely needs two-dimensional cell navigation. This surface is
|
|
85
|
+
* read-and-navigate: you move down rows, fold a branch, and open the thing a row
|
|
86
|
+
* names.
|
|
87
|
+
*
|
|
88
|
+
* So the pattern is `role="tree"` with `role="treeitem"` rows — VS Code's
|
|
89
|
+
* choice and Carbon's, and the best-supported composite pattern in ARIA:
|
|
90
|
+
*
|
|
91
|
+
* - A **flat DOM** with `aria-level` / `aria-posinset` / `aria-setsize` per row
|
|
92
|
+
* rather than nested `role="group"` wrappers.
|
|
93
|
+
* - **Roving tabindex**: the tree is one Tab stop and the arrows move inside it.
|
|
94
|
+
* - The **APG tree keyboard map**: Up/Down between visible rows, Home/End to the
|
|
95
|
+
* ends, Right to unfold then to descend, Left to fold then to ascend,
|
|
96
|
+
* Enter/Space to select.
|
|
97
|
+
* - Expansion lives on the **row**, as `aria-expanded` on the `treeitem` — that
|
|
98
|
+
* is what tree semantics mean by a parent, and it is why the chevron here is
|
|
99
|
+
* `role="presentation"` rather than a button. (The other half of this trade
|
|
100
|
+
* is `Table.GroupRow`, where the table's semantics own the grouping and a real
|
|
101
|
+
* `<button aria-expanded>` owns the disclosure. Two patterns, each internally
|
|
102
|
+
* consistent; what would be wrong is half of each.)
|
|
103
|
+
*
|
|
104
|
+
* **The documented trade**: columns are not independently navigable. A row's
|
|
105
|
+
* multi-column content lives *inside* the treeitem, so a screen-reader user
|
|
106
|
+
* hears the row as one string rather than moving cell to cell through it. For a
|
|
107
|
+
* dense browse-and-open surface that is the better bargain — `tree` works today
|
|
108
|
+
* on every screen reader, `treegrid` does not — but a surface whose cells are
|
|
109
|
+
* genuinely editable has outgrown this component and wants a real treegrid from
|
|
110
|
+
* a library that maintains one.
|
|
111
|
+
*
|
|
112
|
+
* ## Everything else
|
|
113
|
+
*
|
|
114
|
+
* Rows are the `DataRow` chassis: same padding, same hairline, same hover wash,
|
|
115
|
+
* same inset focus ring, same `group/data-row`, so `DataRow.Actions` reveals in
|
|
116
|
+
* a tree exactly as it does in a ledger. The row element itself is the
|
|
117
|
+
* treeitem — one element owns focus, expansion, selection and the click reading
|
|
118
|
+
* — and the caller's `DataRow.*` slots are its content.
|
|
119
|
+
*
|
|
120
|
+
* A tree whose items declare no children anywhere is a flat list: no chevrons,
|
|
121
|
+
* no spacer column where a chevron would be, no guides, and `aria-expanded` on
|
|
122
|
+
* nothing. A leaf row that carried `aria-expanded="false"` would tell a screen
|
|
123
|
+
* reader it has children it does not have.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* <DataTree
|
|
127
|
+
* aria-label="Patch"
|
|
128
|
+
* items={nodes}
|
|
129
|
+
* defaultExpanded={["inputs"]}
|
|
130
|
+
* selected={selected}
|
|
131
|
+
* onSelect={setSelected}
|
|
132
|
+
* className="[--cue-data-row-cols:1fr_8rem_auto]"
|
|
133
|
+
* />
|
|
134
|
+
*/
|
|
135
|
+
const DataTree = React.forwardRef(function DataTree({ className, items, expanded: expandedProp, defaultExpanded, onExpandedChange, selected: selectedProp, defaultSelected = null, onSelect, guides = true, onKeyDown, ...elementProps }, ref) {
|
|
136
|
+
const [uncontrolledExpanded, setUncontrolledExpanded] = React.useState(defaultExpanded ?? []);
|
|
137
|
+
const expandedList = expandedProp ?? uncontrolledExpanded;
|
|
138
|
+
const expandedSet = React.useMemo(() => new Set(expandedList), [expandedList]);
|
|
139
|
+
const [uncontrolledSelected, setUncontrolledSelected] = React.useState(defaultSelected);
|
|
140
|
+
const selected = selectedProp === void 0 ? uncontrolledSelected : selectedProp;
|
|
141
|
+
const { outline, byId } = React.useMemo(() => outlineOf(items), [items]);
|
|
142
|
+
const rows = React.useMemo(() => flattenTree(outline, expandedSet), [outline, expandedSet]);
|
|
143
|
+
const hierarchical = React.useMemo(() => {
|
|
144
|
+
for (const item of byId.values()) if (item.children !== void 0) return true;
|
|
145
|
+
return false;
|
|
146
|
+
}, [byId]);
|
|
147
|
+
const [activeId, setActiveId] = React.useState(null);
|
|
148
|
+
const activeRowId = activeId !== null && rows.some((row) => row.item.id === activeId) ? activeId : rows[0]?.item.id ?? null;
|
|
149
|
+
const rowRefs = React.useRef(/* @__PURE__ */ new Map());
|
|
150
|
+
const registerRow = React.useCallback((id, element) => {
|
|
151
|
+
if (element === null) rowRefs.current.delete(id);
|
|
152
|
+
else rowRefs.current.set(id, element);
|
|
153
|
+
}, []);
|
|
154
|
+
const focusRow = React.useCallback((id) => {
|
|
155
|
+
setActiveId(id);
|
|
156
|
+
rowRefs.current.get(id)?.focus();
|
|
157
|
+
}, []);
|
|
158
|
+
const setExpanded = React.useCallback((id, next) => {
|
|
159
|
+
const current = expandedProp ?? uncontrolledExpanded;
|
|
160
|
+
const result = next ? current.includes(id) ? [...current] : [...current, id] : current.filter((entry) => entry !== id);
|
|
161
|
+
if (expandedProp === void 0) setUncontrolledExpanded(result);
|
|
162
|
+
onExpandedChange?.(result);
|
|
163
|
+
}, [
|
|
164
|
+
expandedProp,
|
|
165
|
+
onExpandedChange,
|
|
166
|
+
uncontrolledExpanded
|
|
167
|
+
]);
|
|
168
|
+
const select = React.useCallback((row) => {
|
|
169
|
+
if (byId.get(row.item.id)?.disabled === true) return;
|
|
170
|
+
if (selectedProp === void 0) setUncontrolledSelected(row.item.id);
|
|
171
|
+
onSelect?.(row.item.id);
|
|
172
|
+
}, [
|
|
173
|
+
byId,
|
|
174
|
+
onSelect,
|
|
175
|
+
selectedProp
|
|
176
|
+
]);
|
|
177
|
+
/**
|
|
178
|
+
* The APG tree keyboard map.
|
|
179
|
+
*
|
|
180
|
+
* A near-copy of `Tree`'s handler in `src/chrome/tree.tsx`, and deliberately
|
|
181
|
+
* so: the two trees paint different rows (a label with a glyph gutter there,
|
|
182
|
+
* columns with a CSS indent here) and share `flattenTree`, which is the half
|
|
183
|
+
* that is actually hard. Extracting the twenty lines below into a third module
|
|
184
|
+
* would have to thread the row registry, the expansion setter and the
|
|
185
|
+
* selection through it, and the seam would be wider than the code. If a third
|
|
186
|
+
* tree ever appears, that is the moment to hoist it.
|
|
187
|
+
*/
|
|
188
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
189
|
+
onKeyDown?.(event);
|
|
190
|
+
if (event.defaultPrevented) return;
|
|
191
|
+
if (event.target.getAttribute("data-slot") !== "data-tree-row") return;
|
|
192
|
+
const index = rows.findIndex((row) => row.item.id === activeRowId);
|
|
193
|
+
const row = rows[index];
|
|
194
|
+
if (row === void 0) return;
|
|
195
|
+
const move = (target) => {
|
|
196
|
+
if (target === void 0) return;
|
|
197
|
+
event.preventDefault();
|
|
198
|
+
focusRow(target.item.id);
|
|
199
|
+
};
|
|
200
|
+
switch (event.key) {
|
|
201
|
+
case "ArrowDown":
|
|
202
|
+
move(rows[index + 1]);
|
|
203
|
+
return;
|
|
204
|
+
case "ArrowUp":
|
|
205
|
+
move(rows[index - 1]);
|
|
206
|
+
return;
|
|
207
|
+
case "Home":
|
|
208
|
+
move(rows[0]);
|
|
209
|
+
return;
|
|
210
|
+
case "End":
|
|
211
|
+
move(rows[rows.length - 1]);
|
|
212
|
+
return;
|
|
213
|
+
case "ArrowRight": {
|
|
214
|
+
event.preventDefault();
|
|
215
|
+
if (row.hasChildren && !row.expanded) {
|
|
216
|
+
setExpanded(row.item.id, true);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
const child = rows[index + 1];
|
|
220
|
+
if (row.expanded && child?.parentId === row.item.id) focusRow(child.item.id);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
case "ArrowLeft":
|
|
224
|
+
event.preventDefault();
|
|
225
|
+
if (row.expanded) setExpanded(row.item.id, false);
|
|
226
|
+
else if (row.parentId !== null) focusRow(row.parentId);
|
|
227
|
+
return;
|
|
228
|
+
case "Enter":
|
|
229
|
+
case " ":
|
|
230
|
+
event.preventDefault();
|
|
231
|
+
select(row);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
}, [
|
|
235
|
+
activeRowId,
|
|
236
|
+
focusRow,
|
|
237
|
+
onKeyDown,
|
|
238
|
+
rows,
|
|
239
|
+
select,
|
|
240
|
+
setExpanded
|
|
241
|
+
]);
|
|
242
|
+
return /* @__PURE__ */ jsx("div", {
|
|
243
|
+
ref,
|
|
244
|
+
...elementProps,
|
|
245
|
+
role: "tree",
|
|
246
|
+
"data-slot": "data-tree",
|
|
247
|
+
className: cn("flex flex-col font-mono text-(length:--cue-text-ui) text-fg", className),
|
|
248
|
+
onKeyDown: handleKeyDown,
|
|
249
|
+
children: rows.map((row) => {
|
|
250
|
+
const item = byId.get(row.item.id);
|
|
251
|
+
if (item === void 0) return null;
|
|
252
|
+
const isSelected = selected === item.id;
|
|
253
|
+
const state = {
|
|
254
|
+
level: row.level,
|
|
255
|
+
hasChildren: row.hasChildren,
|
|
256
|
+
expanded: row.expanded,
|
|
257
|
+
selected: isSelected
|
|
258
|
+
};
|
|
259
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
260
|
+
ref: (element) => registerRow(item.id, element),
|
|
261
|
+
role: "treeitem",
|
|
262
|
+
tabIndex: activeRowId === item.id ? 0 : -1,
|
|
263
|
+
"aria-level": row.level + 1,
|
|
264
|
+
"aria-posinset": row.position,
|
|
265
|
+
"aria-setsize": row.setSize,
|
|
266
|
+
"aria-expanded": row.hasChildren ? row.expanded : void 0,
|
|
267
|
+
"aria-selected": isSelected,
|
|
268
|
+
"aria-disabled": item.disabled === true ? true : void 0,
|
|
269
|
+
"data-slot": "data-tree-row",
|
|
270
|
+
"data-selected": isSelected ? "" : void 0,
|
|
271
|
+
"data-disabled": item.disabled === true ? "" : void 0,
|
|
272
|
+
style: { "--depth": row.level },
|
|
273
|
+
onFocus: () => setActiveId(item.id),
|
|
274
|
+
onClick: (event) => activateRowFromClick(event, () => select(row)),
|
|
275
|
+
className: cn(dataRowVariants({
|
|
276
|
+
layout: "flex",
|
|
277
|
+
indent: true,
|
|
278
|
+
interactive: true
|
|
279
|
+
}), guides && row.level > 0 ? DATA_TREE_GUIDES : null),
|
|
280
|
+
children: [hierarchical ? row.hasChildren ? /* @__PURE__ */ jsx("span", {
|
|
281
|
+
role: "presentation",
|
|
282
|
+
"aria-hidden": "true",
|
|
283
|
+
"data-slot": "data-tree-toggle",
|
|
284
|
+
onClick: (event) => {
|
|
285
|
+
event.stopPropagation();
|
|
286
|
+
setExpanded(item.id, !row.expanded);
|
|
287
|
+
},
|
|
288
|
+
className: "flex size-icon-sm shrink-0 cursor-pointer items-center justify-center text-fg-subtle",
|
|
289
|
+
children: /* @__PURE__ */ jsx(ChevronRightGlyph, { className: cn("size-icon-sm transition-transform duration-150 motion-reduce:transition-none", row.expanded ? "rotate-90" : null) })
|
|
290
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
291
|
+
"aria-hidden": "true",
|
|
292
|
+
className: "size-icon-sm shrink-0"
|
|
293
|
+
}) : null, /* @__PURE__ */ jsx("span", {
|
|
294
|
+
"data-slot": "data-tree-row-content",
|
|
295
|
+
className: "grid min-w-0 flex-1 items-center gap-(--cue-space-3) [grid-template-columns:var(--cue-data-row-cols,1fr_auto)]",
|
|
296
|
+
children: typeof item.row === "function" ? item.row(state) : item.row
|
|
297
|
+
})]
|
|
298
|
+
}, item.id);
|
|
299
|
+
})
|
|
300
|
+
});
|
|
301
|
+
});
|
|
302
|
+
//#endregion
|
|
303
|
+
export { DataTree };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/instruments/group-bar.d.ts
|
|
3
|
+
/** Ink for one segment, in the shared status vocabulary plus `neutral`. */
|
|
4
|
+
type GroupBarTone = "neutral" | "accent" | "ok" | "busy" | "warn" | "danger" | "info";
|
|
5
|
+
/** One slice of the distribution. */
|
|
6
|
+
interface GroupBarItem {
|
|
7
|
+
/** Stable key. Defaults to the label, which is normally unique already. */
|
|
8
|
+
id?: string;
|
|
9
|
+
/** What this slice is. Used in the legend and in the accessible summary. */
|
|
10
|
+
label: string;
|
|
11
|
+
/** The quantity. Shares are computed against the sum; zero and below are dropped. */
|
|
12
|
+
value: number;
|
|
13
|
+
/** Ink for the slice. Defaults to `"neutral"`. */
|
|
14
|
+
tone?: GroupBarTone;
|
|
15
|
+
}
|
|
16
|
+
interface GroupBarProps extends Omit<React.ComponentPropsWithoutRef<"div">, "children"> {
|
|
17
|
+
/** The slices, in display order. */
|
|
18
|
+
items: readonly GroupBarItem[];
|
|
19
|
+
/** Strip height in px at the 16px root, emitted as `rem`. Defaults to `6`. */
|
|
20
|
+
height?: number;
|
|
21
|
+
/** What the distribution is *of*. Required in practice — it names the graphic. */
|
|
22
|
+
label?: string;
|
|
23
|
+
/** List the slices with their shares underneath the strip. */
|
|
24
|
+
legend?: boolean;
|
|
25
|
+
/** Format one share for the summary and the legend. Defaults to `"42%"`. */
|
|
26
|
+
formatShare?: (share: number, item: GroupBarItem) => string;
|
|
27
|
+
/** What to say when every slice is empty. Defaults to `"no data"`. */
|
|
28
|
+
emptyLabel?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The distribution strip: one flex cell per group, weighted by its value.
|
|
32
|
+
*
|
|
33
|
+
* A stacked bar with no axis and no numbers — the shape *is* the reading. Three
|
|
34
|
+
* rules keep it honest:
|
|
35
|
+
*
|
|
36
|
+
* 1. **Empty groups get no cell.** A minimum width is what makes a two-pixel
|
|
37
|
+
* sliver visible, and a minimum width on a zero would draw a group that is
|
|
38
|
+
* not there.
|
|
39
|
+
* 2. **The percentages add to 100.** Shares are rounded by largest remainder,
|
|
40
|
+
* so the legend never sums to 99 and never to 101.
|
|
41
|
+
* 3. **Colour is never the only channel.** The strip is a `role="img"` whose
|
|
42
|
+
* accessible name spells the whole distribution out (WCAG 1.4.1); the legend
|
|
43
|
+
* repeats it in text when there is room for one.
|
|
44
|
+
*
|
|
45
|
+
* The cells are divided by the same 1px seam as `SeamList`, so a distribution
|
|
46
|
+
* strip and a seam list sitting in the same panel share one hairline language.
|
|
47
|
+
*
|
|
48
|
+
* Static markup — no `"use client"`.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* <GroupBar
|
|
52
|
+
* label="Universe load"
|
|
53
|
+
* items={[
|
|
54
|
+
* { label: "dimmers", value: 212, tone: "accent" },
|
|
55
|
+
* { label: "movers", value: 96, tone: "info" },
|
|
56
|
+
* { label: "free", value: 204 },
|
|
57
|
+
* ]}
|
|
58
|
+
* legend
|
|
59
|
+
* />
|
|
60
|
+
*/
|
|
61
|
+
declare const GroupBar: React.ForwardRefExoticComponent<GroupBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
//#endregion
|
|
63
|
+
export { GroupBar, GroupBarItem, GroupBarProps, GroupBarTone };
|
|
@@ -0,0 +1,122 @@
|
|
|
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/group-bar.tsx
|
|
6
|
+
const CELL_TONES = {
|
|
7
|
+
neutral: "bg-fg-subtle",
|
|
8
|
+
accent: "bg-accent",
|
|
9
|
+
ok: "bg-ok",
|
|
10
|
+
busy: "bg-busy",
|
|
11
|
+
warn: "bg-warn",
|
|
12
|
+
danger: "bg-danger",
|
|
13
|
+
info: "bg-info"
|
|
14
|
+
};
|
|
15
|
+
const LEGEND_TONES = {
|
|
16
|
+
neutral: "text-fg-subtle",
|
|
17
|
+
accent: "text-accent",
|
|
18
|
+
ok: "text-ok",
|
|
19
|
+
busy: "text-busy",
|
|
20
|
+
warn: "text-warn",
|
|
21
|
+
danger: "text-danger",
|
|
22
|
+
info: "text-info"
|
|
23
|
+
};
|
|
24
|
+
/** Default strip height in px at the 16px root — thin enough to sit under a `Stat`. */
|
|
25
|
+
const DEFAULT_HEIGHT_PX = 6;
|
|
26
|
+
/** Percentages that add up: largest-remainder, so the row never reads 99%. */
|
|
27
|
+
function shares(values) {
|
|
28
|
+
const total = values.reduce((sum, value) => sum + value, 0);
|
|
29
|
+
if (total <= 0) return values.map(() => 0);
|
|
30
|
+
const exact = values.map((value) => value / total * 100);
|
|
31
|
+
const floors = exact.map((value) => Math.floor(value));
|
|
32
|
+
let remainder = 100 - floors.reduce((sum, value) => sum + value, 0);
|
|
33
|
+
const order = exact.map((value, index) => ({
|
|
34
|
+
index,
|
|
35
|
+
fraction: value - Math.floor(value)
|
|
36
|
+
})).sort((a, b) => b.fraction - a.fraction);
|
|
37
|
+
const result = [...floors];
|
|
38
|
+
for (const { index } of order) {
|
|
39
|
+
if (remainder <= 0) break;
|
|
40
|
+
result[index] = result[index] + 1;
|
|
41
|
+
remainder -= 1;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The distribution strip: one flex cell per group, weighted by its value.
|
|
47
|
+
*
|
|
48
|
+
* A stacked bar with no axis and no numbers — the shape *is* the reading. Three
|
|
49
|
+
* rules keep it honest:
|
|
50
|
+
*
|
|
51
|
+
* 1. **Empty groups get no cell.** A minimum width is what makes a two-pixel
|
|
52
|
+
* sliver visible, and a minimum width on a zero would draw a group that is
|
|
53
|
+
* not there.
|
|
54
|
+
* 2. **The percentages add to 100.** Shares are rounded by largest remainder,
|
|
55
|
+
* so the legend never sums to 99 and never to 101.
|
|
56
|
+
* 3. **Colour is never the only channel.** The strip is a `role="img"` whose
|
|
57
|
+
* accessible name spells the whole distribution out (WCAG 1.4.1); the legend
|
|
58
|
+
* repeats it in text when there is room for one.
|
|
59
|
+
*
|
|
60
|
+
* The cells are divided by the same 1px seam as `SeamList`, so a distribution
|
|
61
|
+
* strip and a seam list sitting in the same panel share one hairline language.
|
|
62
|
+
*
|
|
63
|
+
* Static markup — no `"use client"`.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* <GroupBar
|
|
67
|
+
* label="Universe load"
|
|
68
|
+
* items={[
|
|
69
|
+
* { label: "dimmers", value: 212, tone: "accent" },
|
|
70
|
+
* { label: "movers", value: 96, tone: "info" },
|
|
71
|
+
* { label: "free", value: 204 },
|
|
72
|
+
* ]}
|
|
73
|
+
* legend
|
|
74
|
+
* />
|
|
75
|
+
*/
|
|
76
|
+
const GroupBar = React.forwardRef(function GroupBar({ className, items, height = DEFAULT_HEIGHT_PX, label, legend = false, formatShare = (share) => `${share}%`, emptyLabel = "no data", ...elementProps }, ref) {
|
|
77
|
+
const present = items.filter((item) => item.value > 0);
|
|
78
|
+
const percentages = shares(present.map((item) => item.value));
|
|
79
|
+
const empty = present.length === 0;
|
|
80
|
+
const summary = empty ? emptyLabel : present.map((item, index) => `${item.label} ${formatShare(percentages[index], item)}`).join(", ");
|
|
81
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
82
|
+
ref,
|
|
83
|
+
"data-slot": "group-bar",
|
|
84
|
+
"data-empty": empty ? "true" : void 0,
|
|
85
|
+
className: cn("flex min-w-0 flex-col gap-(--cue-space-3)", className),
|
|
86
|
+
...elementProps,
|
|
87
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
88
|
+
role: "img",
|
|
89
|
+
"aria-label": label === void 0 ? summary : `${label}: ${summary}`,
|
|
90
|
+
"data-slot": "group-bar-track",
|
|
91
|
+
className: "flex w-full gap-px overflow-hidden rounded-(--radius-control) bg-border",
|
|
92
|
+
style: { height: toRem(height) },
|
|
93
|
+
children: present.map((item) => /* @__PURE__ */ jsx("span", {
|
|
94
|
+
"aria-hidden": "true",
|
|
95
|
+
"data-slot": "group-bar-cell",
|
|
96
|
+
"data-tone": item.tone ?? "neutral",
|
|
97
|
+
className: cn("min-w-[2px] shrink-0", CELL_TONES[item.tone ?? "neutral"]),
|
|
98
|
+
style: {
|
|
99
|
+
flexGrow: item.value,
|
|
100
|
+
flexBasis: 0
|
|
101
|
+
}
|
|
102
|
+
}, item.id ?? item.label))
|
|
103
|
+
}), legend && !empty ? /* @__PURE__ */ jsx("div", {
|
|
104
|
+
"aria-hidden": "true",
|
|
105
|
+
"data-slot": "group-bar-legend",
|
|
106
|
+
className: "flex flex-wrap items-center gap-x-(--cue-space-5) gap-y-(--cue-space-2) font-mono text-(length:--cue-text-label) text-fg-muted",
|
|
107
|
+
children: present.map((item, index) => /* @__PURE__ */ jsxs("span", {
|
|
108
|
+
className: "inline-flex items-center gap-(--cue-space-2)",
|
|
109
|
+
children: [
|
|
110
|
+
/* @__PURE__ */ jsx("span", { className: cn("size-[0.375rem] shrink-0 rounded-full", CELL_TONES[item.tone ?? "neutral"]) }),
|
|
111
|
+
/* @__PURE__ */ jsx("span", { children: item.label }),
|
|
112
|
+
/* @__PURE__ */ jsx("span", {
|
|
113
|
+
className: cn("tabular-nums", LEGEND_TONES[item.tone ?? "neutral"]),
|
|
114
|
+
children: formatShare(percentages[index], item)
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
}, item.id ?? item.label))
|
|
118
|
+
}) : null]
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//#endregion
|
|
122
|
+
export { GroupBar };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { activateRowFromClick, activateRowFromKeyDown } from "./_data-row.js";
|
|
2
|
+
import { AppWindowFrame, AppWindowFrameProps } from "./app-window-frame.js";
|
|
3
|
+
import { CodeBlock, CodeBlockProps } from "./code-block.js";
|
|
4
|
+
import { CopyButton, CopyButtonProps } from "./copy-button.js";
|
|
5
|
+
import { DataRow, DataRowDisclosure, DataRowRootProps, DataRowSlotProps } from "./data-row.js";
|
|
6
|
+
import { DataTree, DataTreeItem, DataTreeProps, DataTreeRowState } from "./data-tree.js";
|
|
7
|
+
import { GroupBar, GroupBarItem, GroupBarProps, GroupBarTone } from "./group-bar.js";
|
|
8
|
+
import { Ledger, LedgerEmptyProps, LedgerGroupProps, LedgerRootProps, LedgerTierProps } from "./ledger.js";
|
|
9
|
+
import { Meter, MeterProps, MeterProvenance, MeterTone } from "./meter.js";
|
|
10
|
+
import { Progress, ProgressProps } from "./progress.js";
|
|
11
|
+
import { SeamCell, SeamCellProps, SeamGrid, SeamGridProps, SeamGround } from "./seam-grid.js";
|
|
12
|
+
import { Sparkline, SparklineProps } from "./sparkline.js";
|
|
13
|
+
import { Stat, StatProps, StatTone } from "./stat.js";
|
|
14
|
+
import { Table, TableCaptionProps, TableCellProps, TableGroupRowProps, TableHeadProps, TableRootProps, TableRowProps, TableScrollRegion, TableScrollRegionProps, TableSectionProps } from "./table.js";
|
|
15
|
+
import { TerminalFrame, TerminalFrameLine, TerminalFrameProps, TerminalLine, TerminalLineTone, TerminalScript, TerminalStep } from "./terminal-frame.js";
|
|
16
|
+
import { TwoStepButton, TwoStepButtonProps, TwoStepTone } from "./two-step-button.js";
|
|
17
|
+
import { UsageChart, UsageChartPoint, UsageChartProps, UsageChartTone } from "./usage-chart.js";
|
|
18
|
+
export { AppWindowFrame, type AppWindowFrameProps, CodeBlock, type CodeBlockProps, CopyButton, type CopyButtonProps, DataRow, type DataRowDisclosure, type DataRowRootProps, type DataRowSlotProps, DataTree, type DataTreeItem, type DataTreeProps, type DataTreeRowState, GroupBar, type GroupBarItem, type GroupBarProps, type GroupBarTone, Ledger, type LedgerEmptyProps, type LedgerGroupProps, type LedgerRootProps, type LedgerTierProps, Meter, type MeterProps, type MeterProvenance, type MeterTone, Progress, type ProgressProps, SeamCell, type SeamCellProps, SeamGrid, type SeamGridProps, type SeamGround, Sparkline, type SparklineProps, Stat, type StatProps, type StatTone, Table, type TableCaptionProps, type TableCellProps, type TableGroupRowProps, type TableHeadProps, type TableRootProps, type TableRowProps, TableScrollRegion, type TableScrollRegionProps, type TableSectionProps, TerminalFrame, type TerminalFrameLine, type TerminalFrameProps, type TerminalLine, type TerminalLineTone, type TerminalScript, type TerminalStep, TwoStepButton, type TwoStepButtonProps, type TwoStepTone, UsageChart, type UsageChartPoint, type UsageChartProps, type UsageChartTone, activateRowFromClick, activateRowFromKeyDown };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { activateRowFromClick, activateRowFromKeyDown } from "./_data-row.js";
|
|
2
|
+
import { AppWindowFrame } from "./app-window-frame.js";
|
|
3
|
+
import { CopyButton } from "./copy-button.js";
|
|
4
|
+
import { CodeBlock } from "./code-block.js";
|
|
5
|
+
import { DataRow } from "./data-row.js";
|
|
6
|
+
import { DataTree } from "./data-tree.js";
|
|
7
|
+
import { GroupBar } from "./group-bar.js";
|
|
8
|
+
import { Ledger } from "./ledger.js";
|
|
9
|
+
import { Meter } from "./meter.js";
|
|
10
|
+
import { Progress } from "./progress.js";
|
|
11
|
+
import { SeamCell, SeamGrid } from "./seam-grid.js";
|
|
12
|
+
import { Sparkline } from "./sparkline.js";
|
|
13
|
+
import { Stat } from "./stat.js";
|
|
14
|
+
import { Table, TableScrollRegion } from "./table.js";
|
|
15
|
+
import { TerminalFrame } from "./terminal-frame.js";
|
|
16
|
+
import { TwoStepButton } from "./two-step-button.js";
|
|
17
|
+
import { UsageChart } from "./usage-chart.js";
|
|
18
|
+
export { AppWindowFrame, CodeBlock, CopyButton, DataRow, DataTree, GroupBar, Ledger, Meter, Progress, SeamCell, SeamGrid, Sparkline, Stat, Table, TableScrollRegion, TerminalFrame, TwoStepButton, UsageChart, activateRowFromClick, activateRowFromKeyDown };
|