@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,39 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { NumberField } from "@base-ui/react/number-field";
|
|
3
|
+
//#region src/forms/number-field.d.ts
|
|
4
|
+
interface NumberFieldProps extends Omit<NumberField.Root.Props, "className"> {
|
|
5
|
+
/** Extra classes, merged over the group chassis. */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
8
|
+
size?: "sm" | "md";
|
|
9
|
+
/** Accessible name for the decrement button. Defaults to `"Decrease"`. */
|
|
10
|
+
decrementLabel?: string;
|
|
11
|
+
/** Accessible name for the increment button. Defaults to `"Increase"`. */
|
|
12
|
+
incrementLabel?: string;
|
|
13
|
+
/** Placeholder shown while the field is empty. */
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
/** Accessible name for the text control, when no {@link FieldLabel} names it. */
|
|
16
|
+
"aria-label"?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A numeric control with explicit − / + affordances and no native spinners.
|
|
20
|
+
*
|
|
21
|
+
* Native `<input type="number">` spinners are unusable at console density — a
|
|
22
|
+
* pair of 4px arrows that only appear on hover — so this is a text input with
|
|
23
|
+
* `inputMode="numeric"` flanked by real buttons, which is also what makes it
|
|
24
|
+
* touch-usable. Arrow keys step, Shift steps by `largeStep`, Alt by `smallStep`,
|
|
25
|
+
* and values typed out of range are clamped to `min`/`max` on blur.
|
|
26
|
+
*
|
|
27
|
+
* The group owns the rim; the input and both buttons render bare inside it, so
|
|
28
|
+
* the whole cluster reads as one field. Focus feedback follows the group's
|
|
29
|
+
* split: the rim strengthens on `:focus-within`, and the ring waits for
|
|
30
|
+
* `:has(:focus-visible)` so a click on a stepper does not paint one.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* <NumberField aria-label="Fade time" defaultValue={3} min={0} max={600} step={0.5} />
|
|
34
|
+
* @example
|
|
35
|
+
* <Field><FieldLabel>Universe</FieldLabel><NumberField min={1} max={512} /></Field>
|
|
36
|
+
*/
|
|
37
|
+
declare const NumberField$1: React.ForwardRefExoticComponent<Omit<NumberFieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
38
|
+
//#endregion
|
|
39
|
+
export { NumberField$1 as NumberField, NumberFieldProps };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { bareControlClasses, controlGroupFocusClasses, controlSurface } from "./_chassis.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { NumberField } from "@base-ui/react/number-field";
|
|
7
|
+
//#region src/forms/number-field.tsx
|
|
8
|
+
/** The − and + affordances: square, borderless, and quiet until hovered. */
|
|
9
|
+
const stepperClasses = "flex shrink-0 items-center justify-center border-0 bg-transparent p-0 font-mono text-fg-muted leading-none select-none outline-none transition-colors hover:bg-surface-2 hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:-outline-offset-1 focus-visible:outline-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-40";
|
|
10
|
+
/**
|
|
11
|
+
* A numeric control with explicit − / + affordances and no native spinners.
|
|
12
|
+
*
|
|
13
|
+
* Native `<input type="number">` spinners are unusable at console density — a
|
|
14
|
+
* pair of 4px arrows that only appear on hover — so this is a text input with
|
|
15
|
+
* `inputMode="numeric"` flanked by real buttons, which is also what makes it
|
|
16
|
+
* touch-usable. Arrow keys step, Shift steps by `largeStep`, Alt by `smallStep`,
|
|
17
|
+
* and values typed out of range are clamped to `min`/`max` on blur.
|
|
18
|
+
*
|
|
19
|
+
* The group owns the rim; the input and both buttons render bare inside it, so
|
|
20
|
+
* the whole cluster reads as one field. Focus feedback follows the group's
|
|
21
|
+
* split: the rim strengthens on `:focus-within`, and the ring waits for
|
|
22
|
+
* `:has(:focus-visible)` so a click on a stepper does not paint one.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* <NumberField aria-label="Fade time" defaultValue={3} min={0} max={600} step={0.5} />
|
|
26
|
+
* @example
|
|
27
|
+
* <Field><FieldLabel>Universe</FieldLabel><NumberField min={1} max={512} /></Field>
|
|
28
|
+
*/
|
|
29
|
+
const NumberField$1 = React.forwardRef(function NumberField$2({ className, size = "md", decrementLabel = "Decrease", incrementLabel = "Increase", placeholder, "aria-label": ariaLabel, ...elementProps }, ref) {
|
|
30
|
+
const rung = size === "sm" ? "sm" : "md";
|
|
31
|
+
return /* @__PURE__ */ jsx(NumberField.Root, {
|
|
32
|
+
ref,
|
|
33
|
+
"data-slot": "number-field",
|
|
34
|
+
...elementProps,
|
|
35
|
+
children: /* @__PURE__ */ jsxs(NumberField.Group, {
|
|
36
|
+
"data-slot": "number-field-group",
|
|
37
|
+
className: cn(controlSurface, "flex items-stretch overflow-hidden", rung === "sm" ? "h-control-sm text-(length:--cue-text-label)" : "h-control-md text-(length:--cue-text-ui)", controlGroupFocusClasses, className),
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ jsx(NumberField.Decrement, {
|
|
40
|
+
"aria-label": decrementLabel,
|
|
41
|
+
className: cn(stepperClasses, rung === "sm" ? "w-control-sm" : "w-control-md"),
|
|
42
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
43
|
+
"aria-hidden": "true",
|
|
44
|
+
children: "−"
|
|
45
|
+
})
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ jsx(NumberField.Input, {
|
|
48
|
+
"aria-label": ariaLabel,
|
|
49
|
+
placeholder,
|
|
50
|
+
className: cn(bareControlClasses, "w-full px-(--cue-space-2) text-center tabular-nums", "[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none")
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ jsx(NumberField.Increment, {
|
|
53
|
+
"aria-label": incrementLabel,
|
|
54
|
+
className: cn(stepperClasses, rung === "sm" ? "w-control-sm" : "w-control-md"),
|
|
55
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
56
|
+
"aria-hidden": "true",
|
|
57
|
+
children: "+"
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
]
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//#endregion
|
|
65
|
+
export { NumberField$1 as NumberField };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { OTPField } from "@base-ui/react/otp-field";
|
|
4
|
+
//#region src/forms/otp-field.d.ts
|
|
5
|
+
interface OTPFieldProps extends Omit<OTPField.Root.Props, "className" | "children" | "length"> {
|
|
6
|
+
/** How many characters the code has. Defaults to `6`. */
|
|
7
|
+
length?: number;
|
|
8
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
9
|
+
size?: FormControlSize;
|
|
10
|
+
/**
|
|
11
|
+
* Insert a separator after every `groupSize` slots — `groupSize={3}` renders a
|
|
12
|
+
* six-character code as `123 456`, which is how people read one off a screen.
|
|
13
|
+
*/
|
|
14
|
+
groupSize?: number;
|
|
15
|
+
/** What sits between groups. Defaults to `"–"`. Always `aria-hidden`. */
|
|
16
|
+
separator?: React.ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Accessible name for the field. Names the group *and*, through a visually
|
|
19
|
+
* hidden `<label>`, the first slot — the ARIA pattern for a code field. Leave
|
|
20
|
+
* it off inside a {@link Field}, which supplies a real label.
|
|
21
|
+
*/
|
|
22
|
+
"aria-label"?: string;
|
|
23
|
+
/** Id of the first slot. Generated when omitted, so the hidden label can target it. */
|
|
24
|
+
id?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Accessible name for slot `index` (1-based here, since slot 0 is named by the
|
|
27
|
+
* field label) of `length`. Defaults to
|
|
28
|
+
* ``(index, length) => `Character ${index + 1} of ${length}` ``.
|
|
29
|
+
*/
|
|
30
|
+
slotLabel?: (index: number, length: number) => string;
|
|
31
|
+
/** Extra classes for the row. */
|
|
32
|
+
className?: string;
|
|
33
|
+
/** Extra classes for every slot. */
|
|
34
|
+
slotClassName?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A one-time code, one character per box.
|
|
38
|
+
*
|
|
39
|
+
* The boxes are not decoration: they tell the user how long the code is before
|
|
40
|
+
* they start typing, which is the whole reason this pattern beats a plain text
|
|
41
|
+
* input. Paste, arrow keys, Backspace across slot boundaries and the
|
|
42
|
+
* `one-time-code` autofill hint all come from Base UI.
|
|
43
|
+
*
|
|
44
|
+
* Slots ride the recessed chassis — sunken fill, hairline rim — so a code field
|
|
45
|
+
* reads as "type here" like every other input in the system, just squared off.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* <OTPField aria-label="Verification code" onValueComplete={submit} />
|
|
49
|
+
* @example
|
|
50
|
+
* <OTPField aria-label="Recovery code" length={8} groupSize={4} validationType="alphanumeric" />
|
|
51
|
+
*/
|
|
52
|
+
declare const OTPField$1: React.ForwardRefExoticComponent<Omit<OTPFieldProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
|
+
//#endregion
|
|
54
|
+
export { OTPField$1 as OTPField, OTPFieldProps };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { controlSurface } from "./_chassis.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { OTPField } from "@base-ui/react/otp-field";
|
|
7
|
+
//#region src/forms/otp-field.tsx
|
|
8
|
+
/** One square slot per rung of the control ladder. */
|
|
9
|
+
const SLOT_SIZES = {
|
|
10
|
+
sm: "size-control-sm text-(length:--cue-text-ui)",
|
|
11
|
+
md: "size-control-md text-(length:--cue-text-body)",
|
|
12
|
+
lg: "size-control-lg text-(length:--cue-text-emphasis)"
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* A one-time code, one character per box.
|
|
16
|
+
*
|
|
17
|
+
* The boxes are not decoration: they tell the user how long the code is before
|
|
18
|
+
* they start typing, which is the whole reason this pattern beats a plain text
|
|
19
|
+
* input. Paste, arrow keys, Backspace across slot boundaries and the
|
|
20
|
+
* `one-time-code` autofill hint all come from Base UI.
|
|
21
|
+
*
|
|
22
|
+
* Slots ride the recessed chassis — sunken fill, hairline rim — so a code field
|
|
23
|
+
* reads as "type here" like every other input in the system, just squared off.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* <OTPField aria-label="Verification code" onValueComplete={submit} />
|
|
27
|
+
* @example
|
|
28
|
+
* <OTPField aria-label="Recovery code" length={8} groupSize={4} validationType="alphanumeric" />
|
|
29
|
+
*/
|
|
30
|
+
const OTPField$1 = React.forwardRef(function OTPField$2({ length = 6, size = "md", groupSize, separator = "–", "aria-label": ariaLabel, id, slotLabel = (index, total) => `Character ${index + 1} of ${total}`, className, slotClassName, ...elementProps }, ref) {
|
|
31
|
+
const generatedId = React.useId();
|
|
32
|
+
const fieldId = id ?? generatedId;
|
|
33
|
+
const slotClasses = cn(controlSurface, "w-auto p-0 text-center tabular-nums", SLOT_SIZES[size], slotClassName);
|
|
34
|
+
return /* @__PURE__ */ jsxs(OTPField.Root, {
|
|
35
|
+
ref,
|
|
36
|
+
id: fieldId,
|
|
37
|
+
length,
|
|
38
|
+
"aria-label": ariaLabel,
|
|
39
|
+
"data-slot": "otp-field",
|
|
40
|
+
className: cn("relative flex items-center gap-(--cue-space-2)", className),
|
|
41
|
+
...elementProps,
|
|
42
|
+
children: [ariaLabel === void 0 ? null : /* @__PURE__ */ jsx("label", {
|
|
43
|
+
htmlFor: fieldId,
|
|
44
|
+
className: "sr-only",
|
|
45
|
+
children: ariaLabel
|
|
46
|
+
}), Array.from({ length }, (_, index) => /* @__PURE__ */ jsxs(React.Fragment, { children: [groupSize !== void 0 && index > 0 && index % groupSize === 0 ? /* @__PURE__ */ jsx("span", {
|
|
47
|
+
"data-slot": "otp-field-separator",
|
|
48
|
+
"aria-hidden": "true",
|
|
49
|
+
className: "px-(--cue-space-1) font-mono text-fg-subtle select-none",
|
|
50
|
+
children: separator
|
|
51
|
+
}) : null, /* @__PURE__ */ jsx(OTPField.Input, {
|
|
52
|
+
"data-slot": "otp-field-slot",
|
|
53
|
+
"aria-label": index === 0 ? void 0 : slotLabel(index, length),
|
|
54
|
+
className: slotClasses
|
|
55
|
+
})] }, index))]
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
//#endregion
|
|
59
|
+
export { OTPField$1 as OTPField };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FormControlSize } from "./_chassis.js";
|
|
2
|
+
import { InputProps } from "./input.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/forms/password-input.d.ts
|
|
5
|
+
interface PasswordInputProps extends Omit<InputProps, "type" | "size"> {
|
|
6
|
+
/** Reveal the value. Use with `onRevealedChange` for a controlled toggle. */
|
|
7
|
+
revealed?: boolean;
|
|
8
|
+
/** Initially revealed, for an uncontrolled toggle. Defaults to `false`. */
|
|
9
|
+
defaultRevealed?: boolean;
|
|
10
|
+
/** Called with the new reveal state. */
|
|
11
|
+
onRevealedChange?: (revealed: boolean) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Offer the reveal affordance at all. Defaults to `true`. Switch it off for a
|
|
14
|
+
* value the product must never re-display — a stored secret the user is
|
|
15
|
+
* replacing rather than reading.
|
|
16
|
+
*/
|
|
17
|
+
showReveal?: boolean;
|
|
18
|
+
/** Accessible name while masked. Defaults to `"Show password"`. */
|
|
19
|
+
revealLabel?: string;
|
|
20
|
+
/** Accessible name while revealed. Defaults to `"Hide password"`. */
|
|
21
|
+
hideLabel?: string;
|
|
22
|
+
/** Rung of the control ladder. Defaults to `"md"`. */
|
|
23
|
+
size?: FormControlSize;
|
|
24
|
+
/** Extra classes for the group that wraps the input and the reveal button. */
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A masked text field with a reveal control.
|
|
29
|
+
*
|
|
30
|
+
* The reveal is a **toggle button carrying `aria-pressed`**, not a checkbox and
|
|
31
|
+
* not a bare icon: a screen-reader user needs to know both what it does and
|
|
32
|
+
* which way it currently is, and `aria-pressed` is the one attribute that says
|
|
33
|
+
* both. The label swaps with the state for the same reason.
|
|
34
|
+
*
|
|
35
|
+
* Revealing switches `type` between `password` and `text` rather than painting
|
|
36
|
+
* over the characters, so the browser's own autofill and password managers keep
|
|
37
|
+
* working.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* <PasswordInput aria-label="Service key" value={key} onValueChange={setKey} />
|
|
41
|
+
* @example
|
|
42
|
+
* <Field><FieldLabel>Token</FieldLabel><PasswordInput showReveal={false} /></Field>
|
|
43
|
+
*/
|
|
44
|
+
declare const PasswordInput: React.ForwardRefExoticComponent<Omit<PasswordInputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
45
|
+
//#endregion
|
|
46
|
+
export { PasswordInput, PasswordInputProps };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { InputGroup } from "./input-group.js";
|
|
4
|
+
import { Input } from "./input.js";
|
|
5
|
+
import { EyeGlyph, EyeOffGlyph } from "./_glyphs.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
//#region src/forms/password-input.tsx
|
|
9
|
+
/**
|
|
10
|
+
* A masked text field with a reveal control.
|
|
11
|
+
*
|
|
12
|
+
* The reveal is a **toggle button carrying `aria-pressed`**, not a checkbox and
|
|
13
|
+
* not a bare icon: a screen-reader user needs to know both what it does and
|
|
14
|
+
* which way it currently is, and `aria-pressed` is the one attribute that says
|
|
15
|
+
* both. The label swaps with the state for the same reason.
|
|
16
|
+
*
|
|
17
|
+
* Revealing switches `type` between `password` and `text` rather than painting
|
|
18
|
+
* over the characters, so the browser's own autofill and password managers keep
|
|
19
|
+
* working.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <PasswordInput aria-label="Service key" value={key} onValueChange={setKey} />
|
|
23
|
+
* @example
|
|
24
|
+
* <Field><FieldLabel>Token</FieldLabel><PasswordInput showReveal={false} /></Field>
|
|
25
|
+
*/
|
|
26
|
+
const PasswordInput = React.forwardRef(function PasswordInput({ className, revealed: revealedProp, defaultRevealed = false, onRevealedChange, showReveal = true, revealLabel = "Show password", hideLabel = "Hide password", size, disabled, ...elementProps }, ref) {
|
|
27
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultRevealed);
|
|
28
|
+
const revealed = revealedProp ?? uncontrolled;
|
|
29
|
+
const toggle = React.useCallback(() => {
|
|
30
|
+
const next = !revealed;
|
|
31
|
+
if (revealedProp === void 0) setUncontrolled(next);
|
|
32
|
+
onRevealedChange?.(next);
|
|
33
|
+
}, [
|
|
34
|
+
onRevealedChange,
|
|
35
|
+
revealed,
|
|
36
|
+
revealedProp
|
|
37
|
+
]);
|
|
38
|
+
return /* @__PURE__ */ jsx(InputGroup, {
|
|
39
|
+
size,
|
|
40
|
+
className,
|
|
41
|
+
trailing: showReveal ? /* @__PURE__ */ jsx("button", {
|
|
42
|
+
type: "button",
|
|
43
|
+
"aria-pressed": revealed,
|
|
44
|
+
"aria-label": revealed ? hideLabel : revealLabel,
|
|
45
|
+
disabled,
|
|
46
|
+
onClick: toggle,
|
|
47
|
+
className: "flex shrink-0 cursor-pointer items-center justify-center rounded-(--radius-control) text-fg-subtle outline-none transition-colors hover:text-fg focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-40 aria-pressed:text-fg",
|
|
48
|
+
children: /* @__PURE__ */ jsx(revealed ? EyeOffGlyph : EyeGlyph, { className: "size-icon-md" })
|
|
49
|
+
}) : void 0,
|
|
50
|
+
children: /* @__PURE__ */ jsx(Input, {
|
|
51
|
+
ref,
|
|
52
|
+
type: revealed ? "text" : "password",
|
|
53
|
+
"data-slot": "password-input",
|
|
54
|
+
spellCheck: false,
|
|
55
|
+
disabled,
|
|
56
|
+
className: cn("[&::-ms-reveal]:hidden"),
|
|
57
|
+
...elementProps
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
//#endregion
|
|
62
|
+
export { PasswordInput };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Radio } from "@base-ui/react/radio";
|
|
3
|
+
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
4
|
+
//#region src/forms/radio-group.d.ts
|
|
5
|
+
interface RadioGroupProps extends Omit<RadioGroup.Props, "className"> {
|
|
6
|
+
/** Extra classes, merged over the stack defaults. */
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Lay the options out in a column (default) or a row. */
|
|
9
|
+
orientation?: "vertical" | "horizontal";
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One-of-many selection: a roving-tabindex group of {@link Radio}s sharing a
|
|
13
|
+
* single value.
|
|
14
|
+
*
|
|
15
|
+
* Arrow keys move *and* select, per the WAI-ARIA radio group pattern that Base
|
|
16
|
+
* UI implements — so the whole group is one tab stop, which is what keeps a
|
|
17
|
+
* dense settings panel navigable.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <RadioGroup aria-label="Blend mode" value={mode} onValueChange={setMode}>
|
|
21
|
+
* <Radio value="htp" label="HTP" />
|
|
22
|
+
* <Radio value="ltp" label="LTP" />
|
|
23
|
+
* </RadioGroup>
|
|
24
|
+
*/
|
|
25
|
+
declare const RadioGroup$1: React.ForwardRefExoticComponent<Omit<RadioGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
26
|
+
interface RadioProps extends Omit<Radio.Root.Props, "className"> {
|
|
27
|
+
/** Extra classes, merged over the dot defaults. */
|
|
28
|
+
className?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Inline label rendered beside the dot and wrapped with it in a `<label>`, so
|
|
31
|
+
* the text is both the accessible name and part of the hit target.
|
|
32
|
+
*/
|
|
33
|
+
label?: React.ReactNode;
|
|
34
|
+
/** Rung of the density icon ladder for the dot. Defaults to `"md"`. */
|
|
35
|
+
size?: "sm" | "md";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* One option inside a {@link RadioGroup}.
|
|
39
|
+
*
|
|
40
|
+
* Round, to say "exactly one" the way a square {@link Checkbox} says "any
|
|
41
|
+
* number". Checked draws an accent rim with an accent core rather than a solid
|
|
42
|
+
* fill, so the selected option stays legible against the sunken field colour on
|
|
43
|
+
* every theme.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* <Radio value="htp" label="Highest takes precedence" />
|
|
47
|
+
*/
|
|
48
|
+
declare const Radio$1: React.ForwardRefExoticComponent<Omit<RadioProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
49
|
+
//#endregion
|
|
50
|
+
export { Radio$1 as Radio, RadioGroup$1 as RadioGroup, RadioGroupProps, RadioProps };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Radio } from "@base-ui/react/radio";
|
|
6
|
+
import { RadioGroup } from "@base-ui/react/radio-group";
|
|
7
|
+
//#region src/forms/radio-group.tsx
|
|
8
|
+
/**
|
|
9
|
+
* One-of-many selection: a roving-tabindex group of {@link Radio}s sharing a
|
|
10
|
+
* single value.
|
|
11
|
+
*
|
|
12
|
+
* Arrow keys move *and* select, per the WAI-ARIA radio group pattern that Base
|
|
13
|
+
* UI implements — so the whole group is one tab stop, which is what keeps a
|
|
14
|
+
* dense settings panel navigable.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* <RadioGroup aria-label="Blend mode" value={mode} onValueChange={setMode}>
|
|
18
|
+
* <Radio value="htp" label="HTP" />
|
|
19
|
+
* <Radio value="ltp" label="LTP" />
|
|
20
|
+
* </RadioGroup>
|
|
21
|
+
*/
|
|
22
|
+
const RadioGroup$1 = React.forwardRef(function RadioGroup$2({ className, orientation = "vertical", ...elementProps }, ref) {
|
|
23
|
+
return /* @__PURE__ */ jsx(RadioGroup, {
|
|
24
|
+
ref,
|
|
25
|
+
"data-slot": "radio-group",
|
|
26
|
+
"data-orientation": orientation,
|
|
27
|
+
className: cn("flex", orientation === "horizontal" ? "flex-row flex-wrap items-center gap-(--cue-space-5)" : "flex-col gap-(--cue-space-2)", className),
|
|
28
|
+
...elementProps
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* One option inside a {@link RadioGroup}.
|
|
33
|
+
*
|
|
34
|
+
* Round, to say "exactly one" the way a square {@link Checkbox} says "any
|
|
35
|
+
* number". Checked draws an accent rim with an accent core rather than a solid
|
|
36
|
+
* fill, so the selected option stays legible against the sunken field colour on
|
|
37
|
+
* every theme.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* <Radio value="htp" label="Highest takes precedence" />
|
|
41
|
+
*/
|
|
42
|
+
const Radio$1 = React.forwardRef(function Radio$2({ className, label, size = "md", ...elementProps }, ref) {
|
|
43
|
+
const labelId = React.useId();
|
|
44
|
+
const hasLabel = label !== void 0;
|
|
45
|
+
const dot = /* @__PURE__ */ jsx(Radio.Root, {
|
|
46
|
+
ref,
|
|
47
|
+
"data-slot": "radio",
|
|
48
|
+
"aria-labelledby": hasLabel ? labelId : void 0,
|
|
49
|
+
className: cn("flex shrink-0 items-center justify-center rounded-full border border-border bg-sunken text-accent outline-none transition-colors", size === "sm" ? "size-icon-sm" : "size-icon-md", "hover:border-border-strong", "data-[checked]:border-accent", "focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-1 focus-visible:outline-accent", "data-[disabled]:pointer-events-none data-[disabled]:opacity-40", "data-[invalid]:border-danger", className),
|
|
50
|
+
...elementProps,
|
|
51
|
+
children: /* @__PURE__ */ jsx(Radio.Indicator, { className: "block size-1/2 rounded-full bg-accent data-[unchecked]:hidden" })
|
|
52
|
+
});
|
|
53
|
+
if (!hasLabel) return dot;
|
|
54
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
55
|
+
"data-slot": "radio-label",
|
|
56
|
+
className: "inline-flex cursor-pointer items-center gap-(--cue-space-3) font-mono text-(length:--cue-text-ui) text-fg-muted select-none has-[[data-disabled]]:cursor-default has-[[data-disabled]]:opacity-40",
|
|
57
|
+
children: [dot, /* @__PURE__ */ jsx("span", {
|
|
58
|
+
id: labelId,
|
|
59
|
+
children: label
|
|
60
|
+
})]
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//#endregion
|
|
64
|
+
export { Radio$1 as Radio, RadioGroup$1 as RadioGroup };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/forms/rating.d.ts
|
|
3
|
+
/** Mark size per rung — a rating is read at a glance, so it tracks the icon ladder. */
|
|
4
|
+
declare const MARK_SIZES: {
|
|
5
|
+
readonly sm: "size-icon-sm";
|
|
6
|
+
readonly md: "size-icon-md";
|
|
7
|
+
readonly lg: "size-[calc(var(--cue-icon-md)*1.35)]";
|
|
8
|
+
};
|
|
9
|
+
/** Rung of the icon ladder a {@link Rating}'s marks sit on. */
|
|
10
|
+
type RatingSize = keyof typeof MARK_SIZES;
|
|
11
|
+
interface RatingProps extends Omit<React.ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue"> {
|
|
12
|
+
/** The rating, `0`–`count`. Use with `onValueChange` for a controlled widget. */
|
|
13
|
+
value?: number;
|
|
14
|
+
/** Initial rating for an uncontrolled widget. Defaults to `0`. */
|
|
15
|
+
defaultValue?: number;
|
|
16
|
+
/** Called with the new rating; `0` means "cleared". */
|
|
17
|
+
onValueChange?: (value: number) => void;
|
|
18
|
+
/** How many marks. Defaults to `5`. */
|
|
19
|
+
count?: number;
|
|
20
|
+
/** Rung of the icon ladder. Defaults to `"md"`. */
|
|
21
|
+
size?: RatingSize;
|
|
22
|
+
/**
|
|
23
|
+
* Picking the current value clears it back to `0`. Defaults to `true` — a
|
|
24
|
+
* rating you cannot take back is a trap, and there is no other affordance for
|
|
25
|
+
* "actually, no opinion".
|
|
26
|
+
*/
|
|
27
|
+
allowClear?: boolean;
|
|
28
|
+
/** Render a static readout with no controls. */
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
/** Grey the marks out and refuse interaction. */
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Accessible name for the group. Also the prefix of the read-only readout —
|
|
34
|
+
* `"Signal quality: 4 of 5"`. Synonym of `aria-label`, which wins if both are
|
|
35
|
+
* given.
|
|
36
|
+
*/
|
|
37
|
+
label?: string;
|
|
38
|
+
/** Accessible name for the group, for callers who prefer the ARIA spelling. */
|
|
39
|
+
"aria-label"?: string;
|
|
40
|
+
/** The mark component. Defaults to a filled star. */
|
|
41
|
+
icon?: React.ElementType;
|
|
42
|
+
/**
|
|
43
|
+
* Accessible name for mark `index` (1-based) of `count`. Defaults to
|
|
44
|
+
* ``(index, count) => `${index} of ${count}` ``.
|
|
45
|
+
*/
|
|
46
|
+
markLabel?: (index: number, count: number) => string;
|
|
47
|
+
/** Extra classes for the group. */
|
|
48
|
+
className?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A 0–N rating, drawn as marks.
|
|
52
|
+
*
|
|
53
|
+
* Built as a **radio group**, not a row of buttons: exactly one value is in
|
|
54
|
+
* effect, arrow keys move between the options, and one Tab stop covers the whole
|
|
55
|
+
* widget. A row of toggle buttons would put five stops in the tab order and
|
|
56
|
+
* announce five unrelated controls.
|
|
57
|
+
*
|
|
58
|
+
* Read-only renders as a single `img` with the value in its name — an
|
|
59
|
+
* un-interactive control that still takes focus is a trap, and five disabled
|
|
60
|
+
* radios announce five things where one sentence will do.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* <Rating label="Signal quality" value={score} onValueChange={setScore} />
|
|
64
|
+
* @example
|
|
65
|
+
* <Rating aria-label="Signal quality" value={4} readOnly size="sm" />
|
|
66
|
+
*/
|
|
67
|
+
declare const Rating: React.ForwardRefExoticComponent<RatingProps & React.RefAttributes<HTMLDivElement>>;
|
|
68
|
+
//#endregion
|
|
69
|
+
export { Rating, RatingProps, RatingSize };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { StarGlyph } from "./_glyphs.js";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/forms/rating.tsx
|
|
7
|
+
/** Mark size per rung — a rating is read at a glance, so it tracks the icon ladder. */
|
|
8
|
+
const MARK_SIZES = {
|
|
9
|
+
sm: "size-icon-sm",
|
|
10
|
+
md: "size-icon-md",
|
|
11
|
+
lg: "size-[calc(var(--cue-icon-md)*1.35)]"
|
|
12
|
+
};
|
|
13
|
+
const MARK_CLASSES = "flex cursor-pointer items-center justify-center border-0 bg-transparent p-0 text-fg-subtle transition-colors duration-150 outline-none hover:text-accent focus-visible:outline-2 focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-accent disabled:pointer-events-none disabled:opacity-40 aria-checked:text-accent";
|
|
14
|
+
/**
|
|
15
|
+
* A 0–N rating, drawn as marks.
|
|
16
|
+
*
|
|
17
|
+
* Built as a **radio group**, not a row of buttons: exactly one value is in
|
|
18
|
+
* effect, arrow keys move between the options, and one Tab stop covers the whole
|
|
19
|
+
* widget. A row of toggle buttons would put five stops in the tab order and
|
|
20
|
+
* announce five unrelated controls.
|
|
21
|
+
*
|
|
22
|
+
* Read-only renders as a single `img` with the value in its name — an
|
|
23
|
+
* un-interactive control that still takes focus is a trap, and five disabled
|
|
24
|
+
* radios announce five things where one sentence will do.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* <Rating label="Signal quality" value={score} onValueChange={setScore} />
|
|
28
|
+
* @example
|
|
29
|
+
* <Rating aria-label="Signal quality" value={4} readOnly size="sm" />
|
|
30
|
+
*/
|
|
31
|
+
const Rating = React.forwardRef(function Rating({ className, value: valueProp, defaultValue = 0, onValueChange, count = 5, size = "md", allowClear = true, readOnly = false, disabled = false, label, "aria-label": ariaLabel, icon: Icon = StarGlyph, markLabel = (index, total) => `${index} of ${total}`, ...elementProps }, ref) {
|
|
32
|
+
const isControlled = valueProp !== void 0;
|
|
33
|
+
const [uncontrolled, setUncontrolled] = React.useState(defaultValue);
|
|
34
|
+
const value = isControlled ? valueProp : uncontrolled;
|
|
35
|
+
const name = ariaLabel ?? label;
|
|
36
|
+
const commit = React.useCallback((next) => {
|
|
37
|
+
const clamped = Math.min(count, Math.max(0, next));
|
|
38
|
+
if (clamped === value) return;
|
|
39
|
+
if (!isControlled) setUncontrolled(clamped);
|
|
40
|
+
onValueChange?.(clamped);
|
|
41
|
+
}, [
|
|
42
|
+
count,
|
|
43
|
+
isControlled,
|
|
44
|
+
onValueChange,
|
|
45
|
+
value
|
|
46
|
+
]);
|
|
47
|
+
const marks = Array.from({ length: count }, (_, index) => index + 1);
|
|
48
|
+
if (readOnly) return /* @__PURE__ */ jsx("div", {
|
|
49
|
+
ref,
|
|
50
|
+
role: "img",
|
|
51
|
+
"data-slot": "rating",
|
|
52
|
+
"aria-label": name === void 0 ? `${value} of ${count}` : `${name}: ${value} of ${count}`,
|
|
53
|
+
className: cn("inline-flex items-center gap-(--cue-space-1)", className),
|
|
54
|
+
...elementProps,
|
|
55
|
+
children: marks.map((mark) => /* @__PURE__ */ jsx(Icon, {
|
|
56
|
+
"aria-hidden": "true",
|
|
57
|
+
"data-slot": "rating-mark",
|
|
58
|
+
"data-filled": mark <= value ? "" : void 0,
|
|
59
|
+
className: cn(MARK_SIZES[size], mark <= value ? "text-accent" : "text-fg-subtle")
|
|
60
|
+
}, mark))
|
|
61
|
+
});
|
|
62
|
+
const handleKeyDown = (event) => {
|
|
63
|
+
if (disabled) return;
|
|
64
|
+
const step = event.key === "ArrowRight" || event.key === "ArrowUp" ? 1 : event.key === "ArrowLeft" || event.key === "ArrowDown" ? -1 : 0;
|
|
65
|
+
let next = null;
|
|
66
|
+
if (step !== 0) next = Math.min(count, Math.max(1, value + step));
|
|
67
|
+
else if (event.key === "Home") next = 1;
|
|
68
|
+
else if (event.key === "End") next = count;
|
|
69
|
+
if (next === null) return;
|
|
70
|
+
event.preventDefault();
|
|
71
|
+
commit(next);
|
|
72
|
+
event.currentTarget.querySelector(`[data-slot="rating-mark"][data-index="${next}"]`)?.focus();
|
|
73
|
+
};
|
|
74
|
+
const focusable = value === 0 ? 1 : value;
|
|
75
|
+
return /* @__PURE__ */ jsx("div", {
|
|
76
|
+
ref,
|
|
77
|
+
role: "radiogroup",
|
|
78
|
+
"data-slot": "rating",
|
|
79
|
+
"aria-label": name,
|
|
80
|
+
"aria-disabled": disabled ? true : void 0,
|
|
81
|
+
onKeyDown: handleKeyDown,
|
|
82
|
+
className: cn("inline-flex items-center gap-(--cue-space-1)", className),
|
|
83
|
+
...elementProps,
|
|
84
|
+
children: marks.map((mark) => /* @__PURE__ */ jsx("button", {
|
|
85
|
+
type: "button",
|
|
86
|
+
role: "radio",
|
|
87
|
+
"data-slot": "rating-mark",
|
|
88
|
+
"data-index": mark,
|
|
89
|
+
"aria-checked": mark === value,
|
|
90
|
+
"aria-label": markLabel(mark, count),
|
|
91
|
+
tabIndex: mark === focusable ? 0 : -1,
|
|
92
|
+
disabled,
|
|
93
|
+
onClick: () => commit(mark === value && allowClear ? 0 : mark),
|
|
94
|
+
className: MARK_CLASSES,
|
|
95
|
+
children: /* @__PURE__ */ jsx(Icon, {
|
|
96
|
+
"aria-hidden": "true",
|
|
97
|
+
className: cn(MARK_SIZES[size], mark <= value ? "text-accent" : void 0)
|
|
98
|
+
})
|
|
99
|
+
}, mark))
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//#endregion
|
|
103
|
+
export { Rating };
|