@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,120 @@
|
|
|
1
|
+
import { vocabulary } from "./vocabulary.js";
|
|
2
|
+
import { DEFAULT_DENSITY, DEFAULT_FONT, STYLE_SETS } from "@cueplusplus/tokens";
|
|
3
|
+
import { MODES } from "@cueplusplus/theme-base";
|
|
4
|
+
//#region src/system/prepaint.ts
|
|
5
|
+
/**
|
|
6
|
+
* Pre-paint stamping. Server-safe by design: no `"use client"`, no React, no
|
|
7
|
+
* DOM access at module scope — `app/layout.tsx` calls `prepaintScript()` on the
|
|
8
|
+
* server and inlines the result before hydration.
|
|
9
|
+
*
|
|
10
|
+
* That is also why the vocabulary comes from `./vocabulary` and never from
|
|
11
|
+
* `./theme-registry`: the registry's React half carries a `"use client"`
|
|
12
|
+
* directive, and a module reached through a client boundary arrives in a server
|
|
13
|
+
* graph as a client *reference* rather than a function — calling one throws at
|
|
14
|
+
* prerender, in the app's root layout, where nothing has rendered yet.
|
|
15
|
+
* `test/system/server-safe.test.ts` pins the exact set of files this one
|
|
16
|
+
* reaches, so the next import that would break the rule fails a test instead of
|
|
17
|
+
* a deployment.
|
|
18
|
+
*/
|
|
19
|
+
/** localStorage key the ThemeProvider and the pre-paint script share by default. */
|
|
20
|
+
const DEFAULT_STORAGE_KEY = "cue-ui";
|
|
21
|
+
/** `<` and `>` escaped, so no value can close the host `<script>` element. */
|
|
22
|
+
const scriptSafe = (json) => json.replace(/</g, "\\u003c").replace(/>/g, "\\u003e");
|
|
23
|
+
/**
|
|
24
|
+
* Embed a string in JavaScript source that will itself be embedded in HTML.
|
|
25
|
+
* `<` becomes `\u003c` so no value can close the host `<script>` element.
|
|
26
|
+
*/
|
|
27
|
+
function jsStringLiteral(value) {
|
|
28
|
+
return scriptSafe(JSON.stringify(value));
|
|
29
|
+
}
|
|
30
|
+
function prepaintScript(storageKeyOrOptions = DEFAULT_STORAGE_KEY, defaultTheme = "cue", defaultDensity = DEFAULT_DENSITY, defaultFont = DEFAULT_FONT) {
|
|
31
|
+
const options = typeof storageKeyOrOptions === "string" ? {
|
|
32
|
+
storageKey: storageKeyOrOptions,
|
|
33
|
+
defaults: {
|
|
34
|
+
theme: defaultTheme,
|
|
35
|
+
density: defaultDensity,
|
|
36
|
+
mode: "dark",
|
|
37
|
+
font: defaultFont
|
|
38
|
+
},
|
|
39
|
+
readStoredPreferences: true
|
|
40
|
+
} : storageKeyOrOptions;
|
|
41
|
+
if (options === null || typeof options !== "object" || options.defaults === void 0) throw new TypeError("prepaintScript options require a defaults object with theme and mode");
|
|
42
|
+
const defaults = options.defaults;
|
|
43
|
+
if (defaults.theme === void 0 || defaults.mode === void 0) throw new TypeError("prepaintScript options require defaults.theme and defaults.mode");
|
|
44
|
+
const vocab = vocabulary(options.themes ?? []);
|
|
45
|
+
if (!vocab.acceptsTheme(defaults.theme)) throw new TypeError(vocab.themes === null ? `prepaintScript defaults.theme ${JSON.stringify(defaults.theme)} is not a valid theme name` : `prepaintScript defaults.theme ${JSON.stringify(defaults.theme)} is not a registered theme`);
|
|
46
|
+
if (defaults.density !== void 0 && !vocab.acceptsDensity(defaults.theme, defaults.density)) throw new TypeError(`prepaintScript defaults.density ${JSON.stringify(defaults.density)} is not offered by theme ${JSON.stringify(defaults.theme)}`);
|
|
47
|
+
if (!MODES.includes(defaults.mode)) throw new TypeError(`prepaintScript defaults.mode ${JSON.stringify(defaults.mode)} is not one of ${MODES.join(", ")}`);
|
|
48
|
+
if (defaults.font !== void 0 && !vocab.acceptsFont(defaults.theme, defaults.font)) throw new TypeError(`prepaintScript defaults.font ${JSON.stringify(defaults.font)} is not offered by theme ${JSON.stringify(defaults.theme)}`);
|
|
49
|
+
if (options.readStoredPreferences !== void 0 && typeof options.readStoredPreferences !== "boolean") throw new TypeError("prepaintScript readStoredPreferences must be boolean");
|
|
50
|
+
const storageKey = options.storageKey ?? "cue-ui";
|
|
51
|
+
if (typeof storageKey !== "string") throw new TypeError("prepaintScript storageKey must be a string");
|
|
52
|
+
const readStoredPreferences = options.readStoredPreferences ?? true;
|
|
53
|
+
const key = jsStringLiteral(storageKey);
|
|
54
|
+
const fallbackTheme = jsStringLiteral(defaults.theme);
|
|
55
|
+
const fallbackDensity = jsStringLiteral(defaults.density ?? vocab.preferredDensity(defaults.theme));
|
|
56
|
+
const fallbackMode = jsStringLiteral(defaults.mode);
|
|
57
|
+
const fallbackFont = jsStringLiteral(defaults.font ?? vocab.preferredFont(defaults.theme));
|
|
58
|
+
const baseDensity = jsStringLiteral(DEFAULT_DENSITY);
|
|
59
|
+
const baseFont = jsStringLiteral(DEFAULT_FONT);
|
|
60
|
+
/**
|
|
61
|
+
* The registered names, or `null`.
|
|
62
|
+
*
|
|
63
|
+
* `null` tells the script "any well-formed name", which is the empty-registry
|
|
64
|
+
* rule (see `vocabulary`) and is what the positional overload — every app
|
|
65
|
+
* that has not migrated — gets. Anything else is the exact list the provider
|
|
66
|
+
* will validate against a moment later, inlined so the two cannot disagree.
|
|
67
|
+
*/
|
|
68
|
+
const themes = scriptSafe(JSON.stringify(vocab.themes));
|
|
69
|
+
/**
|
|
70
|
+
* The other two axes, `supportsLight`, and each theme's own preference, **per theme**.
|
|
71
|
+
*
|
|
72
|
+
* Per theme, because a rung a theme adds is scoped by the cascade to that
|
|
73
|
+
* theme's `data-theme`; accepting it under another theme stamps an attribute
|
|
74
|
+
* no block will match, and the page renders at the rung it fell back from
|
|
75
|
+
* while the picker says otherwise. The keys are short (`d`, `f`, `l`, `p`,
|
|
76
|
+
* `q`) because this is inlined into every document this app serves, once per
|
|
77
|
+
* response, and with ten themes registered the long names would cost more
|
|
78
|
+
* bytes than the whole rest of the script.
|
|
79
|
+
*
|
|
80
|
+
* `p` and `q` are §5's `densities.default` / `fontPairings.default` — the
|
|
81
|
+
* rung and the pairing that theme prefers when nobody named one — read
|
|
82
|
+
* through `vocabulary()`, which is the same function `acceptedPreferences()`
|
|
83
|
+
* asks on the client. Two implementations of one rule, one of them written
|
|
84
|
+
* out as a string of JavaScript, is exactly the asymmetry the round-trip
|
|
85
|
+
* tests exist to catch; inlining the *answers* rather than re-deriving them
|
|
86
|
+
* is what makes the two sides agree by construction.
|
|
87
|
+
*
|
|
88
|
+
* They are omitted when they equal the base default, which is what every one
|
|
89
|
+
* of the ten shipped presets does — none of them declares either. The final
|
|
90
|
+
* clause already ends at the base literal, so an entry that repeats it is
|
|
91
|
+
* bytes in every response that change no answer. `a.p&&…` below is what
|
|
92
|
+
* reads an absent key as "no opinion".
|
|
93
|
+
*
|
|
94
|
+
* With nothing registered there is one entry under the empty key: the base
|
|
95
|
+
* ladder, the base pairings, and a light block, which the blank base has.
|
|
96
|
+
*/
|
|
97
|
+
const axes = scriptSafe(JSON.stringify(Object.fromEntries((vocab.themes ?? [null]).map((name) => {
|
|
98
|
+
const preferredDensity = vocab.preferredDensity(name);
|
|
99
|
+
const preferredFont = vocab.preferredFont(name);
|
|
100
|
+
return [name ?? "", {
|
|
101
|
+
d: vocab.densitiesFor(name),
|
|
102
|
+
f: vocab.fontsFor(name),
|
|
103
|
+
l: vocab.supportsLight(name),
|
|
104
|
+
...preferredDensity === DEFAULT_DENSITY ? {} : { p: preferredDensity },
|
|
105
|
+
...preferredFont === DEFAULT_FONT ? {} : { q: preferredFont }
|
|
106
|
+
}];
|
|
107
|
+
}))));
|
|
108
|
+
const modes = scriptSafe(JSON.stringify([...MODES]));
|
|
109
|
+
/**
|
|
110
|
+
* The three sets, and the app's own, inlined for the same reason the rungs and
|
|
111
|
+
* pairings are: this script runs before any module does and cannot import a
|
|
112
|
+
* list. `null` is a legal fallback here and means "no set" — the one axis
|
|
113
|
+
* whose absence is a value.
|
|
114
|
+
*/
|
|
115
|
+
const styleSets = scriptSafe(JSON.stringify([...STYLE_SETS]));
|
|
116
|
+
const fallbackStyleSet = defaults.styleSet === void 0 ? "null" : jsStringLiteral(defaults.styleSet);
|
|
117
|
+
return `!function(){try{var k=${key},e=document.documentElement,s=null;` + (readStoredPreferences ? "try{var r=localStorage.getItem(k);s=r?JSON.parse(r):null}catch(_){}" : "") + `s=s&&typeof s=="object"?s:{};var T=${themes},A=${axes},P=/^[a-z][a-z0-9-]*$/i;var t=T?(T.indexOf(s.theme)>-1?s.theme:${fallbackTheme}):(typeof s.theme=="string"&&P.test(s.theme)?s.theme:${fallbackTheme});var a=A[T?t:""]||A[""]||{d:[],f:[]};var d=a.d.indexOf(s.density)>-1?s.density:(a.d.indexOf(${fallbackDensity})>-1?${fallbackDensity}:(a.p&&a.d.indexOf(a.p)>-1?a.p:${baseDensity}));var f=a.f.indexOf(s.font)>-1?s.font:(a.f.indexOf(${fallbackFont})>-1?${fallbackFont}:(a.q&&a.f.indexOf(a.q)>-1?a.q:${baseFont}));var m=${modes}.indexOf(s.mode)>-1?s.mode:${fallbackMode};var S=${styleSets},y=S.indexOf(s.style)>-1?s.style:${fallbackStyleSet};e.setAttribute("data-theme",t);e.setAttribute("data-density",d);e.setAttribute("data-font",f);e.setAttribute("data-mode",m);y?e.setAttribute("data-style",y):e.removeAttribute("data-style");e.style.colorScheme=a.l===false?"dark":(m==="system"?"light dark":m)}catch(_){}}()`;
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
export { DEFAULT_STORAGE_KEY, prepaintScript };
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { TokenOverrides } from "./overrides.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { StyleSet } from "@cueplusplus/tokens";
|
|
4
|
+
import { Density as Density$1, FontName, Mode, ThemeManifest, ThemeName } from "@cueplusplus/theme-base";
|
|
5
|
+
//#region src/system/theme-provider.d.ts
|
|
6
|
+
/** A mode that has been resolved to an actual palette — `"system"` never survives this far. */
|
|
7
|
+
type ResolvedMode = "dark" | "light";
|
|
8
|
+
/** What `useTheme()` returns. */
|
|
9
|
+
interface ThemeContextValue {
|
|
10
|
+
/** Active theme preset. */
|
|
11
|
+
theme: ThemeName;
|
|
12
|
+
/**
|
|
13
|
+
* The active theme's manifest, or `null` when the active name is not
|
|
14
|
+
* registered — which is every name in an app that passes no `themes`, and the
|
|
15
|
+
* one a `setTheme` for an unknown preset leaves behind.
|
|
16
|
+
*/
|
|
17
|
+
manifest: ThemeManifest | null;
|
|
18
|
+
/** Density the *provider* holds — a nested `<Density>` island does not change it. */
|
|
19
|
+
density: Density$1;
|
|
20
|
+
/** Mode as chosen, including the literal `"system"`. */
|
|
21
|
+
mode: Mode;
|
|
22
|
+
/** Active font pairing. */
|
|
23
|
+
font: FontName;
|
|
24
|
+
/**
|
|
25
|
+
* The style set in force, or `null` when nothing has chosen one — which is
|
|
26
|
+
* every application that has not asked for page composition. `null` rather
|
|
27
|
+
* than the default set's name, because the two are different facts: no
|
|
28
|
+
* attribute is stamped, and `console` is the set a subtree stamps to say it is
|
|
29
|
+
* the ordinary thing inside a page that is not.
|
|
30
|
+
*
|
|
31
|
+
* *In force*, not *named here*: a provider that names no set reports the one
|
|
32
|
+
* stamped around it, exactly as the DOM resolves it, so this and the
|
|
33
|
+
* `StyleSetContext` the portal and stage stamps read are one value.
|
|
34
|
+
*/
|
|
35
|
+
styleSet: StyleSet | null;
|
|
36
|
+
/** Mode after resolving `"system"` against `prefers-color-scheme`. */
|
|
37
|
+
resolvedMode: ResolvedMode;
|
|
38
|
+
/** Switch theme and persist the new preference triple. */
|
|
39
|
+
setTheme: (theme: ThemeName) => void;
|
|
40
|
+
/** Switch the provider-level density and persist the new preference triple. */
|
|
41
|
+
setDensity: (density: Density$1) => void;
|
|
42
|
+
/** Switch mode (`"system"` included) and persist the new preference triple. */
|
|
43
|
+
setMode: (mode: Mode) => void;
|
|
44
|
+
/** Switch the font pairing and persist the new preference. */
|
|
45
|
+
setFont: (font: FontName) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Switch the style set this provider names, and persist the preference.
|
|
48
|
+
*
|
|
49
|
+
* `null` means *this provider names none* — not *no set applies*. The
|
|
50
|
+
* provider stops stamping `data-style`, so a nested one under an outer
|
|
51
|
+
* `editorial` page goes back to inheriting `editorial`, and `styleSet`
|
|
52
|
+
* above reports it, because that is what the DOM resolves to. At the root,
|
|
53
|
+
* where nothing is stamped around it, `null` and "no set" coincide.
|
|
54
|
+
*
|
|
55
|
+
* To positively leave an inherited set rather than stop naming one, pass
|
|
56
|
+
* {@link DEFAULT_STYLE_SET}: it stamps an attribute whose block restates the
|
|
57
|
+
* `:root` defaults token for token, which is the only thing that can
|
|
58
|
+
* out-specify an ancestor's in a cascade.
|
|
59
|
+
*/
|
|
60
|
+
setStyleSet: (next: StyleSet | null) => void;
|
|
61
|
+
}
|
|
62
|
+
/** Provider-owned font-family overrides that detached portals must republish. */
|
|
63
|
+
interface FontFamilies {
|
|
64
|
+
/** Value for `--cue-font-sans`. */
|
|
65
|
+
sans?: string;
|
|
66
|
+
/** Value for `--cue-font-mono`. */
|
|
67
|
+
mono?: string;
|
|
68
|
+
}
|
|
69
|
+
interface ThemeProviderProps {
|
|
70
|
+
/**
|
|
71
|
+
* The registry: an ordered array of theme manifests, the first of which is
|
|
72
|
+
* the default theme.
|
|
73
|
+
*
|
|
74
|
+
* A prop rather than a side effect, so the server render and the client
|
|
75
|
+
* render are handed the same array and nothing depends on which module an app
|
|
76
|
+
* happened to import first. Each entry is a `manifest.json` from a
|
|
77
|
+
* `@cueplusplus/theme-<name>` package; this library never discovers a theme by
|
|
78
|
+
* itself, because which themes a product ships is an application decision.
|
|
79
|
+
*
|
|
80
|
+
* Optional for one release, defaulting to `[]` with a development warning. An
|
|
81
|
+
* app that registers nothing gets the base axes and no registry: any
|
|
82
|
+
* well-formed name is accepted as a theme (so a visitor's stored preference
|
|
83
|
+
* still restores on first paint), density and font validate against the base
|
|
84
|
+
* ladder and pairings, and `useTheme().manifest` is `null`. What it *paints*
|
|
85
|
+
* is a separate question with a separate answer — whichever `[data-theme]`
|
|
86
|
+
* blocks its stylesheets declare, which is the blank base only when none of
|
|
87
|
+
* them declares the stamped name.
|
|
88
|
+
*
|
|
89
|
+
* A nested provider that passes none inherits the ambient registry.
|
|
90
|
+
*
|
|
91
|
+
* One disclosure to be aware of: {@link prepaintScript} inlines the
|
|
92
|
+
* registered **names** — and each theme's `supportsLight` flag, and the names
|
|
93
|
+
* of any rung or pairing it adds — into the blocking script in every page's
|
|
94
|
+
* HTML, because first paint has to judge a stored preference before any
|
|
95
|
+
* module loads. No colours, no geometry, no package names, and only what an
|
|
96
|
+
* app passes here. But an app that registers
|
|
97
|
+
* a per-customer theme is publishing that customer's name to every visitor
|
|
98
|
+
* who views source, so register per-customer themes per response rather than
|
|
99
|
+
* globally.
|
|
100
|
+
*/
|
|
101
|
+
themes?: readonly ThemeManifest[];
|
|
102
|
+
/**
|
|
103
|
+
* Initial theme preset. Defaults to the first registered manifest's name, or
|
|
104
|
+
* `"cue"` with nothing registered. Changing it after mount adopts the new value.
|
|
105
|
+
*/
|
|
106
|
+
theme?: ThemeName;
|
|
107
|
+
/**
|
|
108
|
+
* Initial density level.
|
|
109
|
+
*
|
|
110
|
+
* Defaults to the rung the active theme's manifest names in
|
|
111
|
+
* `densities.default`, and to `"compact"` when it names none — spec §5's
|
|
112
|
+
* rule, and the same one `resolve()` applies when no rung is wanted, so a
|
|
113
|
+
* theme opens on the rung it prefers whether it is read from JS or painted
|
|
114
|
+
* by its own stylesheet. Naming a rung here overrides that for every theme:
|
|
115
|
+
* a consumer who named one named it deliberately.
|
|
116
|
+
*
|
|
117
|
+
* Changing it after mount adopts the new value; dropping it does not — a
|
|
118
|
+
* parent that stops naming a rung is not asking to move back to the theme's.
|
|
119
|
+
*/
|
|
120
|
+
density?: Density$1;
|
|
121
|
+
/** Initial mode. Defaults to `"dark"`; `"system"` tracks `prefers-color-scheme`. */
|
|
122
|
+
mode?: Mode;
|
|
123
|
+
/**
|
|
124
|
+
* Initial font pairing.
|
|
125
|
+
*
|
|
126
|
+
* Defaults to the pairing the active theme's manifest names in
|
|
127
|
+
* `fontPairings.default` — §5's rule, the density prop's rule one axis over
|
|
128
|
+
* — and to `"system"` when it names none: the platform's own faces, nothing
|
|
129
|
+
* downloaded, and the theme keeps whatever monospace it authored.
|
|
130
|
+
*
|
|
131
|
+
* A pairing that needs delivering is a set of *names*: this library ships no
|
|
132
|
+
* font files, and a pairing nobody delivers falls through its stack to the
|
|
133
|
+
* platform rather than failing. See `FONT_PAIRINGS[font].faces` for the
|
|
134
|
+
* custom properties an app assigns to make one resolve.
|
|
135
|
+
*
|
|
136
|
+
* **Root-level only.** There is no font island: a nested provider forwards
|
|
137
|
+
* this axis to the root, ignores this prop, and its `setFont` drives the root.
|
|
138
|
+
* A page that changed face halfway down is a page with a bug, and a specimen
|
|
139
|
+
* that genuinely wants one — a picker row, a docs page showing all eight —
|
|
140
|
+
* needs nothing from this library but `data-font` on a `<div>`.
|
|
141
|
+
*/
|
|
142
|
+
font?: FontName;
|
|
143
|
+
/**
|
|
144
|
+
* Page composition for this subtree: `console`, `editorial` or `marketing`.
|
|
145
|
+
*
|
|
146
|
+
* **`styleSet`, not `style`.** This interface already has a
|
|
147
|
+
* `style?: React.CSSProperties` a few lines below, applied to the provider
|
|
148
|
+
* root, and a second meaning for that name would be the one collision every
|
|
149
|
+
* consumer of this component would have to think about. The DOM attribute is
|
|
150
|
+
* `data-style`, matching the four public axes — `data-cue-*` is this tree's
|
|
151
|
+
* prefix for *internal* attributes (`data-cue-theme`, `data-cue-fidelity`), and
|
|
152
|
+
* a public axis wearing the internal prefix would be the more confusing of the
|
|
153
|
+
* two mistakes.
|
|
154
|
+
*
|
|
155
|
+
* Unset, **no attribute is stamped at all**, and that is the promise: an
|
|
156
|
+
* application that has never heard of this axis renders the markup it rendered
|
|
157
|
+
* before it existed and stores the preference object it stored before it
|
|
158
|
+
* existed. A style set is opt-in page composition, not a fourth thing every
|
|
159
|
+
* page has.
|
|
160
|
+
*
|
|
161
|
+
* Like the other three axes this is an *initial* value the provider then holds
|
|
162
|
+
* as state, so `setStyleSet` can drive it; a changed prop is adopted after
|
|
163
|
+
* mount. Unlike the font pairing it has an island form, so a nested provider
|
|
164
|
+
* holds its own rather than handing the axis up to the root.
|
|
165
|
+
*/
|
|
166
|
+
styleSet?: StyleSet;
|
|
167
|
+
/** Multiplier on every text token, published as `--cue-font-scale`. Defaults to `1`. */
|
|
168
|
+
fontScale?: number;
|
|
169
|
+
/** Optional app-owned font stacks, published as inline CUE font custom properties. */
|
|
170
|
+
fontFamilies?: FontFamilies;
|
|
171
|
+
/**
|
|
172
|
+
* Typed token edits layered over the active theme: colours per mode, geometry
|
|
173
|
+
* per rung, and the three font stacks.
|
|
174
|
+
*
|
|
175
|
+
* For the band of edits that sit below "publish a theme package": one accent
|
|
176
|
+
* for a tenant, a stack the app already loads, a rung with two more pixels in
|
|
177
|
+
* a touch build. Anything larger belongs in a `@cueplusplus/theme-<name>`
|
|
178
|
+
* package, where a build measures it; anything smaller than this is a
|
|
179
|
+
* `!important` in a stray stylesheet, which outranks the token layer
|
|
180
|
+
* everywhere at once.
|
|
181
|
+
*
|
|
182
|
+
* **Colours and fonts are inline on this element**, so they inherit down the
|
|
183
|
+
* subtree, beat every stylesheet without `!important`, and are re-stamped
|
|
184
|
+
* onto portal containers — which mount on `<body>` and inherit nothing from
|
|
185
|
+
* here. They do not leak *out* of this provider: a nested provider's colour
|
|
186
|
+
* edit is scoped to its own subtree, and to portals opened from inside it.
|
|
187
|
+
*
|
|
188
|
+
* **Densities are one document-scoped `<style>` element**, because a rung is
|
|
189
|
+
* selected by attribute rather than inherited, and because
|
|
190
|
+
* `useControlHeight()`'s measuring probe hangs off `document.body`, where
|
|
191
|
+
* a subtree-scoped rule would not reach it — leaving the measured height and
|
|
192
|
+
* the painted control disagreeing by exactly the override. The consequence is
|
|
193
|
+
* worth knowing before you nest one: a nested provider's `densities` edit
|
|
194
|
+
* reaches the whole page, exactly as a theme's own rung rules do. Colours and
|
|
195
|
+
* fonts in the same object do not.
|
|
196
|
+
*
|
|
197
|
+
* And it cuts the other way as well, which is the half that surprises: two
|
|
198
|
+
* providers editing the same rung produce two document-scoped rules of equal
|
|
199
|
+
* specificity, so the **later** one in document order wins everywhere — and
|
|
200
|
+
* the later one is the outer provider's, because a nested provider renders
|
|
201
|
+
* inside it. A nested `densities` edit does not merely leak out; an ancestor
|
|
202
|
+
* that edits the same rung overrules it *inside the nested subtree too*. If
|
|
203
|
+
* an island needs geometry of its own, it needs a rung of its own — a name no
|
|
204
|
+
* ancestor is editing — not the same rung with different numbers.
|
|
205
|
+
*
|
|
206
|
+
* Its rules are `[data-density="x"][data-density="x"]` — (0,2,0), tying a
|
|
207
|
+
* theme's own `[data-theme="t"] [data-density="x"]` and winning on source
|
|
208
|
+
* order — so the precedence is: **`overrides`, then the configurator's
|
|
209
|
+
* persisted snapshot, then the theme, then base.**
|
|
210
|
+
*
|
|
211
|
+
* **A font override shadows the pairing for this subtree.** `data-font` is
|
|
212
|
+
* the document's axis and this element deliberately never restates it (see
|
|
213
|
+
* the note by `stamp` below), but `overrides.fonts` writes the resolved
|
|
214
|
+
* `--cue-font-*` properties directly, which is a stronger claim than the
|
|
215
|
+
* attribute and is the point: this is how an app says "this product's face,
|
|
216
|
+
* whatever pairing the visitor picked".
|
|
217
|
+
*
|
|
218
|
+
* In development the resulting palette is measured, and any required contrast
|
|
219
|
+
* pair the edit broke — or made worse — is named on the console.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* <ThemeProvider themes={[cue]} overrides={{
|
|
223
|
+
* colors: { dark: { accent: "#ff8800" }, light: { accent: "#b35900" } },
|
|
224
|
+
* densities: { compact: { "control-md": "1.75rem" } },
|
|
225
|
+
* fonts: { sans: '"Tenant Sans", ui-sans-serif, sans-serif' },
|
|
226
|
+
* }}>
|
|
227
|
+
* <App />
|
|
228
|
+
* </ThemeProvider>
|
|
229
|
+
*/
|
|
230
|
+
overrides?: TokenOverrides;
|
|
231
|
+
/**
|
|
232
|
+
* localStorage key holding `{ theme, density, font, mode }`. Defaults to `"cue-ui"`.
|
|
233
|
+
* Only the outermost provider reads or writes it — a nested provider is an
|
|
234
|
+
* island whose explicit props are the point, not a second preference store.
|
|
235
|
+
*/
|
|
236
|
+
storageKey?: string;
|
|
237
|
+
/** Restore and write root preferences in localStorage. Defaults to `true`. */
|
|
238
|
+
persistPreferences?: boolean;
|
|
239
|
+
/** Stamp the single child element instead of rendering a wrapper `<div>`. */
|
|
240
|
+
asChild?: boolean;
|
|
241
|
+
/** Extra classes for the provider root. */
|
|
242
|
+
className?: string;
|
|
243
|
+
/** Inline styles for the provider root, merged after the token style. */
|
|
244
|
+
style?: React.CSSProperties;
|
|
245
|
+
/** The application subtree. */
|
|
246
|
+
children?: React.ReactNode;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Root of the theme system: stamps `data-theme`, `data-density` and `data-mode`
|
|
250
|
+
* so the token layer resolves, puts `data-font` on `<html>`, publishes
|
|
251
|
+
* `--cue-font-scale`, owns the persisted user preference, and publishes the
|
|
252
|
+
* registry the three axis hooks read.
|
|
253
|
+
*
|
|
254
|
+
* Rendering: `<div data-cue-root data-theme data-density data-mode style={{ colorScheme, --cue-font-scale }}>`
|
|
255
|
+
* (or the single child when `asChild`), plus `data-style` when — and only when —
|
|
256
|
+
* a style set is in force. The `theme`/`density`/`font`/`mode`/`styleSet` props are
|
|
257
|
+
* *initial* values — the provider holds the state so `setTheme` and friends can
|
|
258
|
+
* drive it — but a changed prop is adopted after mount, so a controlling parent
|
|
259
|
+
* still works.
|
|
260
|
+
*
|
|
261
|
+
* The font pairing is the one axis that never lands on this element: it has no
|
|
262
|
+
* island form, `<html>` is its only home, and restating it here would shadow the
|
|
263
|
+
* pre-paint stamp for the whole page on the first frame. See the `stamp` object
|
|
264
|
+
* below.
|
|
265
|
+
*
|
|
266
|
+
* Persistence and the pre-paint contract: setters write
|
|
267
|
+
* `{ theme, density, font, mode }` to `localStorage[storageKey]`, plus a `style`
|
|
268
|
+
* key holding the style set when there is one — omitted entirely when there is
|
|
269
|
+
* not, so an application that never touches that axis writes the same four-key
|
|
270
|
+
* object it always wrote. That is exactly what
|
|
271
|
+
* {@link prepaintScript} reads to stamp `<html>` before the first paint. The
|
|
272
|
+
* outermost provider keeps `<html>` in sync while the app runs (and restores the
|
|
273
|
+
* previous stamp on unmount) so the page ground, UA scrollbars and form controls
|
|
274
|
+
* follow the theme; nested providers never touch `<html>`, and never own the
|
|
275
|
+
* font pairing — `useTheme().font` and `setFont` inside one are the root's.
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* // `cue` and `terminal` are the `manifest.json` each theme package ships, read
|
|
279
|
+
* // from the `…/manifest.json` subpath of `@cueplusplus/theme-cue` and
|
|
280
|
+
* // `@cueplusplus/theme-terminal`. Written that way round on purpose: a literal
|
|
281
|
+
* // import statement in this comment reads, to every import-graph gate in this
|
|
282
|
+
* // repository, as `ui` depending on a theme package — which is the one thing
|
|
283
|
+
* // it may not do.
|
|
284
|
+
* <ThemeProvider themes={[cue, terminal]} theme="terminal" density="ultra-compact" font="plex" mode="system">
|
|
285
|
+
* <App />
|
|
286
|
+
* </ThemeProvider>
|
|
287
|
+
*/
|
|
288
|
+
declare function ThemeProvider({ themes: themesProp, theme: themeProp, density: densityProp, mode: modeProp, font: fontProp, styleSet: styleSetProp, fontScale, fontFamilies, overrides, storageKey, persistPreferences, asChild, className, style: styleProp, children }: ThemeProviderProps): React.JSX.Element;
|
|
289
|
+
//#endregion
|
|
290
|
+
export { FontFamilies, ResolvedMode, ThemeContextValue, ThemeProvider, ThemeProviderProps };
|