@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { CueLogotype } from "./brand/cue-logotype.js";
|
|
2
|
+
import { CueMark } from "./brand/cue-mark.js";
|
|
3
|
+
import { Plussie } from "./brand/plussie.js";
|
|
4
|
+
import { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, agentColor, agentColorStyle } from "./chat/agent-color.js";
|
|
5
|
+
import { AgentPile } from "./chat/agent-pile.js";
|
|
6
|
+
import { Checkbox, CheckboxGroup } from "./forms/checkbox.js";
|
|
7
|
+
import { bareControlClasses, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants } from "./forms/_chassis.js";
|
|
8
|
+
import { InputGroup } from "./forms/input-group.js";
|
|
9
|
+
import { Input } from "./forms/input.js";
|
|
10
|
+
import { NumberField } from "./forms/number-field.js";
|
|
11
|
+
import { Radio, RadioGroup } from "./forms/radio-group.js";
|
|
12
|
+
import { Button, buttonVariants } from "./primitives/button.js";
|
|
13
|
+
import { Chip, chipVariants } from "./primitives/chip.js";
|
|
14
|
+
import { AskBox } from "./chat/ask-box.js";
|
|
15
|
+
import { Composer } from "./chat/composer.js";
|
|
16
|
+
import { Spinner } from "./primitives/spinner.js";
|
|
17
|
+
import { DelegationCard } from "./chat/delegation-card.js";
|
|
18
|
+
import { Message } from "./chat/message.js";
|
|
19
|
+
import { MessageList } from "./chat/message-list.js";
|
|
20
|
+
import { TAB_FADE_PX, computeScrollEdges, edgeFadeMask } from "./chrome/_tabs-scroll.js";
|
|
21
|
+
import { TREE_GUIDE_GLYPHS, flattenTree } from "./chrome/_tree.js";
|
|
22
|
+
import { Link, linkVariants } from "./layout/link.js";
|
|
23
|
+
import { Separator } from "./primitives/separator.js";
|
|
24
|
+
import { AppBar } from "./chrome/app-bar.js";
|
|
25
|
+
import { Sidebar, useSidebar } from "./layout/sidebar.js";
|
|
26
|
+
import { Density } from "./system/density.js";
|
|
27
|
+
import { isSafeTokenValue } from "./system/overrides.js";
|
|
28
|
+
import { DEFAULT_STORAGE_KEY, prepaintScript } from "./system/prepaint.js";
|
|
29
|
+
import { useDensities, useFonts, useThemes } from "./system/theme-registry.js";
|
|
30
|
+
import { ThemeProvider } from "./system/theme-provider.js";
|
|
31
|
+
import { CuePortalFrame, useCuePortalProps } from "./system/portal.js";
|
|
32
|
+
import { OVERLAY_SIDE_OFFSET, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, scrimClasses } from "./overlays/_surface.js";
|
|
33
|
+
import { Drawer } from "./overlays/drawer.js";
|
|
34
|
+
import { IconButton } from "./primitives/icon-button.js";
|
|
35
|
+
import { AppShell } from "./chrome/app-shell.js";
|
|
36
|
+
import { Container } from "./layout/container.js";
|
|
37
|
+
import { Band } from "./chrome/band.js";
|
|
38
|
+
import { EmptyState } from "./chrome/empty-state.js";
|
|
39
|
+
import { Eyebrow } from "./chrome/eyebrow.js";
|
|
40
|
+
import { Footer } from "./chrome/footer.js";
|
|
41
|
+
import { SectionHeader } from "./chrome/section-header.js";
|
|
42
|
+
import { Inspector } from "./chrome/inspector.js";
|
|
43
|
+
import { NavigationMenu } from "./chrome/navigation-menu.js";
|
|
44
|
+
import { PageShell } from "./chrome/page-shell.js";
|
|
45
|
+
import { Panel, PanelHeader } from "./chrome/panel.js";
|
|
46
|
+
import { Row, SeamList, rowVariants } from "./chrome/row.js";
|
|
47
|
+
import { ScrollArea } from "./chrome/scroll-area.js";
|
|
48
|
+
import { SegmentedControl } from "./chrome/segmented-control.js";
|
|
49
|
+
import { StatusBar } from "./chrome/status-bar.js";
|
|
50
|
+
import { ScrollableTabsList, Tabs } from "./chrome/tabs.js";
|
|
51
|
+
import { TitleBar } from "./chrome/title-bar.js";
|
|
52
|
+
import { Tree, TreeVisibilityToggle } from "./chrome/tree.js";
|
|
53
|
+
import { Toolbar } from "./chrome/toolbar.js";
|
|
54
|
+
import { Autocomplete } from "./forms/autocomplete.js";
|
|
55
|
+
import { ButtonGroup } from "./forms/button-group.js";
|
|
56
|
+
import { Combobox } from "./forms/combobox.js";
|
|
57
|
+
import { PasswordInput } from "./forms/password-input.js";
|
|
58
|
+
import { EnvVarInput, envReference, parseEnvReference } from "./forms/env-var-input.js";
|
|
59
|
+
import { Field, FieldDescription, FieldError, FieldLabel } from "./forms/field.js";
|
|
60
|
+
import { FileUpload, partitionFiles } from "./forms/file-upload.js";
|
|
61
|
+
import { MultiSelect } from "./forms/multi-select.js";
|
|
62
|
+
import { OTPField } from "./forms/otp-field.js";
|
|
63
|
+
import { Rating } from "./forms/rating.js";
|
|
64
|
+
import { ScrubInput } from "./forms/scrub-input.js";
|
|
65
|
+
import { SearchInput } from "./forms/search-input.js";
|
|
66
|
+
import { Select } from "./forms/select.js";
|
|
67
|
+
import { Slider } from "./forms/slider.js";
|
|
68
|
+
import { Switch } from "./forms/switch.js";
|
|
69
|
+
import { TagsInput } from "./forms/tags-input.js";
|
|
70
|
+
import { Textarea } from "./forms/textarea.js";
|
|
71
|
+
import { ToggleGroup } from "./forms/toggle-group.js";
|
|
72
|
+
import { Toggle } from "./forms/toggle.js";
|
|
73
|
+
import { AudienceIcon, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, CliToolIcon, FolderIcon, McpServerIcon, SkillIcon, StackIcon, StacksMatrixIcon } from "./icons/containers.js";
|
|
74
|
+
import { activateRowFromClick, activateRowFromKeyDown } from "./instruments/_data-row.js";
|
|
75
|
+
import { AppWindowFrame } from "./instruments/app-window-frame.js";
|
|
76
|
+
import { CopyButton } from "./instruments/copy-button.js";
|
|
77
|
+
import { CodeBlock } from "./instruments/code-block.js";
|
|
78
|
+
import { DataRow } from "./instruments/data-row.js";
|
|
79
|
+
import { DataTree } from "./instruments/data-tree.js";
|
|
80
|
+
import { GroupBar } from "./instruments/group-bar.js";
|
|
81
|
+
import { Ledger } from "./instruments/ledger.js";
|
|
82
|
+
import { Meter } from "./instruments/meter.js";
|
|
83
|
+
import { Progress } from "./instruments/progress.js";
|
|
84
|
+
import { SeamCell, SeamGrid } from "./instruments/seam-grid.js";
|
|
85
|
+
import { Sparkline } from "./instruments/sparkline.js";
|
|
86
|
+
import { Stat } from "./instruments/stat.js";
|
|
87
|
+
import { Table, TableScrollRegion } from "./instruments/table.js";
|
|
88
|
+
import { TerminalFrame } from "./instruments/terminal-frame.js";
|
|
89
|
+
import { TwoStepButton } from "./instruments/two-step-button.js";
|
|
90
|
+
import { UsageChart } from "./instruments/usage-chart.js";
|
|
91
|
+
import { Accordion } from "./layout/accordion.js";
|
|
92
|
+
import { Stack } from "./layout/stack.js";
|
|
93
|
+
import { Bento } from "./layout/bento.js";
|
|
94
|
+
import { Breadcrumb } from "./layout/breadcrumb.js";
|
|
95
|
+
import { Card } from "./layout/card.js";
|
|
96
|
+
import { Collapsible, Disclosure } from "./layout/collapsible.js";
|
|
97
|
+
import { DescriptionList } from "./layout/description-list.js";
|
|
98
|
+
import { Frames } from "./layout/frames.js";
|
|
99
|
+
import { Grid } from "./layout/grid.js";
|
|
100
|
+
import { Item, itemVariants } from "./layout/item.js";
|
|
101
|
+
import { Pagination, paginationRange } from "./layout/pagination.js";
|
|
102
|
+
import { Preview } from "./layout/preview.js";
|
|
103
|
+
import { Stepper } from "./layout/stepper.js";
|
|
104
|
+
import { StatusDot } from "./primitives/status-dot.js";
|
|
105
|
+
import { Timeline } from "./layout/timeline.js";
|
|
106
|
+
import { AlertDialog } from "./overlays/alert-dialog.js";
|
|
107
|
+
import { CommandPalette } from "./overlays/command-palette.js";
|
|
108
|
+
import { DropdownMenu } from "./overlays/dropdown-menu.js";
|
|
109
|
+
import { ContextMenu } from "./overlays/context-menu.js";
|
|
110
|
+
import { Dialog } from "./overlays/dialog.js";
|
|
111
|
+
import { HoverCard } from "./overlays/hover-card.js";
|
|
112
|
+
import { Tooltip } from "./overlays/tooltip.js";
|
|
113
|
+
import { InfoTip } from "./overlays/info-tip.js";
|
|
114
|
+
import { Menubar } from "./overlays/menubar.js";
|
|
115
|
+
import { Popover } from "./overlays/popover.js";
|
|
116
|
+
import { Sheet } from "./overlays/sheet.js";
|
|
117
|
+
import { Toast, useToast } from "./overlays/toast.js";
|
|
118
|
+
import { Avatar, AvatarGroup } from "./primitives/avatar.js";
|
|
119
|
+
import { Kbd } from "./primitives/kbd.js";
|
|
120
|
+
import { Skeleton } from "./primitives/skeleton.js";
|
|
121
|
+
import { useControlHeight, useDensity } from "./system/use-density.js";
|
|
122
|
+
import { useTheme } from "./system/use-theme.js";
|
|
123
|
+
import { DEFAULT_STYLE_SET, STYLE_SETS } from "./system/index.js";
|
|
124
|
+
export { AGENT_COLOR_PROPERTY, AGENT_HUES, AGENT_ROOT_COLOR, Accordion, AgentPile, AlertDialog, AppBar, AppShell, AppWindowFrame, AskBox, AudienceIcon, Autocomplete, Avatar, AvatarGroup, Band, Bento, Breadcrumb, Button, ButtonGroup, Card, CatalogueIcon, ChannelBetaIcon, ChannelReleasedIcon, Checkbox, CheckboxGroup, Chip, CliToolIcon, CodeBlock, Collapsible, Combobox, CommandPalette, Composer, Container, ContextMenu, CopyButton, CueLogotype, CueMark, CuePortalFrame, DEFAULT_STORAGE_KEY, DEFAULT_STYLE_SET, DataRow, DataTree, DelegationCard, Density, DescriptionList, Dialog, Disclosure, Drawer, DropdownMenu, EmptyState, EnvVarInput, Eyebrow, Field, FieldDescription, FieldError, FieldLabel, FileUpload, FolderIcon, Footer, Frames, Grid, GroupBar, HoverCard, IconButton, InfoTip, Input, InputGroup, Inspector, Item, Kbd, Ledger, Link, McpServerIcon, Menubar, Message, MessageList, Meter, MultiSelect, NavigationMenu, NumberField, OTPField, OVERLAY_SIDE_OFFSET, PageShell, Pagination, Panel, PanelHeader, PasswordInput, Plussie, Popover, Preview, Progress, Radio, RadioGroup, Rating, Row, STYLE_SETS, ScrollArea, ScrollableTabsList, ScrubInput, SeamCell, SeamGrid, SeamList, SearchInput, SectionHeader, SegmentedControl, Select, Separator, Sheet, Sidebar, Skeleton, SkillIcon, Slider, Sparkline, Spinner, Stack, StackIcon, StacksMatrixIcon, Stat, StatusBar, StatusDot, Stepper, Switch, TAB_FADE_PX, TREE_GUIDE_GLYPHS, Table, TableScrollRegion, Tabs, TagsInput, TerminalFrame, Textarea, ThemeProvider, Timeline, TitleBar, Toast, Toggle, ToggleGroup, Toolbar, Tooltip, Tree, TreeVisibilityToggle, TwoStepButton, UsageChart, activateRowFromClick, activateRowFromKeyDown, agentColor, agentColorStyle, bareControlClasses, buttonVariants, chipVariants, computeScrollEdges, controlClasses, controlGroupFocusClasses, controlSurface, controlVariants, edgeFadeMask, envReference, flattenTree, isSafeTokenValue, itemVariants, linkVariants, menuItemClasses, menuLabelClasses, menuPopupClasses, menuSeparatorClasses, overlayDescriptionClasses, overlayFooterClasses, overlayModalTransitionClasses, overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses, overlayTextClasses, overlayTitleClasses, paginationRange, parseEnvReference, partitionFiles, prepaintScript, rowVariants, scrimClasses, useControlHeight, useCuePortalProps, useDensities, useDensity, useFonts, useSidebar, useTheme, useThemes, useToast };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import Anser from "anser";
|
|
2
|
+
//#region src/instruments/_ansi.ts
|
|
3
|
+
/**
|
|
4
|
+
* The eight ANSI hues on the system's tokens.
|
|
5
|
+
*
|
|
6
|
+
* `blue` and `cyan` share `info`, and `magenta` borrows `accent`: the palette
|
|
7
|
+
* has one cool status colour and no sixth hue, and inventing two more would put
|
|
8
|
+
* colours on screen that no theme controls. Bright variants resolve to the same
|
|
9
|
+
* token — brightness in a terminal is an intensity, and intensity here is the
|
|
10
|
+
* `bold` flag.
|
|
11
|
+
*/
|
|
12
|
+
const NAMED_COLORS = {
|
|
13
|
+
black: "var(--cue-fg-subtle)",
|
|
14
|
+
red: "var(--cue-danger)",
|
|
15
|
+
green: "var(--cue-ok)",
|
|
16
|
+
yellow: "var(--cue-warn)",
|
|
17
|
+
blue: "var(--cue-info)",
|
|
18
|
+
magenta: "var(--cue-accent)",
|
|
19
|
+
cyan: "var(--cue-info)",
|
|
20
|
+
white: "var(--cue-fg)",
|
|
21
|
+
"bright-black": "var(--cue-fg-muted)",
|
|
22
|
+
"bright-red": "var(--cue-danger)",
|
|
23
|
+
"bright-green": "var(--cue-ok)",
|
|
24
|
+
"bright-yellow": "var(--cue-warn)",
|
|
25
|
+
"bright-blue": "var(--cue-info)",
|
|
26
|
+
"bright-magenta": "var(--cue-accent)",
|
|
27
|
+
"bright-cyan": "var(--cue-info)",
|
|
28
|
+
"bright-white": "var(--cue-fg)"
|
|
29
|
+
};
|
|
30
|
+
/** The 256-colour palette's first sixteen slots, in index order. */
|
|
31
|
+
const PALETTE_NAMES = [
|
|
32
|
+
"black",
|
|
33
|
+
"red",
|
|
34
|
+
"green",
|
|
35
|
+
"yellow",
|
|
36
|
+
"blue",
|
|
37
|
+
"magenta",
|
|
38
|
+
"cyan",
|
|
39
|
+
"white",
|
|
40
|
+
"bright-black",
|
|
41
|
+
"bright-red",
|
|
42
|
+
"bright-green",
|
|
43
|
+
"bright-yellow",
|
|
44
|
+
"bright-blue",
|
|
45
|
+
"bright-magenta",
|
|
46
|
+
"bright-cyan",
|
|
47
|
+
"bright-white"
|
|
48
|
+
];
|
|
49
|
+
/** The six levels each channel of the 6×6×6 cube can take. */
|
|
50
|
+
const CUBE_LEVELS = [
|
|
51
|
+
0,
|
|
52
|
+
95,
|
|
53
|
+
135,
|
|
54
|
+
175,
|
|
55
|
+
215,
|
|
56
|
+
255
|
|
57
|
+
];
|
|
58
|
+
/** Resolve one of anser's class names into a CSS colour. */
|
|
59
|
+
function resolveColor(name, truecolor) {
|
|
60
|
+
if (name === null) return void 0;
|
|
61
|
+
if (name === "ansi-truecolor") return truecolor === null ? void 0 : `rgb(${truecolor})`;
|
|
62
|
+
const palette = /^ansi-palette-(\d+)$/.exec(name);
|
|
63
|
+
if (palette !== null) {
|
|
64
|
+
const index = Number(palette[1]);
|
|
65
|
+
if (index < 16) return NAMED_COLORS[PALETTE_NAMES[index]];
|
|
66
|
+
if (index > 255) return void 0;
|
|
67
|
+
if (index >= 232) {
|
|
68
|
+
const level = 8 + (index - 232) * 10;
|
|
69
|
+
return `rgb(${level}, ${level}, ${level})`;
|
|
70
|
+
}
|
|
71
|
+
const offset = index - 16;
|
|
72
|
+
return `rgb(${CUBE_LEVELS[Math.floor(offset / 36)]}, ${CUBE_LEVELS[Math.floor(offset / 6) % 6]}, ${CUBE_LEVELS[offset % 6]})`;
|
|
73
|
+
}
|
|
74
|
+
return NAMED_COLORS[name.replace(/^ansi-/, "")];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Parse one line of terminal output into styled spans.
|
|
78
|
+
*
|
|
79
|
+
* Always returns at least one span — an empty line still needs a row of the
|
|
80
|
+
* right height — and never returns markup.
|
|
81
|
+
*
|
|
82
|
+
* @param text - One line, escape sequences and all.
|
|
83
|
+
* @returns The runs, in order.
|
|
84
|
+
* @example
|
|
85
|
+
* ansiSpans("[31mfailed").map((span) => span.color); // ["var(--cue-danger)"]
|
|
86
|
+
*/
|
|
87
|
+
function ansiSpans(text) {
|
|
88
|
+
const spans = Anser.ansiToJson(text, {
|
|
89
|
+
use_classes: true,
|
|
90
|
+
remove_empty: true
|
|
91
|
+
}).map((entry) => {
|
|
92
|
+
const decorations = new Set(entry.decorations);
|
|
93
|
+
return {
|
|
94
|
+
text: entry.content,
|
|
95
|
+
color: resolveColor(entry.fg, entry.fg_truecolor),
|
|
96
|
+
background: resolveColor(entry.bg, entry.bg_truecolor),
|
|
97
|
+
bold: decorations.has("bold"),
|
|
98
|
+
dim: decorations.has("dim"),
|
|
99
|
+
italic: decorations.has("italic"),
|
|
100
|
+
underline: decorations.has("underline"),
|
|
101
|
+
strikethrough: decorations.has("strikethrough")
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
return spans.length > 0 ? spans : [{
|
|
105
|
+
text: "",
|
|
106
|
+
color: void 0,
|
|
107
|
+
background: void 0,
|
|
108
|
+
bold: false,
|
|
109
|
+
dim: false,
|
|
110
|
+
italic: false,
|
|
111
|
+
underline: false,
|
|
112
|
+
strikethrough: false
|
|
113
|
+
}];
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { ansiSpans };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import "../lib/cva.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/instruments/_data-row.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Whether a click on a row means "open this row", and act on it if it does.
|
|
6
|
+
*
|
|
7
|
+
* Exported because more surfaces need this reading than ship a `DataRow.Root`:
|
|
8
|
+
* `Table.Row` documents activation as the caller's job, and a console that draws
|
|
9
|
+
* its list as a `<tr>` in one view and a `DataRow.Root` in another would
|
|
10
|
+
* otherwise run two implementations of one decision — which is how the table
|
|
11
|
+
* view quietly loses modifier-click on the row's link while the ledger view
|
|
12
|
+
* keeps it. `DataRow.Root` calls this exact function; so should you.
|
|
13
|
+
*
|
|
14
|
+
* Four cases a naive `onClick={open}` gets wrong, and this is the whole reason
|
|
15
|
+
* the row is not simply a `<button>`:
|
|
16
|
+
*
|
|
17
|
+
* - **A control inside the row.** The action cluster, a menu trigger, a
|
|
18
|
+
* checkbox — pressing one is not the same gesture as picking the row. Anything
|
|
19
|
+
* under a `[data-stop]` ancestor is left entirely alone, which is why
|
|
20
|
+
* `DataRow.Actions` stamps that attribute on itself.
|
|
21
|
+
* - **A link inside the row.** A plain click on it should open the row's own
|
|
22
|
+
* surface (the drawer, the detail pane), so the anchor's navigation is
|
|
23
|
+
* suppressed — but ⌘/Ctrl/Shift/Alt-click must still open a tab, which is the
|
|
24
|
+
* whole value of having shipped a real `<a href>` in the first place.
|
|
25
|
+
* - **A secondary button.** Only the primary button activates; the middle
|
|
26
|
+
* button belongs to the browser.
|
|
27
|
+
* - **An already-handled event.** A caller's own `onClick` that called
|
|
28
|
+
* `preventDefault()` has said no.
|
|
29
|
+
*
|
|
30
|
+
* @param event The row's own click event.
|
|
31
|
+
* @param activate What "open this row" means to the surface.
|
|
32
|
+
* @example
|
|
33
|
+
* onClick={(event) => activateRowFromClick(event, () => open(row))}
|
|
34
|
+
* @example
|
|
35
|
+
* // The same decision on a table row, which owns its activation itself.
|
|
36
|
+
* <Table.Row
|
|
37
|
+
* interactive
|
|
38
|
+
* tabIndex={0}
|
|
39
|
+
* onClick={(event) => activateRowFromClick(event, () => open(device))}
|
|
40
|
+
* onKeyDown={(event) => activateRowFromKeyDown(event, () => open(device))}
|
|
41
|
+
* >
|
|
42
|
+
*/
|
|
43
|
+
declare function activateRowFromClick(event: React.MouseEvent<HTMLElement>, activate: () => void): void;
|
|
44
|
+
/**
|
|
45
|
+
* Whether a key press on a row means "open this row", and act on it if it does.
|
|
46
|
+
*
|
|
47
|
+
* The other half of {@link activateRowFromClick}, and not optional: a row that
|
|
48
|
+
* opens on click and not on Enter is reachable by pointer only. It fires only
|
|
49
|
+
* when the row itself has focus, so the element it is attached to needs a
|
|
50
|
+
* `tabIndex` — a `<div>` and a `<tr>` are both unfocusable by default, and this
|
|
51
|
+
* handler on an unfocusable row is dead code.
|
|
52
|
+
*
|
|
53
|
+
* Guarded on `event.target === event.currentTarget` so a control inside the row
|
|
54
|
+
* keeps its own keys: without it a rename field on a row could never contain a
|
|
55
|
+
* space, and every action button's Enter would also open the row behind it.
|
|
56
|
+
*
|
|
57
|
+
* Space is prevented rather than merely handled, because the browser's default
|
|
58
|
+
* for Space on a focused non-control is to scroll the page — a row that opened
|
|
59
|
+
* a drawer *and* jumped the list a screenful would read as a bug.
|
|
60
|
+
*
|
|
61
|
+
* @param event The row's own keydown event.
|
|
62
|
+
* @param activate What "open this row" means to the surface.
|
|
63
|
+
* @example
|
|
64
|
+
* onKeyDown={(event) => activateRowFromKeyDown(event, () => open(row))}
|
|
65
|
+
*/
|
|
66
|
+
declare function activateRowFromKeyDown(event: React.KeyboardEvent<HTMLElement>, activate: () => void): void;
|
|
67
|
+
//#endregion
|
|
68
|
+
export { activateRowFromClick, activateRowFromKeyDown };
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { cva } from "../lib/cva.js";
|
|
2
|
+
//#region src/instruments/_data-row.ts
|
|
3
|
+
/**
|
|
4
|
+
* The row recipe, in the three shapes the surfaces need.
|
|
5
|
+
*
|
|
6
|
+
* `layout` — `grid` is the row proper, whose children are its columns; `flex`
|
|
7
|
+
* is the tree row, which puts a disclosure chevron outside the grid so the
|
|
8
|
+
* chevron is not a column the caller has to count (see the column-count rule in
|
|
9
|
+
* {@link DATA_ROW_COLUMNS}).
|
|
10
|
+
*
|
|
11
|
+
* `indent` — the tree's depth step, folded into the row's own left padding
|
|
12
|
+
* rather than applied to an inner wrapper, because the guides
|
|
13
|
+
* ({@link DataTreeProps.guides}) are painted on the row's background box and
|
|
14
|
+
* have to start where the padding does.
|
|
15
|
+
*
|
|
16
|
+
* `interactive` — the row responds to a pointer and to the keyboard. The focus
|
|
17
|
+
* ring is *inset* (`-outline-offset-2`), the same ruling as `Row`: these rows
|
|
18
|
+
* live in clipped panes, where an outset ring on the first or last row is cut
|
|
19
|
+
* off by the pane's own rim. `outline-solid` rides along with every
|
|
20
|
+
* `outline-<n>` in this file because Tailwind v4 leaves `--tw-outline-style`
|
|
21
|
+
* unset otherwise and the ring never paints — `test/focus-ring.test.ts` is what
|
|
22
|
+
* keeps the pair together.
|
|
23
|
+
*
|
|
24
|
+
* The selected tint is in the base rather than in `interactive`: a static row in
|
|
25
|
+
* a selected group still reads as selected, and the attribute is the contract
|
|
26
|
+
* either way. It is declared after the hover wash on purpose — Tailwind emits
|
|
27
|
+
* `data-*` variants after `hover:`, so a selected row keeps its accent tint
|
|
28
|
+
* while the pointer is over it instead of flickering back to the hover grey.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* cn(dataRowVariants({ interactive: true }), className)
|
|
32
|
+
*/
|
|
33
|
+
const dataRowVariants = cva([
|
|
34
|
+
"group/data-row w-full items-center gap-(--cue-space-3) py-(--cue-pad-row-y)",
|
|
35
|
+
"font-mono text-(length:--cue-text-ui) text-fg",
|
|
36
|
+
"border-t border-t-(--cue-hair) first:border-t-0",
|
|
37
|
+
"data-[selected]:bg-accent-soft data-[disabled]:pointer-events-none data-[disabled]:opacity-40"
|
|
38
|
+
].join(" "), {
|
|
39
|
+
variants: {
|
|
40
|
+
layout: {
|
|
41
|
+
grid: "grid [grid-template-columns:var(--cue-data-row-cols,1fr_auto)]",
|
|
42
|
+
flex: "flex"
|
|
43
|
+
},
|
|
44
|
+
indent: {
|
|
45
|
+
true: "pr-(--cue-pad-row-x) pl-[calc(var(--cue-pad-row-x)_+_var(--depth)_*_var(--cue-data-tree-indent,1.25rem))]",
|
|
46
|
+
false: "px-(--cue-pad-row-x)"
|
|
47
|
+
},
|
|
48
|
+
interactive: {
|
|
49
|
+
true: "cursor-pointer outline-none hover:bg-(--cue-row-hover) focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-2 focus-visible:outline-accent",
|
|
50
|
+
false: ""
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
defaultVariants: {
|
|
54
|
+
layout: "grid",
|
|
55
|
+
indent: false,
|
|
56
|
+
interactive: false
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Whether a click on a row means "open this row", and act on it if it does.
|
|
61
|
+
*
|
|
62
|
+
* Exported because more surfaces need this reading than ship a `DataRow.Root`:
|
|
63
|
+
* `Table.Row` documents activation as the caller's job, and a console that draws
|
|
64
|
+
* its list as a `<tr>` in one view and a `DataRow.Root` in another would
|
|
65
|
+
* otherwise run two implementations of one decision — which is how the table
|
|
66
|
+
* view quietly loses modifier-click on the row's link while the ledger view
|
|
67
|
+
* keeps it. `DataRow.Root` calls this exact function; so should you.
|
|
68
|
+
*
|
|
69
|
+
* Four cases a naive `onClick={open}` gets wrong, and this is the whole reason
|
|
70
|
+
* the row is not simply a `<button>`:
|
|
71
|
+
*
|
|
72
|
+
* - **A control inside the row.** The action cluster, a menu trigger, a
|
|
73
|
+
* checkbox — pressing one is not the same gesture as picking the row. Anything
|
|
74
|
+
* under a `[data-stop]` ancestor is left entirely alone, which is why
|
|
75
|
+
* `DataRow.Actions` stamps that attribute on itself.
|
|
76
|
+
* - **A link inside the row.** A plain click on it should open the row's own
|
|
77
|
+
* surface (the drawer, the detail pane), so the anchor's navigation is
|
|
78
|
+
* suppressed — but ⌘/Ctrl/Shift/Alt-click must still open a tab, which is the
|
|
79
|
+
* whole value of having shipped a real `<a href>` in the first place.
|
|
80
|
+
* - **A secondary button.** Only the primary button activates; the middle
|
|
81
|
+
* button belongs to the browser.
|
|
82
|
+
* - **An already-handled event.** A caller's own `onClick` that called
|
|
83
|
+
* `preventDefault()` has said no.
|
|
84
|
+
*
|
|
85
|
+
* @param event The row's own click event.
|
|
86
|
+
* @param activate What "open this row" means to the surface.
|
|
87
|
+
* @example
|
|
88
|
+
* onClick={(event) => activateRowFromClick(event, () => open(row))}
|
|
89
|
+
* @example
|
|
90
|
+
* // The same decision on a table row, which owns its activation itself.
|
|
91
|
+
* <Table.Row
|
|
92
|
+
* interactive
|
|
93
|
+
* tabIndex={0}
|
|
94
|
+
* onClick={(event) => activateRowFromClick(event, () => open(device))}
|
|
95
|
+
* onKeyDown={(event) => activateRowFromKeyDown(event, () => open(device))}
|
|
96
|
+
* >
|
|
97
|
+
*/
|
|
98
|
+
function activateRowFromClick(event, activate) {
|
|
99
|
+
if (event.defaultPrevented || event.button !== 0) return;
|
|
100
|
+
const target = event.target;
|
|
101
|
+
if (target === null) return;
|
|
102
|
+
if (target.closest("[data-stop]") !== null) return;
|
|
103
|
+
if (target.closest("a[href]") !== null) {
|
|
104
|
+
if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
|
|
105
|
+
event.preventDefault();
|
|
106
|
+
}
|
|
107
|
+
activate();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Whether a key press on a row means "open this row", and act on it if it does.
|
|
111
|
+
*
|
|
112
|
+
* The other half of {@link activateRowFromClick}, and not optional: a row that
|
|
113
|
+
* opens on click and not on Enter is reachable by pointer only. It fires only
|
|
114
|
+
* when the row itself has focus, so the element it is attached to needs a
|
|
115
|
+
* `tabIndex` — a `<div>` and a `<tr>` are both unfocusable by default, and this
|
|
116
|
+
* handler on an unfocusable row is dead code.
|
|
117
|
+
*
|
|
118
|
+
* Guarded on `event.target === event.currentTarget` so a control inside the row
|
|
119
|
+
* keeps its own keys: without it a rename field on a row could never contain a
|
|
120
|
+
* space, and every action button's Enter would also open the row behind it.
|
|
121
|
+
*
|
|
122
|
+
* Space is prevented rather than merely handled, because the browser's default
|
|
123
|
+
* for Space on a focused non-control is to scroll the page — a row that opened
|
|
124
|
+
* a drawer *and* jumped the list a screenful would read as a bug.
|
|
125
|
+
*
|
|
126
|
+
* @param event The row's own keydown event.
|
|
127
|
+
* @param activate What "open this row" means to the surface.
|
|
128
|
+
* @example
|
|
129
|
+
* onKeyDown={(event) => activateRowFromKeyDown(event, () => open(row))}
|
|
130
|
+
*/
|
|
131
|
+
function activateRowFromKeyDown(event, activate) {
|
|
132
|
+
if (event.defaultPrevented) return;
|
|
133
|
+
if (event.target !== event.currentTarget) return;
|
|
134
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
135
|
+
event.preventDefault();
|
|
136
|
+
activate();
|
|
137
|
+
}
|
|
138
|
+
//#endregion
|
|
139
|
+
export { activateRowFromClick, activateRowFromKeyDown, dataRowVariants };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/instruments/_glyphs.tsx
|
|
4
|
+
/**
|
|
5
|
+
* Shared instrument glyphs.
|
|
6
|
+
*
|
|
7
|
+
* Drawn inline for the same reason as `overlays/_glyphs.tsx`: a copy
|
|
8
|
+
* affordance should not put an icon dependency on the render path, and
|
|
9
|
+
* hand-set strokes stay hairline-thin at the 10–12px sizes console density
|
|
10
|
+
* asks for. `currentColor` everywhere — the tone comes from the button.
|
|
11
|
+
*
|
|
12
|
+
* @internal Not part of the public API.
|
|
13
|
+
*/
|
|
14
|
+
/** Two offset sheets: the universal "copy to clipboard" mark. */
|
|
15
|
+
function CopyGlyph(props) {
|
|
16
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
17
|
+
viewBox: "0 0 16 16",
|
|
18
|
+
fill: "none",
|
|
19
|
+
stroke: "currentColor",
|
|
20
|
+
strokeWidth: "1.5",
|
|
21
|
+
strokeLinejoin: "round",
|
|
22
|
+
"aria-hidden": "true",
|
|
23
|
+
...props,
|
|
24
|
+
children: [/* @__PURE__ */ jsx("rect", {
|
|
25
|
+
x: "5.5",
|
|
26
|
+
y: "5.5",
|
|
27
|
+
width: "8",
|
|
28
|
+
height: "8",
|
|
29
|
+
rx: "1.5"
|
|
30
|
+
}), /* @__PURE__ */ jsx("path", { d: "M10.5 3.5a1.5 1.5 0 0 0-1.5-1.5H4a1.5 1.5 0 0 0-1.5 1.5V9A1.5 1.5 0 0 0 4 10.5" })]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** The tick that confirms the copy landed. */
|
|
34
|
+
function CheckGlyph(props) {
|
|
35
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
36
|
+
viewBox: "0 0 16 16",
|
|
37
|
+
fill: "none",
|
|
38
|
+
stroke: "currentColor",
|
|
39
|
+
strokeWidth: "2",
|
|
40
|
+
strokeLinecap: "round",
|
|
41
|
+
strokeLinejoin: "round",
|
|
42
|
+
"aria-hidden": "true",
|
|
43
|
+
...props,
|
|
44
|
+
children: /* @__PURE__ */ jsx("path", { d: "m3 8.5 3.5 3.5L13 4.5" })
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** Shared stroke settings for the four pager chevrons. */
|
|
48
|
+
const CHEVRON = {
|
|
49
|
+
viewBox: "0 0 16 16",
|
|
50
|
+
fill: "none",
|
|
51
|
+
stroke: "currentColor",
|
|
52
|
+
strokeWidth: "2",
|
|
53
|
+
strokeLinecap: "round",
|
|
54
|
+
strokeLinejoin: "round",
|
|
55
|
+
"aria-hidden": "true"
|
|
56
|
+
};
|
|
57
|
+
/** Previous page. */
|
|
58
|
+
function ChevronLeftGlyph(props) {
|
|
59
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
60
|
+
...CHEVRON,
|
|
61
|
+
...props,
|
|
62
|
+
children: /* @__PURE__ */ jsx("path", { d: "m10 3-5 5 5 5" })
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Next page. */
|
|
66
|
+
function ChevronRightGlyph(props) {
|
|
67
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
68
|
+
...CHEVRON,
|
|
69
|
+
...props,
|
|
70
|
+
children: /* @__PURE__ */ jsx("path", { d: "m6 3 5 5-5 5" })
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/** First page. */
|
|
74
|
+
function ChevronsLeftGlyph(props) {
|
|
75
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
76
|
+
...CHEVRON,
|
|
77
|
+
...props,
|
|
78
|
+
children: [/* @__PURE__ */ jsx("path", { d: "m8 3-5 5 5 5" }), /* @__PURE__ */ jsx("path", { d: "m13 3-5 5 5 5" })]
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/** Last page. */
|
|
82
|
+
function ChevronsRightGlyph(props) {
|
|
83
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
84
|
+
...CHEVRON,
|
|
85
|
+
...props,
|
|
86
|
+
children: [/* @__PURE__ */ jsx("path", { d: "m3 3 5 5-5 5" }), /* @__PURE__ */ jsx("path", { d: "m8 3 5 5-5 5" })]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
export { CheckGlyph, ChevronLeftGlyph, ChevronRightGlyph, ChevronsLeftGlyph, ChevronsRightGlyph, CopyGlyph };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { ChevronRightGlyph } from "../chrome/_glyphs.js";
|
|
4
|
+
import { headingTag } from "./_ledger.js";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/instruments/_ledger-disclosure.tsx
|
|
8
|
+
/**
|
|
9
|
+
* A heading that folds the rows beneath it: the accordion pattern, once, for
|
|
10
|
+
* both of the ledger's headings.
|
|
11
|
+
*
|
|
12
|
+
* ## Why the button is inside the heading rather than instead of it
|
|
13
|
+
*
|
|
14
|
+
* This is the disclosure shape the APG calls an accordion, and the one
|
|
15
|
+
* `Table.GroupRow`'s own note already points at — *"a real
|
|
16
|
+
* `<button aria-expanded aria-controls>` inside this cell, never the row
|
|
17
|
+
* itself"*. The heading element survives, so the page's `h2`/`h3` outline is
|
|
18
|
+
* unchanged whether a tier folds or not, and a screen-reader user who navigates
|
|
19
|
+
* a two-hundred-row ledger by heading — which is what the outline is *for* —
|
|
20
|
+
* finds the same places in the same order either way. Making the heading the
|
|
21
|
+
* button, or replacing it with one, would trade that outline for a control, and
|
|
22
|
+
* the outline is the more valuable of the two.
|
|
23
|
+
*
|
|
24
|
+
* The glyph is `aria-hidden`, so the button's accessible name is the heading's
|
|
25
|
+
* own words. A reader hears "Ours, 13, collapsed button", not "button".
|
|
26
|
+
*
|
|
27
|
+
* ## Why the folded rows are hidden rather than unmounted
|
|
28
|
+
*
|
|
29
|
+
* A folded run of rows stays mounted inside a panel that carries `hidden`. The
|
|
30
|
+
* obvious alternative — dropping the children while the run is shut, so that
|
|
31
|
+
* folding something away costs nothing to have folded — is wrong here, and the
|
|
32
|
+
* reason is that **the rows are not always inert**. A `Ledger.Group` inside a
|
|
33
|
+
* tier is itself a disclosure holding its own uncontrolled state: unmount it
|
|
34
|
+
* and that state goes with it, so a reader who folds three groups, folds the
|
|
35
|
+
* tier over them and opens it again finds all three sprung back open. A control
|
|
36
|
+
* that says nothing about touching them had quietly undone their work. React
|
|
37
|
+
* state below a fold is the caller's too, and this component is not entitled to
|
|
38
|
+
* throw it away.
|
|
39
|
+
*
|
|
40
|
+
* Nothing is given up in exchange. A `hidden` subtree is out of the
|
|
41
|
+
* accessibility tree exactly as an absent one is — no heading in it reaches the
|
|
42
|
+
* outline, no row in it answers `getByRole`, and a screen reader walks past all
|
|
43
|
+
* of it — so the two forms are indistinguishable to the reader this component
|
|
44
|
+
* is built for. What differs is only that the caller's state survives.
|
|
45
|
+
*
|
|
46
|
+
* The panel element itself would have to stay in any case: `aria-controls` must
|
|
47
|
+
* name an element that exists, and pointed at a node that leaves with its
|
|
48
|
+
* contents it becomes a dangling reference and an `aria-valid-attr-value`
|
|
49
|
+
* failure — the very trap `DataRowDisclosure.controls` documents.
|
|
50
|
+
*
|
|
51
|
+
* ## Why the folded panel wears no classes at all
|
|
52
|
+
*
|
|
53
|
+
* `hidden` is a UA rule, `[hidden] { display: none }`, and **any author
|
|
54
|
+
* `display` beats it**: a panel that keeps `flex` while it is `hidden` is a
|
|
55
|
+
* panel that is not hidden. Rather than fight that with a `display` utility
|
|
56
|
+
* whose win depends on Tailwind's emission order, the folded panel is given no
|
|
57
|
+
* class list at all, and the layout classes come back when it opens.
|
|
58
|
+
*
|
|
59
|
+
* Keeping the rows mounted is what makes this load-bearing rather than tidy.
|
|
60
|
+
* When the panel was emptied on folding there was nothing inside to leak; now
|
|
61
|
+
* the panel's own `display: none` is the only thing standing between a folded
|
|
62
|
+
* run of rows and a visible one. It is enough — a `display: none` element
|
|
63
|
+
* generates no boxes for any of its descendants, whatever `display` each of
|
|
64
|
+
* them asks for — but it has to actually apply, and jsdom cannot see whether it
|
|
65
|
+
* does, which is why `tests/browser/data-surfaces.spec.ts` reads the computed
|
|
66
|
+
* `display` on both real engines.
|
|
67
|
+
*/
|
|
68
|
+
function LedgerDisclosure({ headingLevel, headingSlot, headingClassName, toggleSlot, toggleClassName, panelSlot, panelClassName, label, expanded: expandedProp, defaultExpanded = true, onExpandedChange, children }) {
|
|
69
|
+
const [selfExpanded, setSelfExpanded] = React.useState(defaultExpanded);
|
|
70
|
+
const expanded = expandedProp ?? selfExpanded;
|
|
71
|
+
const panelId = React.useId();
|
|
72
|
+
const Heading = headingTag(headingLevel);
|
|
73
|
+
const toggle = () => {
|
|
74
|
+
const next = !expanded;
|
|
75
|
+
if (expandedProp === void 0) setSelfExpanded(next);
|
|
76
|
+
onExpandedChange?.(next);
|
|
77
|
+
};
|
|
78
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Heading, {
|
|
79
|
+
"data-slot": headingSlot,
|
|
80
|
+
className: headingClassName,
|
|
81
|
+
children: /* @__PURE__ */ jsxs("button", {
|
|
82
|
+
type: "button",
|
|
83
|
+
"data-slot": toggleSlot,
|
|
84
|
+
"aria-expanded": expanded,
|
|
85
|
+
"aria-controls": panelId,
|
|
86
|
+
onClick: toggle,
|
|
87
|
+
className: toggleClassName,
|
|
88
|
+
children: [/* @__PURE__ */ jsx(ChevronRightGlyph, {
|
|
89
|
+
"aria-hidden": "true",
|
|
90
|
+
"data-slot": `${toggleSlot}-glyph`,
|
|
91
|
+
className: cn("size-icon-sm shrink-0 self-center transition-transform duration-150 motion-reduce:transition-none", expanded ? "rotate-90" : null)
|
|
92
|
+
}), label]
|
|
93
|
+
})
|
|
94
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
95
|
+
id: panelId,
|
|
96
|
+
"data-slot": panelSlot,
|
|
97
|
+
hidden: !expanded,
|
|
98
|
+
className: expanded ? panelClassName : void 0,
|
|
99
|
+
children
|
|
100
|
+
})] });
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
export { LedgerDisclosure };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/instruments/_ledger.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The outline half of the ledger, in a module carrying no runtime directive.
|
|
4
|
+
*
|
|
5
|
+
* `ledger.tsx` renders on the server and has to keep doing so — a document of
|
|
6
|
+
* two hundred rows that ships its own JavaScript in order to be *read* is
|
|
7
|
+
* exactly what the static form exists to avoid — while the disclosure in
|
|
8
|
+
* `_ledger-disclosure.tsx` holds React state and is therefore `"use client"`.
|
|
9
|
+
*
|
|
10
|
+
* A server module may **render** a client one, but it may not **call into** it:
|
|
11
|
+
* every value imported from a `"use client"` file is a client reference, and
|
|
12
|
+
* invoking one during a server render throws rather than returning a tag name.
|
|
13
|
+
* So the two symbols both halves need — what a heading level is, and which
|
|
14
|
+
* element it names — live here, in a plain module either graph can compile,
|
|
15
|
+
* instead of being copied into both and drifting the day one of them learns
|
|
16
|
+
* about `h5`.
|
|
17
|
+
*/
|
|
18
|
+
/** The heading elements a tier or a group may be given. */
|
|
19
|
+
type LedgerHeadingLevel = 2 | 3 | 4;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { LedgerHeadingLevel };
|