@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,50 @@
|
|
|
1
|
+
import { Density } from "@cueplusplus/theme-base";
|
|
2
|
+
//#region src/system/use-density.d.ts
|
|
3
|
+
/** Rung of the control ladder to measure. */
|
|
4
|
+
type ControlSize = "sm" | "md" | "lg";
|
|
5
|
+
/**
|
|
6
|
+
* The density level that actually applies here: the nearest `<Density>` island,
|
|
7
|
+
* else the `<ThemeProvider>` level, else `"compact"`.
|
|
8
|
+
*
|
|
9
|
+
* This is a JS read for code that cannot use CSS (virtualised row heights,
|
|
10
|
+
* canvas drawing, layout math). Styling should use the density tokens or the
|
|
11
|
+
* per-rung variants (`density-ultra-compact:` … `density-ultra-large:`) instead.
|
|
12
|
+
*
|
|
13
|
+
* @returns The applicable density level.
|
|
14
|
+
* @example
|
|
15
|
+
* const density = useDensity();
|
|
16
|
+
* const rowHeight = useControlHeight("sm");
|
|
17
|
+
* // Shorter rows mean more of them on screen, so the reserve moves with the level.
|
|
18
|
+
* useVirtualizer({
|
|
19
|
+
* count: rows.length,
|
|
20
|
+
* estimateSize: () => rowHeight,
|
|
21
|
+
* overscan: density === "ultra-compact" ? 12 : 6,
|
|
22
|
+
* });
|
|
23
|
+
*/
|
|
24
|
+
declare function useDensity(): Density;
|
|
25
|
+
/**
|
|
26
|
+
* The pixel height of a control at the ambient density — what a virtualiser or a
|
|
27
|
+
* canvas renderer needs when it cannot ask CSS.
|
|
28
|
+
*
|
|
29
|
+
* Measured from a throwaway `document.body` probe stamped with the ambient
|
|
30
|
+
* density *and the ambient theme*, so app-wide token overrides, the `@media
|
|
31
|
+
* (pointer: coarse)` re-raise of `ultra-compact`, and a rung a theme adds are
|
|
32
|
+
* all honoured. Overrides scoped to a subtree the probe is not in are still
|
|
33
|
+
* not: the probe hangs off `document.body`, outside every provider root.
|
|
34
|
+
*
|
|
35
|
+
* Falls back to the authored ladder × 16px during SSR and before the first
|
|
36
|
+
* layout effect, which keeps hydration stable. A rung the ambient theme does
|
|
37
|
+
* not declare falls back to the default ladder with a development warning
|
|
38
|
+
* rather than throwing — the probe corrects it on the next tick either way.
|
|
39
|
+
*
|
|
40
|
+
* Safe outside a `<ThemeProvider>`: it reads the theme and the registry from
|
|
41
|
+
* context directly instead of through `useTheme()`, which throws.
|
|
42
|
+
*
|
|
43
|
+
* @param size - Which rung to measure. Defaults to `"md"`.
|
|
44
|
+
* @returns Height in CSS pixels.
|
|
45
|
+
* @example
|
|
46
|
+
* const rowHeight = useControlHeight("sm"); // → 20 at compact density
|
|
47
|
+
*/
|
|
48
|
+
declare function useControlHeight(size?: ControlSize): number;
|
|
49
|
+
//#endregion
|
|
50
|
+
export { ControlSize, useControlHeight, useDensity };
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useIsomorphicLayoutEffect } from "./use-isomorphic-layout-effect.js";
|
|
3
|
+
import { DEFAULT_DENSITY, DensityContext } from "./density.js";
|
|
4
|
+
import { warnOnce } from "./vocabulary.js";
|
|
5
|
+
import { ThemeRegistryContext } from "./theme-registry.js";
|
|
6
|
+
import { ThemeContext } from "./theme-provider.js";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
//#region src/system/use-density.ts
|
|
9
|
+
/**
|
|
10
|
+
* The **base** control ladder in rem, mirroring
|
|
11
|
+
* `packages/tokens/src/density/*.tokens.json`.
|
|
12
|
+
*
|
|
13
|
+
* Keyed by `BaseDensity` — the closed five — and not by the open `Density`,
|
|
14
|
+
* because those five are the only rungs this package can know at build time. A
|
|
15
|
+
* rung a theme adds exists nowhere in `ui`'s source; it arrives at runtime on a
|
|
16
|
+
* manifest, and {@link ladderFor} is what goes and gets it.
|
|
17
|
+
*
|
|
18
|
+
* Only a fallback either way: {@link useControlHeight} measures the live CSS
|
|
19
|
+
* first, so per-app token overrides and the `@media (pointer: coarse)` re-raise
|
|
20
|
+
* win.
|
|
21
|
+
*/
|
|
22
|
+
const CONTROL_REM = {
|
|
23
|
+
"ultra-compact": {
|
|
24
|
+
sm: 1.125,
|
|
25
|
+
md: 1.25,
|
|
26
|
+
lg: 1.5
|
|
27
|
+
},
|
|
28
|
+
"compact": {
|
|
29
|
+
sm: 1.25,
|
|
30
|
+
md: 1.5,
|
|
31
|
+
lg: 1.75
|
|
32
|
+
},
|
|
33
|
+
"normal": {
|
|
34
|
+
sm: 1.75,
|
|
35
|
+
md: 2,
|
|
36
|
+
lg: 2.25
|
|
37
|
+
},
|
|
38
|
+
"large": {
|
|
39
|
+
sm: 2.25,
|
|
40
|
+
md: 2.5,
|
|
41
|
+
lg: 2.75
|
|
42
|
+
},
|
|
43
|
+
"ultra-large": {
|
|
44
|
+
sm: 2.75,
|
|
45
|
+
md: 3,
|
|
46
|
+
lg: 3.25
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
/** Root font size assumed before the first measurement, so SSR and hydration agree. */
|
|
50
|
+
const ASSUMED_ROOT_FONT_SIZE = 16;
|
|
51
|
+
/** The three tokens the ladder is made of, in the order a warning should name them. */
|
|
52
|
+
const CONTROL_TOKENS = [
|
|
53
|
+
"control-sm",
|
|
54
|
+
"control-md",
|
|
55
|
+
"control-lg"
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* A `"1.25rem"` geometry value as a number of rem, or `null`.
|
|
59
|
+
*
|
|
60
|
+
* `null` rather than a throw, and rem rather than any length, because the three
|
|
61
|
+
* `control-*` tokens are rem *by convention*: `validateManifest` requires only a
|
|
62
|
+
* non-empty string, and the base geometry block itself ships `radius-control:
|
|
63
|
+
* "3px"`, so a manifest that passes validation can perfectly well carry a value
|
|
64
|
+
* this cannot use. See {@link ladderFor} for what happens then.
|
|
65
|
+
*
|
|
66
|
+
* Strictly positive, too. `"0rem"` and `"-1rem"` parse perfectly well and are
|
|
67
|
+
* not control heights: a virtualiser handed a row height of zero divides by it
|
|
68
|
+
* or renders every row in the list, and a negative one is not a height at all.
|
|
69
|
+
* Both are manifest defects, and a defect is better reported than propagated.
|
|
70
|
+
*/
|
|
71
|
+
function rem(value) {
|
|
72
|
+
if (value === void 0) return null;
|
|
73
|
+
const match = /^(-?\d*\.?\d+)rem$/.exec(value.trim());
|
|
74
|
+
if (match === null) return null;
|
|
75
|
+
const parsed = Number.parseFloat(match[1]);
|
|
76
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The rem ladder for a rung: the base table, else the registry, else a warning.
|
|
80
|
+
*
|
|
81
|
+
* The registry is the only place an added rung's geometry exists on the client.
|
|
82
|
+
* The stylesheet has it — `theme-tools` emitted a `[data-theme="foo"]
|
|
83
|
+
* [data-density="foo-dense"]` block for it — but CSS is not readable as data
|
|
84
|
+
* before layout, and this value is needed by a `useState` initializer, which is
|
|
85
|
+
* the one moment nothing has been laid out yet.
|
|
86
|
+
*
|
|
87
|
+
* Every failure degrades rather than throws, and the reason is that this runs
|
|
88
|
+
* during render from a `useState` initializer with no error boundary anywhere
|
|
89
|
+
* near it: a throw there unmounts the application, in production, over a
|
|
90
|
+
* pre-measurement seed. And the seed really is only a seed — the added rung's
|
|
91
|
+
* CSS exists whatever this returns, so the layout effect's probe measures the
|
|
92
|
+
* true height one tick later and the fallback is visible for one commit. A
|
|
93
|
+
* `control-*` rem rule in `validateManifest` is what would make this
|
|
94
|
+
* impossible, and that is a Plan 4 carry.
|
|
95
|
+
*/
|
|
96
|
+
function ladderFor(registry, density) {
|
|
97
|
+
const base = CONTROL_REM[density];
|
|
98
|
+
if (base !== void 0) return base;
|
|
99
|
+
const added = registry?.densities.find((d) => d.name === density)?.geometry;
|
|
100
|
+
if (added !== void 0) {
|
|
101
|
+
const ladder = {
|
|
102
|
+
sm: rem(added["control-sm"]),
|
|
103
|
+
md: rem(added["control-md"]),
|
|
104
|
+
lg: rem(added["control-lg"])
|
|
105
|
+
};
|
|
106
|
+
if (ladder.sm !== null && ladder.md !== null && ladder.lg !== null) return ladder;
|
|
107
|
+
const offender = CONTROL_TOKENS.find((token) => rem(added[token]) === null);
|
|
108
|
+
warnOnce(`density "${density}" declares ${offender} as ${JSON.stringify(added[offender])}, which is not a positive rem length; the ${DEFAULT_DENSITY} ladder seeds the measurement instead`);
|
|
109
|
+
return CONTROL_REM[DEFAULT_DENSITY];
|
|
110
|
+
}
|
|
111
|
+
warnOnce(`density "${density}" is not a base rung and no registered theme adds it; the ${DEFAULT_DENSITY} ladder is used until the probe measures it`);
|
|
112
|
+
return CONTROL_REM[DEFAULT_DENSITY];
|
|
113
|
+
}
|
|
114
|
+
function rootFontSize() {
|
|
115
|
+
if (typeof document === "undefined") return ASSUMED_ROOT_FONT_SIZE;
|
|
116
|
+
const size = Number.parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
117
|
+
return Number.isFinite(size) && size > 0 ? size : ASSUMED_ROOT_FONT_SIZE;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Measure `--cue-control-<size>` on a throwaway element stamped like the caller.
|
|
121
|
+
*
|
|
122
|
+
* `theme` as well as `density`, because a rung a theme adds is emitted under
|
|
123
|
+
* that theme's `[data-theme]`: a bare `data-density` div on `document.body`
|
|
124
|
+
* matches the **root** theme's rules, so under a nested provider of another
|
|
125
|
+
* theme it would measure a ladder the caller is not on. `null` stamps nothing,
|
|
126
|
+
* which is right for a caller with no provider above it at all.
|
|
127
|
+
*
|
|
128
|
+
* `data-cue-theme` rides beside `data-theme`, both from the same value: an
|
|
129
|
+
* inert attribute nothing here reads back, but the emitters' exact-match
|
|
130
|
+
* selector does — see `densityRules`/`themeSelector`'s comment on why a CSS
|
|
131
|
+
* ancestor guard alone cannot tell *nearest* theme from *any* theme in the
|
|
132
|
+
* chain, and how a runtime-published stamp closes that where the DOM shape
|
|
133
|
+
* lets it.
|
|
134
|
+
*
|
|
135
|
+
* `ladder` is passed in rather than looked up here so that both reads — this
|
|
136
|
+
* one and the state seed — go through {@link ladderFor} exactly once each, and
|
|
137
|
+
* so this stays a plain function that a test can reason about without a tree.
|
|
138
|
+
*
|
|
139
|
+
* What this element cannot see is the standing concession of the whole
|
|
140
|
+
* approach, and it is worth naming where it is caused rather than where it is
|
|
141
|
+
* felt: hanging off `document.body` puts the probe outside every provider
|
|
142
|
+
* root, so a rule scoped under `[data-cue-root]` does not reach it. That is the
|
|
143
|
+
* reason the provider's density override layer is emitted as one
|
|
144
|
+
* document-scoped `<style>` instead — a subtree-scoped rule would leave this
|
|
145
|
+
* measuring unoverridden geometry while the control beside it rendered the
|
|
146
|
+
* override, and the two would disagree by exactly the override.
|
|
147
|
+
*/
|
|
148
|
+
function measureControlHeight(ladder, density, theme, size) {
|
|
149
|
+
const fallback = ladder[size] * rootFontSize();
|
|
150
|
+
if (typeof document === "undefined" || document.body === null) return fallback;
|
|
151
|
+
const probe = document.createElement("div");
|
|
152
|
+
probe.setAttribute("data-density", density);
|
|
153
|
+
if (theme !== null) {
|
|
154
|
+
probe.setAttribute("data-theme", theme);
|
|
155
|
+
probe.setAttribute("data-cue-theme", theme);
|
|
156
|
+
}
|
|
157
|
+
probe.setAttribute("aria-hidden", "true");
|
|
158
|
+
probe.style.cssText = `position:absolute;top:-9999px;left:-9999px;width:0;visibility:hidden;pointer-events:none;height:var(--cue-control-${size})`;
|
|
159
|
+
document.body.appendChild(probe);
|
|
160
|
+
const measured = probe.getBoundingClientRect().height;
|
|
161
|
+
probe.remove();
|
|
162
|
+
return measured > 0 ? measured : fallback;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The density level that actually applies here: the nearest `<Density>` island,
|
|
166
|
+
* else the `<ThemeProvider>` level, else `"compact"`.
|
|
167
|
+
*
|
|
168
|
+
* This is a JS read for code that cannot use CSS (virtualised row heights,
|
|
169
|
+
* canvas drawing, layout math). Styling should use the density tokens or the
|
|
170
|
+
* per-rung variants (`density-ultra-compact:` … `density-ultra-large:`) instead.
|
|
171
|
+
*
|
|
172
|
+
* @returns The applicable density level.
|
|
173
|
+
* @example
|
|
174
|
+
* const density = useDensity();
|
|
175
|
+
* const rowHeight = useControlHeight("sm");
|
|
176
|
+
* // Shorter rows mean more of them on screen, so the reserve moves with the level.
|
|
177
|
+
* useVirtualizer({
|
|
178
|
+
* count: rows.length,
|
|
179
|
+
* estimateSize: () => rowHeight,
|
|
180
|
+
* overscan: density === "ultra-compact" ? 12 : 6,
|
|
181
|
+
* });
|
|
182
|
+
*/
|
|
183
|
+
function useDensity() {
|
|
184
|
+
return React.useContext(DensityContext) ?? "compact";
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* The pixel height of a control at the ambient density — what a virtualiser or a
|
|
188
|
+
* canvas renderer needs when it cannot ask CSS.
|
|
189
|
+
*
|
|
190
|
+
* Measured from a throwaway `document.body` probe stamped with the ambient
|
|
191
|
+
* density *and the ambient theme*, so app-wide token overrides, the `@media
|
|
192
|
+
* (pointer: coarse)` re-raise of `ultra-compact`, and a rung a theme adds are
|
|
193
|
+
* all honoured. Overrides scoped to a subtree the probe is not in are still
|
|
194
|
+
* not: the probe hangs off `document.body`, outside every provider root.
|
|
195
|
+
*
|
|
196
|
+
* Falls back to the authored ladder × 16px during SSR and before the first
|
|
197
|
+
* layout effect, which keeps hydration stable. A rung the ambient theme does
|
|
198
|
+
* not declare falls back to the default ladder with a development warning
|
|
199
|
+
* rather than throwing — the probe corrects it on the next tick either way.
|
|
200
|
+
*
|
|
201
|
+
* Safe outside a `<ThemeProvider>`: it reads the theme and the registry from
|
|
202
|
+
* context directly instead of through `useTheme()`, which throws.
|
|
203
|
+
*
|
|
204
|
+
* @param size - Which rung to measure. Defaults to `"md"`.
|
|
205
|
+
* @returns Height in CSS pixels.
|
|
206
|
+
* @example
|
|
207
|
+
* const rowHeight = useControlHeight("sm"); // → 20 at compact density
|
|
208
|
+
*/
|
|
209
|
+
function useControlHeight(size = "md") {
|
|
210
|
+
const density = useDensity();
|
|
211
|
+
const theme = React.useContext(ThemeContext)?.theme ?? null;
|
|
212
|
+
const ladder = ladderFor(React.useContext(ThemeRegistryContext), density);
|
|
213
|
+
const { sm, md, lg } = ladder;
|
|
214
|
+
const [height, setHeight] = React.useState(() => ladder[size] * ASSUMED_ROOT_FONT_SIZE);
|
|
215
|
+
useIsomorphicLayoutEffect(() => {
|
|
216
|
+
setHeight(measureControlHeight({
|
|
217
|
+
sm,
|
|
218
|
+
md,
|
|
219
|
+
lg
|
|
220
|
+
}, density, theme, size));
|
|
221
|
+
}, [
|
|
222
|
+
sm,
|
|
223
|
+
md,
|
|
224
|
+
lg,
|
|
225
|
+
density,
|
|
226
|
+
theme,
|
|
227
|
+
size
|
|
228
|
+
]);
|
|
229
|
+
return height;
|
|
230
|
+
}
|
|
231
|
+
//#endregion
|
|
232
|
+
export { useControlHeight, useDensity };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/system/use-isomorphic-layout-effect.ts
|
|
4
|
+
/**
|
|
5
|
+
* `useLayoutEffect` in the browser, `useEffect` on the server.
|
|
6
|
+
*
|
|
7
|
+
* The theme system stamps DOM attributes and creates portal containers in
|
|
8
|
+
* layout effects so they land *before* the browser paints — a density flash
|
|
9
|
+
* reflows the whole page, which is worse than a colour flash (spec §6). React
|
|
10
|
+
* warns when `useLayoutEffect` runs during SSR, so the server gets the
|
|
11
|
+
* (never-invoked) passive variant instead.
|
|
12
|
+
*/
|
|
13
|
+
const useIsomorphicLayoutEffect = typeof document === "undefined" ? React.useEffect : React.useLayoutEffect;
|
|
14
|
+
/**
|
|
15
|
+
* `useInsertionEffect` in the browser, `useEffect` on the server.
|
|
16
|
+
*
|
|
17
|
+
* One step earlier than the layout variant above, and the difference is the
|
|
18
|
+
* whole reason it exists. React runs **every** insertion effect in the tree
|
|
19
|
+
* during the mutation phase, before **any** layout effect runs; layout effects
|
|
20
|
+
* then run child-first, so a provider near the root is the last thing in the
|
|
21
|
+
* commit to get one. Anything a descendant's layout effect measures — Base UI
|
|
22
|
+
* calls `getComputedStyle` in several — is measured against whatever the
|
|
23
|
+
* document element is wearing at that moment.
|
|
24
|
+
*
|
|
25
|
+
* That matters exactly once: putting back what React 19 takes off `<html>` when
|
|
26
|
+
* it hydrates the document element. See the `<html>` stamp in
|
|
27
|
+
* `theme-provider.tsx`.
|
|
28
|
+
*
|
|
29
|
+
* Write only. An insertion effect must not read layout or schedule state.
|
|
30
|
+
*/
|
|
31
|
+
const useIsomorphicInsertionEffect = typeof document === "undefined" ? React.useEffect : React.useInsertionEffect;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { useIsomorphicInsertionEffect, useIsomorphicLayoutEffect };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ThemeContextValue } from "./theme-provider.js";
|
|
2
|
+
//#region src/system/use-theme.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Read and drive the ambient theme state.
|
|
5
|
+
*
|
|
6
|
+
* Returns `{ theme, manifest, density, mode, font, styleSet, resolvedMode,
|
|
7
|
+
* setTheme, setDensity, setMode, setFont, setStyleSet }`.
|
|
8
|
+
* `density` here is the *provider's* level — a nested `<Density>` island does not
|
|
9
|
+
* change it; use `useDensity()` when you want the level that actually applies
|
|
10
|
+
* where you are. `font` is the pairing the provider holds; it has no island, so
|
|
11
|
+
* it is always the one in force. `manifest` is the active theme's, or `null`
|
|
12
|
+
* when that name is not in the provider's `themes` — which is every name in an
|
|
13
|
+
* app that has registered none; `useThemes()` is what was registered.
|
|
14
|
+
*
|
|
15
|
+
* `styleSet` is the page-composition set in force, or `null` when nothing has
|
|
16
|
+
* chosen one — which is every application that has not asked for it. *In
|
|
17
|
+
* force*, not *named here*: a provider that names no set of its own reports the
|
|
18
|
+
* one stamped around it — a `<Density styleSet>` island between it and an outer
|
|
19
|
+
* provider included — exactly as the DOM resolves it, so this and the set a
|
|
20
|
+
* portal or a `<Preview>` stage carries are one value.
|
|
21
|
+
*
|
|
22
|
+
* @throws If called outside a `<ThemeProvider>`. Theme state is never guessed:
|
|
23
|
+
* a missing provider is a wiring bug, not a fallback situation.
|
|
24
|
+
* @example
|
|
25
|
+
* const { resolvedMode, setMode } = useTheme();
|
|
26
|
+
* <Switch checked={resolvedMode === "light"} onCheckedChange={(on) => setMode(on ? "light" : "dark")} />
|
|
27
|
+
*/
|
|
28
|
+
declare function useTheme(): ThemeContextValue;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { useTheme };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { ThemeContext } from "./theme-provider.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/system/use-theme.ts
|
|
5
|
+
/**
|
|
6
|
+
* Read and drive the ambient theme state.
|
|
7
|
+
*
|
|
8
|
+
* Returns `{ theme, manifest, density, mode, font, styleSet, resolvedMode,
|
|
9
|
+
* setTheme, setDensity, setMode, setFont, setStyleSet }`.
|
|
10
|
+
* `density` here is the *provider's* level — a nested `<Density>` island does not
|
|
11
|
+
* change it; use `useDensity()` when you want the level that actually applies
|
|
12
|
+
* where you are. `font` is the pairing the provider holds; it has no island, so
|
|
13
|
+
* it is always the one in force. `manifest` is the active theme's, or `null`
|
|
14
|
+
* when that name is not in the provider's `themes` — which is every name in an
|
|
15
|
+
* app that has registered none; `useThemes()` is what was registered.
|
|
16
|
+
*
|
|
17
|
+
* `styleSet` is the page-composition set in force, or `null` when nothing has
|
|
18
|
+
* chosen one — which is every application that has not asked for it. *In
|
|
19
|
+
* force*, not *named here*: a provider that names no set of its own reports the
|
|
20
|
+
* one stamped around it — a `<Density styleSet>` island between it and an outer
|
|
21
|
+
* provider included — exactly as the DOM resolves it, so this and the set a
|
|
22
|
+
* portal or a `<Preview>` stage carries are one value.
|
|
23
|
+
*
|
|
24
|
+
* @throws If called outside a `<ThemeProvider>`. Theme state is never guessed:
|
|
25
|
+
* a missing provider is a wiring bug, not a fallback situation.
|
|
26
|
+
* @example
|
|
27
|
+
* const { resolvedMode, setMode } = useTheme();
|
|
28
|
+
* <Switch checked={resolvedMode === "light"} onCheckedChange={(on) => setMode(on ? "light" : "dark")} />
|
|
29
|
+
*/
|
|
30
|
+
function useTheme() {
|
|
31
|
+
const context = React.useContext(ThemeContext);
|
|
32
|
+
if (context === null) throw new Error("useTheme() must be called inside a <ThemeProvider>.");
|
|
33
|
+
return context;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { useTheme };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { StyleSet } from "@cueplusplus/tokens";
|
|
2
|
+
import { Density as Density$1, DensityEntry, FontEntry, FontName, ThemeManifest } from "@cueplusplus/theme-base";
|
|
3
|
+
//#region src/system/vocabulary.d.ts
|
|
4
|
+
/** What the three registry hooks read: the manifests, and the axes the ACTIVE theme offers. */
|
|
5
|
+
interface ThemeRegistry {
|
|
6
|
+
/** Every registered manifest, in registration order. */
|
|
7
|
+
readonly themes: readonly ThemeManifest[];
|
|
8
|
+
/** First registered manifest's name, or `null` with nothing registered. */
|
|
9
|
+
readonly defaultTheme: string | null;
|
|
10
|
+
/** The rungs the ACTIVE theme offers: base five, then its adds. */
|
|
11
|
+
readonly densities: readonly DensityEntry[];
|
|
12
|
+
/** The pairings the ACTIVE theme offers, by the same rule. */
|
|
13
|
+
readonly fonts: readonly FontEntry[];
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ThemeRegistry };
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { DEFAULT_DENSITY, DEFAULT_FONT, STYLE_SETS } from "@cueplusplus/tokens";
|
|
2
|
+
import { DENSITIES, FONTS, THEME_NAME_PATTERN, resolveDensities, resolveFonts } from "@cueplusplus/theme-base";
|
|
3
|
+
//#region src/system/vocabulary.ts
|
|
4
|
+
/**
|
|
5
|
+
* The registry's pure half: what a set of manifests accepts, and what an app
|
|
6
|
+
* may offer under one of them.
|
|
7
|
+
*
|
|
8
|
+
* No `"use client"` and no React, on purpose. `prepaint.ts` is server-safe by
|
|
9
|
+
* contract — the docs app's root layout is a Server Component and calls
|
|
10
|
+
* `prepaintScript()` during render — and it reaches this module to inline the
|
|
11
|
+
* vocabulary into the blocking script. A module reached through a client
|
|
12
|
+
* boundary arrives in a server graph as a client *reference* rather than a
|
|
13
|
+
* function, and calling one throws at prerender. So the pure half lives here,
|
|
14
|
+
* directive-free, and `theme-registry.tsx` holds the context and the hooks and
|
|
15
|
+
* re-exports this file so the barrel still has one source.
|
|
16
|
+
* `test/system/server-safe.test.ts` holds this file, and every file
|
|
17
|
+
* `prepaint.ts` reaches, to that rule.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* What each axis accepts, and the one place that is decided.
|
|
21
|
+
*
|
|
22
|
+
* Six code paths validated a name before this existed — three against a frozen
|
|
23
|
+
* list from `@cueplusplus/tokens`, two against local copies, one against
|
|
24
|
+
* nothing at all — and they disagreed with each other at the edges. They all
|
|
25
|
+
* ask this now, so a stored preference means the same thing to the pre-paint
|
|
26
|
+
* script, the restore effect, and a portal.
|
|
27
|
+
*
|
|
28
|
+
* An empty registry is the deliberate case, not the degenerate one: an app that
|
|
29
|
+
* registers nothing has the base axes and no registry, and for one release that
|
|
30
|
+
* is every app that has not migrated — this repository's own docs site
|
|
31
|
+
* included. (It does not follow that such an app is unpainted: a stylesheet it
|
|
32
|
+
* imported may well declare the block the provider stamps. Colour is a question
|
|
33
|
+
* for CSS; this file only decides what a name is allowed to be.) Refusing every theme name there would reject a visitor's stored
|
|
34
|
+
* preference on first paint. So with nothing registered, theme validation is
|
|
35
|
+
* *off* (any name the selector grammar allows), and density and font validate
|
|
36
|
+
* against the base ladder and pairings alone. A registered set closes all
|
|
37
|
+
* three: only registered themes, and a theme's added rung or pairing only under
|
|
38
|
+
* that theme, which is what the cascade actually scopes it to.
|
|
39
|
+
*
|
|
40
|
+
* The order matters wherever a whole stored quadruple is read: resolve the
|
|
41
|
+
* theme first, then each axis under the theme resolution chose. See
|
|
42
|
+
* `acceptedPreferences()` in `theme-provider.tsx`, which is the one place that
|
|
43
|
+
* rule is applied, and the pre-paint script, which applies it the same way.
|
|
44
|
+
*/
|
|
45
|
+
function vocabulary(themes) {
|
|
46
|
+
const byName = /* @__PURE__ */ new Map();
|
|
47
|
+
for (const manifest of themes) if (!byName.has(manifest.name)) byName.set(manifest.name, manifest);
|
|
48
|
+
const names = themes.length === 0 ? null : [...byName.keys()];
|
|
49
|
+
const densitiesFor = (theme) => [...DENSITIES, ...Object.keys((theme === null ? void 0 : byName.get(theme))?.densities.adds ?? {})];
|
|
50
|
+
const fontsFor = (theme) => [...FONTS, ...Object.keys((theme === null ? void 0 : byName.get(theme))?.fontPairings.adds ?? {})];
|
|
51
|
+
const preferredDensity = (theme) => {
|
|
52
|
+
const wanted = (theme === null ? void 0 : byName.get(theme))?.densities.default;
|
|
53
|
+
return wanted !== void 0 && densitiesFor(theme).includes(wanted) ? wanted : DEFAULT_DENSITY;
|
|
54
|
+
};
|
|
55
|
+
const preferredFont = (theme) => {
|
|
56
|
+
const wanted = (theme === null ? void 0 : byName.get(theme))?.fontPairings.default;
|
|
57
|
+
return wanted !== void 0 && fontsFor(theme).includes(wanted) ? wanted : DEFAULT_FONT;
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
themes: names,
|
|
61
|
+
densitiesFor,
|
|
62
|
+
fontsFor,
|
|
63
|
+
preferredDensity,
|
|
64
|
+
preferredFont,
|
|
65
|
+
acceptsTheme: (name) => typeof name === "string" && (names === null ? THEME_NAME_PATTERN.test(name) : names.includes(name)),
|
|
66
|
+
acceptsDensity: (theme, name) => typeof name === "string" && densitiesFor(theme).includes(name),
|
|
67
|
+
acceptsFont: (theme, name) => typeof name === "string" && fontsFor(theme).includes(name),
|
|
68
|
+
supportsLight: (theme) => theme === null ? true : byName.get(theme)?.supportsLight ?? true
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Whether a value is one of the three style sets.
|
|
73
|
+
*
|
|
74
|
+
* A standalone function rather than a member of {@link Vocabulary}, and the
|
|
75
|
+
* asymmetry is the point: every other axis is asked *under a theme*, because a
|
|
76
|
+
* theme may add a rung or a pairing and a name accepted under the wrong theme
|
|
77
|
+
* stamps an attribute no block matches. No theme can add a style set — the axis
|
|
78
|
+
* is emitted by `@cueplusplus/tokens` and no manifest field describes it — so
|
|
79
|
+
* there is nothing per-theme to ask and a per-theme signature would be three
|
|
80
|
+
* parameters pretending to be a rule.
|
|
81
|
+
*/
|
|
82
|
+
function isStyleSet(value) {
|
|
83
|
+
return typeof value === "string" && STYLE_SETS.includes(value);
|
|
84
|
+
}
|
|
85
|
+
/** Derive the context value. Pure; the provider memoises it on `themes` and the active name. */
|
|
86
|
+
function buildRegistry(themes, active) {
|
|
87
|
+
return {
|
|
88
|
+
themes,
|
|
89
|
+
defaultTheme: themes[0]?.name ?? null,
|
|
90
|
+
densities: resolveDensities(themes, active),
|
|
91
|
+
fonts: resolveFonts(themes, active)
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const seen = /* @__PURE__ */ new Set();
|
|
95
|
+
/**
|
|
96
|
+
* A development warning, once per distinct message per process.
|
|
97
|
+
*
|
|
98
|
+
* Once, because the things this warns about — a `themes` prop nobody passed, a
|
|
99
|
+
* rung a theme does not offer — are configuration, and configuration is wrong
|
|
100
|
+
* the same way on every render. A warning per render is a warning nobody reads,
|
|
101
|
+
* and fourteen provider tests would otherwise be fourteen copies of one line.
|
|
102
|
+
*/
|
|
103
|
+
function warnOnce(message) {
|
|
104
|
+
if (process.env.NODE_ENV === "production" || seen.has(message)) return;
|
|
105
|
+
seen.add(message);
|
|
106
|
+
console.warn(`[cue] ${message}`);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* {@link warnOnce}, one tier quieter.
|
|
110
|
+
*
|
|
111
|
+
* `contrastReport()` keeps two lists on purpose — a *failure* is what makes a
|
|
112
|
+
* screen unreadable, an *advisory* is a focus ring nobody has been failed on
|
|
113
|
+
* yet — and folding the second into `console.warn` would either train a reader
|
|
114
|
+
* to ignore the first or push a repository to turn both off. They share the
|
|
115
|
+
* `seen` set so "once per distinct message" is one budget and `resetWarnings()`
|
|
116
|
+
* clears both; the two message texts cannot collide, since a failure and an
|
|
117
|
+
* advisory for one pair say different things about it.
|
|
118
|
+
*/
|
|
119
|
+
function noteOnce(message) {
|
|
120
|
+
if (process.env.NODE_ENV === "production" || seen.has(message)) return;
|
|
121
|
+
seen.add(message);
|
|
122
|
+
console.info(`[cue] ${message}`);
|
|
123
|
+
}
|
|
124
|
+
//#endregion
|
|
125
|
+
export { buildRegistry, isStyleSet, noteOnce, vocabulary, warnOnce };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { CONTRAST_REQUIREMENTS, ContrastCheck, ContrastInput, ContrastReport, ContrastRequirement, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport as contrastReport$1, relativeLuminance } from "@cueplusplus/theme-base/contrast";
|
|
2
|
+
export { CONTRAST_REQUIREMENTS, type ContrastCheck, type ContrastInput, type ContrastReport, type ContrastRequirement, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport$1 as contrastReport, relativeLuminance };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { CONTRAST_REQUIREMENTS, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport as contrastReport$1, relativeLuminance } from "@cueplusplus/theme-base/contrast";
|
|
2
|
+
export { CONTRAST_REQUIREMENTS, WCAG_AAA_TEXT, WCAG_AA_NON_TEXT, WCAG_AA_TEXT, contrastRatio, contrastReport$1 as contrastReport, relativeLuminance };
|