@cueplusplus/ui 0.15.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 +1083 -0
- package/README.md +26 -0
- 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 +4 -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 +17 -1
- package/dist/chrome/_tabs-scroll.js +20 -3
- package/dist/chrome/app-bar.js +10 -3
- package/dist/chrome/app-shell.js +2 -1
- package/dist/chrome/band.d.ts +18 -12
- package/dist/chrome/band.js +19 -31
- 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 +9 -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-field.d.ts +2 -1
- package/dist/color/color-picker.d.ts +2 -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/date/date-field.d.ts +2 -1
- package/dist/date/date-picker.d.ts +2 -1
- package/dist/date/date-range-picker.d.ts +2 -1
- package/dist/date/time-field.d.ts +2 -1
- 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-size.d.ts +22 -0
- package/dist/forms/_chassis.d.ts +28 -15
- package/dist/forms/_chassis.js +34 -8
- package/dist/forms/_listbox.js +8 -5
- package/dist/forms/autocomplete.d.ts +2 -1
- package/dist/forms/checkbox.js +8 -2
- package/dist/forms/combobox.d.ts +2 -1
- package/dist/forms/env-var-input.d.ts +2 -1
- 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/index.d.ts +2 -1
- package/dist/forms/input-group.d.ts +2 -1
- package/dist/forms/input.d.ts +2 -1
- package/dist/forms/multi-select.d.ts +2 -1
- package/dist/forms/number-field.js +2 -1
- package/dist/forms/otp-field.d.ts +2 -1
- package/dist/forms/password-input.d.ts +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.d.ts +2 -1
- package/dist/forms/scrub-input.js +2 -1
- package/dist/forms/search-input.d.ts +2 -1
- package/dist/forms/search-input.js +2 -1
- package/dist/forms/select.d.ts +2 -1
- package/dist/forms/select.js +6 -2
- package/dist/forms/slider.js +6 -2
- package/dist/forms/switch.js +6 -2
- package/dist/forms/tags-input.d.ts +2 -1
- package/dist/forms/textarea.js +2 -1
- package/dist/forms/toggle-group.d.ts +1 -1
- package/dist/forms/toggle.d.ts +1 -1
- package/dist/forms/toggle.js +3 -1
- package/dist/index.d.ts +4 -3
- 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 +5 -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 +14 -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/musical-time-input.d.ts +2 -1
- 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 +86 -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 -10
- package/dist/primitives/chip.d.ts +20 -2
- 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-elevation.js +9 -0
- package/dist/system/_paint-glass.js +46 -0
- package/dist/system/_paint-glow.js +51 -0
- package/dist/system/_paint-ground-pattern.js +30 -0
- package/dist/system/_paint-rest-shade.js +32 -0
- package/dist/system/_paint-rim.js +59 -0
- package/dist/system/_paint-stroke-sunken.js +19 -0
- package/dist/system/_paint-stroke-surface-1.js +19 -0
- package/dist/system/_paint-stroke-surface-2.js +40 -0
- package/dist/system/_paint-texture.js +56 -0
- 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 +168 -60
- package/dist/system/theme-provider.js +375 -79
- 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 +38 -1
- package/manifest/components/app-bar.json +23 -2
- package/manifest/components/app-shell.json +5 -0
- package/manifest/components/ask-box.json +3 -1
- package/manifest/components/autocomplete.json +49 -1
- package/manifest/components/band.json +14 -3
- package/manifest/components/bento.json +12 -1
- package/manifest/components/breadcrumb.json +8 -1
- package/manifest/components/button.json +31 -3
- package/manifest/components/calendar.json +7 -0
- package/manifest/components/card.json +28 -1
- package/manifest/components/carousel.json +4 -1
- package/manifest/components/channel-matrix.json +40 -1
- package/manifest/components/chart-tooltip-content.json +38 -1
- 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 +14 -0
- package/manifest/components/color-picker.json +14 -0
- package/manifest/components/color-slider.json +3 -1
- package/manifest/components/colors-section.json +9 -1
- package/manifest/components/combobox.json +49 -1
- package/manifest/components/command-palette.json +37 -1
- 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 +14 -0
- package/manifest/components/confidence-marker.json +3 -1
- package/manifest/components/container.json +2 -1
- package/manifest/components/context-menu.json +38 -1
- 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 +14 -0
- package/manifest/components/date-picker.json +14 -0
- package/manifest/components/date-range-picker.json +14 -0
- package/manifest/components/delegation-card.json +3 -1
- package/manifest/components/density.json +21 -7
- package/manifest/components/description-list.json +6 -1
- package/manifest/components/dialog.json +39 -1
- package/manifest/components/disclosure.json +13 -2
- package/manifest/components/dmx-bar.json +37 -1
- package/manifest/components/dmx-strip.json +37 -1
- package/manifest/components/drawer.json +38 -1
- package/manifest/components/dropdown-menu.json +38 -1
- 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 +14 -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 +38 -1
- package/manifest/components/info-tip.json +3 -0
- package/manifest/components/input-group.json +14 -0
- package/manifest/components/input.json +14 -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 +10 -0
- package/manifest/components/map-answer.json +3 -1
- package/manifest/components/markdown-text.json +3 -0
- package/manifest/components/menubar.json +41 -2
- package/manifest/components/message-list.json +10 -0
- package/manifest/components/message.json +6 -1
- package/manifest/components/mobile-composer.json +3 -1
- package/manifest/components/multi-select.json +49 -1
- package/manifest/components/musical-time-input.json +14 -0
- package/manifest/components/navigation-menu.json +41 -1
- package/manifest/components/node-card.json +3 -0
- package/manifest/components/number-field.json +14 -1
- package/manifest/components/otp-field.json +13 -0
- package/manifest/components/page-shell.json +14 -0
- package/manifest/components/pagination.json +3 -0
- package/manifest/components/panel-header.json +12 -0
- package/manifest/components/panel.json +13 -1
- package/manifest/components/password-input.json +14 -1
- package/manifest/components/permission-scopes.json +3 -1
- package/manifest/components/piano-keyboard.json +3 -0
- package/manifest/components/popover.json +39 -1
- package/manifest/components/preset-section.json +9 -1
- package/manifest/components/preview.json +30 -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 +19 -0
- package/manifest/components/scrub-input.json +14 -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 +14 -1
- package/manifest/components/section-header.json +15 -2
- package/manifest/components/segmented-control.json +17 -0
- package/manifest/components/select.json +28 -0
- package/manifest/components/settings-panel.json +3 -0
- package/manifest/components/shape-section.json +9 -1
- package/manifest/components/sheet.json +38 -1
- 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 +20 -1
- package/manifest/components/tags-input.json +49 -1
- package/manifest/components/terminal-frame.json +3 -0
- package/manifest/components/textarea.json +16 -0
- package/manifest/components/theme-configurator.json +38 -1
- package/manifest/components/theme-provider.json +37 -19
- package/manifest/components/thread-search.json +3 -1
- package/manifest/components/threshold-rail.json +3 -0
- package/manifest/components/time-field.json +14 -0
- package/manifest/components/toast.json +39 -0
- package/manifest/components/toggle-group.json +1 -19
- package/manifest/components/toggle.json +3 -5
- 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 +4 -1
- package/manifest/components/tooltip.json +40 -1
- 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 +205 -185
- package/manifest/tokens.json +260 -4
- package/package.json +6 -6
|
@@ -90,14 +90,14 @@ function ScrollAnchor({ messages, paused = false, onSettled, className, ...props
|
|
|
90
90
|
const newCount = count - seenCount;
|
|
91
91
|
return /* @__PURE__ */ jsxs("div", {
|
|
92
92
|
"data-slot": "scroll-anchor",
|
|
93
|
-
className: cn(paper, "relative h-64 w-full max-w-sm overflow-hidden rounded-
|
|
93
|
+
className: cn(paper, "relative h-64 w-full max-w-sm overflow-hidden rounded-overlay", className),
|
|
94
94
|
...props,
|
|
95
95
|
children: [
|
|
96
96
|
/* @__PURE__ */ jsx("div", {
|
|
97
97
|
ref: viewportRef,
|
|
98
98
|
className: "flex h-full flex-col gap-2.5 overflow-y-hidden scroll-smooth motion-reduce:scroll-auto p-4",
|
|
99
99
|
children: messages.slice(0, count).map((message, i) => /* @__PURE__ */ jsx("div", {
|
|
100
|
-
className: cn("cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in max-w-[85%] text-(length:--cue-text-ui) leading-(--cue-leading-ui) duration-300 motion-reduce:animate-none", message.role === "user" ? cn(field, "self-end rounded-
|
|
100
|
+
className: cn("cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in max-w-[85%] text-(length:--cue-text-ui) leading-(--cue-leading-ui) duration-300 motion-reduce:animate-none", message.role === "user" ? cn(field, "self-end rounded-overlay px-3 py-1.5") : "text-fg-muted self-start"),
|
|
101
101
|
children: message.text
|
|
102
102
|
}, i))
|
|
103
103
|
}),
|
|
@@ -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 { clamp } from "./range.js";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -22,7 +23,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
22
23
|
function SettingsPanel({ model, models, systemPrompt, temperature, toggles, onModelChange, onSystemPromptChange, onTemperatureChange, onToggle, className, ...props }) {
|
|
23
24
|
return /* @__PURE__ */ jsxs("div", {
|
|
24
25
|
"data-slot": "settings-panel",
|
|
25
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-4 rounded-
|
|
26
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-4 rounded-overlay p-4", className),
|
|
26
27
|
...props,
|
|
27
28
|
children: [
|
|
28
29
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -51,7 +52,7 @@ function SettingsPanel({ model, models, systemPrompt, temperature, toggles, onMo
|
|
|
51
52
|
onChange: (event) => onSystemPromptChange?.(event.target.value),
|
|
52
53
|
rows: 3,
|
|
53
54
|
"aria-label": "System prompt",
|
|
54
|
-
className: cn(field,
|
|
55
|
+
className: cn(field, `text-fg-muted ${FOCUS_RING} resize-none rounded-surface px-3 py-2 text-(length:--cue-text-ui) leading-(--cue-leading-ui) outline-none`)
|
|
55
56
|
})]
|
|
56
57
|
}),
|
|
57
58
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -21,7 +21,7 @@ import { LinkIcon } from "lucide-react";
|
|
|
21
21
|
function SharedConversation({ title, sharedBy, sharedAt, turns, onContinue, className, ...props }) {
|
|
22
22
|
return /* @__PURE__ */ jsxs("div", {
|
|
23
23
|
"data-slot": "shared-conversation",
|
|
24
|
-
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-
|
|
24
|
+
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-overlay", className),
|
|
25
25
|
...props,
|
|
26
26
|
children: [
|
|
27
27
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -45,7 +45,7 @@ function SharedConversation({ title, sharedBy, sharedAt, turns, onContinue, clas
|
|
|
45
45
|
/* @__PURE__ */ jsx("div", {
|
|
46
46
|
className: "border-border flex flex-col gap-2.5 border-t px-4 py-3.5",
|
|
47
47
|
children: turns.map((turn) => /* @__PURE__ */ jsx("div", {
|
|
48
|
-
className: cn("text-(length:--cue-text-body) leading-(--cue-leading-ui)", turn.role === "user" ? "bg-surface-1 ms-auto max-w-[85%] rounded-
|
|
48
|
+
className: cn("text-(length:--cue-text-body) leading-(--cue-leading-ui)", turn.role === "user" ? "bg-surface-1 ms-auto max-w-[85%] rounded-overlay px-3 py-2" : "text-fg-muted"),
|
|
49
49
|
children: turn.text
|
|
50
50
|
}, turn.id))
|
|
51
51
|
}),
|
package/dist/elements/sources.js
CHANGED
|
@@ -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 { collapsePanel, fieldInteractive, mono, paper } from "./surfaces.js";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { Collapsible } from "@base-ui/react/collapsible";
|
|
@@ -24,7 +25,7 @@ function Sources({ sources, open, onOpenChange, className }) {
|
|
|
24
25
|
onOpenChange,
|
|
25
26
|
className: cn("w-full max-w-sm", className),
|
|
26
27
|
children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
|
|
27
|
-
className: cn(fieldInteractive,
|
|
28
|
+
className: cn(fieldInteractive, `group/trigger text-fg-muted hover:text-fg inline-flex w-fit items-center gap-1.5 rounded-full px-3.5 py-2 text-(length:--cue-text-ui) outline-none ${FOCUS_RING}`),
|
|
28
29
|
children: [
|
|
29
30
|
/* @__PURE__ */ jsx("span", { children: "Sources" }),
|
|
30
31
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -38,11 +39,11 @@ function Sources({ sources, open, onOpenChange, className }) {
|
|
|
38
39
|
children: /* @__PURE__ */ jsx("div", {
|
|
39
40
|
className: "grid grid-cols-2 gap-2 pt-2.5",
|
|
40
41
|
children: sources.map((source) => /* @__PURE__ */ jsxs("div", {
|
|
41
|
-
className: cn(paper, "flex flex-col gap-1.5 rounded-
|
|
42
|
+
className: cn(paper, "flex flex-col gap-1.5 rounded-overlay p-3 transition-transform hover:-translate-y-px"),
|
|
42
43
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
43
44
|
className: "flex items-center gap-1.5",
|
|
44
45
|
children: [/* @__PURE__ */ jsx("span", {
|
|
45
|
-
className: "bg-surface-2 text-fg-muted flex size-4 shrink-0 items-center justify-center rounded-
|
|
46
|
+
className: "bg-surface-2 text-fg-muted flex size-4 shrink-0 items-center justify-center rounded-control text-(length:--cue-text-micro) font-medium",
|
|
46
47
|
children: source.domain.charAt(0).toUpperCase()
|
|
47
48
|
}), /* @__PURE__ */ jsx("span", {
|
|
48
49
|
className: cn(mono, "text-fg-subtle truncate"),
|
|
@@ -26,7 +26,7 @@ function SpeakerIdentity({ turns, className, ...props }) {
|
|
|
26
26
|
children: turns.map((turn) => /* @__PURE__ */ jsxs("div", {
|
|
27
27
|
className: "flex gap-2.5",
|
|
28
28
|
children: [/* @__PURE__ */ jsx("span", {
|
|
29
|
-
className: cn("flex size-6 shrink-0 items-center justify-center rounded-
|
|
29
|
+
className: cn("flex size-6 shrink-0 items-center justify-center rounded-surface", TONE[turn.kind], turn.kind === "subagent" && "rounded-full"),
|
|
30
30
|
children: turn.kind === "user" ? /* @__PURE__ */ jsx(UserIcon, { className: "size-3" }) : turn.kind === "tool" ? /* @__PURE__ */ jsx(WrenchIcon, { className: "size-3" }) : /* @__PURE__ */ jsx(BotIcon, { className: "size-3" })
|
|
31
31
|
}), /* @__PURE__ */ jsxs("div", {
|
|
32
32
|
className: "flex min-w-0 flex-1 flex-col gap-0.5",
|
|
@@ -15,7 +15,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
function SpecSheet({ title, subtitle, rows, visibleCount, className, ...props }) {
|
|
16
16
|
return /* @__PURE__ */ jsxs("div", {
|
|
17
17
|
"data-slot": "spec-sheet",
|
|
18
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-
|
|
18
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-4", className),
|
|
19
19
|
...props,
|
|
20
20
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
21
21
|
className: "flex flex-col gap-0.5",
|
|
@@ -31,7 +31,7 @@ function StreamingText({ segments, count, streaming, className, ...props }) {
|
|
|
31
31
|
return /* @__PURE__ */ jsxs("span", {
|
|
32
32
|
className: "cue-elements-fade-in cue-elements-animate-in cue-elements-fill-mode-both duration-500 motion-reduce:animate-none",
|
|
33
33
|
children: [/* @__PURE__ */ jsx("span", {
|
|
34
|
-
className: cn("transition-colors duration-700 motion-reduce:transition-none", fresh && "text-stream", isMono && "bg-surface-2 rounded-
|
|
34
|
+
className: cn("transition-colors duration-700 motion-reduce:transition-none", fresh && "text-stream", isMono && "bg-surface-2 rounded-control px-1.5 py-0.5 font-mono text-[0.85em]"),
|
|
35
35
|
children: word
|
|
36
36
|
}), " "]
|
|
37
37
|
}, i);
|
|
@@ -28,7 +28,7 @@ function SubagentList({ agents, completedCount, progress, showSummary, summaryAg
|
|
|
28
28
|
const done = index < completedCount;
|
|
29
29
|
const width = progress[index] ?? 0;
|
|
30
30
|
return /* @__PURE__ */ jsxs("div", {
|
|
31
|
-
className: cn(paper, "flex flex-col gap-2 rounded-
|
|
31
|
+
className: cn(paper, "flex flex-col gap-2 rounded-overlay px-3.5 py-2.5"),
|
|
32
32
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
33
33
|
className: "flex items-center gap-2",
|
|
34
34
|
children: [
|
|
@@ -51,7 +51,7 @@ function SubagentList({ agents, completedCount, progress, showSummary, summaryAg
|
|
|
51
51
|
})]
|
|
52
52
|
}, agent.name);
|
|
53
53
|
}), showSummary && /* @__PURE__ */ jsxs("div", {
|
|
54
|
-
className: cn("bg-surface-1 border border-border", "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in flex flex-col gap-2 rounded-
|
|
54
|
+
className: cn("bg-surface-1 border border-border", "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in flex flex-col gap-2 rounded-overlay px-3.5 py-2.5 duration-300"),
|
|
55
55
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
56
56
|
className: "flex items-center gap-2",
|
|
57
57
|
children: [
|
|
@@ -26,7 +26,7 @@ function Suggestions({ suggestions, selectedSuggestion, cycle, onSuggestion, var
|
|
|
26
26
|
type: "button",
|
|
27
27
|
"aria-pressed": selectedSuggestion === suggestion,
|
|
28
28
|
onClick: () => onSuggestion(suggestion),
|
|
29
|
-
className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in cue-elements-fill-mode-both flex cursor-pointer items-center text-(length:--cue-text-body) transition-transform duration-300 hover:-translate-y-px active:scale-[0.96] motion-reduce:animate-none", list ? "w-full rounded-
|
|
29
|
+
className: cn(paper, "cue-elements-fade-in cue-elements-slide-in-from-bottom-2 cue-elements-animate-in cue-elements-fill-mode-both flex cursor-pointer items-center text-(length:--cue-text-body) transition-transform duration-300 hover:-translate-y-px active:scale-[0.96] motion-reduce:animate-none", list ? "w-full rounded-overlay px-4 py-2.5 text-start" : "rounded-full px-4 py-2", selectedSuggestion === suggestion && "bg-accent text-accent-fg"),
|
|
30
30
|
style: { animationDelay: `${index * 70}ms` },
|
|
31
31
|
children: suggestion
|
|
32
32
|
}, suggestion))
|
|
@@ -11,7 +11,7 @@ declare const fieldInteractive = "bg-fg/[0.06] transition-colors hover:bg-fg/[0.
|
|
|
11
11
|
/** The press affordance: a 4% squash on pointer-down, stilled under reduced motion. */
|
|
12
12
|
declare const pressable = "transition-transform duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] active:scale-[0.96] motion-reduce:transition-none";
|
|
13
13
|
/** A round chromeless icon button, with the ring cue puts on everything focusable. */
|
|
14
|
-
declare const ghostButton = "flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] focus-visible:outline-
|
|
14
|
+
declare const ghostButton = "flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] focus-visible:outline-solid focus-visible:outline-[length:var(--cue-style-focus-width,var(--cue-focus-ring))] focus-visible:outline-(--cue-focus) focus-visible:outline-offset-1 motion-reduce:transition-none";
|
|
15
15
|
/** The inverse fill: accent ground, accent ink — the one loud button in a panel. */
|
|
16
16
|
declare const inkButton = "bg-accent text-accent-fg transition-[background-color,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:bg-accent-hover active:scale-[0.96] motion-reduce:transition-none";
|
|
17
17
|
/** The stacked layer of an icon crossfade. Both layers share one grid cell. */
|
|
@@ -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 { useLayoutEffect, useRef, useState } from "react";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
//#region src/elements/surfaces.tsx
|
|
@@ -14,7 +15,7 @@ const fieldInteractive = "bg-fg/[0.06] transition-colors hover:bg-fg/[0.09]";
|
|
|
14
15
|
/** The press affordance: a 4% squash on pointer-down, stilled under reduced motion. */
|
|
15
16
|
const pressable = "transition-transform duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] active:scale-[0.96] motion-reduce:transition-none";
|
|
16
17
|
/** A round chromeless icon button, with the ring cue puts on everything focusable. */
|
|
17
|
-
const ghostButton =
|
|
18
|
+
const ghostButton = `flex items-center justify-center rounded-full text-fg-muted outline-none transition-[background-color,color,scale] duration-150 hover:bg-surface-2 hover:text-fg active:scale-[0.96] ${FOCUS_RING} motion-reduce:transition-none`;
|
|
18
19
|
/** The inverse fill: accent ground, accent ink — the one loud button in a panel. */
|
|
19
20
|
const inkButton = "bg-accent text-accent-fg transition-[background-color,scale] duration-150 ease-[cubic-bezier(0.23,1,0.32,1)] hover:bg-accent-hover active:scale-[0.96] motion-reduce:transition-none";
|
|
20
21
|
/** The stacked layer of an icon crossfade. Both layers share one grid cell. */
|
|
@@ -84,7 +84,7 @@ const TailStatus = React.forwardRef(function TailStatus({ action, detail, active
|
|
|
84
84
|
onCancel === void 0 ? null : /* @__PURE__ */ jsx("button", {
|
|
85
85
|
type: "button",
|
|
86
86
|
onClick: onCancel,
|
|
87
|
-
className: cn(ghostButton, mono, "shrink-0 rounded-
|
|
87
|
+
className: cn(ghostButton, mono, "shrink-0 rounded-control px-2 py-1 uppercase"),
|
|
88
88
|
children: cancelLabel
|
|
89
89
|
})
|
|
90
90
|
]
|
|
@@ -21,7 +21,7 @@ import { CheckIcon, Loader2Icon } from "lucide-react";
|
|
|
21
21
|
function TerminalBlock({ command, lines, visibleCount, done, variant = "paper", className, ...props }) {
|
|
22
22
|
return /* @__PURE__ */ jsxs("div", {
|
|
23
23
|
"data-slot": "terminal-block",
|
|
24
|
-
className: cn(variant === "ink" ? "bg-sunken" : paper, "w-full max-w-md overflow-hidden rounded-
|
|
24
|
+
className: cn(variant === "ink" ? "bg-sunken" : paper, "w-full max-w-md overflow-hidden rounded-overlay font-mono text-(length:--cue-text-ui)", className),
|
|
25
25
|
...props,
|
|
26
26
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
27
27
|
className: "flex items-center justify-between px-4 pt-3 pb-1.5",
|
|
@@ -33,7 +33,7 @@ function ThreadList({ threads, activeIndex, onActiveIndexChange, className, ...p
|
|
|
33
33
|
type: "button",
|
|
34
34
|
"aria-current": active || void 0,
|
|
35
35
|
onClick: () => onActiveIndexChange?.(i),
|
|
36
|
-
className: cn("group flex w-full items-center justify-between gap-2 rounded-
|
|
36
|
+
className: cn("group flex w-full items-center justify-between gap-2 rounded-surface px-3 py-2 text-start text-(length:--cue-text-body) transition-colors", active ? field : "hover:bg-surface-1"),
|
|
37
37
|
children: [
|
|
38
38
|
/* @__PURE__ */ jsx("span", {
|
|
39
39
|
className: "flex-1 truncate",
|
|
@@ -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
|
import { PinIcon, SearchIcon } from "lucide-react";
|
|
@@ -42,7 +43,7 @@ function ThreadSearch({ threads, query, activeId, onQueryChange, onSelect, class
|
|
|
42
43
|
const row = (thread) => /* @__PURE__ */ jsxs("button", {
|
|
43
44
|
type: "button",
|
|
44
45
|
onClick: () => onSelect?.(thread.id),
|
|
45
|
-
className: cn("flex flex-col gap-0.5 rounded-
|
|
46
|
+
className: cn("flex flex-col gap-0.5 rounded-surface px-2 py-1 text-start transition-colors", thread.id === activeId ? "bg-surface-1" : "hover:bg-surface-1"),
|
|
46
47
|
children: [/* @__PURE__ */ jsxs("span", {
|
|
47
48
|
className: "flex items-center gap-1.5",
|
|
48
49
|
children: [thread.pinned && /* @__PURE__ */ jsx(PinIcon, { className: "text-fg-subtle size-2.5 shrink-0" }), /* @__PURE__ */ jsx("span", {
|
|
@@ -56,18 +57,18 @@ function ThreadSearch({ threads, query, activeId, onQueryChange, onSelect, class
|
|
|
56
57
|
}, thread.id);
|
|
57
58
|
return /* @__PURE__ */ jsxs("div", {
|
|
58
59
|
"data-slot": "thread-search",
|
|
59
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-1.5 rounded-
|
|
60
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-1.5 rounded-overlay p-3", className),
|
|
60
61
|
...props,
|
|
61
62
|
children: [
|
|
62
63
|
/* @__PURE__ */ jsxs("div", {
|
|
63
|
-
className: cn(field, "flex items-center gap-2 rounded-
|
|
64
|
+
className: cn(field, "flex items-center gap-2 rounded-surface px-2.5 py-1.5"),
|
|
64
65
|
children: [/* @__PURE__ */ jsx(SearchIcon, { className: "text-fg-subtle size-3.5 shrink-0" }), /* @__PURE__ */ jsx("input", {
|
|
65
66
|
value: query,
|
|
66
67
|
onChange: (event) => onQueryChange?.(event.target.value),
|
|
67
68
|
onKeyDown,
|
|
68
69
|
placeholder: "Search threads",
|
|
69
70
|
"aria-label": "Search threads",
|
|
70
|
-
className:
|
|
71
|
+
className: `text-fg-muted placeholder:text-fg-subtle min-w-0 flex-1 bg-transparent text-(length:--cue-text-body) outline-none ${FOCUS_RING}`
|
|
71
72
|
})]
|
|
72
73
|
}),
|
|
73
74
|
pinned.length > 0 && /* @__PURE__ */ jsxs("div", {
|
|
@@ -15,7 +15,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
15
15
|
function ElementsTimeline({ events, visibleCount, className, ...props }) {
|
|
16
16
|
return /* @__PURE__ */ jsx("div", {
|
|
17
17
|
"data-slot": "timeline",
|
|
18
|
-
className: cn(paper, "flex w-full max-w-sm flex-col rounded-
|
|
18
|
+
className: cn(paper, "flex w-full max-w-sm flex-col rounded-overlay p-4", className),
|
|
19
19
|
...props,
|
|
20
20
|
children: take(events, visibleCount).map((event, i, shown) => /* @__PURE__ */ jsxs("div", {
|
|
21
21
|
className: "cue-elements-fade-in cue-elements-slide-in-from-left-1 cue-elements-animate-in cue-elements-fill-mode-both grid grid-cols-[3.5rem_1rem_minmax(0,1fr)] gap-x-2 duration-300",
|
|
@@ -41,11 +41,11 @@ function TodoList({ items, revision, className, ...props }) {
|
|
|
41
41
|
children: [/* @__PURE__ */ jsx("span", {
|
|
42
42
|
className: "flex size-4 h-5 shrink-0 items-center justify-center",
|
|
43
43
|
children: item.status === "done" ? /* @__PURE__ */ jsx("span", {
|
|
44
|
-
className: "border-border-strong bg-surface-2 flex size-3.5 items-center justify-center rounded-
|
|
44
|
+
className: "border-border-strong bg-surface-2 flex size-3.5 items-center justify-center rounded-control border",
|
|
45
45
|
children: /* @__PURE__ */ jsx(CheckIcon, { className: "text-fg-muted size-2.5" })
|
|
46
46
|
}) : item.status === "active" ? /* @__PURE__ */ jsx(Loader2Icon, { className: "size-3.5 animate-spin text-stream motion-reduce:animate-none" }) : /* @__PURE__ */ jsx("span", {
|
|
47
47
|
"aria-hidden": true,
|
|
48
|
-
className: "border-border-strong size-3.5 rounded-
|
|
48
|
+
className: "border-border-strong size-3.5 rounded-control border"
|
|
49
49
|
})
|
|
50
50
|
}), /* @__PURE__ */ jsx("span", {
|
|
51
51
|
className: cn("min-w-0 flex-1 leading-5 break-words", item.status === "done" && "text-fg-subtle line-through decoration-[1.5px]", item.status === "active" && "text-fg", item.status === "pending" && "text-fg-muted"),
|
|
@@ -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 { ShimmerLabel, SwapLabel, collapsePanel, field, mono } from "./surfaces.js";
|
|
4
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { Collapsible } from "@base-ui/react/collapsible";
|
|
@@ -29,7 +30,7 @@ function ToolCall({ label, activeLabel, query, request, result, running, open, o
|
|
|
29
30
|
onOpenChange,
|
|
30
31
|
className: cn("w-full max-w-sm", className),
|
|
31
32
|
children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
|
|
32
|
-
className:
|
|
33
|
+
className: `group/trigger text-fg-muted hover:text-fg flex items-center gap-2 rounded-control py-1 text-(length:--cue-text-body) transition-colors outline-none ${FOCUS_RING}`,
|
|
33
34
|
children: [
|
|
34
35
|
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0 opacity-60 transition-transform duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] group-data-[panel-open]/trigger:rotate-90 motion-reduce:transition-none" }),
|
|
35
36
|
/* @__PURE__ */ jsxs(SwapLabel, {
|
|
@@ -42,7 +43,7 @@ function ToolCall({ label, activeLabel, query, request, result, running, open, o
|
|
|
42
43
|
}), /* @__PURE__ */ jsx(Fragment, { children: label })]
|
|
43
44
|
}),
|
|
44
45
|
/* @__PURE__ */ jsx("span", {
|
|
45
|
-
className: cn(mono, "bg-surface-2 text-fg-muted rounded-
|
|
46
|
+
className: cn(mono, "bg-surface-2 text-fg-muted rounded-control px-1.5 py-0.5"),
|
|
46
47
|
children: query
|
|
47
48
|
}),
|
|
48
49
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -53,7 +54,7 @@ function ToolCall({ label, activeLabel, query, request, result, running, open, o
|
|
|
53
54
|
}), /* @__PURE__ */ jsx(Collapsible.Panel, {
|
|
54
55
|
className: cn(collapsePanel, "outline-none"),
|
|
55
56
|
children: /* @__PURE__ */ jsxs("div", {
|
|
56
|
-
className: cn(field, "mt-2 overflow-hidden rounded-
|
|
57
|
+
className: cn(field, "mt-2 overflow-hidden rounded-overlay text-(length:--cue-text-ui)"),
|
|
57
58
|
children: [
|
|
58
59
|
/* @__PURE__ */ jsxs("div", {
|
|
59
60
|
className: "px-3.5 pt-2.5 pb-2",
|
|
@@ -24,7 +24,7 @@ import { AlertCircleIcon, Loader2Icon, RotateCwIcon } from "lucide-react";
|
|
|
24
24
|
function ToolError({ name, target, message, attempt, maxAttempts, retrying, onRetry, onSkip, className, ...props }) {
|
|
25
25
|
return /* @__PURE__ */ jsxs("div", {
|
|
26
26
|
"data-slot": "tool-error",
|
|
27
|
-
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-
|
|
27
|
+
className: cn(paper, "flex w-full max-w-sm flex-col gap-3 rounded-overlay p-3.5", className),
|
|
28
28
|
...props,
|
|
29
29
|
children: [
|
|
30
30
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -50,7 +50,7 @@ function ToolError({ name, target, message, attempt, maxAttempts, retrying, onRe
|
|
|
50
50
|
]
|
|
51
51
|
}),
|
|
52
52
|
/* @__PURE__ */ jsx("div", {
|
|
53
|
-
className: cn(field, "rounded-
|
|
53
|
+
className: cn(field, "rounded-surface px-3 py-2 font-mono text-(length:--cue-text-label) leading-(--cue-leading-ui) text-danger"),
|
|
54
54
|
children: message
|
|
55
55
|
}),
|
|
56
56
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -22,7 +22,7 @@ function ToolGroup({ label, tools, open, onOpenChange, className, ...props }) {
|
|
|
22
22
|
const failed = tools.filter((tool) => tool.state === "failed").length;
|
|
23
23
|
return /* @__PURE__ */ jsxs("div", {
|
|
24
24
|
"data-slot": "tool-group",
|
|
25
|
-
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-
|
|
25
|
+
className: cn(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-overlay", className),
|
|
26
26
|
...props,
|
|
27
27
|
children: [/* @__PURE__ */ jsxs("button", {
|
|
28
28
|
type: "button",
|
|
@@ -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 { ShimmerLabel, SwapLabel, collapsePanel } from "./surfaces.js";
|
|
4
5
|
import { take } from "./range.js";
|
|
5
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -31,7 +32,7 @@ function ToolTimeline({ steps, visibleSteps, streaming, open, onOpenChange, rest
|
|
|
31
32
|
onOpenChange,
|
|
32
33
|
className: cn("w-full max-w-sm", className),
|
|
33
34
|
children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
|
|
34
|
-
className:
|
|
35
|
+
className: `group/trigger text-fg-muted hover:text-fg flex items-center gap-1.5 rounded-control py-1 text-(length:--cue-text-body) transition-colors outline-none ${FOCUS_RING}`,
|
|
35
36
|
children: [/* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0 opacity-60 transition-transform duration-200 ease-[cubic-bezier(0.32,0.72,0,1)] group-data-[panel-open]/trigger:rotate-90 motion-reduce:transition-none" }), /* @__PURE__ */ jsxs(SwapLabel, {
|
|
36
37
|
active: streaming ? 0 : 1,
|
|
37
38
|
className: "text-start tabular-nums",
|
|
@@ -58,7 +59,7 @@ function ToolTimeline({ steps, visibleSteps, streaming, open, onOpenChange, rest
|
|
|
58
59
|
children: step.verb
|
|
59
60
|
}),
|
|
60
61
|
/* @__PURE__ */ jsx("span", {
|
|
61
|
-
className: "bg-surface-2 text-fg-muted rounded-
|
|
62
|
+
className: "bg-surface-2 text-fg-muted rounded-control px-1.5 py-0.5 font-mono text-(length:--cue-text-label)",
|
|
62
63
|
children: step.chip
|
|
63
64
|
})
|
|
64
65
|
]
|
|
@@ -66,7 +67,7 @@ function ToolTimeline({ steps, visibleSteps, streaming, open, onOpenChange, rest
|
|
|
66
67
|
}), stats.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
67
68
|
className: "flex flex-wrap gap-1.5 pt-1",
|
|
68
69
|
children: stats.map((stat) => /* @__PURE__ */ jsxs("span", {
|
|
69
|
-
className: "bg-surface-2 text-fg-muted inline-flex items-center gap-1 rounded-
|
|
70
|
+
className: "bg-surface-2 text-fg-muted inline-flex items-center gap-1 rounded-control px-1.5 py-0.5 font-mono text-(length:--cue-text-label)",
|
|
70
71
|
children: [
|
|
71
72
|
/* @__PURE__ */ jsx("span", { children: stat.file }),
|
|
72
73
|
stat.added !== void 0 && /* @__PURE__ */ jsxs("span", {
|
|
@@ -21,7 +21,7 @@ function TraceWaterfall({ spans, totalMs, visibleCount, className, ...props }) {
|
|
|
21
21
|
const span = totalMs || 1;
|
|
22
22
|
return /* @__PURE__ */ jsxs("div", {
|
|
23
23
|
"data-slot": "trace-waterfall",
|
|
24
|
-
className: cn(paper, "flex w-full max-w-md flex-col gap-2 rounded-
|
|
24
|
+
className: cn(paper, "flex w-full max-w-md flex-col gap-2 rounded-overlay p-4", className),
|
|
25
25
|
...props,
|
|
26
26
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
27
27
|
className: "flex items-baseline justify-between",
|
|
@@ -82,7 +82,7 @@ const VerdictRow = React.forwardRef(function VerdictRow({ score, title, summary,
|
|
|
82
82
|
ref,
|
|
83
83
|
"data-slot": "verdict-row",
|
|
84
84
|
"data-verdict": tone,
|
|
85
|
-
className: cn(paper, "flex w-full flex-col gap-2 rounded-
|
|
85
|
+
className: cn(paper, "flex w-full flex-col gap-2 rounded-overlay px-3 py-2.5", className),
|
|
86
86
|
...elementProps,
|
|
87
87
|
children: [
|
|
88
88
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -131,7 +131,7 @@ const VerdictRow = React.forwardRef(function VerdictRow({ score, title, summary,
|
|
|
131
131
|
const chip = odds >= 70 ? "danger" : odds >= 50 ? "warn" : "neutral";
|
|
132
132
|
return /* @__PURE__ */ jsxs("li", {
|
|
133
133
|
"data-color": chip,
|
|
134
|
-
className: cn(field, "flex max-w-full items-baseline gap-1.5 rounded-
|
|
134
|
+
className: cn(field, "flex max-w-full items-baseline gap-1.5 rounded-control px-2 py-0.5 text-(length:--cue-text-ui)", chip === "danger" ? "text-danger" : chip === "warn" ? "text-warn" : "text-fg-muted"),
|
|
135
135
|
children: [/* @__PURE__ */ jsx("span", {
|
|
136
136
|
className: "min-w-0 truncate",
|
|
137
137
|
children: issue.label
|
|
@@ -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 { ghostButton, mono, paper } from "./surfaces.js";
|
|
4
5
|
import { clamp } from "./range.js";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -38,7 +39,7 @@ function VoiceConversation({ mode, amplitude, transcript, muted, onToggleMute, o
|
|
|
38
39
|
const canInterrupt = mode === "speaking" && onInterrupt !== void 0;
|
|
39
40
|
return /* @__PURE__ */ jsxs("div", {
|
|
40
41
|
"data-slot": "voice-conversation",
|
|
41
|
-
className: cn(paper, "flex w-full max-w-xs flex-col items-center gap-4 rounded-
|
|
42
|
+
className: cn(paper, "flex w-full max-w-xs flex-col items-center gap-4 rounded-overlay px-5 py-5", className),
|
|
42
43
|
...props,
|
|
43
44
|
children: [
|
|
44
45
|
/* @__PURE__ */ jsxs("button", {
|
|
@@ -46,7 +47,7 @@ function VoiceConversation({ mode, amplitude, transcript, muted, onToggleMute, o
|
|
|
46
47
|
onClick: onInterrupt,
|
|
47
48
|
disabled: !canInterrupt,
|
|
48
49
|
"aria-label": "Interrupt the assistant",
|
|
49
|
-
className:
|
|
50
|
+
className: `${FOCUS_RING} relative flex size-24 items-center justify-center rounded-full outline-none disabled:cursor-default`,
|
|
50
51
|
children: [
|
|
51
52
|
/* @__PURE__ */ jsx("span", {
|
|
52
53
|
"aria-hidden": true,
|
|
@@ -19,7 +19,7 @@ import { ExternalLinkIcon, RotateCwIcon } from "lucide-react";
|
|
|
19
19
|
function WebPreview({ origin, loading, children, onReload, onOpenExternal, className, ...props }) {
|
|
20
20
|
return /* @__PURE__ */ jsxs("div", {
|
|
21
21
|
"data-slot": "web-preview",
|
|
22
|
-
className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-
|
|
22
|
+
className: cn(paper, "flex w-full max-w-md flex-col overflow-hidden rounded-overlay", className),
|
|
23
23
|
...props,
|
|
24
24
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
25
25
|
className: "flex items-center gap-1.5 px-2.5 py-2",
|
|
@@ -42,10 +42,10 @@ function WebSearch({ query, results, visibleResults, searching, cycle, className
|
|
|
42
42
|
/* @__PURE__ */ jsx("div", {
|
|
43
43
|
className: "flex min-h-[5.75rem] flex-col",
|
|
44
44
|
children: take(results, visibleResults).map((result) => /* @__PURE__ */ jsxs("div", {
|
|
45
|
-
className: "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-1 -mx-2.5 flex items-center gap-2.5 rounded-
|
|
45
|
+
className: "cue-elements-fade-in cue-elements-slide-in-from-bottom-1 cue-elements-animate-in cue-elements-fill-mode-both hover:bg-surface-1 -mx-2.5 flex items-center gap-2.5 rounded-surface px-2.5 py-1.5 transition-colors duration-300",
|
|
46
46
|
children: [
|
|
47
47
|
/* @__PURE__ */ jsx("span", {
|
|
48
|
-
className: "bg-surface-2 text-fg-muted flex size-4 shrink-0 items-center justify-center rounded-
|
|
48
|
+
className: "bg-surface-2 text-fg-muted flex size-4 shrink-0 items-center justify-center rounded-control text-(length:--cue-text-micro) font-medium",
|
|
49
49
|
children: result.domain.charAt(0).toUpperCase()
|
|
50
50
|
}),
|
|
51
51
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -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 { ShimmerLabel } from "./surfaces.js";
|
|
4
5
|
import * as React from "react";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -111,7 +112,7 @@ const WorkCollapse = React.forwardRef(function WorkCollapse({ durationMs, toolCa
|
|
|
111
112
|
type: "button",
|
|
112
113
|
"aria-expanded": open,
|
|
113
114
|
onClick: () => onOpenChange?.(!open),
|
|
114
|
-
className:
|
|
115
|
+
className: `hover:bg-surface-1 -mx-2 flex items-center gap-2.5 rounded-control px-2 py-1 text-start transition-colors ${FOCUS_RING} motion-reduce:transition-none`,
|
|
115
116
|
children: [/* @__PURE__ */ jsx(ChevronRightIcon, {
|
|
116
117
|
"aria-hidden": true,
|
|
117
118
|
className: cn("text-fg-subtle size-3 shrink-0 transition-transform duration-200 motion-reduce:transition-none", open && "rotate-90")
|
package/dist/flow/node-card.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_OFFSET_2 } from "../system/_focus-ring.js";
|
|
3
4
|
import { FLOW_NODE_FRAME_COLOR, FLOW_NODE_FRAME_PROPERTY, flowFrameColor } from "./_frame.js";
|
|
4
5
|
import * as React from "react";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -63,7 +64,7 @@ const NodeCard = React.forwardRef(function NodeCard({ className, style, tone, st
|
|
|
63
64
|
"data-slot": "node-card",
|
|
64
65
|
"data-tone": tone,
|
|
65
66
|
"data-state": state,
|
|
66
|
-
className: cn("relative flex min-w-0 flex-col rounded-
|
|
67
|
+
className: cn("relative flex min-w-0 flex-col rounded-surface bg-surface-1 font-mono text-(length:--cue-text-label) text-fg outline-1 outline-solid -outline-offset-1", state === "disabled" && "opacity-50", className),
|
|
67
68
|
style: {
|
|
68
69
|
outlineColor: FLOW_NODE_FRAME_COLOR,
|
|
69
70
|
...frame === void 0 ? null : { [FLOW_NODE_FRAME_PROPERTY]: frame },
|
|
@@ -83,7 +84,7 @@ const NodeCard = React.forwardRef(function NodeCard({ className, style, tone, st
|
|
|
83
84
|
"aria-expanded": expanded,
|
|
84
85
|
"aria-controls": hasBody ? bodyId : void 0,
|
|
85
86
|
"aria-label": toggleLabel ?? (expanded ? "Collapse" : "Expand"),
|
|
86
|
-
className: cn(NO_CANVAS_GESTURE,
|
|
87
|
+
className: cn(NO_CANVAS_GESTURE, `shrink-0 cursor-pointer border-0 bg-transparent p-0 text-(length:--cue-text-micro) leading-none text-fg-subtle outline-none select-none hover:text-fg-muted ${FOCUS_RING_OFFSET_2}`),
|
|
87
88
|
onClick: () => onExpandedChange(!expanded),
|
|
88
89
|
children: /* @__PURE__ */ jsx("span", {
|
|
89
90
|
"aria-hidden": "true",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import { useRead } from "../system/published.js";
|
|
2
3
|
import { ThemeContext } from "../system/theme-provider.js";
|
|
3
4
|
import { FLOW_NODE_FRAME_PROPERTY, flowFrameColor } from "./_frame.js";
|
|
4
5
|
import { SignalEdge } from "./signal-edge.js";
|
|
@@ -96,7 +97,7 @@ const DEFAULT_EDGE_OPTIONS = Object.freeze({
|
|
|
96
97
|
* const nodes = inputs.map((input) => ({ ...input, style: theme.nodeStyles.input }));
|
|
97
98
|
*/
|
|
98
99
|
function useFlowTheme() {
|
|
99
|
-
const colorMode =
|
|
100
|
+
const colorMode = useRead(ThemeContext)?.resolvedMode ?? "dark";
|
|
100
101
|
return React.useMemo(() => ({
|
|
101
102
|
colorMode,
|
|
102
103
|
style: FLOW_THEME_VARIABLES,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/forms/_chassis-size.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* The rung of the density control ladder a form control sits on.
|
|
4
|
+
*
|
|
5
|
+
* Named `FormControlSize` rather than `ControlSize` because
|
|
6
|
+
* `@cueplusplus/ui/system` already exports a `ControlSize` for
|
|
7
|
+
* `useControlHeight`, and the root barrel re-exports both.
|
|
8
|
+
*
|
|
9
|
+
* **Its own module, and the reason is the manifest.** `@repo/docgen`
|
|
10
|
+
* attributes a custom property to a component by the FILE its class string
|
|
11
|
+
* lives in, and it does not distinguish a type-only import from a value one.
|
|
12
|
+
* While this type lived in `_chassis.ts`, `Toggle` and `ToggleGroup` — which
|
|
13
|
+
* import nothing from there but the type and paint their own `toggleVariants`
|
|
14
|
+
* box — advertised `--cue-paint-stroke-*` in their published manifests. Found
|
|
15
|
+
* in review of the stroke slice; the manifest is a public contract, so a
|
|
16
|
+
* component claiming a token it never paints is wrong in the way that matters.
|
|
17
|
+
*
|
|
18
|
+
* Nothing but a type may join this file, for the same reason.
|
|
19
|
+
*/
|
|
20
|
+
type FormControlSize = "sm" | "md" | "lg";
|
|
21
|
+
//#endregion
|
|
22
|
+
export { FormControlSize };
|