@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,110 @@
|
|
|
1
|
+
//#region src/elements/generative/spec.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The vocabulary, and the readers that make a model's JSON safe to render.
|
|
4
|
+
*
|
|
5
|
+
* Nothing here is a component. This module is the *contract*: the 27 names a
|
|
6
|
+
* model may emit, and a set of readers that turn an arbitrary value into
|
|
7
|
+
* something a renderer can hand to React without ever asking whether it is the
|
|
8
|
+
* shape it was promised. Every reader has the same two properties — it never
|
|
9
|
+
* throws, and it never widens: a number that arrives as `"3"` is a number, a
|
|
10
|
+
* number that arrives as `{}` is the fallback, and a size that arrives as
|
|
11
|
+
* `"enormous"` is the default rung rather than an attribute selector nothing
|
|
12
|
+
* declares.
|
|
13
|
+
*
|
|
14
|
+
* That is the whole defence, and it is deliberately not validation-then-render.
|
|
15
|
+
* A schema pass would have to walk the spec before the first pixel, which is a
|
|
16
|
+
* second recursion over an object whose depth an attacker picks; and it would
|
|
17
|
+
* answer with a boolean, when what a reader wants is a *value*. So the walk
|
|
18
|
+
* happens once, lazily, inside the render, and every property is read through
|
|
19
|
+
* one of these.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* The 27 intrinsics a model may emit, in the seven groups the vocabulary is
|
|
23
|
+
* published in.
|
|
24
|
+
*
|
|
25
|
+
* This list is the closed set. A `$type` outside it is not an error in the
|
|
26
|
+
* spec's author — a newer model, a newer catalogue, a typo in a tool
|
|
27
|
+
* description — so it renders the unknown-node notice rather than failing the
|
|
28
|
+
* message it arrived in.
|
|
29
|
+
*/
|
|
30
|
+
declare const GENERATIVE_TYPES: readonly ["Card", "Row", "Col", "Box", "Spacer", "Divider", "Carousel", "Header", "Text", "Caption", "Markdown", "Fact", "Table", "Chart", "Badge", "Image", "Icon", "Button", "Select", "Input", "DatePicker", "Checkbox", "RadioGroup", "Form", "ListView", "ListViewItem", "Alert"];
|
|
31
|
+
/** One of the 27 names {@link GENERATIVE_TYPES} lists. */
|
|
32
|
+
type GenerativeTypeName = (typeof GENERATIVE_TYPES)[number];
|
|
33
|
+
/** Whether `name` is one of the 27 intrinsics. */
|
|
34
|
+
declare function isGenerativeType(name: string): name is GenerativeTypeName;
|
|
35
|
+
/**
|
|
36
|
+
* One node of a model-composed spec.
|
|
37
|
+
*
|
|
38
|
+
* The two reserved keys carry the `$` upstream gave them so a node's own props
|
|
39
|
+
* can never collide with them: `$type` names the intrinsic, `$action` is the
|
|
40
|
+
* identifier a control hands back through {@link GenerativeAction}. Everything
|
|
41
|
+
* else is `unknown` on purpose — this interface describes what the model was
|
|
42
|
+
* *asked* for, and the readers below are what the renderer actually trusts.
|
|
43
|
+
*/
|
|
44
|
+
interface GenerativeNode {
|
|
45
|
+
/** The intrinsic to render: one of {@link GENERATIVE_TYPES}. */
|
|
46
|
+
$type: string;
|
|
47
|
+
/** Fired back to the host when a control in this node is used. */
|
|
48
|
+
$action?: string;
|
|
49
|
+
/** Nested nodes. One node or a list of them; anything else reads as none. */
|
|
50
|
+
children?: unknown;
|
|
51
|
+
/** Everything else the intrinsic documents, unvalidated as it arrives. */
|
|
52
|
+
[prop: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
/** What a control hands back when the person using it does something. */
|
|
55
|
+
interface GenerativeAction {
|
|
56
|
+
/** The `$action` string the model put on the node. */
|
|
57
|
+
action: string;
|
|
58
|
+
/** The intrinsic that fired it. */
|
|
59
|
+
type: GenerativeTypeName;
|
|
60
|
+
/** The control's own value, where it has one: a field's text, a box's state. */
|
|
61
|
+
value?: string | boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Every named control inside the submitted form, keyed by its `name`.
|
|
64
|
+
*
|
|
65
|
+
* Present only for a `Form` submit and for a `Card` with `asForm`, which is
|
|
66
|
+
* the one moment several controls answer at once.
|
|
67
|
+
*/
|
|
68
|
+
values?: Record<string, string>;
|
|
69
|
+
}
|
|
70
|
+
/** One `Table` column, once its own shape has been read. */
|
|
71
|
+
interface TableColumn {
|
|
72
|
+
/** The key a row object is looked up by, and the fallback heading. */
|
|
73
|
+
key: string;
|
|
74
|
+
/** The column heading. */
|
|
75
|
+
label: string;
|
|
76
|
+
/** Which way the cells sit in the column. */
|
|
77
|
+
align?: "start" | "center" | "end";
|
|
78
|
+
}
|
|
79
|
+
/** One chart series, once its own shape has been read. */
|
|
80
|
+
interface ChartSeries {
|
|
81
|
+
/** The name in the legend. */
|
|
82
|
+
label: string;
|
|
83
|
+
/** The points, in order. */
|
|
84
|
+
data: number[];
|
|
85
|
+
}
|
|
86
|
+
/** Why a node could not be rendered as the model asked. */
|
|
87
|
+
type GenerativeFaultKind =
|
|
88
|
+
/** The value in the tree is not an object with a `$type`. */
|
|
89
|
+
"not-a-node" |
|
|
90
|
+
/** `$type` is a name this vocabulary does not publish. */
|
|
91
|
+
"unknown-type" |
|
|
92
|
+
/** A prop the intrinsic requires is absent or unreadable. */
|
|
93
|
+
"missing-prop" |
|
|
94
|
+
/** The tree is nested deeper than the renderer will walk. */
|
|
95
|
+
"too-deep";
|
|
96
|
+
/** One thing the renderer refused to guess at, with where it happened. */
|
|
97
|
+
interface GenerativeFault {
|
|
98
|
+
/** Which of the four refusals this is. */
|
|
99
|
+
kind: GenerativeFaultKind;
|
|
100
|
+
/** The node's position, as a dotted path from the root: `root.children.2`. */
|
|
101
|
+
path: string;
|
|
102
|
+
/** The `$type` that was read, where there was one. */
|
|
103
|
+
type?: string;
|
|
104
|
+
/** The prop that was missing, for `missing-prop`. */
|
|
105
|
+
prop?: string;
|
|
106
|
+
/** One line a person can act on. */
|
|
107
|
+
message: string;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
export { ChartSeries, GENERATIVE_TYPES, GenerativeAction, GenerativeFault, GenerativeFaultKind, GenerativeNode, GenerativeTypeName, TableColumn, isGenerativeType };
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
//#region src/elements/generative/spec.ts
|
|
2
|
+
/**
|
|
3
|
+
* The vocabulary, and the readers that make a model's JSON safe to render.
|
|
4
|
+
*
|
|
5
|
+
* Nothing here is a component. This module is the *contract*: the 27 names a
|
|
6
|
+
* model may emit, and a set of readers that turn an arbitrary value into
|
|
7
|
+
* something a renderer can hand to React without ever asking whether it is the
|
|
8
|
+
* shape it was promised. Every reader has the same two properties — it never
|
|
9
|
+
* throws, and it never widens: a number that arrives as `"3"` is a number, a
|
|
10
|
+
* number that arrives as `{}` is the fallback, and a size that arrives as
|
|
11
|
+
* `"enormous"` is the default rung rather than an attribute selector nothing
|
|
12
|
+
* declares.
|
|
13
|
+
*
|
|
14
|
+
* That is the whole defence, and it is deliberately not validation-then-render.
|
|
15
|
+
* A schema pass would have to walk the spec before the first pixel, which is a
|
|
16
|
+
* second recursion over an object whose depth an attacker picks; and it would
|
|
17
|
+
* answer with a boolean, when what a reader wants is a *value*. So the walk
|
|
18
|
+
* happens once, lazily, inside the render, and every property is read through
|
|
19
|
+
* one of these.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* The 27 intrinsics a model may emit, in the seven groups the vocabulary is
|
|
23
|
+
* published in.
|
|
24
|
+
*
|
|
25
|
+
* This list is the closed set. A `$type` outside it is not an error in the
|
|
26
|
+
* spec's author — a newer model, a newer catalogue, a typo in a tool
|
|
27
|
+
* description — so it renders the unknown-node notice rather than failing the
|
|
28
|
+
* message it arrived in.
|
|
29
|
+
*/
|
|
30
|
+
const GENERATIVE_TYPES = [
|
|
31
|
+
"Card",
|
|
32
|
+
"Row",
|
|
33
|
+
"Col",
|
|
34
|
+
"Box",
|
|
35
|
+
"Spacer",
|
|
36
|
+
"Divider",
|
|
37
|
+
"Carousel",
|
|
38
|
+
"Header",
|
|
39
|
+
"Text",
|
|
40
|
+
"Caption",
|
|
41
|
+
"Markdown",
|
|
42
|
+
"Fact",
|
|
43
|
+
"Table",
|
|
44
|
+
"Chart",
|
|
45
|
+
"Badge",
|
|
46
|
+
"Image",
|
|
47
|
+
"Icon",
|
|
48
|
+
"Button",
|
|
49
|
+
"Select",
|
|
50
|
+
"Input",
|
|
51
|
+
"DatePicker",
|
|
52
|
+
"Checkbox",
|
|
53
|
+
"RadioGroup",
|
|
54
|
+
"Form",
|
|
55
|
+
"ListView",
|
|
56
|
+
"ListViewItem",
|
|
57
|
+
"Alert"
|
|
58
|
+
];
|
|
59
|
+
const KNOWN = new Set(GENERATIVE_TYPES);
|
|
60
|
+
/** Whether `name` is one of the 27 intrinsics. */
|
|
61
|
+
function isGenerativeType(name) {
|
|
62
|
+
return KNOWN.has(name);
|
|
63
|
+
}
|
|
64
|
+
/** Whether `value` is an object with a string `$type` — the shape of a node. */
|
|
65
|
+
function isNode(value) {
|
|
66
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && typeof value.$type === "string";
|
|
67
|
+
}
|
|
68
|
+
/** A node's `$action`, when it has a non-empty one. */
|
|
69
|
+
function actionOf(node) {
|
|
70
|
+
const action = node["$action"];
|
|
71
|
+
return typeof action === "string" && action !== "" ? action : void 0;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A string prop, or `undefined`.
|
|
75
|
+
*
|
|
76
|
+
* Numbers and booleans are accepted and stringified: a model that writes
|
|
77
|
+
* `"value": 42` for a `Fact` meant the characters, and refusing them would
|
|
78
|
+
* blank a cell over a JSON type nobody chose deliberately. Everything else —
|
|
79
|
+
* an object, an array, a null — is absent, because there is no reading of it
|
|
80
|
+
* that is not a guess.
|
|
81
|
+
*/
|
|
82
|
+
function str(node, prop) {
|
|
83
|
+
const value = node[prop];
|
|
84
|
+
if (typeof value === "string") return value;
|
|
85
|
+
if (typeof value === "number" && Number.isFinite(value)) return String(value);
|
|
86
|
+
if (typeof value === "boolean") return String(value);
|
|
87
|
+
}
|
|
88
|
+
/** A string prop with a default for the absent case. */
|
|
89
|
+
function strOr(node, prop, fallback) {
|
|
90
|
+
return str(node, prop) ?? fallback;
|
|
91
|
+
}
|
|
92
|
+
/** A boolean prop. Absent, wrong-typed and `false` all read the same. */
|
|
93
|
+
function flag(node, prop) {
|
|
94
|
+
return node[prop] === true;
|
|
95
|
+
}
|
|
96
|
+
/** A finite number prop, or `undefined`. A numeric string counts. */
|
|
97
|
+
function num(node, prop) {
|
|
98
|
+
const value = node[prop];
|
|
99
|
+
if (typeof value === "number") return Number.isFinite(value) ? value : void 0;
|
|
100
|
+
if (typeof value === "string" && value.trim() !== "") {
|
|
101
|
+
const parsed = Number(value);
|
|
102
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* A rung on the 0–8 scale `gap` and `padding` are expressed in, as a string.
|
|
107
|
+
*
|
|
108
|
+
* A string because it is going straight into a `data-aui-gap` attribute, which
|
|
109
|
+
* is what the stylesheet selects on. Out-of-range and fractional values are
|
|
110
|
+
* clamped and rounded rather than dropped: a model that asks for 12 wants the
|
|
111
|
+
* widest gap there is, and a stylesheet that declares eight rungs should give
|
|
112
|
+
* it the eighth rather than nothing.
|
|
113
|
+
*/
|
|
114
|
+
function scale(node, prop) {
|
|
115
|
+
const value = num(node, prop);
|
|
116
|
+
if (value === void 0) return void 0;
|
|
117
|
+
return String(Math.max(0, Math.min(8, Math.round(value))));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* An enumerated prop, or `undefined` when it is absent or not on the list.
|
|
121
|
+
*
|
|
122
|
+
* The unlisted case is deliberately `undefined` rather than the default: an
|
|
123
|
+
* attribute that is never written cannot select a rule, so an unknown variant
|
|
124
|
+
* falls back to whatever the element paints with no modifier at all, which is
|
|
125
|
+
* the one value the stylesheet is guaranteed to have.
|
|
126
|
+
*/
|
|
127
|
+
function choice(node, prop, allowed) {
|
|
128
|
+
const value = node[prop];
|
|
129
|
+
return typeof value === "string" && allowed.includes(value) ? value : void 0;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A node's children, as a list.
|
|
133
|
+
*
|
|
134
|
+
* One node, a list of nodes, or nothing. A single node is wrapped rather than
|
|
135
|
+
* refused because models write both, and the difference is a JSON habit rather
|
|
136
|
+
* than a meaning. Non-node entries survive the trip so the renderer can show
|
|
137
|
+
* *which* child was malformed instead of silently shortening the list.
|
|
138
|
+
*/
|
|
139
|
+
function childList(node) {
|
|
140
|
+
const children = node["children"];
|
|
141
|
+
if (Array.isArray(children)) return children;
|
|
142
|
+
if (children === void 0 || children === null) return [];
|
|
143
|
+
return [children];
|
|
144
|
+
}
|
|
145
|
+
/** A prop that should be a list, as one. A non-list reads as empty. */
|
|
146
|
+
function list(node, prop) {
|
|
147
|
+
const value = node[prop];
|
|
148
|
+
return Array.isArray(value) ? value : [];
|
|
149
|
+
}
|
|
150
|
+
/** A list of finite numbers, with everything unreadable dropped. */
|
|
151
|
+
function numberList(value) {
|
|
152
|
+
if (!Array.isArray(value)) return [];
|
|
153
|
+
return value.map((entry) => typeof entry === "number" ? entry : Number(entry)).filter((entry) => Number.isFinite(entry));
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* A list of `{ label, value }` options, as `Select` and `RadioGroup` take it.
|
|
157
|
+
*
|
|
158
|
+
* Both the plain-string form (`["Small", "Large"]`) and the object form
|
|
159
|
+
* (`[{ label: "Small", value: "s" }]`) are accepted, because both are what
|
|
160
|
+
* models write. A label is required; a missing value falls back to the label,
|
|
161
|
+
* which is what makes the string form work at all.
|
|
162
|
+
*/
|
|
163
|
+
function optionList(value) {
|
|
164
|
+
if (!Array.isArray(value)) return [];
|
|
165
|
+
const options = [];
|
|
166
|
+
for (const entry of value) {
|
|
167
|
+
if (typeof entry === "string") {
|
|
168
|
+
options.push({
|
|
169
|
+
label: entry,
|
|
170
|
+
value: entry
|
|
171
|
+
});
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
175
|
+
const record = entry;
|
|
176
|
+
const label = typeof record["label"] === "string" ? record["label"] : typeof record["value"] === "string" ? record["value"] : void 0;
|
|
177
|
+
if (label === void 0) continue;
|
|
178
|
+
const raw = record["value"];
|
|
179
|
+
options.push({
|
|
180
|
+
label,
|
|
181
|
+
value: typeof raw === "string" || typeof raw === "number" ? String(raw) : label
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return options;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A `Table`'s columns.
|
|
188
|
+
*
|
|
189
|
+
* A string entry is both key and heading; an object entry may name them apart.
|
|
190
|
+
* A column with neither is skipped, because a table with a nameless column has
|
|
191
|
+
* a cell nobody can read.
|
|
192
|
+
*/
|
|
193
|
+
function columnList(value) {
|
|
194
|
+
if (!Array.isArray(value)) return [];
|
|
195
|
+
const columns = [];
|
|
196
|
+
for (const entry of value) {
|
|
197
|
+
if (typeof entry === "string") {
|
|
198
|
+
columns.push({
|
|
199
|
+
key: entry,
|
|
200
|
+
label: entry
|
|
201
|
+
});
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
205
|
+
const record = entry;
|
|
206
|
+
const key = typeof record["key"] === "string" ? record["key"] : void 0;
|
|
207
|
+
const label = typeof record["label"] === "string" ? record["label"] : void 0;
|
|
208
|
+
if (key === void 0 && label === void 0) continue;
|
|
209
|
+
const align = record["align"];
|
|
210
|
+
columns.push({
|
|
211
|
+
key: key ?? label,
|
|
212
|
+
label: label ?? key,
|
|
213
|
+
...align === "start" || align === "center" || align === "end" ? { align } : {}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
return columns;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* One table row, read against the columns.
|
|
220
|
+
*
|
|
221
|
+
* A row may be a list of cells positional to the columns, or an object keyed by
|
|
222
|
+
* column key. Both are flattened to one string per column here so the renderer
|
|
223
|
+
* never has to ask which form arrived, and a cell that is missing in either
|
|
224
|
+
* form is an empty string rather than a hole in the row.
|
|
225
|
+
*/
|
|
226
|
+
function rowCells(row, columns) {
|
|
227
|
+
if (Array.isArray(row)) return columns.map((_, at) => cellText(row[at]));
|
|
228
|
+
if (typeof row === "object" && row !== null) {
|
|
229
|
+
const record = row;
|
|
230
|
+
return columns.map((column) => cellText(record[column.key]));
|
|
231
|
+
}
|
|
232
|
+
return columns.map((_, at) => at === 0 ? cellText(row) : "");
|
|
233
|
+
}
|
|
234
|
+
/** One cell, as characters. Objects and arrays are not text and read as blank. */
|
|
235
|
+
function cellText(value) {
|
|
236
|
+
if (typeof value === "string") return value;
|
|
237
|
+
if (typeof value === "number" && Number.isFinite(value)) return String(value);
|
|
238
|
+
if (typeof value === "boolean") return String(value);
|
|
239
|
+
return "";
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* A chart's series.
|
|
243
|
+
*
|
|
244
|
+
* `series` takes precedence over `data`, which is upstream's rule: a spec that
|
|
245
|
+
* carries both meant the multi-series one. A bare `data` array becomes one
|
|
246
|
+
* unnamed series so the same geometry draws both.
|
|
247
|
+
*/
|
|
248
|
+
function seriesList(node) {
|
|
249
|
+
const multi = node["series"];
|
|
250
|
+
if (Array.isArray(multi)) {
|
|
251
|
+
const series = [];
|
|
252
|
+
for (const entry of multi) {
|
|
253
|
+
if (Array.isArray(entry)) {
|
|
254
|
+
series.push({
|
|
255
|
+
label: "",
|
|
256
|
+
data: numberList(entry)
|
|
257
|
+
});
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
if (typeof entry !== "object" || entry === null) continue;
|
|
261
|
+
const record = entry;
|
|
262
|
+
const data = numberList(record["data"]);
|
|
263
|
+
if (data.length === 0) continue;
|
|
264
|
+
series.push({
|
|
265
|
+
label: typeof record["label"] === "string" ? record["label"] : "",
|
|
266
|
+
data
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
if (series.length > 0) return series;
|
|
270
|
+
}
|
|
271
|
+
const single = numberList(node["data"]);
|
|
272
|
+
return single.length > 0 ? [{
|
|
273
|
+
label: strOr(node, "label", ""),
|
|
274
|
+
data: single
|
|
275
|
+
}] : [];
|
|
276
|
+
}
|
|
277
|
+
/** A list of strings, with everything unreadable dropped. */
|
|
278
|
+
function stringList(value) {
|
|
279
|
+
if (!Array.isArray(value)) return [];
|
|
280
|
+
return value.filter((entry) => typeof entry === "string");
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* The protocols an image source may carry.
|
|
284
|
+
*
|
|
285
|
+
* Three, and the same three `MarkdownText` allows, for the same reasons.
|
|
286
|
+
* `javascript:` and `vbscript:` hand a string to a script engine; `data:` is
|
|
287
|
+
* the modern one — a `data:image/svg+xml` document is a script host in enough
|
|
288
|
+
* browsers' history that allow-listing image media types is not worth the
|
|
289
|
+
* argument; `blob:` and `file:` reach the host's own storage. A scheme-less
|
|
290
|
+
* `//host/path` is refused too: it inherits the page's protocol and is the one
|
|
291
|
+
* form that looks relative and is not.
|
|
292
|
+
*/
|
|
293
|
+
const ALLOWED_PROTOCOLS = ["http", "https"];
|
|
294
|
+
/**
|
|
295
|
+
* An image source, or `undefined` when the model asked for one this surface
|
|
296
|
+
* will not fetch.
|
|
297
|
+
*
|
|
298
|
+
* `undefined` rather than an empty string, because React omits an absent
|
|
299
|
+
* attribute entirely: a refused source leaves an `<img>` with no `src` and its
|
|
300
|
+
* `alt` showing, which is a legible answer, where `src=""` re-requests the
|
|
301
|
+
* current document in several browsers.
|
|
302
|
+
*/
|
|
303
|
+
function safeSrc(value) {
|
|
304
|
+
if (value === void 0) return void 0;
|
|
305
|
+
const url = value.trim();
|
|
306
|
+
if (url === "" || url.startsWith("//")) return void 0;
|
|
307
|
+
const colon = url.indexOf(":");
|
|
308
|
+
const slash = url.indexOf("/");
|
|
309
|
+
const question = url.indexOf("?");
|
|
310
|
+
const hash = url.indexOf("#");
|
|
311
|
+
if (colon === -1 || slash !== -1 && colon > slash || question !== -1 && colon > question || hash !== -1 && colon > hash) return url;
|
|
312
|
+
return ALLOWED_PROTOCOLS.includes(url.slice(0, colon).toLowerCase()) ? url : void 0;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Colour syntax this surface will put in a `style` attribute.
|
|
316
|
+
*
|
|
317
|
+
* `Box` and `Card` take a `background` the model writes freely, and that value
|
|
318
|
+
* lands in an inline style. React escapes the string, so there is no way out of
|
|
319
|
+
* the declaration — but there is a way out of the *property*: `url(…)` inside a
|
|
320
|
+
* background is a network request to an address the model chose, which turns a
|
|
321
|
+
* rendered widget into a beacon. So this is an allow-list of shapes rather than
|
|
322
|
+
* a deny-list of characters: a hex triple, one of the numeric colour functions
|
|
323
|
+
* with nothing but numbers and separators inside it, or a bare CSS colour
|
|
324
|
+
* keyword.
|
|
325
|
+
*/
|
|
326
|
+
const COLOR = /^(?:#[0-9a-f]{3,8}|[a-z]{3,20}|(?:rgba?|hsla?|oklch|oklab|lab|lch)\([\d\s.,%/-]+\))$/i;
|
|
327
|
+
/** A colour prop, or `undefined` when it is not a shape this will paint. */
|
|
328
|
+
function safeColor(node, prop) {
|
|
329
|
+
const value = str(node, prop)?.trim();
|
|
330
|
+
return value !== void 0 && COLOR.test(value) ? value : void 0;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* A CSS length this surface will put in a `style` attribute.
|
|
334
|
+
*
|
|
335
|
+
* A number is pixels, which is what a model writing `"width": 240` means. A
|
|
336
|
+
* string has to be a plain number-and-unit: enough for `50%`, `12rem` and
|
|
337
|
+
* `320px`, and not enough for `calc(…)`, `var(…)` or anything else that can
|
|
338
|
+
* reach outside its own declaration. `auto` and `full` are the two keywords the
|
|
339
|
+
* vocabulary documents.
|
|
340
|
+
*/
|
|
341
|
+
const LENGTH = /^(?:\d+(?:\.\d+)?(?:px|rem|em|%|ch|vw|vh)?)$/;
|
|
342
|
+
/** A length prop as a CSS value, or `undefined`. */
|
|
343
|
+
function safeLength(node, prop) {
|
|
344
|
+
const raw = node[prop];
|
|
345
|
+
if (typeof raw === "number") return Number.isFinite(raw) ? `${raw}px` : void 0;
|
|
346
|
+
if (typeof raw !== "string") return void 0;
|
|
347
|
+
const value = raw.trim();
|
|
348
|
+
if (value === "auto") return "auto";
|
|
349
|
+
if (value === "full") return "100%";
|
|
350
|
+
if (!LENGTH.test(value)) return void 0;
|
|
351
|
+
return /^\d+(?:\.\d+)?$/.test(value) ? `${value}px` : value;
|
|
352
|
+
}
|
|
353
|
+
/** A short, quoted description of what actually arrived. */
|
|
354
|
+
function describe(value) {
|
|
355
|
+
if (value === null) return "null";
|
|
356
|
+
if (Array.isArray(value)) return "an array";
|
|
357
|
+
const kind = typeof value;
|
|
358
|
+
if (kind === "object") {
|
|
359
|
+
const type = value.$type;
|
|
360
|
+
return type === void 0 ? "an object with no $type" : `an object whose $type is a ${typeof type}`;
|
|
361
|
+
}
|
|
362
|
+
if (kind === "undefined") return "nothing";
|
|
363
|
+
return `a ${kind}`;
|
|
364
|
+
}
|
|
365
|
+
//#endregion
|
|
366
|
+
export { GENERATIVE_TYPES, actionOf, childList, choice, columnList, describe, flag, isGenerativeType, isNode, list, num, numberList, optionList, rowCells, safeColor, safeLength, safeSrc, scale, seriesList, str, strOr, stringList };
|