@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,171 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
//#region src/chrome/_status-bar.ts
|
|
3
|
+
/**
|
|
4
|
+
* The class half of `StatusBar` (see `./status-bar.tsx`).
|
|
5
|
+
*
|
|
6
|
+
* It lives on its own for the same reason `forms/_chassis.ts` does — the item's
|
|
7
|
+
* appearance is a pure function of three enumerated inputs and nothing else —
|
|
8
|
+
* and for one reason `_chassis.ts` does not have: a status bar is two kinds of
|
|
9
|
+
* thing wearing one skin. A static reading is markup, and markup is the whole
|
|
10
|
+
* point of `StatusBar` being renderable from a server component with no
|
|
11
|
+
* JavaScript at all. An *interactive* item is a control, and a control needs
|
|
12
|
+
* the render prop, which needs a hook, which needs `"use client"`. Putting the
|
|
13
|
+
* shared class strings here lets the static half stay static and the
|
|
14
|
+
* interactive half cross the boundary alone (`./_status-bar-item.tsx`), instead
|
|
15
|
+
* of the whole bar crossing it because one of its items might be a button.
|
|
16
|
+
*
|
|
17
|
+
* Everything below is token-backed and enumerated per tone. Nothing is derived
|
|
18
|
+
* at runtime from a tone name, because a class string assembled from a template
|
|
19
|
+
* literal is a class string Tailwind's scanner never sees.
|
|
20
|
+
*/
|
|
21
|
+
/** Ink for each tone; `neutral` inherits the bar's own subtle grey. */
|
|
22
|
+
const ITEM_TONES = {
|
|
23
|
+
neutral: "",
|
|
24
|
+
accent: "text-accent",
|
|
25
|
+
ok: "text-ok",
|
|
26
|
+
busy: "text-busy",
|
|
27
|
+
warn: "text-warn",
|
|
28
|
+
danger: "text-danger",
|
|
29
|
+
info: "text-info"
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Every item, static or not: one line, never wrapping, never growing the bar.
|
|
33
|
+
*
|
|
34
|
+
* This exact string is what a plain `<StatusBar.Item>` rendered before any of
|
|
35
|
+
* the interactive vocabulary existed, and it still is — the appearance function
|
|
36
|
+
* adds to it and never rewrites it, so a console that upgrades sees the same
|
|
37
|
+
* readouts it had.
|
|
38
|
+
*/
|
|
39
|
+
const ITEM_BASE = "inline-flex min-w-0 shrink-0 items-center gap-(--cue-space-2) whitespace-nowrap";
|
|
40
|
+
/**
|
|
41
|
+
* What an item gains when it becomes a real control.
|
|
42
|
+
*
|
|
43
|
+
* The reset first: a `<button>` arrives with a border, a ground, a gutter and a
|
|
44
|
+
* font of the user agent's choosing, and none of them belong in a 24px strip.
|
|
45
|
+
* `text-(length:--cue-text-label)` and `font-mono` are re-declared rather than
|
|
46
|
+
* inherited for the same reason — form controls do not inherit type.
|
|
47
|
+
*
|
|
48
|
+
* `h-full` is the VS Code reading of a status item and the one that makes hover
|
|
49
|
+
* legible: the fill is the height of the bar, not the height of the words, so a
|
|
50
|
+
* pointer anywhere in the strip is over the target rather than beside it.
|
|
51
|
+
*
|
|
52
|
+
* The focus ring is inset (`-outline-offset-1`). An outset ring on a bar this
|
|
53
|
+
* low paints across the item's neighbours and the hairline above them, which
|
|
54
|
+
* reads as the whole bar being focused rather than one reading in it.
|
|
55
|
+
*
|
|
56
|
+
* The disabled treatment is declared twice, once for `:disabled` and once for
|
|
57
|
+
* `[data-disabled]`. An item that a `render` prop turned into an anchor can
|
|
58
|
+
* never match `:disabled` — the pseudo-class is defined on form controls — so
|
|
59
|
+
* without the data twin a disabled link would read as perfectly live.
|
|
60
|
+
*/
|
|
61
|
+
const INTERACTIVE_CHASSIS = "h-full cursor-pointer border-0 bg-transparent py-0 font-mono text-(length:--cue-text-label) outline-none transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-40 data-[disabled]:pointer-events-none data-[disabled]:opacity-40 motion-reduce:transition-none";
|
|
62
|
+
/**
|
|
63
|
+
* A quiet control's gutter, and the negative margin that pays for it.
|
|
64
|
+
*
|
|
65
|
+
* The bar sets `gap-(--cue-space-4)` between items. Padding an item to give its
|
|
66
|
+
* hover fill somewhere to live would push its text `--cue-space-2` further from
|
|
67
|
+
* its neighbour, so the same length is taken straight back off the margin: the
|
|
68
|
+
* words stay exactly where a static reading's words would be, and the fill
|
|
69
|
+
* bleeds halfway into the gap either side. VS Code does the identical trick
|
|
70
|
+
* with a 5px label padding inside a 3px item margin.
|
|
71
|
+
*/
|
|
72
|
+
const QUIET_GEOMETRY = "px-(--cue-space-2) -mx-(--cue-space-2)";
|
|
73
|
+
/**
|
|
74
|
+
* A filled item's gutter. Wider, and with no negative margin at all.
|
|
75
|
+
*
|
|
76
|
+
* A filled item is a chip rather than a reading, and a chip whose ground bleeds
|
|
77
|
+
* into the gap on both sides has no gap left to be a chip in. VS Code makes the
|
|
78
|
+
* same split — its coloured items take the wider 8px padding while a plain one
|
|
79
|
+
* keeps 5px — so this is the next space token up and the margin stays put.
|
|
80
|
+
*/
|
|
81
|
+
const FILLED_GEOMETRY = "h-full px-(--cue-space-3)";
|
|
82
|
+
/**
|
|
83
|
+
* The ground a `quiet` control paints, hovered, pressed, and as a member of a
|
|
84
|
+
* hovered {@link STATUS_BAR_GROUP_CLASSES cluster}.
|
|
85
|
+
*
|
|
86
|
+
* Three rungs of one ladder: the bar sits on `surface-1`, a hovered item lifts
|
|
87
|
+
* to `surface-2`, a pressed one to `surface-3`. The cluster rule is the VS Code
|
|
88
|
+
* pairing exactly — hovering any segment grounds every segment at the ordinary
|
|
89
|
+
* hover rung, and the segment actually under the cursor goes one rung further,
|
|
90
|
+
* so a two-item group reads as one control without hiding which half is live.
|
|
91
|
+
* The compound `group-hover/status-group:hover:` outranks the plain `hover:` on
|
|
92
|
+
* specificity rather than on source order, so which of them wins is decided by
|
|
93
|
+
* the cascade and not by how Tailwind happened to sort that day.
|
|
94
|
+
*/
|
|
95
|
+
const QUIET_GROUNDS = "hover:bg-surface-2 active:bg-surface-3 group-hover/status-group:bg-surface-2 group-hover/status-group:hover:bg-surface-3";
|
|
96
|
+
/**
|
|
97
|
+
* The fill a `filled` item paints, per tone.
|
|
98
|
+
*
|
|
99
|
+
* `bg-<tone>/10` is the tinted-`Chip` recipe, deliberately: "warn" has to be
|
|
100
|
+
* the same wash in the status bar that it is on the chip that raised it. The
|
|
101
|
+
* derived `--cue-<tone>-soft` properties are not used here because only
|
|
102
|
+
* `accent-soft` is bridged into Tailwind's colour namespace — `bg-warn-soft`
|
|
103
|
+
* compiles to nothing at all — while the alpha modifier reaches every tone and
|
|
104
|
+
* lands on the same 10–12% wash the token was derived at.
|
|
105
|
+
*/
|
|
106
|
+
const FILLED_TONES = {
|
|
107
|
+
neutral: "bg-surface-2 text-fg",
|
|
108
|
+
accent: "bg-accent/10",
|
|
109
|
+
ok: "bg-ok/10",
|
|
110
|
+
busy: "bg-busy/10",
|
|
111
|
+
warn: "bg-warn/10",
|
|
112
|
+
danger: "bg-danger/10",
|
|
113
|
+
info: "bg-info/10"
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Where a filled control's fill steps to under the pointer, per tone.
|
|
117
|
+
*
|
|
118
|
+
* The tint deepens rather than being swapped for a grey: a warning that turns
|
|
119
|
+
* neutral on hover has stopped warning at the exact moment somebody reached for
|
|
120
|
+
* it. `/20` is `Chip`'s own interactive step, and `/30` is one further for the
|
|
121
|
+
* press. Neutral has only the surface ladder to climb and its top rung is
|
|
122
|
+
* `surface-3`, so hover and press share it.
|
|
123
|
+
*/
|
|
124
|
+
const FILLED_GROUNDS = {
|
|
125
|
+
neutral: "hover:bg-surface-3 active:bg-surface-3",
|
|
126
|
+
accent: "hover:bg-accent/20 active:bg-accent/30",
|
|
127
|
+
ok: "hover:bg-ok/20 active:bg-ok/30",
|
|
128
|
+
busy: "hover:bg-busy/20 active:bg-busy/30",
|
|
129
|
+
warn: "hover:bg-warn/20 active:bg-warn/30",
|
|
130
|
+
danger: "hover:bg-danger/20 active:bg-danger/30",
|
|
131
|
+
info: "hover:bg-info/20 active:bg-info/30"
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* The compact-adjacency cluster: children one pixel apart, whatever the bar's
|
|
135
|
+
* own gap is.
|
|
136
|
+
*
|
|
137
|
+
* `gap-px` is the seam. `*:mx-0` is what makes the seam survive an interactive
|
|
138
|
+
* member, whose `-mx-(--cue-space-2)` would otherwise pull its neighbours a
|
|
139
|
+
* whole space token *over* it — the negative margin exists to bleed a lone
|
|
140
|
+
* item's fill into the bar's gap, and inside a cluster there is no gap to bleed
|
|
141
|
+
* into. It lands on the group because that is where the decision is: these are
|
|
142
|
+
* segments of one control, not readings that happen to be adjacent.
|
|
143
|
+
*
|
|
144
|
+
* `group/status-group` is the handle the members' cluster-hover rules read, and
|
|
145
|
+
* it is left on the element whether or not any member is interactive so a
|
|
146
|
+
* consumer can hang `group-hover/status-group:` rules of their own on it.
|
|
147
|
+
*/
|
|
148
|
+
const STATUS_BAR_GROUP_CLASSES = "group/status-group flex h-full min-w-0 shrink-0 items-center gap-px *:mx-0";
|
|
149
|
+
/**
|
|
150
|
+
* Every class a status-bar item wears, from the three things that vary.
|
|
151
|
+
*
|
|
152
|
+
* One function rather than a class per shape, because the shapes multiply:
|
|
153
|
+
* seven tones times two prominences times interactive-or-not is 28 items, and
|
|
154
|
+
* 28 hand-written strings drift. Ordering is load-bearing — the merge is
|
|
155
|
+
* last-one-wins, so the reset comes before the gutter that overrides it and the
|
|
156
|
+
* tone comes after the `text-inherit` that would otherwise flatten it.
|
|
157
|
+
*
|
|
158
|
+
* @param appearance - Tone, interactivity and prominence; every field optional.
|
|
159
|
+
* @returns The merged class string, with no duplicate or cancelled utilities.
|
|
160
|
+
* @example
|
|
161
|
+
* statusBarItemClasses({}) // exactly the static item's own chassis
|
|
162
|
+
* @example
|
|
163
|
+
* statusBarItemClasses({ tone: "danger", interactive: true, prominence: "filled" })
|
|
164
|
+
*/
|
|
165
|
+
function statusBarItemClasses(appearance) {
|
|
166
|
+
const { tone = "neutral", interactive = false, prominence = "quiet" } = appearance;
|
|
167
|
+
const filled = prominence === "filled";
|
|
168
|
+
return cn(ITEM_BASE, interactive ? INTERACTIVE_CHASSIS : void 0, interactive && tone === "neutral" ? "text-inherit" : void 0, interactive && !filled ? QUIET_GEOMETRY : void 0, filled ? FILLED_GEOMETRY : void 0, ITEM_TONES[tone], filled ? FILLED_TONES[tone] : void 0, interactive && !filled ? QUIET_GROUNDS : void 0, interactive && filled ? FILLED_GROUNDS[tone] : void 0);
|
|
169
|
+
}
|
|
170
|
+
//#endregion
|
|
171
|
+
export { ITEM_BASE, STATUS_BAR_GROUP_CLASSES, statusBarItemClasses };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//#region src/chrome/_tabs-scroll.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Pure geometry for the library's edge-scroll affordance.
|
|
4
|
+
*
|
|
5
|
+
* Written for {@link ScrollableTabsList} (see `./tabs.tsx`) and now the shared
|
|
6
|
+
* arithmetic under every strip in the system that can outgrow its container:
|
|
7
|
+
* the tab list, `Toolbar`, `SegmentedControl` and `AppBar`'s navigation all
|
|
8
|
+
* reach it through `./_edge-scroller`, which is where the React half lives.
|
|
9
|
+
*
|
|
10
|
+
* A separate module from the components on purpose. These are plain functions
|
|
11
|
+
* over numbers — testable without a DOM, reusable by anything else that needs a
|
|
12
|
+
* scroll-edge affordance — and keeping them out of a component file means that
|
|
13
|
+
* file can stay `"use client"` while this one has no directive at all. (It is
|
|
14
|
+
* also what makes React Fast Refresh work on the component: a file that exports
|
|
15
|
+
* both a component and non-component values gets a full reload instead of a hot
|
|
16
|
+
* swap.)
|
|
17
|
+
*/
|
|
18
|
+
/** How far the fade reaches in from an overflowing edge, in px. */
|
|
19
|
+
declare const TAB_FADE_PX = 24;
|
|
20
|
+
/** Which edges of a horizontal scroller still hide content. */
|
|
21
|
+
interface ScrollEdges {
|
|
22
|
+
/** More content exists before the visible window (to the left in LTR). */
|
|
23
|
+
start: boolean;
|
|
24
|
+
/** More content exists after the visible window (to the right in LTR). */
|
|
25
|
+
end: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Work out which edges of a horizontal scroller still hide content.
|
|
29
|
+
*
|
|
30
|
+
* The 1px tolerances are load-bearing, not defensive padding: fractional layout
|
|
31
|
+
* widths leave `scrollLeft` a sub-pixel short of `scrollWidth - clientWidth` at
|
|
32
|
+
* a hard scroll end, so an exact comparison pins the end indicator ON forever
|
|
33
|
+
* with nothing left to reveal — at which point it means the opposite of what it
|
|
34
|
+
* says. The `max <= 1` guard is the same story for a strip that very nearly
|
|
35
|
+
* fits.
|
|
36
|
+
*
|
|
37
|
+
* @param scrollLeft The scroller's current horizontal offset.
|
|
38
|
+
* @param scrollWidth The full width of the scrolled content.
|
|
39
|
+
* @param clientWidth The width of the visible window.
|
|
40
|
+
* @returns Which edges still have content beyond them.
|
|
41
|
+
* @example
|
|
42
|
+
* computeScrollEdges(0, 600, 200); // { start: false, end: true }
|
|
43
|
+
*/
|
|
44
|
+
declare function computeScrollEdges(scrollLeft: number, scrollWidth: number, clientWidth: number): ScrollEdges;
|
|
45
|
+
/**
|
|
46
|
+
* A CSS mask that fades a strip's CONTENT out at its overflowing edges.
|
|
47
|
+
*
|
|
48
|
+
* Deliberately a mask rather than the usual gradient overlay. A tab strip sits
|
|
49
|
+
* on whatever surface the caller put it on — a panel, a toolbar, the page — so
|
|
50
|
+
* an overlay would have to re-create that background as an opaque colour and
|
|
51
|
+
* would drift the moment the theme changed. Masking fades the content itself
|
|
52
|
+
* and lets whatever is behind show through, so it matches by construction in
|
|
53
|
+
* every theme and both modes.
|
|
54
|
+
*
|
|
55
|
+
* This softens the cut; it is NOT the whole affordance. What sits at an
|
|
56
|
+
* overflowing edge is often the gap between two tabs, and fading empty space is
|
|
57
|
+
* invisible — hence the chevron buttons in the component.
|
|
58
|
+
*
|
|
59
|
+
* @param edges Which edges overflow, from {@link computeScrollEdges}.
|
|
60
|
+
* @param fadePx How far the fade reaches in. Defaults to {@link TAB_FADE_PX}.
|
|
61
|
+
* @returns A `linear-gradient(...)` value, or `undefined` when nothing
|
|
62
|
+
* overflows — no mask property at all, rather than a fully opaque one, so the
|
|
63
|
+
* common case creates no compositing layer.
|
|
64
|
+
*/
|
|
65
|
+
declare function edgeFadeMask(edges: ScrollEdges, fadePx?: number): string | undefined;
|
|
66
|
+
//#endregion
|
|
67
|
+
export { ScrollEdges, TAB_FADE_PX, computeScrollEdges, edgeFadeMask };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
//#region src/chrome/_tabs-scroll.ts
|
|
2
|
+
/**
|
|
3
|
+
* Pure geometry for the library's edge-scroll affordance.
|
|
4
|
+
*
|
|
5
|
+
* Written for {@link ScrollableTabsList} (see `./tabs.tsx`) and now the shared
|
|
6
|
+
* arithmetic under every strip in the system that can outgrow its container:
|
|
7
|
+
* the tab list, `Toolbar`, `SegmentedControl` and `AppBar`'s navigation all
|
|
8
|
+
* reach it through `./_edge-scroller`, which is where the React half lives.
|
|
9
|
+
*
|
|
10
|
+
* A separate module from the components on purpose. These are plain functions
|
|
11
|
+
* over numbers — testable without a DOM, reusable by anything else that needs a
|
|
12
|
+
* scroll-edge affordance — and keeping them out of a component file means that
|
|
13
|
+
* file can stay `"use client"` while this one has no directive at all. (It is
|
|
14
|
+
* also what makes React Fast Refresh work on the component: a file that exports
|
|
15
|
+
* both a component and non-component values gets a full reload instead of a hot
|
|
16
|
+
* swap.)
|
|
17
|
+
*/
|
|
18
|
+
/** How far the fade reaches in from an overflowing edge, in px. */
|
|
19
|
+
const TAB_FADE_PX = 24;
|
|
20
|
+
/**
|
|
21
|
+
* Work out which edges of a horizontal scroller still hide content.
|
|
22
|
+
*
|
|
23
|
+
* The 1px tolerances are load-bearing, not defensive padding: fractional layout
|
|
24
|
+
* widths leave `scrollLeft` a sub-pixel short of `scrollWidth - clientWidth` at
|
|
25
|
+
* a hard scroll end, so an exact comparison pins the end indicator ON forever
|
|
26
|
+
* with nothing left to reveal — at which point it means the opposite of what it
|
|
27
|
+
* says. The `max <= 1` guard is the same story for a strip that very nearly
|
|
28
|
+
* fits.
|
|
29
|
+
*
|
|
30
|
+
* @param scrollLeft The scroller's current horizontal offset.
|
|
31
|
+
* @param scrollWidth The full width of the scrolled content.
|
|
32
|
+
* @param clientWidth The width of the visible window.
|
|
33
|
+
* @returns Which edges still have content beyond them.
|
|
34
|
+
* @example
|
|
35
|
+
* computeScrollEdges(0, 600, 200); // { start: false, end: true }
|
|
36
|
+
*/
|
|
37
|
+
function computeScrollEdges(scrollLeft, scrollWidth, clientWidth) {
|
|
38
|
+
const max = scrollWidth - clientWidth;
|
|
39
|
+
if (max <= 1) return {
|
|
40
|
+
start: false,
|
|
41
|
+
end: false
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
start: scrollLeft > 1,
|
|
45
|
+
end: scrollLeft < max - 1
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A CSS mask that fades a strip's CONTENT out at its overflowing edges.
|
|
50
|
+
*
|
|
51
|
+
* Deliberately a mask rather than the usual gradient overlay. A tab strip sits
|
|
52
|
+
* on whatever surface the caller put it on — a panel, a toolbar, the page — so
|
|
53
|
+
* an overlay would have to re-create that background as an opaque colour and
|
|
54
|
+
* would drift the moment the theme changed. Masking fades the content itself
|
|
55
|
+
* and lets whatever is behind show through, so it matches by construction in
|
|
56
|
+
* every theme and both modes.
|
|
57
|
+
*
|
|
58
|
+
* This softens the cut; it is NOT the whole affordance. What sits at an
|
|
59
|
+
* overflowing edge is often the gap between two tabs, and fading empty space is
|
|
60
|
+
* invisible — hence the chevron buttons in the component.
|
|
61
|
+
*
|
|
62
|
+
* @param edges Which edges overflow, from {@link computeScrollEdges}.
|
|
63
|
+
* @param fadePx How far the fade reaches in. Defaults to {@link TAB_FADE_PX}.
|
|
64
|
+
* @returns A `linear-gradient(...)` value, or `undefined` when nothing
|
|
65
|
+
* overflows — no mask property at all, rather than a fully opaque one, so the
|
|
66
|
+
* common case creates no compositing layer.
|
|
67
|
+
*/
|
|
68
|
+
function edgeFadeMask(edges, fadePx = 24) {
|
|
69
|
+
if (!edges.start && !edges.end) return void 0;
|
|
70
|
+
return `linear-gradient(to right, ${edges.start ? `transparent 0px, black ${fadePx}px` : "black 0px"}, ${edges.end ? `black calc(100% - ${fadePx}px), transparent 100%` : "black 100%"})`;
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { TAB_FADE_PX, computeScrollEdges, edgeFadeMask };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/chrome/_tree.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The pure half of {@link Tree} (see `./tree.tsx`).
|
|
5
|
+
*
|
|
6
|
+
* A tree is two separate problems: working out which rows are visible and how
|
|
7
|
+
* they connect, and painting them. The first one is plain data — no DOM, no
|
|
8
|
+
* refs, no React — so it lives here where it can be unit-tested directly and
|
|
9
|
+
* reused by anything else that needs an outline (a virtualized variant, in
|
|
10
|
+
* particular, needs exactly this list and nothing else).
|
|
11
|
+
*/
|
|
12
|
+
/** One node of the outline. */
|
|
13
|
+
interface TreeItem {
|
|
14
|
+
/** Stable identity: what selection, expansion and focus are keyed on. */
|
|
15
|
+
id: string;
|
|
16
|
+
/** What the row reads as. Kept a node so a call site can mark part of it up. */
|
|
17
|
+
label: React.ReactNode;
|
|
18
|
+
/** Optional leading icon component, drawn `aria-hidden`. */
|
|
19
|
+
icon?: React.ElementType;
|
|
20
|
+
/** Nested nodes. An empty array still makes the row a parent (an empty folder). */
|
|
21
|
+
children?: readonly TreeItem[];
|
|
22
|
+
/** Trailing slot: a count, a `Chip`, a `StatusDot`. */
|
|
23
|
+
badge?: React.ReactNode;
|
|
24
|
+
/** Grey the row out; it stays reachable by keyboard but cannot be selected. */
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* One column of the indent gutter.
|
|
29
|
+
*
|
|
30
|
+
* - `line` — an ancestor at this depth still has siblings below, so its
|
|
31
|
+
* through-line continues past this row.
|
|
32
|
+
* - `space` — that ancestor was the last of its set; the column is now blank.
|
|
33
|
+
* - `branch` / `last` — the row's own elbow, forked or terminal.
|
|
34
|
+
*/
|
|
35
|
+
type TreeGuide = "line" | "space" | "branch" | "last";
|
|
36
|
+
/** The box-drawing column each guide paints, one mono character wide. */
|
|
37
|
+
declare const TREE_GUIDE_GLYPHS: Record<TreeGuide, string>;
|
|
38
|
+
/** A visible row: the item plus everything the DOM row needs to know about it. */
|
|
39
|
+
interface TreeRow {
|
|
40
|
+
/** The node this row draws. */
|
|
41
|
+
item: TreeItem;
|
|
42
|
+
/** Depth from the roots; `0` for a root. */
|
|
43
|
+
level: number;
|
|
44
|
+
/** The id of the row's parent, or `null` at the root. */
|
|
45
|
+
parentId: string | null;
|
|
46
|
+
/** Whether the node declares children at all — what `aria-expanded` hangs on. */
|
|
47
|
+
hasChildren: boolean;
|
|
48
|
+
/** Whether those children are currently shown. */
|
|
49
|
+
expanded: boolean;
|
|
50
|
+
/** 1-based position among its siblings (`aria-posinset`). */
|
|
51
|
+
position: number;
|
|
52
|
+
/** How many siblings there are in total (`aria-setsize`). */
|
|
53
|
+
setSize: number;
|
|
54
|
+
/** One column per level: ancestor through-lines, then this row's elbow. */
|
|
55
|
+
guides: TreeGuide[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Walk the tree depth-first and return only the rows the expansion state
|
|
59
|
+
* reveals.
|
|
60
|
+
*
|
|
61
|
+
* The result is deliberately flat. A flat list is what the ARIA tree pattern
|
|
62
|
+
* wants anyway — `aria-level` / `aria-posinset` / `aria-setsize` carry the
|
|
63
|
+
* structure, no `role="group"` wrappers needed — and it is what makes roving
|
|
64
|
+
* tabindex ("the next visible row") a single array index instead of a recursive
|
|
65
|
+
* search.
|
|
66
|
+
*
|
|
67
|
+
* @param items The roots, in display order.
|
|
68
|
+
* @param expanded Ids whose children are currently shown.
|
|
69
|
+
* @returns Visible rows, top to bottom.
|
|
70
|
+
* @example
|
|
71
|
+
* flattenTree(items, new Set(["house"])).map((row) => row.item.id);
|
|
72
|
+
*/
|
|
73
|
+
declare function flattenTree(items: readonly TreeItem[], expanded: ReadonlySet<string>): TreeRow[];
|
|
74
|
+
//#endregion
|
|
75
|
+
export { TREE_GUIDE_GLYPHS, TreeGuide, TreeItem, TreeRow, flattenTree };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/chrome/_tree.ts
|
|
2
|
+
/** The box-drawing column each guide paints, one mono character wide. */
|
|
3
|
+
const TREE_GUIDE_GLYPHS = {
|
|
4
|
+
line: "│",
|
|
5
|
+
space: " ",
|
|
6
|
+
branch: "├",
|
|
7
|
+
last: "└"
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Walk the tree depth-first and return only the rows the expansion state
|
|
11
|
+
* reveals.
|
|
12
|
+
*
|
|
13
|
+
* The result is deliberately flat. A flat list is what the ARIA tree pattern
|
|
14
|
+
* wants anyway — `aria-level` / `aria-posinset` / `aria-setsize` carry the
|
|
15
|
+
* structure, no `role="group"` wrappers needed — and it is what makes roving
|
|
16
|
+
* tabindex ("the next visible row") a single array index instead of a recursive
|
|
17
|
+
* search.
|
|
18
|
+
*
|
|
19
|
+
* @param items The roots, in display order.
|
|
20
|
+
* @param expanded Ids whose children are currently shown.
|
|
21
|
+
* @returns Visible rows, top to bottom.
|
|
22
|
+
* @example
|
|
23
|
+
* flattenTree(items, new Set(["house"])).map((row) => row.item.id);
|
|
24
|
+
*/
|
|
25
|
+
function flattenTree(items, expanded) {
|
|
26
|
+
const rows = [];
|
|
27
|
+
const walk = (siblings, level, parentId, ancestorLines) => {
|
|
28
|
+
siblings.forEach((item, index) => {
|
|
29
|
+
const isLast = index === siblings.length - 1;
|
|
30
|
+
const hasChildren = item.children !== void 0;
|
|
31
|
+
const isExpanded = hasChildren && expanded.has(item.id);
|
|
32
|
+
rows.push({
|
|
33
|
+
item,
|
|
34
|
+
level,
|
|
35
|
+
parentId,
|
|
36
|
+
hasChildren,
|
|
37
|
+
expanded: isExpanded,
|
|
38
|
+
position: index + 1,
|
|
39
|
+
setSize: siblings.length,
|
|
40
|
+
guides: level === 0 ? [] : [...ancestorLines.slice(1).map((continues) => continues ? "line" : "space"), isLast ? "last" : "branch"]
|
|
41
|
+
});
|
|
42
|
+
if (isExpanded && item.children !== void 0) walk(item.children, level + 1, item.id, [...ancestorLines, !isLast]);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
walk(items, 0, null, []);
|
|
46
|
+
return rows;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { TREE_GUIDE_GLYPHS, flattenTree };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { BarOverflow } from "./_edge-scroller.js";
|
|
2
|
+
import { LinkProps } from "../layout/link.js";
|
|
3
|
+
import { SeparatorProps } from "../primitives/separator.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
//#region src/chrome/app-bar.d.ts
|
|
6
|
+
interface AppBarRootProps extends React.ComponentPropsWithoutRef<"header"> {
|
|
7
|
+
/**
|
|
8
|
+
* Keep the bar at the top of the viewport as the page scrolls. Defaults to
|
|
9
|
+
* `true`.
|
|
10
|
+
*
|
|
11
|
+
* Set it `false` inside `AppShell`, where nothing scrolls the document and a
|
|
12
|
+
* sticky bar would be solving a problem the shell has already solved.
|
|
13
|
+
*/
|
|
14
|
+
sticky?: boolean;
|
|
15
|
+
}
|
|
16
|
+
type AppBarBrandProps = Omit<LinkProps, "variant" | "external">;
|
|
17
|
+
interface AppBarNavProps extends Omit<React.ComponentPropsWithoutRef<"nav">, "children"> {
|
|
18
|
+
/** Where the links sit when they are narrower than the space. Defaults to `"end"`. */
|
|
19
|
+
align?: "start" | "center" | "end";
|
|
20
|
+
/**
|
|
21
|
+
* What the navigation does when the links do not fit. Defaults to `"scroll"`.
|
|
22
|
+
*
|
|
23
|
+
* The same behaviour `Toolbar` and `SegmentedControl` have, from the same
|
|
24
|
+
* module: the links scroll inside the bar, the overflowing edge is faded and
|
|
25
|
+
* a pager chevron appears there. This is what lets the bar survive a phone
|
|
26
|
+
* without a viewport breakpoint.
|
|
27
|
+
*/
|
|
28
|
+
overflow?: BarOverflow;
|
|
29
|
+
/** Accessible name for the chevron that reveals links off the leading edge. */
|
|
30
|
+
previousLabel?: string;
|
|
31
|
+
/** Accessible name for the chevron that reveals links off the trailing edge. */
|
|
32
|
+
nextLabel?: string;
|
|
33
|
+
/** Extra classes for the frame around the `<nav>`, which is what takes the remaining width. */
|
|
34
|
+
frameClassName?: string;
|
|
35
|
+
/** The links, and any separators between clusters of them. */
|
|
36
|
+
children?: React.ReactNode;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Which of the bar's two registers a link is set in.
|
|
40
|
+
*
|
|
41
|
+
* `muted` is furniture — the sections a reader scans past. `strong` is a
|
|
42
|
+
* destination, and the difference is the point: a run of eight identical muted
|
|
43
|
+
* words has no shape, and the one entry that matters disappears into it. Split
|
|
44
|
+
* the run with an {@link AppBarSeparator} and set the second cluster `strong`,
|
|
45
|
+
* and the bar reads as one list, differently weighted, rather than as two
|
|
46
|
+
* navigations.
|
|
47
|
+
*/
|
|
48
|
+
type AppBarRegister = "muted" | "strong";
|
|
49
|
+
interface AppBarLinkProps extends LinkProps {
|
|
50
|
+
/** Which register the link is set in. Defaults to `"muted"`. */
|
|
51
|
+
register?: AppBarRegister;
|
|
52
|
+
/**
|
|
53
|
+
* This is the page the reader is on.
|
|
54
|
+
*
|
|
55
|
+
* Inks the link with the accent and sets `aria-current="page"` — the same
|
|
56
|
+
* bargain `Sidebar.Item` makes, so the current destination is announced and
|
|
57
|
+
* not merely coloured. Overrides `register`: a current page is never
|
|
58
|
+
* furniture.
|
|
59
|
+
*/
|
|
60
|
+
active?: boolean;
|
|
61
|
+
}
|
|
62
|
+
type AppBarSeparatorProps = Omit<SeparatorProps, "orientation">;
|
|
63
|
+
type AppBarActionsProps = React.ComponentPropsWithoutRef<"div">;
|
|
64
|
+
/**
|
|
65
|
+
* The horizontal bar a site or an application wears across the top: brand slot,
|
|
66
|
+
* navigation slot, actions slot, one chrome rung tall.
|
|
67
|
+
*
|
|
68
|
+
* `AppShell` is the frame for a screen that owns the viewport; this is the bar
|
|
69
|
+
* for a document that scrolls — a marketing page, a documentation site, a
|
|
70
|
+
* console's public half. `NavigationMenu` is neither: it is the *menu* that
|
|
71
|
+
* goes inside `AppBar.Nav` when a section has children.
|
|
72
|
+
*
|
|
73
|
+
* Six parts. `Root` is the `<header>`, `Brand` the leading link, `Nav` the
|
|
74
|
+
* `<nav>` landmark that takes the remaining width and scrolls when the links
|
|
75
|
+
* outgrow it, `Link` one destination in one of two registers, `Separator` the
|
|
76
|
+
* seam between clusters, and `Actions` the trailing controls.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* <AppBar.Root>
|
|
80
|
+
* <AppBar.Brand render={<NextLink href="/" />}>
|
|
81
|
+
* <Eyebrow>@cueplusplus/ui</Eyebrow>
|
|
82
|
+
* </AppBar.Brand>
|
|
83
|
+
* <AppBar.Nav aria-label="Sections">
|
|
84
|
+
* <AppBar.Link render={<NextLink href="/docs" />}>Docs</AppBar.Link>
|
|
85
|
+
* <AppBar.Link render={<NextLink href="/theming" />}>Theming</AppBar.Link>
|
|
86
|
+
* <AppBar.Separator />
|
|
87
|
+
* <AppBar.Link render={<NextLink href="/gallery" />} register="strong">Gallery</AppBar.Link>
|
|
88
|
+
* <AppBar.Link external render={<a href="https://skills.cueplusplus.com" />}>Skills</AppBar.Link>
|
|
89
|
+
* </AppBar.Nav>
|
|
90
|
+
* <AppBar.Separator />
|
|
91
|
+
* <AppBar.Actions><ThemePicker /></AppBar.Actions>
|
|
92
|
+
* </AppBar.Root>
|
|
93
|
+
*/
|
|
94
|
+
declare const AppBar: {
|
|
95
|
+
Root: React.ForwardRefExoticComponent<AppBarRootProps & React.RefAttributes<HTMLElement>>;
|
|
96
|
+
Brand: React.ForwardRefExoticComponent<AppBarBrandProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
97
|
+
Nav: React.ForwardRefExoticComponent<AppBarNavProps & React.RefAttributes<HTMLElement>>;
|
|
98
|
+
Link: React.ForwardRefExoticComponent<AppBarLinkProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
99
|
+
Separator: React.ForwardRefExoticComponent<Omit<AppBarSeparatorProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
100
|
+
Actions: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
101
|
+
};
|
|
102
|
+
//#endregion
|
|
103
|
+
export { AppBar, AppBarActionsProps, AppBarBrandProps, AppBarLinkProps, AppBarNavProps, AppBarRegister, AppBarRootProps, AppBarSeparatorProps };
|