@cueplusplus/ui 0.16.0 → 0.17.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 +825 -0
- package/README.md +1 -1
- package/dist/agent-runtime/tool-call-card.js +7 -3
- package/dist/brand/_chassis.d.ts +1 -1
- package/dist/brand/cue-mark.d.ts +1 -1
- package/dist/brand/cue-mark.js +1 -1
- package/dist/charts/ramps.js +1 -1
- package/dist/chat/agent-pile.js +2 -1
- package/dist/chat/ask-box.js +4 -3
- package/dist/chat/delegation-card.js +3 -2
- package/dist/chat/message-list.js +3 -2
- package/dist/chat/message.js +17 -7
- package/dist/chrome/_edge-scroller.js +2 -1
- package/dist/chrome/_status-bar.js +9 -3
- package/dist/chrome/_tabs-scroll.d.ts +1 -1
- package/dist/chrome/_tabs-scroll.js +1 -1
- package/dist/chrome/app-bar.js +9 -3
- package/dist/chrome/app-shell.js +2 -1
- package/dist/chrome/band.d.ts +18 -12
- package/dist/chrome/band.js +18 -32
- package/dist/chrome/eyebrow.d.ts +13 -5
- package/dist/chrome/eyebrow.js +18 -7
- package/dist/chrome/footer.d.ts +5 -0
- package/dist/chrome/footer.js +14 -3
- package/dist/chrome/navigation-menu.js +4 -2
- package/dist/chrome/page-shell.js +8 -5
- package/dist/chrome/panel.d.ts +5 -2
- package/dist/chrome/panel.js +8 -4
- package/dist/chrome/row.js +6 -3
- package/dist/chrome/scroll-area.js +2 -1
- package/dist/chrome/section-header.js +13 -4
- package/dist/chrome/segmented-control.js +12 -3
- package/dist/chrome/status-bar.js +2 -1
- package/dist/chrome/tabs.js +11 -3
- package/dist/chrome/toolbar.js +2 -1
- package/dist/chrome/tree.js +3 -2
- package/dist/color/_thumb.js +9 -3
- package/dist/color/color-area.js +1 -1
- package/dist/color/color-swatch.js +1 -1
- package/dist/configurator/_overrides.js +13 -4
- package/dist/configurator/configurator.js +4 -1
- package/dist/configurator/export-dialog.js +5 -2
- package/dist/configurator/panel-sections.js +6 -2
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/calendar.js +12 -8
- package/dist/dmx/channel-matrix.js +3 -2
- package/dist/dmx/dmx-bar.js +1 -1
- package/dist/dmx/dmx-strip.js +1 -1
- package/dist/dmx/universe-grid.js +3 -2
- package/dist/elements/activity-graph.js +3 -3
- package/dist/elements/agent-card.js +3 -3
- package/dist/elements/approval-card.js +3 -3
- package/dist/elements/artifact-card.js +2 -2
- package/dist/elements/background-inbox.js +2 -2
- package/dist/elements/canvas-split.js +2 -2
- package/dist/elements/chart.js +1 -1
- package/dist/elements/chat-panel.js +2 -2
- package/dist/elements/checkpoint-history.js +2 -2
- package/dist/elements/clamp.js +2 -1
- package/dist/elements/code-diff.js +1 -1
- package/dist/elements/code-runner.js +1 -1
- package/dist/elements/command-palette.js +6 -5
- package/dist/elements/comparison-card.js +2 -2
- package/dist/elements/composer.js +9 -8
- package/dist/elements/computer-use.js +1 -1
- package/dist/elements/confidence-marker.js +2 -1
- package/dist/elements/connection-state.js +1 -1
- package/dist/elements/context-breakdown.js +1 -1
- package/dist/elements/context-usage.js +1 -1
- package/dist/elements/conversation-search.js +4 -3
- package/dist/elements/cost-meter.js +1 -1
- package/dist/elements/data-table.js +2 -2
- package/dist/elements/day-separator.js +1 -1
- package/dist/elements/diagram.js +1 -1
- package/dist/elements/document-reference.js +3 -3
- package/dist/elements/draft-restore.js +1 -1
- package/dist/elements/edit-message.js +4 -3
- package/dist/elements/elements.css +26 -5
- package/dist/elements/elicitation-form.js +3 -3
- package/dist/elements/empty-state.js +2 -1
- package/dist/elements/error-state.js +1 -1
- package/dist/elements/feedback-dialog.js +4 -3
- package/dist/elements/file-tree.js +2 -2
- package/dist/elements/flow-graph.js +2 -2
- package/dist/elements/guardrail-notice.js +3 -3
- package/dist/elements/image-generation.js +1 -1
- package/dist/elements/inline-citation.js +3 -3
- package/dist/elements/job-progress.js +3 -3
- package/dist/elements/launcher-bubble.js +2 -2
- package/dist/elements/loading-state.js +1 -1
- package/dist/elements/map-answer.js +3 -2
- package/dist/elements/markdown.js +5 -4
- package/dist/elements/math-block.js +1 -1
- package/dist/elements/mcp-server-panel.js +3 -3
- package/dist/elements/message-attachment.js +4 -4
- package/dist/elements/message-pair.js +1 -1
- package/dist/elements/message-queue.js +2 -2
- package/dist/elements/mobile-composer.js +4 -3
- package/dist/elements/model-picker.js +3 -3
- package/dist/elements/onboarding.js +2 -2
- package/dist/elements/permission-grant.js +2 -2
- package/dist/elements/permission-scopes.js +5 -4
- package/dist/elements/prompt-library.js +7 -6
- package/dist/elements/queue-dock.js +4 -3
- package/dist/elements/quota-banner.js +1 -1
- package/dist/elements/quote-reply.js +1 -1
- package/dist/elements/read-aloud.js +2 -2
- package/dist/elements/reasoning-panel.js +2 -1
- package/dist/elements/recommendation-card.d.ts +1 -1
- package/dist/elements/recommendation-card.js +2 -2
- package/dist/elements/regenerate-menu.js +2 -2
- package/dist/elements/research-report.js +1 -1
- package/dist/elements/retrieval-chunks.js +1 -1
- package/dist/elements/revert-dock.js +5 -4
- package/dist/elements/reviewable-diff.js +1 -1
- package/dist/elements/schedule-card.js +3 -3
- package/dist/elements/score-breakdown.js +1 -1
- package/dist/elements/scroll-anchor.js +2 -2
- package/dist/elements/settings-panel.js +3 -2
- package/dist/elements/shared-conversation.js +2 -2
- package/dist/elements/sources.js +4 -3
- package/dist/elements/speaker-identity.js +1 -1
- package/dist/elements/spec-sheet.js +1 -1
- package/dist/elements/streaming-text.js +1 -1
- package/dist/elements/subagent-list.js +2 -2
- package/dist/elements/suggestions.js +1 -1
- package/dist/elements/surfaces.d.ts +1 -1
- package/dist/elements/surfaces.js +2 -1
- package/dist/elements/tail-status.js +1 -1
- package/dist/elements/terminal-block.js +1 -1
- package/dist/elements/thread-list.js +1 -1
- package/dist/elements/thread-search.js +5 -4
- package/dist/elements/timeline.js +1 -1
- package/dist/elements/todo-list.js +2 -2
- package/dist/elements/tool-call.js +4 -3
- package/dist/elements/tool-error.js +2 -2
- package/dist/elements/tool-group.js +1 -1
- package/dist/elements/tool-timeline.js +4 -3
- package/dist/elements/trace-waterfall.js +1 -1
- package/dist/elements/verdict-row.js +2 -2
- package/dist/elements/voice-conversation.js +3 -2
- package/dist/elements/web-preview.js +1 -1
- package/dist/elements/web-search.js +2 -2
- package/dist/elements/work-collapse.js +2 -1
- package/dist/flow/node-card.js +3 -2
- package/dist/flow/use-flow-theme.js +2 -1
- package/dist/forms/_chassis.d.ts +26 -6
- package/dist/forms/_chassis.js +33 -8
- package/dist/forms/_listbox.js +8 -5
- package/dist/forms/checkbox.js +8 -2
- package/dist/forms/env-var-input.js +3 -2
- package/dist/forms/field.d.ts +2 -1
- package/dist/forms/field.js +15 -4
- package/dist/forms/file-upload.js +3 -2
- package/dist/forms/number-field.js +2 -1
- package/dist/forms/password-input.js +4 -2
- package/dist/forms/radio-group.js +6 -2
- package/dist/forms/rating.js +2 -1
- package/dist/forms/scrub-input.js +2 -1
- package/dist/forms/search-input.js +2 -1
- package/dist/forms/select.js +5 -2
- package/dist/forms/slider.js +6 -2
- package/dist/forms/switch.js +6 -2
- package/dist/forms/textarea.js +2 -1
- package/dist/forms/toggle.js +3 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/instruments/_data-row.js +2 -1
- package/dist/instruments/app-window-frame.js +1 -1
- package/dist/instruments/code-block.js +8 -2
- package/dist/instruments/group-bar.js +1 -1
- package/dist/instruments/ledger.js +6 -2
- package/dist/instruments/log-viewer.js +4 -3
- package/dist/instruments/progress.js +5 -2
- package/dist/instruments/seam-grid.js +5 -3
- package/dist/instruments/stat.js +10 -3
- package/dist/instruments/table.js +28 -10
- package/dist/instruments/terminal-frame.js +4 -2
- package/dist/instruments/usage-chart.js +1 -1
- package/dist/layout/_collapse.js +6 -1
- package/dist/layout/bento.js +7 -4
- package/dist/layout/breadcrumb.js +7 -3
- package/dist/layout/card.js +12 -6
- package/dist/layout/carousel.js +3 -2
- package/dist/layout/collapsible.js +5 -1
- package/dist/layout/container.js +2 -1
- package/dist/layout/description-list.js +4 -1
- package/dist/layout/frames.js +11 -5
- package/dist/layout/item.js +3 -2
- package/dist/layout/link.d.ts +16 -0
- package/dist/layout/link.js +22 -3
- package/dist/layout/pagination.js +2 -1
- package/dist/layout/preview.d.ts +32 -12
- package/dist/layout/preview.js +149 -40
- package/dist/layout/resizable.js +2 -1
- package/dist/layout/sidebar.js +11 -3
- package/dist/layout/stepper.js +6 -2
- package/dist/lib/cn.js +29 -2
- package/dist/midi/piano-keyboard.js +3 -2
- package/dist/midi/spectrum-visualizer.js +1 -1
- package/dist/midi/threshold-rail.js +2 -1
- package/dist/midi/timeline-ruler.js +1 -1
- package/dist/overlays/_surface.d.ts +72 -12
- package/dist/overlays/_surface.js +84 -12
- package/dist/overlays/command-palette.js +9 -5
- package/dist/overlays/dialog.d.ts +5 -0
- package/dist/overlays/dialog.js +6 -1
- package/dist/overlays/info-tip.js +2 -1
- package/dist/overlays/menubar.js +3 -1
- package/dist/overlays/popover.js +2 -1
- package/dist/overlays/toast.js +6 -2
- package/dist/overlays/tooltip.js +4 -1
- package/dist/primitives/button.d.ts +15 -0
- package/dist/primitives/button.js +40 -11
- package/dist/primitives/chip.d.ts +19 -1
- package/dist/primitives/chip.js +39 -17
- package/dist/primitives/kbd.d.ts +6 -0
- package/dist/primitives/kbd.js +10 -1
- package/dist/primitives/skeleton.js +1 -1
- package/dist/system/_focus-ring-field.js +29 -0
- package/dist/system/_focus-ring.js +125 -0
- package/dist/system/_paint-glow.js +22 -3
- package/dist/system/_paint-rest-shade.js +32 -0
- package/dist/system/_paint-rim.js +22 -4
- package/dist/system/_paint-stroke-surface-1.js +1 -1
- package/dist/system/_paint-stroke-surface-2.js +14 -1
- package/dist/system/_paint-texture.js +5 -2
- package/dist/system/_style-app-bar.js +65 -0
- package/dist/system/_style-band.js +57 -0
- package/dist/system/_style-body-leading.js +21 -0
- package/dist/system/_style-body-size.js +30 -0
- package/dist/system/_style-body-weight.js +24 -0
- package/dist/system/_style-body.js +27 -0
- package/dist/system/_style-caption.js +19 -0
- package/dist/system/_style-card-pad.js +43 -0
- package/dist/system/_style-check.js +33 -0
- package/dist/system/_style-chip.js +103 -0
- package/dist/system/_style-code.js +13 -0
- package/dist/system/_style-collapse.js +14 -0
- package/dist/system/_style-control-face.js +29 -0
- package/dist/system/_style-control-label.js +22 -0
- package/dist/system/_style-control-step.js +22 -0
- package/dist/system/_style-control.js +76 -0
- package/dist/system/_style-data-face.js +28 -0
- package/dist/system/_style-description.js +23 -0
- package/dist/system/_style-eyebrow.js +43 -0
- package/dist/system/_style-footer-rule.js +47 -0
- package/dist/system/_style-gutter.js +17 -0
- package/dist/system/_style-help-ink.js +14 -0
- package/dist/system/_style-help.js +29 -0
- package/dist/system/_style-input-face.js +34 -0
- package/dist/system/_style-kbd.js +46 -0
- package/dist/system/_style-label-case.js +36 -0
- package/dist/system/_style-label-face.js +32 -0
- package/dist/system/_style-label-ink.js +29 -0
- package/dist/system/_style-label-leading.js +14 -0
- package/dist/system/_style-label-size.js +36 -0
- package/dist/system/_style-label-tracking.js +45 -0
- package/dist/system/_style-label-weight.js +40 -0
- package/dist/system/_style-lede.js +49 -0
- package/dist/system/_style-link.js +46 -0
- package/dist/system/_style-menu.js +30 -0
- package/dist/system/_style-nav-item.js +41 -0
- package/dist/system/_style-nav-voice.js +43 -0
- package/dist/system/_style-option.js +42 -0
- package/dist/system/_style-overlay-title.js +35 -0
- package/dist/system/_style-page-title.js +48 -0
- package/dist/system/_style-popover-pad.js +13 -0
- package/dist/system/_style-quiet-ink.js +13 -0
- package/dist/system/_style-row-pad.js +13 -0
- package/dist/system/_style-seam.js +43 -0
- package/dist/system/_style-section-rule.js +26 -0
- package/dist/system/_style-segment.js +30 -0
- package/dist/system/_style-segmented-control.js +86 -0
- package/dist/system/_style-selected.js +36 -0
- package/dist/system/_style-stage-marks.js +26 -0
- package/dist/system/_style-tab.js +71 -0
- package/dist/system/_style-textarea.js +21 -0
- package/dist/system/_style-title.js +37 -0
- package/dist/system/_style-tooltip.js +17 -0
- package/dist/system/density.d.ts +15 -5
- package/dist/system/density.js +188 -25
- package/dist/system/index.d.ts +2 -2
- package/dist/system/index.js +2 -2
- package/dist/system/overrides.d.ts +1 -0
- package/dist/system/overrides.js +151 -3
- package/dist/system/portal.d.ts +3 -2
- package/dist/system/portal.js +22 -10
- package/dist/system/prepaint.d.ts +21 -5
- package/dist/system/prepaint.js +3 -1
- package/dist/system/published.d.ts +1 -0
- package/dist/system/published.js +131 -0
- package/dist/system/theme-provider.d.ts +118 -21
- package/dist/system/theme-provider.js +362 -73
- package/dist/system/theme-registry.d.ts +2 -1
- package/dist/system/theme-registry.js +27 -10
- package/dist/system/use-density.js +4 -3
- package/dist/system/use-theme.d.ts +5 -2
- package/dist/system/use-theme.js +7 -4
- package/dist/system/vocabulary.js +2 -2
- package/dist/theming/create-theme.js +12 -6
- package/dist/theming/serialize.d.ts +34 -2
- package/dist/theming/serialize.js +86 -4
- package/manifest/components/accordion.json +7 -1
- package/manifest/components/agent-pile.json +3 -0
- package/manifest/components/alert-dialog.json +29 -3
- package/manifest/components/app-bar.json +19 -2
- package/manifest/components/app-shell.json +5 -0
- package/manifest/components/ask-box.json +3 -1
- package/manifest/components/autocomplete.json +38 -1
- package/manifest/components/band.json +7 -3
- package/manifest/components/bento.json +12 -1
- package/manifest/components/breadcrumb.json +8 -1
- package/manifest/components/button.json +27 -3
- package/manifest/components/calendar.json +7 -0
- package/manifest/components/card.json +22 -1
- package/manifest/components/carousel.json +4 -1
- package/manifest/components/channel-matrix.json +31 -3
- package/manifest/components/chart-tooltip-content.json +29 -3
- package/manifest/components/chat-empty-state.json +3 -1
- package/manifest/components/checkbox-group.json +14 -0
- package/manifest/components/checkbox.json +14 -0
- package/manifest/components/chip.json +16 -1
- package/manifest/components/clamp.json +3 -1
- package/manifest/components/code-block.json +10 -1
- package/manifest/components/collapsible.json +13 -2
- package/manifest/components/color-area.json +4 -2
- package/manifest/components/color-field.json +10 -0
- package/manifest/components/color-picker.json +10 -0
- package/manifest/components/color-slider.json +3 -1
- package/manifest/components/colors-section.json +9 -1
- package/manifest/components/combobox.json +38 -1
- package/manifest/components/command-palette.json +28 -3
- package/manifest/components/composer-actions.json +3 -0
- package/manifest/components/composer-attach-button.json +3 -0
- package/manifest/components/composer-attachment-chip.json +3 -0
- package/manifest/components/composer-attachments.json +3 -0
- package/manifest/components/composer-bar.json +3 -0
- package/manifest/components/composer-command-item.json +3 -0
- package/manifest/components/composer-context.json +3 -0
- package/manifest/components/composer-input.json +3 -0
- package/manifest/components/composer-menu-item.json +3 -0
- package/manifest/components/composer-menu.json +3 -0
- package/manifest/components/composer-model-item.json +3 -0
- package/manifest/components/composer-model-trigger.json +3 -0
- package/manifest/components/composer-person-item.json +3 -0
- package/manifest/components/composer-send.json +3 -0
- package/manifest/components/composer-toolbar.json +3 -0
- package/manifest/components/composer-voice-button.json +3 -0
- package/manifest/components/composer-voice.json +3 -0
- package/manifest/components/composer.json +10 -0
- package/manifest/components/confidence-marker.json +3 -1
- package/manifest/components/container.json +2 -1
- package/manifest/components/context-menu.json +29 -3
- package/manifest/components/conversation-search.json +3 -1
- package/manifest/components/cue-mark.json +2 -2
- package/manifest/components/cue-portal-frame.json +1 -1
- package/manifest/components/data-row.json +3 -1
- package/manifest/components/data-tree.json +3 -1
- package/manifest/components/date-field.json +10 -0
- package/manifest/components/date-picker.json +10 -0
- package/manifest/components/date-range-picker.json +10 -0
- package/manifest/components/delegation-card.json +3 -1
- package/manifest/components/density.json +15 -7
- package/manifest/components/description-list.json +6 -1
- package/manifest/components/dialog.json +30 -3
- package/manifest/components/disclosure.json +13 -2
- package/manifest/components/dmx-bar.json +28 -3
- package/manifest/components/dmx-strip.json +28 -3
- package/manifest/components/drawer.json +29 -3
- package/manifest/components/dropdown-menu.json +29 -3
- package/manifest/components/edit-message.json +3 -1
- package/manifest/components/elements-command-palette.json +3 -1
- package/manifest/components/elements-composer.json +3 -0
- package/manifest/components/empty-state-composer.json +3 -1
- package/manifest/components/empty-state-greeting.json +3 -1
- package/manifest/components/empty-state-suggestion.json +3 -1
- package/manifest/components/empty-state-suggestions.json +3 -1
- package/manifest/components/env-var-input.json +10 -1
- package/manifest/components/export-dialog.json +6 -1
- package/manifest/components/eyebrow.json +13 -2
- package/manifest/components/feedback-dialog.json +3 -0
- package/manifest/components/field-description.json +14 -0
- package/manifest/components/field-error.json +14 -0
- package/manifest/components/field-label.json +15 -1
- package/manifest/components/field.json +14 -0
- package/manifest/components/file-upload.json +3 -0
- package/manifest/components/footer.json +14 -1
- package/manifest/components/frames.json +14 -1
- package/manifest/components/hover-card.json +29 -3
- package/manifest/components/info-tip.json +3 -0
- package/manifest/components/input-group.json +10 -0
- package/manifest/components/input.json +10 -0
- package/manifest/components/item.json +3 -1
- package/manifest/components/kbd.json +10 -1
- package/manifest/components/ledger.json +9 -2
- package/manifest/components/link.json +10 -0
- package/manifest/components/log-viewer.json +3 -0
- package/manifest/components/map-answer.json +3 -1
- package/manifest/components/markdown-text.json +3 -0
- package/manifest/components/menubar.json +32 -4
- package/manifest/components/message-list.json +3 -0
- package/manifest/components/message.json +6 -1
- package/manifest/components/mobile-composer.json +3 -1
- package/manifest/components/multi-select.json +38 -1
- package/manifest/components/musical-time-input.json +10 -0
- package/manifest/components/navigation-menu.json +32 -3
- package/manifest/components/node-card.json +3 -0
- package/manifest/components/number-field.json +10 -1
- package/manifest/components/otp-field.json +9 -0
- package/manifest/components/page-shell.json +14 -0
- package/manifest/components/pagination.json +3 -0
- package/manifest/components/panel-header.json +10 -0
- package/manifest/components/panel.json +11 -1
- package/manifest/components/password-input.json +10 -1
- package/manifest/components/permission-scopes.json +3 -1
- package/manifest/components/piano-keyboard.json +3 -0
- package/manifest/components/popover.json +30 -3
- package/manifest/components/preset-section.json +9 -1
- package/manifest/components/preview.json +24 -10
- package/manifest/components/progress.json +6 -1
- package/manifest/components/prompt-library.json +3 -1
- package/manifest/components/queue-dock.json +3 -1
- package/manifest/components/radio-group.json +8 -0
- package/manifest/components/radio.json +8 -0
- package/manifest/components/rating.json +4 -1
- package/manifest/components/reasoning-panel.json +3 -1
- package/manifest/components/recommendation-card.json +1 -1
- package/manifest/components/resizable.json +4 -1
- package/manifest/components/revert-dock.json +3 -1
- package/manifest/components/row.json +5 -1
- package/manifest/components/scroll-area.json +4 -2
- package/manifest/components/scrollable-tabs-list.json +18 -0
- package/manifest/components/scrub-input.json +10 -1
- package/manifest/components/seam-cell.json +1 -0
- package/manifest/components/seam-grid.json +1 -0
- package/manifest/components/seam-list.json +5 -1
- package/manifest/components/search-input.json +10 -1
- package/manifest/components/section-header.json +15 -2
- package/manifest/components/segmented-control.json +16 -0
- package/manifest/components/select.json +17 -0
- package/manifest/components/settings-panel.json +3 -0
- package/manifest/components/shape-section.json +9 -1
- package/manifest/components/sheet.json +29 -3
- package/manifest/components/shimmer-label.json +3 -0
- package/manifest/components/sidebar.json +19 -2
- package/manifest/components/slider.json +8 -0
- package/manifest/components/sources.json +3 -1
- package/manifest/components/stat.json +9 -0
- package/manifest/components/status-bar.json +4 -0
- package/manifest/components/stepper.json +8 -0
- package/manifest/components/swap-label.json +3 -0
- package/manifest/components/switch.json +8 -0
- package/manifest/components/table-scroll-region.json +20 -2
- package/manifest/components/table.json +20 -2
- package/manifest/components/tabs.json +19 -1
- package/manifest/components/tags-input.json +38 -1
- package/manifest/components/terminal-frame.json +3 -0
- package/manifest/components/textarea.json +12 -0
- package/manifest/components/theme-configurator.json +29 -3
- package/manifest/components/theme-provider.json +31 -19
- package/manifest/components/thread-search.json +3 -1
- package/manifest/components/threshold-rail.json +3 -0
- package/manifest/components/time-field.json +10 -0
- package/manifest/components/toast.json +30 -2
- package/manifest/components/toggle.json +4 -0
- package/manifest/components/token-editor.json +6 -1
- package/manifest/components/tool-call-card.json +9 -2
- package/manifest/components/tool-call.json +3 -1
- package/manifest/components/tool-timeline.json +3 -1
- package/manifest/components/toolbar.json +3 -1
- package/manifest/components/tooltip.json +31 -3
- package/manifest/components/tree-visibility-toggle.json +3 -0
- package/manifest/components/tree.json +3 -0
- package/manifest/components/universe-grid.json +3 -0
- package/manifest/components/voice-conversation.json +3 -0
- package/manifest/components/work-collapse.json +3 -1
- package/manifest/manifest.json +204 -184
- package/manifest/tokens.json +241 -4
- package/package.json +5 -5
|
@@ -35,7 +35,7 @@ function DaySeparator({ messages, className, ...props }) {
|
|
|
35
35
|
}), /* @__PURE__ */ jsxs("div", {
|
|
36
36
|
className: cn("group flex items-baseline gap-2", message.role === "user" && "flex-row-reverse"),
|
|
37
37
|
children: [/* @__PURE__ */ jsx("span", {
|
|
38
|
-
className: cn("max-w-[80%] text-(length:--cue-text-body) leading-(--cue-leading-ui) break-words", message.role === "user" ? "bg-surface-1 rounded-
|
|
38
|
+
className: cn("max-w-[80%] text-(length:--cue-text-body) leading-(--cue-leading-ui) break-words", message.role === "user" ? "bg-surface-1 rounded-overlay px-3.5 py-2" : "text-fg-muted"),
|
|
39
39
|
children: message.text
|
|
40
40
|
}), /* @__PURE__ */ jsx("span", {
|
|
41
41
|
className: cn(mono, "text-transparent group-hover:text-fg-subtle shrink-0 tabular-nums transition-colors"),
|
package/dist/elements/diagram.js
CHANGED
|
@@ -18,7 +18,7 @@ import { MaximizeIcon, MinusIcon, PlusIcon, RotateCcwIcon } from "lucide-react";
|
|
|
18
18
|
function Diagram({ title, zoom, children, onZoomIn, onZoomOut, onReset, onExpand, className, ...props }) {
|
|
19
19
|
return /* @__PURE__ */ jsxs("div", {
|
|
20
20
|
"data-slot": "diagram",
|
|
21
|
-
className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-
|
|
21
|
+
className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-overlay", className),
|
|
22
22
|
...props,
|
|
23
23
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
24
24
|
className: "flex items-center gap-1 px-3 py-2",
|
|
@@ -22,12 +22,12 @@ function DocumentReference({ title, pages, anchors, activePage, onJump, classNam
|
|
|
22
22
|
const currentIndex = anchors.findIndex((anchor) => anchor.page === activePage);
|
|
23
23
|
return /* @__PURE__ */ jsxs("div", {
|
|
24
24
|
"data-slot": "document-reference",
|
|
25
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-
|
|
25
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-3.5", className),
|
|
26
26
|
...props,
|
|
27
27
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
28
28
|
className: "flex items-center gap-2.5",
|
|
29
29
|
children: [/* @__PURE__ */ jsx("span", {
|
|
30
|
-
className: "bg-surface-1 text-fg-muted flex size-8 shrink-0 items-center justify-center rounded-
|
|
30
|
+
className: "bg-surface-1 text-fg-muted flex size-8 shrink-0 items-center justify-center rounded-surface",
|
|
31
31
|
children: /* @__PURE__ */ jsx(FileTextIcon, { className: "size-3.5" })
|
|
32
32
|
}), /* @__PURE__ */ jsxs("div", {
|
|
33
33
|
className: "flex min-w-0 flex-1 flex-col",
|
|
@@ -50,7 +50,7 @@ function DocumentReference({ title, pages, anchors, activePage, onJump, classNam
|
|
|
50
50
|
type: "button",
|
|
51
51
|
"aria-current": i === currentIndex || void 0,
|
|
52
52
|
onClick: () => onJump?.(anchor.page),
|
|
53
|
-
className: cn("flex flex-col gap-1 rounded-
|
|
53
|
+
className: cn("flex flex-col gap-1 rounded-surface px-2.5 py-2 text-start transition-colors", anchor.page === activePage ? field : "hover:bg-surface-1"),
|
|
54
54
|
children: [/* @__PURE__ */ jsxs("span", {
|
|
55
55
|
className: cn(mono, "text-fg-subtle"),
|
|
56
56
|
children: ["p. ", anchor.page]
|
|
@@ -20,7 +20,7 @@ import { PencilLineIcon, XIcon } from "lucide-react";
|
|
|
20
20
|
function DraftRestore({ draft, savedAt, onRestore, onDiscard, className, ...props }) {
|
|
21
21
|
return /* @__PURE__ */ jsxs("div", {
|
|
22
22
|
"data-slot": "draft-restore",
|
|
23
|
-
className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in flex w-full max-w-sm items-center gap-2.5 rounded-
|
|
23
|
+
className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in flex w-full max-w-sm items-center gap-2.5 rounded-overlay py-2 pr-2 pl-3.5 duration-300", className),
|
|
24
24
|
...props,
|
|
25
25
|
children: [
|
|
26
26
|
/* @__PURE__ */ jsx(PencilLineIcon, { className: "text-fg-subtle size-3.5 shrink-0" }),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
3
4
|
import { field, inkButton, paper } from "./surfaces.js";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { AlertTriangleIcon } from "lucide-react";
|
|
@@ -28,13 +29,13 @@ function EditMessage({ value, discardedReplies, editing, onValueChange, onSave,
|
|
|
28
29
|
children: /* @__PURE__ */ jsx("button", {
|
|
29
30
|
type: "button",
|
|
30
31
|
onClick: onStartEdit,
|
|
31
|
-
className: cn(field, "hover:bg-surface-2 max-w-[85%] rounded-
|
|
32
|
+
className: cn(field, "hover:bg-surface-2 max-w-[85%] rounded-overlay px-3.5 py-2.5 text-start text-(length:--cue-text-body) transition-colors"),
|
|
32
33
|
children: value
|
|
33
34
|
})
|
|
34
35
|
});
|
|
35
36
|
return /* @__PURE__ */ jsxs("div", {
|
|
36
37
|
"data-slot": "edit-message",
|
|
37
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-
|
|
38
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-3.5", className),
|
|
38
39
|
...props,
|
|
39
40
|
children: [
|
|
40
41
|
/* @__PURE__ */ jsx("textarea", {
|
|
@@ -42,7 +43,7 @@ function EditMessage({ value, discardedReplies, editing, onValueChange, onSave,
|
|
|
42
43
|
onChange: (event) => onValueChange?.(event.target.value),
|
|
43
44
|
rows: 2,
|
|
44
45
|
"aria-label": "Edit your message",
|
|
45
|
-
className: cn(field,
|
|
46
|
+
className: cn(field, `text-fg ${FOCUS_RING} resize-none rounded-surface px-3 py-2.5 text-(length:--cue-text-body) leading-(--cue-leading-ui) outline-none`)
|
|
46
47
|
}),
|
|
47
48
|
discardedReplies > 0 && /* @__PURE__ */ jsxs("div", {
|
|
48
49
|
className: "flex items-center gap-2 text-warn",
|
|
@@ -284,17 +284,35 @@
|
|
|
284
284
|
* carries for `--radius-*`:
|
|
285
285
|
*
|
|
286
286
|
* - **Absent by choice:** `--cue-busy`, `--cue-info`, `--cue-selection`,
|
|
287
|
-
* `--cue-
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
291
|
-
*
|
|
287
|
+
* `--cue-scrim`. No element in this family reads them — the codemod maps
|
|
288
|
+
* upstream's blue onto `--cue-stream`, and upstream has no selection or
|
|
289
|
+
* scrim of its own to transcribe. The consequence is worth knowing before
|
|
290
|
+
* you mix families: a *cue* component rendered inside an island — a
|
|
291
|
+
* `Chip tone="busy"`, a `Toast`
|
|
292
292
|
* — paints half in each palette, its ground and ink from assistant-ui and its
|
|
293
293
|
* tone from the console's theme. That is a mixed surface, not a bug, and the
|
|
294
294
|
* island is not the place to fix it: re-pointing the whole contract here
|
|
295
295
|
* would make this a theme, which is exactly what `AgentSurface` is documented
|
|
296
296
|
* not to be.
|
|
297
297
|
*
|
|
298
|
+
* `--cue-focus` used to be on this list too, on the reasoning that no
|
|
299
|
+
* element in this family drew a ring. Spec 2026-09-26-looks-fidelity §3.12
|
|
300
|
+
* (F-9) made that false: `_focus-ring.ts` gave every one of this system's
|
|
301
|
+
* focusable elements a ring drawn from `--cue-focus` rather than restated
|
|
302
|
+
* per site, this family's included, and the two were never one and the same
|
|
303
|
+
* before then only by coincidence — a fixed 2px ring in `--cue-accent`,
|
|
304
|
+
* which this island already re-points to its own ink for exactly the
|
|
305
|
+
* reasons above. Left off this island, an element inside it would draw the
|
|
306
|
+
* ring in the OUTER console theme's `--cue-focus` instead of the island's —
|
|
307
|
+
* under a theme where the two differ (ten of the thirty shipped blocks),
|
|
308
|
+
* the one visible seam a reader would find is a focus ring in the wrong
|
|
309
|
+
* palette on an otherwise self-consistent surface. So it is set below,
|
|
310
|
+
* equal to the island's own `--cue-fg` exactly as `--cue-accent` already
|
|
311
|
+
* is: not a second colour to keep in step, the same one the ring drew
|
|
312
|
+
* before this module existed, kept in step with it now that the module
|
|
313
|
+
* names it explicitly.
|
|
314
|
+
*
|
|
315
|
+
|
|
298
316
|
* - **Absent by construction:** every derived token —
|
|
299
317
|
* `--cue-ok-soft`, `--cue-stream-border`, `--cue-accent-soft`, `--cue-hair`,
|
|
300
318
|
* `--cue-row-hover` and the rest. They cannot follow the island. Each is a
|
|
@@ -326,6 +344,7 @@
|
|
|
326
344
|
--cue-border-strong: color-mix(in oklab, var(--cue-fg) 20%, transparent);
|
|
327
345
|
--cue-border-overlay: color-mix(in oklab, oklch(1 0 0 / 10%) 60%, transparent);
|
|
328
346
|
--cue-accent: var(--cue-fg);
|
|
347
|
+
--cue-focus: var(--cue-fg);
|
|
329
348
|
--cue-accent-hover: color-mix(in oklab, var(--cue-fg) 90%, transparent);
|
|
330
349
|
--cue-accent-fg: var(--cue-bg);
|
|
331
350
|
--cue-ok: oklch(0.765 0.177 163.223);
|
|
@@ -365,6 +384,7 @@
|
|
|
365
384
|
--cue-border-strong: color-mix(in oklab, var(--cue-fg) 20%, transparent);
|
|
366
385
|
--cue-border-overlay: color-mix(in oklab, oklch(0.92 0.004 286.32) 60%, transparent);
|
|
367
386
|
--cue-accent: var(--cue-fg);
|
|
387
|
+
--cue-focus: var(--cue-fg);
|
|
368
388
|
--cue-accent-hover: color-mix(in oklab, var(--cue-fg) 90%, transparent);
|
|
369
389
|
--cue-accent-fg: var(--cue-bg);
|
|
370
390
|
--cue-ok: oklch(0.696 0.17 162.48);
|
|
@@ -395,6 +415,7 @@
|
|
|
395
415
|
--cue-border-strong: color-mix(in oklab, var(--cue-fg) 20%, transparent);
|
|
396
416
|
--cue-border-overlay: color-mix(in oklab, oklch(0.92 0.004 286.32) 60%, transparent);
|
|
397
417
|
--cue-accent: var(--cue-fg);
|
|
418
|
+
--cue-focus: var(--cue-fg);
|
|
398
419
|
--cue-accent-hover: color-mix(in oklab, var(--cue-fg) 90%, transparent);
|
|
399
420
|
--cue-accent-fg: var(--cue-bg);
|
|
400
421
|
--cue-ok: oklch(0.696 0.17 162.48);
|
|
@@ -22,14 +22,14 @@ import { CheckIcon, PlugIcon, XIcon } from "lucide-react";
|
|
|
22
22
|
function ElicitationForm({ server, message, fields, state, onAccept, onDecline, className, ...props }) {
|
|
23
23
|
return /* @__PURE__ */ jsxs("div", {
|
|
24
24
|
"data-slot": "elicitation-form",
|
|
25
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-
|
|
25
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3.5 rounded-overlay p-4", className),
|
|
26
26
|
...props,
|
|
27
27
|
children: [
|
|
28
28
|
/* @__PURE__ */ jsxs("div", {
|
|
29
29
|
className: "flex items-center gap-2.5",
|
|
30
30
|
children: [
|
|
31
31
|
/* @__PURE__ */ jsx("span", {
|
|
32
|
-
className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-
|
|
32
|
+
className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-surface",
|
|
33
33
|
children: /* @__PURE__ */ jsx(PlugIcon, { className: "size-3.5" })
|
|
34
34
|
}),
|
|
35
35
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -73,7 +73,7 @@ function ElicitationForm({ server, message, fields, state, onAccept, onDecline,
|
|
|
73
73
|
children: item.value === "true" ? "On" : "Off"
|
|
74
74
|
})]
|
|
75
75
|
}) : /* @__PURE__ */ jsx("span", {
|
|
76
|
-
className: cn(field, "text-fg-muted rounded-
|
|
76
|
+
className: cn(field, "text-fg-muted rounded-surface px-2.5 py-1.5 text-(length:--cue-text-ui)"),
|
|
77
77
|
children: item.value
|
|
78
78
|
})]
|
|
79
79
|
}, item.name))
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
3
4
|
import { inkButton, paper } from "./surfaces.js";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { ArrowUpIcon } from "lucide-react";
|
|
@@ -63,7 +64,7 @@ function EmptyStateSuggestion({ index = 0, className, style, ...props }) {
|
|
|
63
64
|
animationDelay: `${120 + index * 70}ms`,
|
|
64
65
|
...style
|
|
65
66
|
},
|
|
66
|
-
className: cn(paper,
|
|
67
|
+
className: cn(paper, `cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in cue-elements-fill-mode-both ${FOCUS_RING} rounded-full px-4 py-2 text-(length:--cue-text-body) transition-transform duration-500 outline-none hover:-translate-y-px active:scale-[0.96] motion-reduce:animate-none`, className),
|
|
67
68
|
...props
|
|
68
69
|
});
|
|
69
70
|
}
|
|
@@ -31,7 +31,7 @@ function ErrorState({ title, detail, retrying, onRetry, className, ...props }) {
|
|
|
31
31
|
return /* @__PURE__ */ jsxs("div", {
|
|
32
32
|
"data-slot": "error-state",
|
|
33
33
|
role: "alert",
|
|
34
|
-
className: cn("cue-elements-fade-in cue-elements-animate-in flex w-full max-w-sm items-start gap-2.5 rounded-
|
|
34
|
+
className: cn("cue-elements-fade-in cue-elements-animate-in flex w-full max-w-sm items-start gap-2.5 rounded-overlay bg-danger/10 px-4 py-3 text-(length:--cue-text-body) duration-300 motion-reduce:animate-none", className),
|
|
35
35
|
...props,
|
|
36
36
|
children: [
|
|
37
37
|
/* @__PURE__ */ jsx(CircleAlertIcon, { className: "mt-0.5 size-4 shrink-0 text-danger/80" }),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
3
4
|
import { field, inkButton, mono, paper } from "./surfaces.js";
|
|
4
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { CheckIcon, ThumbsDownIcon } from "lucide-react";
|
|
@@ -23,7 +24,7 @@ import { CheckIcon, ThumbsDownIcon } from "lucide-react";
|
|
|
23
24
|
function FeedbackDialog({ reasons, selected, note, sent, onToggleReason, onNoteChange, onSubmit, className, ...props }) {
|
|
24
25
|
return /* @__PURE__ */ jsxs("div", {
|
|
25
26
|
"data-slot": "feedback-dialog",
|
|
26
|
-
className: cn(paper, "flex w-full max-w-sm rounded-
|
|
27
|
+
className: cn(paper, "flex w-full max-w-sm rounded-overlay p-4", sent ? "items-center gap-2.5 text-(length:--cue-text-body)" : "flex-col gap-3", className),
|
|
27
28
|
...props,
|
|
28
29
|
children: [/* @__PURE__ */ jsx("div", {
|
|
29
30
|
role: "status",
|
|
@@ -34,7 +35,7 @@ function FeedbackDialog({ reasons, selected, note, sent, onToggleReason, onNoteC
|
|
|
34
35
|
className: "flex items-center gap-2.5",
|
|
35
36
|
children: [
|
|
36
37
|
/* @__PURE__ */ jsx("span", {
|
|
37
|
-
className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-
|
|
38
|
+
className: "bg-surface-1 text-fg-muted flex size-7 shrink-0 items-center justify-center rounded-surface",
|
|
38
39
|
children: /* @__PURE__ */ jsx(ThumbsDownIcon, { className: "size-3.5" })
|
|
39
40
|
}),
|
|
40
41
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -66,7 +67,7 @@ function FeedbackDialog({ reasons, selected, note, sent, onToggleReason, onNoteC
|
|
|
66
67
|
rows: 2,
|
|
67
68
|
placeholder: "Anything else?",
|
|
68
69
|
"aria-label": "Anything else?",
|
|
69
|
-
className: cn(field,
|
|
70
|
+
className: cn(field, `text-fg-muted placeholder:text-fg-subtle ${FOCUS_RING} resize-none rounded-surface px-3 py-2 text-(length:--cue-text-ui) outline-none`)
|
|
70
71
|
}),
|
|
71
72
|
/* @__PURE__ */ jsx("button", {
|
|
72
73
|
type: "button",
|
|
@@ -22,7 +22,7 @@ function FileTree({ nodes, visibleCount, totalAdditions, totalDeletions, classNa
|
|
|
22
22
|
const files = nodes.filter((node) => node.kind === "file").length;
|
|
23
23
|
return /* @__PURE__ */ jsxs("div", {
|
|
24
24
|
"data-slot": "file-tree",
|
|
25
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-2 rounded-
|
|
25
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-2 rounded-overlay p-3.5", className),
|
|
26
26
|
...props,
|
|
27
27
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
28
28
|
className: "flex items-baseline justify-between px-1",
|
|
@@ -46,7 +46,7 @@ function FileTree({ nodes, visibleCount, totalAdditions, totalDeletions, classNa
|
|
|
46
46
|
}), /* @__PURE__ */ jsx("div", {
|
|
47
47
|
className: "flex flex-col",
|
|
48
48
|
children: take(nodes, visibleCount).map((node) => /* @__PURE__ */ jsx("div", {
|
|
49
|
-
className: "cue-elements-fade-in cue-elements-slide-in-from-left-1 cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-1 flex items-center gap-2 rounded-
|
|
49
|
+
className: "cue-elements-fade-in cue-elements-slide-in-from-left-1 cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-1 flex items-center gap-2 rounded-surface px-1 py-1 text-(length:--cue-text-body) transition-colors duration-300",
|
|
50
50
|
style: { paddingInlineStart: `${.25 + node.depth * .85}rem` },
|
|
51
51
|
children: node.kind === "folder" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
52
52
|
/* @__PURE__ */ jsx(ChevronDownIcon, { className: "text-fg-subtle size-3 shrink-0" }),
|
|
@@ -29,7 +29,7 @@ function FlowGraph({ nodes, edges, visibleCount, className, ...props }) {
|
|
|
29
29
|
});
|
|
30
30
|
return /* @__PURE__ */ jsx("div", {
|
|
31
31
|
"data-slot": "flow-graph",
|
|
32
|
-
className: cn(paper, "w-full max-w-md overflow-x-auto rounded-
|
|
32
|
+
className: cn(paper, "w-full max-w-md overflow-x-auto rounded-overlay p-4", className),
|
|
33
33
|
...props,
|
|
34
34
|
children: /* @__PURE__ */ jsxs("div", {
|
|
35
35
|
className: "relative",
|
|
@@ -59,7 +59,7 @@ function FlowGraph({ nodes, edges, visibleCount, className, ...props }) {
|
|
|
59
59
|
}, `${edge.from}-${edge.to}`);
|
|
60
60
|
})
|
|
61
61
|
}), shown.map((node) => /* @__PURE__ */ jsx("div", {
|
|
62
|
-
className: cn("cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-animate-in cue-elements-fill-mode-both absolute flex items-center justify-center rounded-
|
|
62
|
+
className: cn("cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-animate-in cue-elements-fill-mode-both absolute flex items-center justify-center rounded-surface border text-center text-(length:--cue-text-ui) leading-tight duration-300", node.state === "done" && "border-border bg-surface-1 text-fg-muted", node.state === "active" && "text-fg border-stream/30 bg-stream/10", node.state === "pending" && "border-border text-fg-subtle border-dashed"),
|
|
63
63
|
style: {
|
|
64
64
|
left: node.column * COL_W,
|
|
65
65
|
top: node.row * ROW_H,
|
|
@@ -20,14 +20,14 @@ import { ShieldIcon } from "lucide-react";
|
|
|
20
20
|
function GuardrailNotice({ title, explanation, policy, alternatives, onPick, className, ...props }) {
|
|
21
21
|
return /* @__PURE__ */ jsxs("div", {
|
|
22
22
|
"data-slot": "guardrail-notice",
|
|
23
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-
|
|
23
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
|
|
24
24
|
...props,
|
|
25
25
|
children: [
|
|
26
26
|
/* @__PURE__ */ jsxs("div", {
|
|
27
27
|
className: "flex items-center gap-2.5",
|
|
28
28
|
children: [
|
|
29
29
|
/* @__PURE__ */ jsx("span", {
|
|
30
|
-
className: "flex size-7 shrink-0 items-center justify-center rounded-
|
|
30
|
+
className: "flex size-7 shrink-0 items-center justify-center rounded-surface bg-warn/12 text-warn",
|
|
31
31
|
children: /* @__PURE__ */ jsx(ShieldIcon, { className: "size-3.5" })
|
|
32
32
|
}),
|
|
33
33
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -52,7 +52,7 @@ function GuardrailNotice({ title, explanation, policy, alternatives, onPick, cla
|
|
|
52
52
|
}), alternatives.map((alternative) => /* @__PURE__ */ jsx("button", {
|
|
53
53
|
type: "button",
|
|
54
54
|
onClick: () => onPick?.(alternative),
|
|
55
|
-
className: "hover:bg-surface-1 text-fg-muted hover:text-fg -mx-1.5 rounded-
|
|
55
|
+
className: "hover:bg-surface-1 text-fg-muted hover:text-fg -mx-1.5 rounded-surface px-1.5 py-1 text-start text-(length:--cue-text-body) transition-colors",
|
|
56
56
|
children: alternative
|
|
57
57
|
}, alternative))]
|
|
58
58
|
})
|
|
@@ -19,7 +19,7 @@ function ImageGeneration({ prompt, generating, className, ...props }) {
|
|
|
19
19
|
className: cn("flex w-52 flex-col gap-2.5", className),
|
|
20
20
|
...props,
|
|
21
21
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
22
|
-
className: cn(paper, "relative aspect-square w-full overflow-hidden rounded-
|
|
22
|
+
className: cn(paper, "relative aspect-square w-full overflow-hidden rounded-overlay"),
|
|
23
23
|
children: [
|
|
24
24
|
/* @__PURE__ */ jsx("div", {
|
|
25
25
|
className: "absolute inset-0 grid grid-cols-8 place-items-center p-6",
|
|
@@ -13,7 +13,7 @@ function Citation({ index, source, open, onOpenChange }) {
|
|
|
13
13
|
children: [/* @__PURE__ */ jsx(PreviewCard.Trigger, {
|
|
14
14
|
delay: 0,
|
|
15
15
|
render: /* @__PURE__ */ jsx("button", { type: "button" }),
|
|
16
|
-
className: cn("mx-0.5 inline-flex h-4 min-w-4 translate-y-[-2px] cursor-default items-center justify-center rounded-
|
|
16
|
+
className: cn("mx-0.5 inline-flex h-4 min-w-4 translate-y-[-2px] cursor-default items-center justify-center rounded-control px-1 align-middle font-mono text-(length:--cue-text-micro) font-medium tabular-nums transition-colors", open ? "bg-accent text-accent-fg" : "bg-surface-2 text-fg-muted hover:text-fg"),
|
|
17
17
|
children: index + 1
|
|
18
18
|
}), /* @__PURE__ */ jsx(PreviewCard.Portal, {
|
|
19
19
|
...portalProps,
|
|
@@ -21,12 +21,12 @@ function Citation({ index, source, open, onOpenChange }) {
|
|
|
21
21
|
side: "top",
|
|
22
22
|
sideOffset: 8,
|
|
23
23
|
children: /* @__PURE__ */ jsxs(PreviewCard.Popup, {
|
|
24
|
-
className: cn(floating, "z-50 w-64 origin-(--transform-origin) rounded-
|
|
24
|
+
className: cn(floating, "z-50 w-64 origin-(--transform-origin) rounded-overlay p-3.5 outline-none", "transition-[opacity,scale] duration-200 ease-[cubic-bezier(0.23,1,0.32,1)] motion-reduce:transition-none", "data-[starting-style]:scale-[0.97] data-[starting-style]:opacity-0", "data-[ending-style]:scale-[0.97] data-[ending-style]:opacity-0"),
|
|
25
25
|
children: [
|
|
26
26
|
/* @__PURE__ */ jsxs("div", {
|
|
27
27
|
className: "flex items-center gap-1.5",
|
|
28
28
|
children: [/* @__PURE__ */ jsx("span", {
|
|
29
|
-
className: "bg-surface-2 text-fg-muted flex size-4 items-center justify-center rounded-
|
|
29
|
+
className: "bg-surface-2 text-fg-muted flex size-4 items-center justify-center rounded-control text-(length:--cue-text-micro) font-medium",
|
|
30
30
|
children: source.domain[0]?.toUpperCase()
|
|
31
31
|
}), /* @__PURE__ */ jsx("span", {
|
|
32
32
|
className: cn(mono, "text-fg-subtle"),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
-
import { mono, paper } from "./surfaces.js";
|
|
3
|
+
import { ghostButton, mono, paper } from "./surfaces.js";
|
|
4
4
|
import { clamp, pct, progressOf, take } from "./range.js";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { CheckIcon, Loader2Icon, XIcon } from "lucide-react";
|
|
@@ -29,7 +29,7 @@ function JobProgress({ title, stages, stageIndex, stageProgress, eta, onCancel,
|
|
|
29
29
|
const finished = stage >= stages.length;
|
|
30
30
|
return /* @__PURE__ */ jsxs("div", {
|
|
31
31
|
"data-slot": "job-progress",
|
|
32
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-
|
|
32
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
|
|
33
33
|
...props,
|
|
34
34
|
children: [
|
|
35
35
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -48,7 +48,7 @@ function JobProgress({ title, stages, stageIndex, stageProgress, eta, onCancel,
|
|
|
48
48
|
type: "button",
|
|
49
49
|
"aria-label": "Cancel the job",
|
|
50
50
|
onClick: onCancel,
|
|
51
|
-
className: cn(
|
|
51
|
+
className: cn(ghostButton, "size-6 shrink-0"),
|
|
52
52
|
children: /* @__PURE__ */ jsx(XIcon, { className: "size-3.5" })
|
|
53
53
|
})
|
|
54
54
|
]
|
|
@@ -24,7 +24,7 @@ function LauncherBubble({ open, unread, greeting, prompts, onToggle, onPick, onS
|
|
|
24
24
|
className: cn("flex w-full max-w-[19rem] flex-col items-end gap-2.5", className),
|
|
25
25
|
...props,
|
|
26
26
|
children: [open && /* @__PURE__ */ jsxs("div", {
|
|
27
|
-
className: cn("bg-surface-2 border border-border-overlay", "cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-slide-in-from-bottom-2 cue-elements-animate-in flex w-full flex-col gap-3 rounded-
|
|
27
|
+
className: cn("bg-surface-2 border border-border-overlay", "cue-elements-fade-in cue-elements-zoom-in-95 cue-elements-slide-in-from-bottom-2 cue-elements-animate-in flex w-full flex-col gap-3 rounded-overlay p-4 duration-200"),
|
|
28
28
|
children: [
|
|
29
29
|
/* @__PURE__ */ jsxs("div", {
|
|
30
30
|
className: "flex flex-col gap-1",
|
|
@@ -41,7 +41,7 @@ function LauncherBubble({ open, unread, greeting, prompts, onToggle, onPick, onS
|
|
|
41
41
|
children: prompts.map((prompt) => /* @__PURE__ */ jsx("button", {
|
|
42
42
|
type: "button",
|
|
43
43
|
onClick: () => onPick?.(prompt),
|
|
44
|
-
className: cn("bg-fg/[0.06]", "hover:bg-surface-2 text-fg-muted rounded-
|
|
44
|
+
className: cn("bg-fg/[0.06]", "hover:bg-surface-2 text-fg-muted rounded-surface px-3 py-2 text-start text-(length:--cue-text-body) transition-colors"),
|
|
45
45
|
children: prompt
|
|
46
46
|
}, prompt))
|
|
47
47
|
}),
|
|
@@ -6,7 +6,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
const CELL_SHAPES = {
|
|
7
7
|
dots: "rounded-full",
|
|
8
8
|
squares: "rounded-none",
|
|
9
|
-
rounded: "rounded-
|
|
9
|
+
rounded: "rounded-control"
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* The wait before there is anything to show. A nine-cell matrix keeps time under a
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
3
4
|
import { field, mono, paper } from "./surfaces.js";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
//#region src/elements/map-answer.tsx
|
|
@@ -15,7 +16,7 @@ function MapAnswer({ pins, activeId, route, onSelect, className, ...props }) {
|
|
|
15
16
|
const path = pins.map((pin) => `${pin.x},${pin.y}`).join(" ");
|
|
16
17
|
return /* @__PURE__ */ jsxs("div", {
|
|
17
18
|
"data-slot": "map-answer",
|
|
18
|
-
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-
|
|
19
|
+
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-overlay", className),
|
|
19
20
|
...props,
|
|
20
21
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
21
22
|
className: cn(field, "relative h-40"),
|
|
@@ -64,7 +65,7 @@ function MapAnswer({ pins, activeId, route, onSelect, className, ...props }) {
|
|
|
64
65
|
"aria-label": pin.label,
|
|
65
66
|
"aria-current": pin.id === activeId || void 0,
|
|
66
67
|
onClick: () => onSelect?.(pin.id),
|
|
67
|
-
className:
|
|
68
|
+
className: `${FOCUS_RING} absolute flex size-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full outline-none`,
|
|
68
69
|
style: {
|
|
69
70
|
left: `${pin.x}%`,
|
|
70
71
|
top: `${pin.y}%`
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
3
4
|
import { codeScroll, codeSurface, field, mono } from "./surfaces.js";
|
|
4
5
|
import * as React from "react";
|
|
5
6
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -452,7 +453,7 @@ function markdownComponents(options) {
|
|
|
452
453
|
title,
|
|
453
454
|
target,
|
|
454
455
|
rel: "noopener noreferrer nofollow",
|
|
455
|
-
className:
|
|
456
|
+
className: `text-accent underline underline-offset-2 ${FOCUS_RING}`,
|
|
456
457
|
children
|
|
457
458
|
}),
|
|
458
459
|
strong: ({ children }) => /* @__PURE__ */ jsx("strong", {
|
|
@@ -503,11 +504,11 @@ function markdownComponents(options) {
|
|
|
503
504
|
loading: "lazy",
|
|
504
505
|
decoding: "async",
|
|
505
506
|
referrerPolicy: "no-referrer",
|
|
506
|
-
className: "max-w-full rounded-
|
|
507
|
+
className: "max-w-full rounded-control border border-border"
|
|
507
508
|
}),
|
|
508
509
|
code: ({ children, className: codeClass }) => /* @__PURE__ */ jsx("code", {
|
|
509
510
|
"data-slot": "markdown-code",
|
|
510
|
-
className: cn(mono, "rounded-
|
|
511
|
+
className: cn(mono, "rounded-control [pre_&]:rounded-none [pre_&]:bg-transparent [pre_&]:px-0 [pre_&]:py-0", field, "px-[0.35em] py-[0.1em]", codeClass),
|
|
511
512
|
children
|
|
512
513
|
}),
|
|
513
514
|
pre: ({ children, node }) => {
|
|
@@ -515,7 +516,7 @@ function markdownComponents(options) {
|
|
|
515
516
|
return /* @__PURE__ */ jsx("pre", {
|
|
516
517
|
"data-slot": "markdown-code-block",
|
|
517
518
|
"data-language": block.language,
|
|
518
|
-
className: cn("m-0 rounded-
|
|
519
|
+
className: cn("m-0 rounded-control border border-border p-(--cue-space-3)", field, codeScroll),
|
|
519
520
|
children: renderCodeBlock === void 0 ? children : /* @__PURE__ */ jsx("span", {
|
|
520
521
|
className: codeSurface,
|
|
521
522
|
children: renderCodeBlock(block)
|
|
@@ -15,7 +15,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
function MathBlock({ label, steps, visibleSteps, className, ...props }) {
|
|
16
16
|
return /* @__PURE__ */ jsxs("div", {
|
|
17
17
|
"data-slot": "math-block",
|
|
18
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-
|
|
18
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-2.5 rounded-overlay p-4", className),
|
|
19
19
|
...props,
|
|
20
20
|
children: [label && /* @__PURE__ */ jsx("span", {
|
|
21
21
|
className: cn("font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-subtle"),
|
|
@@ -34,7 +34,7 @@ function McpServerPanel({ servers, expandedId, onToggle, onAuthorize, className,
|
|
|
34
34
|
const connected = servers.filter((server) => server.status === "connected").length;
|
|
35
35
|
return /* @__PURE__ */ jsxs("div", {
|
|
36
36
|
"data-slot": "mcp-server-panel",
|
|
37
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-
|
|
37
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-1 rounded-overlay p-3", className),
|
|
38
38
|
...props,
|
|
39
39
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
40
40
|
className: "flex items-baseline justify-between px-1 pb-1",
|
|
@@ -58,7 +58,7 @@ function McpServerPanel({ servers, expandedId, onToggle, onAuthorize, className,
|
|
|
58
58
|
type: "button",
|
|
59
59
|
"aria-expanded": expanded,
|
|
60
60
|
onClick: () => onToggle?.(server.id),
|
|
61
|
-
className: "hover:bg-surface-1 flex items-center gap-2.5 rounded-
|
|
61
|
+
className: "hover:bg-surface-1 flex items-center gap-2.5 rounded-surface px-1.5 py-2 text-start transition-colors",
|
|
62
62
|
children: [
|
|
63
63
|
/* @__PURE__ */ jsx(ChevronRightIcon, { className: cn("text-fg-subtle size-3 shrink-0 transition-transform duration-200 motion-reduce:transition-none", expanded && "rotate-90") }),
|
|
64
64
|
/* @__PURE__ */ jsx(PlugIcon, { className: "text-fg-subtle size-3.5 shrink-0" }),
|
|
@@ -102,7 +102,7 @@ function McpServerPanel({ servers, expandedId, onToggle, onAuthorize, className,
|
|
|
102
102
|
}), /* @__PURE__ */ jsx("div", {
|
|
103
103
|
className: "flex flex-wrap gap-1",
|
|
104
104
|
children: server.tools.map((tool) => /* @__PURE__ */ jsx("span", {
|
|
105
|
-
className: cn("bg-fg/[0.06]", "font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-muted rounded-
|
|
105
|
+
className: cn("bg-fg/[0.06]", "font-mono text-(length:--cue-text-label) tracking-tight", "text-fg-muted rounded-control px-1.5 py-0.5"),
|
|
106
106
|
children: tool
|
|
107
107
|
}, tool))
|
|
108
108
|
})]
|
|
@@ -17,11 +17,11 @@ function MessageAttachments({ attachments, onOpen, className, ...props }) {
|
|
|
17
17
|
children: attachments.map((item) => item.kind === "image" ? /* @__PURE__ */ jsxs("button", {
|
|
18
18
|
type: "button",
|
|
19
19
|
onClick: () => onOpen?.(item.id),
|
|
20
|
-
className: cn(paper, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both group flex w-full items-center gap-3 overflow-hidden rounded-
|
|
20
|
+
className: cn(paper, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both group flex w-full items-center gap-3 overflow-hidden rounded-overlay p-2 text-start duration-300"),
|
|
21
21
|
children: [
|
|
22
22
|
/* @__PURE__ */ jsx("span", {
|
|
23
23
|
"aria-hidden": true,
|
|
24
|
-
className: "size-12 shrink-0 rounded-
|
|
24
|
+
className: "size-12 shrink-0 rounded-surface bg-cover bg-center transition-transform duration-300 group-hover:scale-[1.04] motion-reduce:transition-none",
|
|
25
25
|
style: {
|
|
26
26
|
backgroundImage: item.swatch,
|
|
27
27
|
backgroundColor: "var(--cue-fg)"
|
|
@@ -42,9 +42,9 @@ function MessageAttachments({ attachments, onOpen, className, ...props }) {
|
|
|
42
42
|
}, item.id) : /* @__PURE__ */ jsxs("button", {
|
|
43
43
|
type: "button",
|
|
44
44
|
onClick: () => onOpen?.(item.id),
|
|
45
|
-
className: cn(field, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-2 flex w-full items-center gap-2.5 rounded-
|
|
45
|
+
className: cn(field, "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-2 flex w-full items-center gap-2.5 rounded-overlay px-3 py-2.5 text-start transition-colors duration-300"),
|
|
46
46
|
children: [/* @__PURE__ */ jsx("span", {
|
|
47
|
-
className: "bg-bg text-fg-muted flex size-8 shrink-0 items-center justify-center rounded-
|
|
47
|
+
className: "bg-bg text-fg-muted flex size-8 shrink-0 items-center justify-center rounded-surface",
|
|
48
48
|
children: item.kind === "document" ? /* @__PURE__ */ jsx(FileTextIcon, { className: "size-3.5" }) : /* @__PURE__ */ jsx(PaperclipIcon, { className: "size-3.5" })
|
|
49
49
|
}), /* @__PURE__ */ jsxs("span", {
|
|
50
50
|
className: "flex min-w-0 flex-1 flex-col gap-0.5",
|
|
@@ -25,7 +25,7 @@ function MessagePair({ userMessage, words, visibleWords, streaming, variant = "b
|
|
|
25
25
|
className: cn("flex w-full max-w-sm flex-col gap-5", className),
|
|
26
26
|
...props,
|
|
27
27
|
children: [/* @__PURE__ */ jsx("p", {
|
|
28
|
-
className: cn("max-w-[85%] self-end text-(length:--cue-text-body)", variant === "bubble" ? cn(paper, "rounded-
|
|
28
|
+
className: cn("max-w-[85%] self-end text-(length:--cue-text-body)", variant === "bubble" ? cn(paper, "rounded-overlay px-3.5 py-2") : "text-fg text-end"),
|
|
29
29
|
children: userMessage
|
|
30
30
|
}), /* @__PURE__ */ jsxs("div", {
|
|
31
31
|
className: "group/message flex flex-col items-start",
|
|
@@ -23,7 +23,7 @@ function MessageQueue({ running, queued, onCancel, className, ...props }) {
|
|
|
23
23
|
...props,
|
|
24
24
|
children: [
|
|
25
25
|
/* @__PURE__ */ jsxs("div", {
|
|
26
|
-
className: cn(paper, "flex items-center gap-2.5 rounded-
|
|
26
|
+
className: cn(paper, "flex items-center gap-2.5 rounded-overlay p-3"),
|
|
27
27
|
children: [
|
|
28
28
|
/* @__PURE__ */ jsxs("span", {
|
|
29
29
|
className: "relative flex size-2 shrink-0",
|
|
@@ -52,7 +52,7 @@ function MessageQueue({ running, queued, onCancel, className, ...props }) {
|
|
|
52
52
|
/* @__PURE__ */ jsx("ul", {
|
|
53
53
|
className: "flex flex-col gap-1.5",
|
|
54
54
|
children: queued.map((message, index) => /* @__PURE__ */ jsxs("li", {
|
|
55
|
-
className: cn(field, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex items-center gap-2.5 rounded-
|
|
55
|
+
className: cn(field, "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both flex items-center gap-2.5 rounded-overlay py-2 pr-2 pl-3 duration-300"),
|
|
56
56
|
children: [
|
|
57
57
|
/* @__PURE__ */ jsx("span", {
|
|
58
58
|
className: cn(mono, "text-fg-subtle w-3 shrink-0 tabular-nums"),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
3
4
|
import { field, ghostButton, inkButton } from "./surfaces.js";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { ArrowUpIcon, MicIcon, PlusIcon, SquareIcon } from "lucide-react";
|
|
@@ -22,7 +23,7 @@ import { ArrowUpIcon, MicIcon, PlusIcon, SquareIcon } from "lucide-react";
|
|
|
22
23
|
function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAttach, onValueChange, onSend, onStop, onFocus, className, ...props }) {
|
|
23
24
|
return /* @__PURE__ */ jsxs("div", {
|
|
24
25
|
"data-slot": "mobile-composer",
|
|
25
|
-
className: cn("bg-bg border-border flex w-full max-w-[19rem] flex-col gap-2.5 rounded-t-
|
|
26
|
+
className: cn("bg-bg border-border flex w-full max-w-[19rem] flex-col gap-2.5 rounded-t-overlay border-t px-3 pt-3", keyboardOpen ? "pb-3" : "pb-6", className),
|
|
26
27
|
...props,
|
|
27
28
|
children: [
|
|
28
29
|
!keyboardOpen && /* @__PURE__ */ jsx("div", {
|
|
@@ -47,7 +48,7 @@ function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAtt
|
|
|
47
48
|
children: /* @__PURE__ */ jsx(PlusIcon, { className: "size-4" })
|
|
48
49
|
}),
|
|
49
50
|
/* @__PURE__ */ jsxs("div", {
|
|
50
|
-
className: cn(field, "flex min-w-0 flex-1 items-center gap-2 rounded-
|
|
51
|
+
className: cn(field, "flex min-w-0 flex-1 items-center gap-2 rounded-overlay px-3 py-2"),
|
|
51
52
|
children: [/* @__PURE__ */ jsx("input", {
|
|
52
53
|
value,
|
|
53
54
|
onChange: (event) => onValueChange?.(event.target.value),
|
|
@@ -60,7 +61,7 @@ function MobileComposer({ value, keyboardOpen, running, actions, onAction, onAtt
|
|
|
60
61
|
},
|
|
61
62
|
placeholder: "Message",
|
|
62
63
|
"aria-label": "Message",
|
|
63
|
-
className:
|
|
64
|
+
className: `text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-emphasis) outline-none ${FOCUS_RING}`
|
|
64
65
|
}), value === "" && /* @__PURE__ */ jsx(MicIcon, { className: "text-fg-subtle size-4 shrink-0" })]
|
|
65
66
|
}),
|
|
66
67
|
/* @__PURE__ */ jsx("button", {
|