@cueplusplus/ui 0.16.0 → 0.18.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 +901 -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/empty-state.js +8 -4
- 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 +6 -3
- package/dist/chrome/page-shell.js +8 -5
- package/dist/chrome/panel.d.ts +5 -2
- package/dist/chrome/panel.js +10 -5
- package/dist/chrome/row.js +9 -5
- package/dist/chrome/scroll-area.js +6 -4
- package/dist/chrome/section-header.js +13 -4
- package/dist/chrome/segmented-control.js +14 -4
- package/dist/chrome/status-bar.js +2 -1
- package/dist/chrome/tabs.js +14 -3
- package/dist/chrome/toolbar.js +6 -3
- 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/_trigger.js +4 -1
- package/dist/date/calendar.js +22 -12
- 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 +34 -6
- package/dist/forms/_chassis.js +44 -9
- package/dist/forms/_listbox.js +22 -14
- package/dist/forms/checkbox.js +13 -4
- package/dist/forms/env-var-input.js +3 -2
- package/dist/forms/field.d.ts +2 -1
- package/dist/forms/field.js +16 -5
- package/dist/forms/file-upload.js +3 -2
- package/dist/forms/input-group.js +11 -2
- package/dist/forms/multi-select.js +4 -3
- package/dist/forms/number-field.js +7 -3
- package/dist/forms/otp-field.js +15 -6
- package/dist/forms/password-input.js +4 -2
- package/dist/forms/radio-group.js +10 -4
- 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 +10 -4
- package/dist/forms/slider.js +9 -3
- package/dist/forms/switch.js +9 -3
- package/dist/forms/tags-input.js +4 -3
- package/dist/forms/textarea.js +3 -1
- package/dist/forms/toggle-group.js +2 -1
- package/dist/forms/toggle.js +5 -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/meter.js +2 -1
- package/dist/instruments/progress.js +9 -3
- package/dist/instruments/seam-grid.js +5 -3
- package/dist/instruments/stat.js +13 -4
- package/dist/instruments/table.js +29 -10
- package/dist/instruments/terminal-frame.js +4 -2
- package/dist/instruments/usage-chart.js +1 -1
- package/dist/layout/_collapse.js +26 -5
- package/dist/layout/accordion.js +2 -1
- package/dist/layout/bento.js +7 -4
- package/dist/layout/breadcrumb.js +10 -5
- package/dist/layout/card.js +14 -7
- package/dist/layout/carousel.js +3 -2
- package/dist/layout/collapsible.js +6 -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 +30 -0
- package/dist/layout/link.js +22 -3
- package/dist/layout/pagination.js +8 -8
- 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 +74 -14
- package/dist/overlays/_surface.js +87 -14
- package/dist/overlays/alert-dialog.js +1 -1
- package/dist/overlays/command-palette.js +28 -9
- package/dist/overlays/dialog.d.ts +5 -0
- package/dist/overlays/dialog.js +6 -1
- package/dist/overlays/drawer.js +8 -1
- package/dist/overlays/hover-card.js +3 -1
- package/dist/overlays/info-tip.js +2 -1
- package/dist/overlays/menubar.js +3 -1
- package/dist/overlays/popover.js +3 -1
- package/dist/overlays/toast.js +14 -6
- package/dist/overlays/tooltip.js +3 -1
- package/dist/primitives/avatar.js +6 -2
- package/dist/primitives/button.d.ts +16 -1
- package/dist/primitives/button.js +44 -12
- package/dist/primitives/chip.d.ts +11 -29
- package/dist/primitives/chip.js +40 -50
- package/dist/primitives/icon-button.d.ts +1 -1
- package/dist/primitives/kbd.d.ts +6 -0
- package/dist/primitives/kbd.js +10 -1
- package/dist/primitives/skeleton.js +2 -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-accordion-rule.js +32 -0
- package/dist/system/_style-app-bar.js +65 -0
- package/dist/system/_style-avatar.js +20 -0
- package/dist/system/_style-band.js +57 -0
- package/dist/system/_style-body-leading.js +19 -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 +32 -0
- package/dist/system/_style-caption-ink.js +17 -0
- package/dist/system/_style-caption-size.js +19 -0
- package/dist/system/_style-caption-weight.js +18 -0
- package/dist/system/_style-caption.js +19 -0
- package/dist/system/_style-card-gap.js +14 -0
- package/dist/system/_style-card-pad.js +43 -0
- package/dist/system/_style-cell.js +18 -0
- package/dist/system/_style-check-glyph.js +14 -0
- package/dist/system/_style-check.js +40 -0
- package/dist/system/_style-chip.js +143 -0
- package/dist/system/_style-choice-gap.js +15 -0
- package/dist/system/_style-code.js +13 -0
- package/dist/system/_style-collapse.js +94 -0
- package/dist/system/_style-control-face.js +29 -0
- package/dist/system/_style-control-gap.js +14 -0
- package/dist/system/_style-control-label.js +29 -0
- package/dist/system/_style-control-step.js +22 -0
- package/dist/system/_style-control.js +76 -0
- package/dist/system/_style-crumb.js +44 -0
- package/dist/system/_style-data-face.js +28 -0
- package/dist/system/_style-day.js +25 -0
- package/dist/system/_style-description.js +23 -0
- package/dist/system/_style-disabled.js +70 -0
- package/dist/system/_style-disclosure.js +21 -0
- package/dist/system/_style-empty-state.js +42 -0
- package/dist/system/_style-eyebrow.js +43 -0
- package/dist/system/_style-field-chassis.js +38 -0
- package/dist/system/_style-field-gap.js +12 -0
- package/dist/system/_style-footer-rule.js +47 -0
- package/dist/system/_style-glyph-ink.js +20 -0
- package/dist/system/_style-glyph-opacity.js +20 -0
- package/dist/system/_style-glyph-size.js +21 -0
- package/dist/system/_style-group-gap.js +15 -0
- package/dist/system/_style-group-label-pad.js +14 -0
- package/dist/system/_style-group-label.js +24 -0
- package/dist/system/_style-gutter.js +17 -0
- package/dist/system/_style-help-ink.js +14 -0
- package/dist/system/_style-help.js +38 -0
- package/dist/system/_style-hover-card-width.js +15 -0
- package/dist/system/_style-input-face.js +34 -0
- package/dist/system/_style-kbd.js +58 -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 +58 -0
- package/dist/system/_style-menu.js +43 -0
- package/dist/system/_style-meter.js +15 -0
- package/dist/system/_style-nav-item.js +41 -0
- package/dist/system/_style-nav-menu.js +48 -0
- package/dist/system/_style-nav-voice.js +43 -0
- package/dist/system/_style-option.js +99 -0
- package/dist/system/_style-otp.js +15 -0
- package/dist/system/_style-outline-hover.js +18 -0
- package/dist/system/_style-overlay-title.js +35 -0
- package/dist/system/_style-page-title.js +48 -0
- package/dist/system/_style-page.js +17 -0
- package/dist/system/_style-palette.js +18 -0
- package/dist/system/_style-panel.js +21 -0
- package/dist/system/_style-popover-pad.js +13 -0
- package/dist/system/_style-popover-width.js +15 -0
- package/dist/system/_style-quiet-ink.js +13 -0
- package/dist/system/_style-radio.js +19 -0
- package/dist/system/_style-row-disabled.js +17 -0
- package/dist/system/_style-row-pad.js +13 -0
- package/dist/system/_style-row.js +30 -0
- package/dist/system/_style-scrollbar.js +19 -0
- package/dist/system/_style-seam.js +43 -0
- package/dist/system/_style-section-rule.js +26 -0
- package/dist/system/_style-segment-pad.js +15 -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-skeleton.js +15 -0
- package/dist/system/_style-slider.js +26 -0
- package/dist/system/_style-stage-marks.js +26 -0
- package/dist/system/_style-stat.js +31 -0
- package/dist/system/_style-stepper.js +16 -0
- package/dist/system/_style-switch.js +26 -0
- package/dist/system/_style-tab-hover.js +15 -0
- package/dist/system/_style-tab.js +71 -0
- package/dist/system/_style-text-focus.js +26 -0
- package/dist/system/_style-textarea.js +21 -0
- package/dist/system/_style-title.js +37 -0
- package/dist/system/_style-toast.js +22 -0
- package/dist/system/_style-toggle.js +50 -0
- package/dist/system/_style-toolbar.js +23 -0
- package/dist/system/_style-tooltip.js +46 -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 +29 -2
- package/manifest/components/agent-pile.json +3 -0
- package/manifest/components/alert-dialog.json +36 -3
- package/manifest/components/app-bar.json +61 -2
- package/manifest/components/app-shell.json +5 -0
- package/manifest/components/ask-box.json +3 -1
- package/manifest/components/autocomplete.json +85 -1
- package/manifest/components/avatar-group.json +7 -0
- package/manifest/components/avatar.json +7 -0
- package/manifest/components/band.json +7 -3
- package/manifest/components/bento.json +12 -1
- package/manifest/components/breadcrumb.json +12 -0
- package/manifest/components/button.json +43 -4
- package/manifest/components/calendar.json +13 -0
- package/manifest/components/card.json +23 -1
- package/manifest/components/carousel.json +4 -1
- package/manifest/components/channel-matrix.json +37 -3
- package/manifest/components/chart-tooltip-content.json +35 -3
- package/manifest/components/chat-empty-state.json +3 -1
- package/manifest/components/checkbox-group.json +36 -1
- package/manifest/components/checkbox.json +36 -1
- package/manifest/components/chip.json +22 -1
- package/manifest/components/clamp.json +3 -1
- package/manifest/components/code-block.json +10 -1
- package/manifest/components/collapsible.json +35 -2
- package/manifest/components/color-area.json +4 -2
- package/manifest/components/color-field.json +29 -0
- package/manifest/components/color-picker.json +29 -0
- package/manifest/components/color-slider.json +3 -1
- package/manifest/components/colors-section.json +9 -1
- package/manifest/components/combobox.json +85 -1
- package/manifest/components/command-palette.json +39 -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 +29 -0
- package/manifest/components/confidence-marker.json +3 -1
- package/manifest/components/container.json +2 -1
- package/manifest/components/context-menu.json +35 -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 +28 -0
- package/manifest/components/date-picker.json +32 -0
- package/manifest/components/date-range-picker.json +32 -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 +37 -3
- package/manifest/components/disclosure.json +35 -2
- package/manifest/components/dmx-bar.json +34 -3
- package/manifest/components/dmx-strip.json +34 -3
- package/manifest/components/drawer.json +36 -3
- package/manifest/components/dropdown-menu.json +35 -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/empty-state.json +13 -0
- package/manifest/components/env-var-input.json +28 -0
- 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 +15 -0
- package/manifest/components/field-error.json +15 -0
- package/manifest/components/field-label.json +16 -1
- package/manifest/components/field.json +15 -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 +37 -3
- package/manifest/components/info-tip.json +3 -0
- package/manifest/components/input-group.json +31 -0
- package/manifest/components/input.json +29 -0
- package/manifest/components/item.json +3 -1
- package/manifest/components/kbd.json +12 -1
- package/manifest/components/ledger.json +9 -2
- package/manifest/components/link.json +33 -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 +38 -4
- package/manifest/components/message-list.json +3 -0
- package/manifest/components/message.json +6 -1
- package/manifest/components/meter.json +1 -0
- package/manifest/components/mobile-composer.json +3 -1
- package/manifest/components/multi-select.json +86 -1
- package/manifest/components/musical-time-input.json +29 -0
- package/manifest/components/navigation-menu.json +48 -3
- package/manifest/components/node-card.json +3 -0
- package/manifest/components/number-field.json +30 -0
- package/manifest/components/otp-field.json +29 -0
- package/manifest/components/page-shell.json +14 -0
- package/manifest/components/pagination.json +22 -0
- package/manifest/components/panel-header.json +13 -0
- package/manifest/components/panel.json +14 -1
- package/manifest/components/password-input.json +28 -0
- package/manifest/components/permission-scopes.json +3 -1
- package/manifest/components/piano-keyboard.json +3 -0
- package/manifest/components/popover.json +37 -3
- package/manifest/components/preset-section.json +9 -1
- package/manifest/components/preview.json +24 -10
- package/manifest/components/progress.json +10 -1
- package/manifest/components/prompt-library.json +3 -1
- package/manifest/components/queue-dock.json +3 -1
- package/manifest/components/radio-group.json +14 -0
- package/manifest/components/radio.json +14 -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 +8 -1
- package/manifest/components/scroll-area.json +6 -2
- package/manifest/components/scrollable-tabs-list.json +21 -0
- package/manifest/components/scrub-input.json +28 -0
- package/manifest/components/seam-cell.json +1 -0
- package/manifest/components/seam-grid.json +1 -0
- package/manifest/components/seam-list.json +8 -1
- package/manifest/components/search-input.json +28 -0
- package/manifest/components/section-header.json +15 -2
- package/manifest/components/segmented-control.json +17 -0
- package/manifest/components/select.json +42 -0
- package/manifest/components/settings-panel.json +3 -0
- package/manifest/components/shape-section.json +9 -1
- package/manifest/components/sheet.json +35 -3
- package/manifest/components/shimmer-label.json +3 -0
- package/manifest/components/sidebar.json +19 -2
- package/manifest/components/skeleton.json +2 -0
- package/manifest/components/slider.json +16 -0
- package/manifest/components/sources.json +3 -1
- package/manifest/components/stat.json +17 -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 +30 -0
- package/manifest/components/table-scroll-region.json +22 -2
- package/manifest/components/table.json +22 -2
- package/manifest/components/tabs.json +22 -1
- package/manifest/components/tags-input.json +86 -1
- package/manifest/components/terminal-frame.json +3 -0
- package/manifest/components/textarea.json +31 -0
- package/manifest/components/theme-configurator.json +35 -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 +28 -0
- package/manifest/components/toast.json +39 -2
- package/manifest/components/toggle-group.json +2 -1
- package/manifest/components/toggle.json +32 -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 +22 -1
- package/manifest/components/tooltip.json +42 -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/fixtures.json +15 -0
- package/manifest/manifest.json +210 -190
- package/manifest/tokens.json +395 -4
- package/package.json +6 -6
package/dist/chrome/eyebrow.js
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { LABEL_CASE } from "../system/_style-label-case.js";
|
|
3
|
+
import { LABEL_TRACKING_LOOSE } from "../system/_style-label-tracking.js";
|
|
4
|
+
import { EYEBROW_FACE, EYEBROW_GLYPH, EYEBROW_INK, EYEBROW_SIZE, EYEBROW_WEIGHT } from "../system/_style-eyebrow.js";
|
|
2
5
|
import * as React from "react";
|
|
3
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
7
|
//#region src/chrome/eyebrow.tsx
|
|
5
8
|
/**
|
|
6
9
|
* The small accent kicker that sits above a title: `// PATCH`.
|
|
7
10
|
*
|
|
8
|
-
* Mono, uppercase and widely tracked
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* ever
|
|
11
|
+
* Mono, uppercase and widely tracked by default — the style set's choice
|
|
12
|
+
* inside one — in the theme's accent: the one place where the accent is used
|
|
13
|
+
* for pure typography rather than for a control. The slashes are marked
|
|
14
|
+
* `aria-hidden` and `select-none`, so a screen reader reads "patch" and a
|
|
15
|
+
* copy-paste of the page does not carry punctuation that was only ever
|
|
16
|
+
* decoration.
|
|
17
|
+
*
|
|
18
|
+
* A style set can restyle it apart from its other captions: its face, size,
|
|
19
|
+
* ink and weight (`--cue-style-eyebrow-face`, `-size`, `-ink`, `-weight`, each
|
|
20
|
+
* falling back through the label names to the console's voice), and whether
|
|
21
|
+
* the slashes print at all (`--cue-style-eyebrow-glyph: none` drops them, as
|
|
22
|
+
* every measured Look does). `slashes={false}` still removes them from the
|
|
23
|
+
* markup under any set.
|
|
13
24
|
*
|
|
14
25
|
* Static markup — no `"use client"`.
|
|
15
26
|
*
|
|
@@ -22,12 +33,12 @@ const Eyebrow = React.forwardRef(function Eyebrow({ className, slashes = true, c
|
|
|
22
33
|
return /* @__PURE__ */ jsxs("span", {
|
|
23
34
|
ref,
|
|
24
35
|
"data-slot": "eyebrow",
|
|
25
|
-
className: cn("inline-flex items-center gap-(--cue-space-2)
|
|
36
|
+
className: cn("inline-flex items-center gap-(--cue-space-2)", EYEBROW_SIZE, EYEBROW_INK, EYEBROW_WEIGHT, EYEBROW_FACE, LABEL_TRACKING_LOOSE, LABEL_CASE, className),
|
|
26
37
|
...elementProps,
|
|
27
38
|
children: [slashes ? /* @__PURE__ */ jsx("span", {
|
|
28
39
|
"data-slot": "eyebrow-glyph",
|
|
29
40
|
"aria-hidden": "true",
|
|
30
|
-
className: "select-none",
|
|
41
|
+
className: cn("select-none", EYEBROW_GLYPH),
|
|
31
42
|
children: "//"
|
|
32
43
|
}) : null, children]
|
|
33
44
|
});
|
package/dist/chrome/footer.d.ts
CHANGED
|
@@ -66,6 +66,11 @@ interface FooterProps extends React.ComponentPropsWithoutRef<"footer"> {
|
|
|
66
66
|
* docblock says why that is a fact about the published manifest and not only
|
|
67
67
|
* about the markup.
|
|
68
68
|
*
|
|
69
|
+
* Both rules are solid unless a style set says otherwise: `style-footer-rule-style`
|
|
70
|
+
* dashes the rule across the top and the rule over the fine print together,
|
|
71
|
+
* through the slot their borders already read, so a caller's own
|
|
72
|
+
* `className="border-dotted"` still wins. `Band`'s rule does not read it.
|
|
73
|
+
*
|
|
69
74
|
* Static markup — no `"use client"`.
|
|
70
75
|
*
|
|
71
76
|
* @example
|
package/dist/chrome/footer.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { LABEL_INK_SUBTLE } from "../system/_style-label-ink.js";
|
|
3
|
+
import { LABEL_FACE } from "../system/_style-label-face.js";
|
|
4
|
+
import { NAV_VOICE } from "../system/_style-nav-voice.js";
|
|
5
|
+
import { LABEL_SIZE } from "../system/_style-label-size.js";
|
|
2
6
|
import { Container } from "../layout/container.js";
|
|
3
7
|
import { bandClasses } from "./_band.js";
|
|
8
|
+
import { FOOTER_RULE, FOOTER_RULE_STYLE } from "../system/_style-footer-rule.js";
|
|
9
|
+
import { SECTION_RULE_EDGE } from "../system/_style-section-rule.js";
|
|
4
10
|
import * as React from "react";
|
|
5
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
12
|
//#region src/chrome/footer.tsx
|
|
@@ -44,6 +50,11 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
44
50
|
* docblock says why that is a fact about the published manifest and not only
|
|
45
51
|
* about the markup.
|
|
46
52
|
*
|
|
53
|
+
* Both rules are solid unless a style set says otherwise: `style-footer-rule-style`
|
|
54
|
+
* dashes the rule across the top and the rule over the fine print together,
|
|
55
|
+
* through the slot their borders already read, so a caller's own
|
|
56
|
+
* `className="border-dotted"` still wins. `Band`'s rule does not read it.
|
|
57
|
+
*
|
|
47
58
|
* Static markup — no `"use client"`.
|
|
48
59
|
*
|
|
49
60
|
* @example
|
|
@@ -66,14 +77,14 @@ const Footer = React.forwardRef(function Footer({ className, columnClassName, wi
|
|
|
66
77
|
ref,
|
|
67
78
|
"data-slot": "footer",
|
|
68
79
|
"data-separation": "rule",
|
|
69
|
-
className: cn(bandClasses("rule"), "border-(--cue-band-rule-color)", className),
|
|
80
|
+
className: cn(bandClasses("rule"), FOOTER_RULE, FOOTER_RULE_STYLE, "border-(--cue-band-rule-color)", className),
|
|
70
81
|
...elementProps,
|
|
71
82
|
children: /* @__PURE__ */ jsxs(Container, {
|
|
72
83
|
width,
|
|
73
|
-
className: cn(
|
|
84
|
+
className: cn(`flex flex-col gap-(--cue-space-6) ${NAV_VOICE}`, columnClassName),
|
|
74
85
|
children: [children, meta === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
75
86
|
"data-slot": "footer-meta",
|
|
76
|
-
className:
|
|
87
|
+
className: cn(`flex flex-wrap items-center justify-between gap-(--cue-space-3) border-t pt-(--cue-space-5) ${LABEL_SIZE} ${LABEL_INK_SUBTLE}`, SECTION_RULE_EDGE, FOOTER_RULE_STYLE, LABEL_FACE),
|
|
77
88
|
children: meta
|
|
78
89
|
})]
|
|
79
90
|
})
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_INSET } from "../system/_focus-ring.js";
|
|
4
|
+
import { CONTROL_FACE } from "../system/_style-control-face.js";
|
|
3
5
|
import { CaretDownGlyph } from "./_glyphs.js";
|
|
4
6
|
import { useCuePortalProps } from "../system/portal.js";
|
|
5
7
|
import { overlayPopupTransitionClasses, overlayPositionerClasses, overlaySurfaceClasses } from "../overlays/_surface.js";
|
|
8
|
+
import { NAV_CARET_INK, NAV_OPEN_GROUND, NAV_TRIGGER_HEIGHT, NAV_TRIGGER_HOVER_INK, NAV_TRIGGER_INK, NAV_TRIGGER_PAD, NAV_TRIGGER_VOICE } from "../system/_style-nav-menu.js";
|
|
6
9
|
import * as React from "react";
|
|
7
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
11
|
import { NavigationMenu } from "@base-ui/react/navigation-menu";
|
|
@@ -64,11 +67,11 @@ const NavigationMenu$1 = {
|
|
|
64
67
|
return /* @__PURE__ */ jsxs(NavigationMenu.Trigger, {
|
|
65
68
|
ref,
|
|
66
69
|
"data-slot": "navigation-menu-trigger",
|
|
67
|
-
className: cn(
|
|
70
|
+
className: cn(`inline-flex ${NAV_TRIGGER_HEIGHT} cursor-default items-center gap-(--cue-space-2) rounded-control ${NAV_TRIGGER_PAD} ${NAV_TRIGGER_VOICE} whitespace-nowrap ${NAV_TRIGGER_INK} no-underline transition-colors duration-150 outline-none select-none ${NAV_TRIGGER_HOVER_INK} ${FOCUS_RING_INSET} ${NAV_OPEN_GROUND} data-[popup-open]:text-fg`, className),
|
|
68
71
|
...elementProps,
|
|
69
72
|
children: [children, caret ? /* @__PURE__ */ jsx(NavigationMenu.Icon, {
|
|
70
73
|
className: "flex items-center transition-transform duration-150 data-[popup-open]:rotate-180 motion-reduce:transition-none",
|
|
71
|
-
children: /* @__PURE__ */ jsx(CaretDownGlyph, { className:
|
|
74
|
+
children: /* @__PURE__ */ jsx(CaretDownGlyph, { className: `size-icon-sm ${NAV_CARET_INK}` })
|
|
72
75
|
}) : null]
|
|
73
76
|
});
|
|
74
77
|
}),
|
|
@@ -86,7 +89,7 @@ const NavigationMenu$1 = {
|
|
|
86
89
|
"data-slot": "navigation-menu-link",
|
|
87
90
|
"data-active": active === true ? "" : void 0,
|
|
88
91
|
"aria-current": active === true ? "page" : void 0,
|
|
89
|
-
className: cn(
|
|
92
|
+
className: cn(`flex cursor-pointer flex-col gap-(--cue-space-1) rounded-control px-(--cue-space-3) py-(--cue-space-2) text-(length:--cue-text-ui) text-fg-muted no-underline transition-colors duration-150 outline-none select-none hover:bg-surface-3 hover:text-fg ${FOCUS_RING_INSET} data-[active]:text-accent`, CONTROL_FACE, className),
|
|
90
93
|
...elementProps,
|
|
91
94
|
children: [/* @__PURE__ */ jsx("span", { children }), description === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
92
95
|
className: "text-(length:--cue-text-label) leading-(--cue-leading-ui) text-fg-subtle",
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { BODY_VOICE } from "../system/_style-body.js";
|
|
3
|
+
import { LEDE_INK, LEDE_LEADING, LEDE_SIZE, LEDE_TRACKING } from "../system/_style-lede.js";
|
|
4
|
+
import { PAGE_TITLE_VOICE } from "../system/_style-page-title.js";
|
|
2
5
|
import * as React from "react";
|
|
3
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
7
|
//#region src/chrome/page-shell.tsx
|
|
@@ -48,25 +51,25 @@ const PageShell = React.forwardRef(function PageShell({ className, width = "narr
|
|
|
48
51
|
...elementProps,
|
|
49
52
|
children: [hasHeader ? /* @__PURE__ */ jsxs("header", {
|
|
50
53
|
"data-slot": "page-shell-header",
|
|
51
|
-
className: "flex items-start justify-between gap-(--cue-space-4)",
|
|
54
|
+
className: "flex flex-wrap items-start justify-between gap-(--cue-space-4)",
|
|
52
55
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
53
|
-
className: "flex min-w-
|
|
56
|
+
className: "flex min-w-[min(100%,20rem)] flex-col gap-(--cue-space-2)",
|
|
54
57
|
children: [
|
|
55
58
|
eyebrow,
|
|
56
59
|
title === void 0 ? null : /* @__PURE__ */ jsx("h1", {
|
|
57
60
|
"data-slot": "page-shell-title",
|
|
58
|
-
className:
|
|
61
|
+
className: PAGE_TITLE_VOICE,
|
|
59
62
|
children: title
|
|
60
63
|
}),
|
|
61
64
|
subtitle === void 0 ? null : /* @__PURE__ */ jsx("p", {
|
|
62
65
|
"data-slot": "page-shell-subtitle",
|
|
63
|
-
className:
|
|
66
|
+
className: `${BODY_VOICE} ${LEDE_SIZE} ${LEDE_LEADING} ${LEDE_TRACKING} ${LEDE_INK}`,
|
|
64
67
|
children: subtitle
|
|
65
68
|
})
|
|
66
69
|
]
|
|
67
70
|
}), actions === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
|
68
71
|
"data-slot": "page-shell-actions",
|
|
69
|
-
className: "flex
|
|
72
|
+
className: "flex min-w-0 flex-wrap items-center gap-(--cue-space-2)",
|
|
70
73
|
children: actions
|
|
71
74
|
})]
|
|
72
75
|
}) : null, children]
|
package/dist/chrome/panel.d.ts
CHANGED
|
@@ -12,8 +12,11 @@ type PanelProps = React.ComponentPropsWithoutRef<"div">;
|
|
|
12
12
|
* panel's radius, which is what makes a stack of hairline rows read as one
|
|
13
13
|
* object.
|
|
14
14
|
*
|
|
15
|
-
* Deliberately flat: no
|
|
16
|
-
* dialog, a menu, a toast) is allowed one — see `overlays/_surface.ts`.
|
|
15
|
+
* Deliberately flat: no elevation. In this system only a floating surface (a
|
|
16
|
+
* dialog, a menu, a toast) is allowed one — see `overlays/_surface.ts`. What a
|
|
17
|
+
* panel does carry is the paint axis's rim and its resting shade, both in
|
|
18
|
+
* `RIM_INSET` and both transparent until a pack tints them: a one-stop contact
|
|
19
|
+
* shade that sets the panel on the page, not a ladder rung that lifts it off.
|
|
17
20
|
*
|
|
18
21
|
* Static markup — no `"use client"`.
|
|
19
22
|
*
|
package/dist/chrome/panel.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { PANEL_PAD_X, PANEL_PAD_Y, PANEL_RULE } from "../system/_style-panel.js";
|
|
2
3
|
import { RIM_INSET } from "../system/_paint-rim.js";
|
|
4
|
+
import { TITLE_VOICE } from "../system/_style-title.js";
|
|
3
5
|
import * as React from "react";
|
|
4
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
7
|
//#region src/chrome/panel.tsx
|
|
@@ -13,8 +15,11 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
13
15
|
* panel's radius, which is what makes a stack of hairline rows read as one
|
|
14
16
|
* object.
|
|
15
17
|
*
|
|
16
|
-
* Deliberately flat: no
|
|
17
|
-
* dialog, a menu, a toast) is allowed one — see `overlays/_surface.ts`.
|
|
18
|
+
* Deliberately flat: no elevation. In this system only a floating surface (a
|
|
19
|
+
* dialog, a menu, a toast) is allowed one — see `overlays/_surface.ts`. What a
|
|
20
|
+
* panel does carry is the paint axis's rim and its resting shade, both in
|
|
21
|
+
* `RIM_INSET` and both transparent until a pack tints them: a one-stop contact
|
|
22
|
+
* shade that sets the panel on the page, not a ladder rung that lifts it off.
|
|
18
23
|
*
|
|
19
24
|
* Static markup — no `"use client"`.
|
|
20
25
|
*
|
|
@@ -29,7 +34,7 @@ const Panel = React.forwardRef(function Panel({ className, ...elementProps }, re
|
|
|
29
34
|
return /* @__PURE__ */ jsx("div", {
|
|
30
35
|
ref,
|
|
31
36
|
"data-slot": "panel",
|
|
32
|
-
className: cn(`overflow-hidden rounded-
|
|
37
|
+
className: cn(`overflow-hidden rounded-surface border border-border bg-surface-1 ${RIM_INSET}`, className),
|
|
33
38
|
...elementProps
|
|
34
39
|
});
|
|
35
40
|
});
|
|
@@ -48,13 +53,13 @@ const PanelHeader = React.forwardRef(function PanelHeader({ className, title, ac
|
|
|
48
53
|
return /* @__PURE__ */ jsxs("div", {
|
|
49
54
|
ref,
|
|
50
55
|
"data-slot": "panel-header",
|
|
51
|
-
className: cn(
|
|
56
|
+
className: cn(`flex items-center justify-between gap-(--cue-space-3) border-b ${PANEL_RULE} ${PANEL_PAD_X} ${PANEL_PAD_Y}`, className),
|
|
52
57
|
...elementProps,
|
|
53
58
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
54
59
|
className: "flex min-w-0 items-center gap-(--cue-space-3)",
|
|
55
60
|
children: [title === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
56
61
|
"data-slot": "panel-header-title",
|
|
57
|
-
className:
|
|
62
|
+
className: `overflow-x-clip text-ellipsis whitespace-nowrap ${TITLE_VOICE}`,
|
|
58
63
|
children: title
|
|
59
64
|
}), children]
|
|
60
65
|
}), actions === void 0 ? null : /* @__PURE__ */ jsx("div", {
|
package/dist/chrome/row.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { FOCUS_RING_INSET_2 } from "../system/_focus-ring.js";
|
|
2
3
|
import { cva } from "../lib/cva.js";
|
|
4
|
+
import { DATA_FACE } from "../system/_style-data-face.js";
|
|
5
|
+
import { ROW_BLOCK_PAD, ROW_INK, ROW_RULE_STYLE } from "../system/_style-row.js";
|
|
6
|
+
import { SEAM_INK, SEAM_RIM } from "../system/_style-seam.js";
|
|
3
7
|
import * as React from "react";
|
|
4
8
|
import { jsx } from "react/jsx-runtime";
|
|
5
9
|
//#region src/chrome/row.tsx
|
|
@@ -18,14 +22,14 @@ import { jsx } from "react/jsx-runtime";
|
|
|
18
22
|
* @example
|
|
19
23
|
* <li className={rowVariants({ interactive: true })} />
|
|
20
24
|
*/
|
|
21
|
-
const rowVariants = cva(
|
|
25
|
+
const rowVariants = cva(`flex w-full items-center gap-(--cue-space-3) px-(--cue-pad-row-x) ${DATA_FACE} text-(length:--cue-text-ui) ${ROW_INK}`, {
|
|
22
26
|
variants: {
|
|
23
27
|
seam: {
|
|
24
|
-
true: "bg-bg",
|
|
25
|
-
false:
|
|
28
|
+
true: "bg-bg py-(--cue-pad-row-y)",
|
|
29
|
+
false: `border-t border-border first:border-t-0 [[data-slot=panel-header]+&]:border-t-0 ${ROW_RULE_STYLE} ${ROW_BLOCK_PAD}`
|
|
26
30
|
},
|
|
27
31
|
interactive: {
|
|
28
|
-
true:
|
|
32
|
+
true: `cursor-pointer text-left transition-colors duration-150 outline-none hover:bg-surface-2 ${FOCUS_RING_INSET_2} disabled:pointer-events-none disabled:opacity-40`,
|
|
29
33
|
false: ""
|
|
30
34
|
}
|
|
31
35
|
},
|
|
@@ -98,7 +102,7 @@ const SeamList = React.forwardRef(function SeamList({ className, ...elementProps
|
|
|
98
102
|
return /* @__PURE__ */ jsx("div", {
|
|
99
103
|
ref,
|
|
100
104
|
"data-slot": "seam-list",
|
|
101
|
-
className: cn(
|
|
105
|
+
className: cn(`flex flex-col gap-px overflow-hidden rounded-surface border ${SEAM_RIM} ${SEAM_INK}`, className),
|
|
102
106
|
...elementProps
|
|
103
107
|
});
|
|
104
108
|
});
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_INSET_2 } from "../system/_focus-ring.js";
|
|
4
|
+
import { SCROLLBAR_SIZE_H, SCROLLBAR_SIZE_V, SCROLLBAR_THUMB } from "../system/_style-scrollbar.js";
|
|
3
5
|
import * as React from "react";
|
|
4
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
7
|
import { ScrollArea } from "@base-ui/react/scroll-area";
|
|
@@ -10,7 +12,7 @@ import { ScrollArea } from "@base-ui/react/scroll-area";
|
|
|
10
12
|
* A console packs panels edge to edge, and a permanent 12px trough on every one
|
|
11
13
|
* of them is 12px of chrome per panel that says nothing.
|
|
12
14
|
*/
|
|
13
|
-
const SCROLLBAR_CLASSES =
|
|
15
|
+
const SCROLLBAR_CLASSES = `flex touch-none justify-center rounded-full opacity-0 transition-opacity delay-300 duration-150 select-none data-[hovering]:opacity-100 data-[hovering]:delay-0 data-[scrolling]:opacity-100 data-[scrolling]:delay-0 motion-reduce:transition-none ${SCROLLBAR_SIZE_H} data-[orientation=horizontal]:flex-col ${SCROLLBAR_SIZE_V}`;
|
|
14
16
|
/**
|
|
15
17
|
* A scrolling region with the system's own scrollbar instead of the platform's.
|
|
16
18
|
*
|
|
@@ -36,7 +38,7 @@ const ScrollArea$1 = React.forwardRef(function ScrollArea$2({ className, viewpor
|
|
|
36
38
|
/* @__PURE__ */ jsx(ScrollArea.Viewport, {
|
|
37
39
|
ref: viewportRef,
|
|
38
40
|
"data-slot": "scroll-area-viewport",
|
|
39
|
-
className: cn(
|
|
41
|
+
className: cn(`size-full overscroll-contain outline-none ${FOCUS_RING_INSET_2}`, viewportClassName),
|
|
40
42
|
children: /* @__PURE__ */ jsx(ScrollArea.Content, {
|
|
41
43
|
"data-slot": "scroll-area-content",
|
|
42
44
|
children
|
|
@@ -49,7 +51,7 @@ const ScrollArea$1 = React.forwardRef(function ScrollArea$2({ className, viewpor
|
|
|
49
51
|
className: SCROLLBAR_CLASSES,
|
|
50
52
|
children: /* @__PURE__ */ jsx(ScrollArea.Thumb, {
|
|
51
53
|
"data-slot": "scroll-area-thumb",
|
|
52
|
-
className:
|
|
54
|
+
className: `w-full rounded-full ${SCROLLBAR_THUMB}`
|
|
53
55
|
})
|
|
54
56
|
}) : null,
|
|
55
57
|
horizontal ? /* @__PURE__ */ jsx(ScrollArea.Scrollbar, {
|
|
@@ -59,7 +61,7 @@ const ScrollArea$1 = React.forwardRef(function ScrollArea$2({ className, viewpor
|
|
|
59
61
|
className: SCROLLBAR_CLASSES,
|
|
60
62
|
children: /* @__PURE__ */ jsx(ScrollArea.Thumb, {
|
|
61
63
|
"data-slot": "scroll-area-thumb",
|
|
62
|
-
className:
|
|
64
|
+
className: `h-full rounded-full ${SCROLLBAR_THUMB}`
|
|
63
65
|
})
|
|
64
66
|
}) : null,
|
|
65
67
|
vertical && horizontal ? /* @__PURE__ */ jsx(ScrollArea.Corner, { "data-slot": "scroll-area-corner" }) : null
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_OFFSET_2 } from "../system/_focus-ring.js";
|
|
4
|
+
import { LABEL_INK } from "../system/_style-label-ink.js";
|
|
5
|
+
import { LABEL_FACE } from "../system/_style-label-face.js";
|
|
6
|
+
import { LABEL_WEIGHT } from "../system/_style-label-weight.js";
|
|
7
|
+
import { LABEL_CASE } from "../system/_style-label-case.js";
|
|
8
|
+
import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
|
|
3
9
|
import { ChevronRightGlyph } from "./_glyphs.js";
|
|
10
|
+
import { LABEL_SIZE } from "../system/_style-label-size.js";
|
|
11
|
+
import { SECTION_RULE_FILL } from "../system/_style-section-rule.js";
|
|
12
|
+
import { DATA_FACE } from "../system/_style-data-face.js";
|
|
4
13
|
import * as React from "react";
|
|
5
14
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
15
|
//#region src/chrome/section-header.tsx
|
|
@@ -35,18 +44,18 @@ const SectionHeader = React.forwardRef(function SectionHeader({ className, label
|
|
|
35
44
|
}) : null,
|
|
36
45
|
/* @__PURE__ */ jsx("span", {
|
|
37
46
|
"data-slot": "section-header-label",
|
|
38
|
-
className: "shrink-0
|
|
47
|
+
className: cn("shrink-0", LABEL_SIZE, LABEL_INK, LABEL_WEIGHT, LABEL_FACE, LABEL_TRACKING, LABEL_CASE),
|
|
39
48
|
children: label
|
|
40
49
|
}),
|
|
41
50
|
count === void 0 ? null : /* @__PURE__ */ jsx("span", {
|
|
42
51
|
"data-slot": "section-header-count",
|
|
43
|
-
className:
|
|
52
|
+
className: `shrink-0 ${DATA_FACE} text-(length:--cue-text-label) tabular-nums text-fg-subtle`,
|
|
44
53
|
children: count
|
|
45
54
|
}),
|
|
46
55
|
/* @__PURE__ */ jsx("span", {
|
|
47
56
|
"data-slot": "section-header-rule",
|
|
48
57
|
"aria-hidden": "true",
|
|
49
|
-
className: "h-px min-w-(--cue-space-4) flex-1
|
|
58
|
+
className: cn("h-px min-w-(--cue-space-4) flex-1", SECTION_RULE_FILL)
|
|
50
59
|
})
|
|
51
60
|
] });
|
|
52
61
|
const headClasses = "flex min-w-0 flex-1 items-center gap-(--cue-space-3)";
|
|
@@ -62,7 +71,7 @@ const SectionHeader = React.forwardRef(function SectionHeader({ className, label
|
|
|
62
71
|
"aria-expanded": open,
|
|
63
72
|
onClick: toggle,
|
|
64
73
|
"data-slot": "section-header-toggle",
|
|
65
|
-
className: cn(headClasses,
|
|
74
|
+
className: cn(headClasses, `cursor-pointer text-left outline-none hover:text-fg ${FOCUS_RING_OFFSET_2}`),
|
|
66
75
|
children: headContent
|
|
67
76
|
}) : /* @__PURE__ */ jsx("div", {
|
|
68
77
|
className: headClasses,
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_INSET } from "../system/_focus-ring.js";
|
|
4
|
+
import { CONTROL_FACE } from "../system/_style-control-face.js";
|
|
3
5
|
import { useComposedRefs } from "../lib/compose.js";
|
|
4
6
|
import { EDGE_SCROLLER_CLASSES, EdgeChevrons, useEdgeScroll } from "./_edge-scroller.js";
|
|
7
|
+
import { SEGMENT_PAD } from "../system/_style-segment-pad.js";
|
|
8
|
+
import { SEGMENT_IDLE_INK } from "../system/_style-segment.js";
|
|
9
|
+
import { SEGMENTED_CHEVRON_GROUND, SEGMENTED_RIM, SEGMENTED_TRACK, SEGMENT_PRESSED, SEGMENT_RADIUS } from "../system/_style-segmented-control.js";
|
|
5
10
|
import * as React from "react";
|
|
6
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
12
|
import { Toggle } from "@base-ui/react/toggle";
|
|
@@ -9,7 +14,7 @@ import { ToggleGroup } from "@base-ui/react/toggle-group";
|
|
|
9
14
|
//#region src/chrome/segmented-control.tsx
|
|
10
15
|
const ITEM_SIZES = {
|
|
11
16
|
sm: "h-control-sm px-(--cue-space-3) text-(length:--cue-text-label)",
|
|
12
|
-
md:
|
|
17
|
+
md: `h-control-md ${SEGMENT_PAD} text-(length:--cue-text-ui)`,
|
|
13
18
|
lg: "h-control-lg px-(--cue-space-5) text-(length:--cue-text-body)"
|
|
14
19
|
};
|
|
15
20
|
/**
|
|
@@ -17,8 +22,13 @@ const ITEM_SIZES = {
|
|
|
17
22
|
* solid accent fill. A solid bar inside a small control reads as a second,
|
|
18
23
|
* louder button and drowns the labels around it (the luma defect ruling); the
|
|
19
24
|
* soft tint says "this one" at exactly the volume a view switcher deserves.
|
|
25
|
+
*
|
|
26
|
+
* That is the default. A style set may draw the choice as a raised pill on a
|
|
27
|
+
* filled track instead — its ground, ink, edge, weight and resting shade, the
|
|
28
|
+
* track and its inset — through the segment names: `_style-segmented-control.ts`
|
|
29
|
+
* for the pressed segment, and `_style-segment.ts` for the half `Tabs` shares.
|
|
20
30
|
*/
|
|
21
|
-
const ITEM_CLASSES =
|
|
31
|
+
const ITEM_CLASSES = `inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-(--cue-space-2) whitespace-nowrap ${SEGMENT_RADIUS} ${CONTROL_FACE} ${SEGMENT_IDLE_INK} transition-colors duration-150 outline-none hover:text-fg ${SEGMENT_PRESSED} ${FOCUS_RING_INSET} disabled:pointer-events-none disabled:opacity-40 data-[disabled]:pointer-events-none data-[disabled]:opacity-40`;
|
|
22
32
|
/**
|
|
23
33
|
* A one-of-N switch drawn as a row of segments: the console's view picker.
|
|
24
34
|
*
|
|
@@ -57,7 +67,7 @@ const SegmentedControl = React.forwardRef(function SegmentedControl({ items, val
|
|
|
57
67
|
const iconSize = size === "sm" ? "size-icon-sm" : "size-icon-md";
|
|
58
68
|
return /* @__PURE__ */ jsxs("div", {
|
|
59
69
|
"data-slot": "segmented-control-frame",
|
|
60
|
-
className: cn(
|
|
70
|
+
className: cn(`relative inline-flex max-w-full min-w-0 shrink-0 items-center rounded-control border ${SEGMENTED_RIM} ${SEGMENTED_TRACK}`, className),
|
|
61
71
|
children: [/* @__PURE__ */ jsx(ToggleGroup, {
|
|
62
72
|
ref: groupRef,
|
|
63
73
|
value: value === void 0 ? [] : [value],
|
|
@@ -87,7 +97,7 @@ const SegmentedControl = React.forwardRef(function SegmentedControl({ items, val
|
|
|
87
97
|
onNudge: scroll.nudge,
|
|
88
98
|
previousLabel,
|
|
89
99
|
nextLabel,
|
|
90
|
-
className:
|
|
100
|
+
className: `rounded-control ${SEGMENTED_CHEVRON_GROUND}`
|
|
91
101
|
})]
|
|
92
102
|
});
|
|
93
103
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { LABEL_FACE } from "../system/_style-label-face.js";
|
|
2
3
|
import { STATUS_BAR_GROUP_CLASSES, statusBarItemClasses } from "./_status-bar.js";
|
|
3
4
|
import { StatusBarInteractiveItem } from "./_status-bar-item.js";
|
|
4
5
|
import * as React from "react";
|
|
@@ -8,7 +9,7 @@ const StatusBarRoot = React.forwardRef(function StatusBar({ className, ...elemen
|
|
|
8
9
|
return /* @__PURE__ */ jsx("div", {
|
|
9
10
|
ref,
|
|
10
11
|
"data-slot": "status-bar",
|
|
11
|
-
className: cn("flex h-(--cue-chrome-statusbar) w-full shrink-0 items-center gap-(--cue-space-4) overflow-x-clip border-t border-border bg-surface-1 px-(--cue-pad-row-x)
|
|
12
|
+
className: cn("flex h-(--cue-chrome-statusbar) w-full shrink-0 items-center gap-(--cue-space-4) overflow-x-clip border-t border-border bg-surface-1 px-(--cue-pad-row-x) text-(length:--cue-text-label) text-fg-subtle", LABEL_FACE, className),
|
|
12
13
|
...elementProps
|
|
13
14
|
});
|
|
14
15
|
});
|
package/dist/chrome/tabs.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_INSET_2, FOCUS_RING_OFFSET_2 } from "../system/_focus-ring.js";
|
|
4
|
+
import { CONTROL_FACE } from "../system/_style-control-face.js";
|
|
3
5
|
import { EDGE_SCROLLER_CLASSES, EdgeChevrons, useEdgeScroll } from "./_edge-scroller.js";
|
|
6
|
+
import { SEGMENT_PAD } from "../system/_style-segment-pad.js";
|
|
7
|
+
import { SEGMENT_IDLE_INK } from "../system/_style-segment.js";
|
|
8
|
+
import { TAB_HOVER_INK } from "../system/_style-tab-hover.js";
|
|
9
|
+
import { GROUP_GAP } from "../system/_style-group-gap.js";
|
|
10
|
+
import { TAB_ACTIVE, TAB_RULE, TAB_SHAPE, TAB_TRACK, TAB_UNDERLINE } from "../system/_style-tab.js";
|
|
4
11
|
import * as React from "react";
|
|
5
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
13
|
import { Tabs } from "@base-ui/react/tabs";
|
|
@@ -25,7 +32,7 @@ const TabsList = React.forwardRef(function TabsList({ className, ...elementProps
|
|
|
25
32
|
return /* @__PURE__ */ jsx(Tabs.List, {
|
|
26
33
|
ref,
|
|
27
34
|
"data-slot": "tabs-list",
|
|
28
|
-
className: cn(
|
|
35
|
+
className: cn(`relative flex items-center ${GROUP_GAP} ${TAB_RULE} border-border ${TAB_TRACK} data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch data-[orientation=vertical]:border-b-0 data-[orientation=vertical]:border-r`, className),
|
|
29
36
|
...elementProps
|
|
30
37
|
});
|
|
31
38
|
});
|
|
@@ -33,12 +40,16 @@ const TabsList = React.forwardRef(function TabsList({ className, ...elementProps
|
|
|
33
40
|
* One tab. Selected state is an accent underline sitting on the list's rule —
|
|
34
41
|
* never a filled pill, which at console density turns a row of four tabs into a
|
|
35
42
|
* row of four buttons and loses the "one surface, several views" reading.
|
|
43
|
+
*
|
|
44
|
+
* That is the default. A Look that draws its tabs as a segmented track says so
|
|
45
|
+
* through the style set's segment names, and takes the rule and the underline
|
|
46
|
+
* away with `style-tab-rule` and `style-tab-underline`.
|
|
36
47
|
*/
|
|
37
48
|
const TabsTab = React.forwardRef(function TabsTab({ className, ...elementProps }, ref) {
|
|
38
49
|
return /* @__PURE__ */ jsx(Tabs.Tab, {
|
|
39
50
|
ref,
|
|
40
51
|
"data-slot": "tabs-tab",
|
|
41
|
-
className: cn(
|
|
52
|
+
className: cn(`relative inline-flex h-control-md shrink-0 cursor-pointer items-center justify-center gap-(--cue-space-2) ${TAB_SHAPE} ${SEGMENT_PAD} text-(length:--cue-text-ui) whitespace-nowrap ${SEGMENT_IDLE_INK} transition-colors duration-150 outline-none select-none`, CONTROL_FACE, `${TAB_HOVER_INK} ${FOCUS_RING_INSET_2}`, "data-[disabled]:pointer-events-none data-[disabled]:opacity-40", "after:absolute after:inset-x-0 after:-bottom-px after:h-px after:bg-transparent after:content-['']", `${TAB_ACTIVE} ${TAB_UNDERLINE}`, className),
|
|
42
53
|
...elementProps
|
|
43
54
|
});
|
|
44
55
|
});
|
|
@@ -47,7 +58,7 @@ const TabsPanel = React.forwardRef(function TabsPanel({ className, ...elementPro
|
|
|
47
58
|
return /* @__PURE__ */ jsx(Tabs.Panel, {
|
|
48
59
|
ref,
|
|
49
60
|
"data-slot": "tabs-panel",
|
|
50
|
-
className: cn(
|
|
61
|
+
className: cn(`min-w-0 outline-none ${FOCUS_RING_OFFSET_2}`, className),
|
|
51
62
|
...elementProps
|
|
52
63
|
});
|
|
53
64
|
});
|
package/dist/chrome/toolbar.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_INSET } from "../system/_focus-ring.js";
|
|
4
|
+
import { GHOST_INK } from "../system/_style-control.js";
|
|
3
5
|
import { useComposedRefs } from "../lib/compose.js";
|
|
4
6
|
import { EDGE_SCROLLER_CLASSES, EdgeChevrons, useEdgeScroll } from "./_edge-scroller.js";
|
|
7
|
+
import { TOOLBAR_FRAME, TOOLBAR_SEPARATOR_HEIGHT } from "../system/_style-toolbar.js";
|
|
5
8
|
import * as React from "react";
|
|
6
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
10
|
import { Toolbar } from "@base-ui/react/toolbar";
|
|
@@ -30,7 +33,7 @@ const Toolbar$1 = {
|
|
|
30
33
|
const bar = /* @__PURE__ */ jsx(Toolbar.Root, {
|
|
31
34
|
ref: barRef,
|
|
32
35
|
"data-slot": "toolbar",
|
|
33
|
-
className: cn(
|
|
36
|
+
className: cn(`flex w-full shrink-0 items-center border-b ${TOOLBAR_FRAME} bg-surface-1 data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-(--cue-chrome-toolbar) data-[orientation=vertical]:flex-col data-[orientation=vertical]:border-r data-[orientation=vertical]:border-b-0`, scrolls ? EDGE_SCROLLER_CLASSES : null, className),
|
|
34
37
|
...elementProps,
|
|
35
38
|
style: {
|
|
36
39
|
...elementProps.style,
|
|
@@ -54,7 +57,7 @@ const Toolbar$1 = {
|
|
|
54
57
|
return /* @__PURE__ */ jsxs(Toolbar.Button, {
|
|
55
58
|
ref,
|
|
56
59
|
"data-slot": "toolbar-button",
|
|
57
|
-
className: cn(
|
|
60
|
+
className: cn(`inline-flex h-control-md shrink-0 cursor-pointer items-center justify-center gap-(--cue-space-2) rounded-control px-(--cue-space-3) font-mono text-(length:--cue-text-ui) whitespace-nowrap ${GHOST_INK} transition-colors duration-150 outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET} data-[disabled]:pointer-events-none data-[disabled]:opacity-40`, className),
|
|
58
61
|
...elementProps,
|
|
59
62
|
children: [Icon === void 0 ? null : /* @__PURE__ */ jsx(Icon, {
|
|
60
63
|
"aria-hidden": "true",
|
|
@@ -74,7 +77,7 @@ const Toolbar$1 = {
|
|
|
74
77
|
return /* @__PURE__ */ jsx(Toolbar.Separator, {
|
|
75
78
|
ref,
|
|
76
79
|
"data-slot": "toolbar-separator",
|
|
77
|
-
className: cn(
|
|
80
|
+
className: cn(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:mx-(--cue-space-1) ${TOOLBAR_SEPARATOR_HEIGHT} data-[orientation=vertical]:w-px`, className),
|
|
78
81
|
...elementProps
|
|
79
82
|
});
|
|
80
83
|
})
|
package/dist/chrome/tree.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING, FOCUS_RING_INSET } from "../system/_focus-ring.js";
|
|
3
4
|
import { TREE_GUIDE_GLYPHS, flattenTree } from "./_tree.js";
|
|
4
5
|
import { ChevronRightGlyph, EyeGlyph, EyeOffGlyph, GhostGlyph } from "./_glyphs.js";
|
|
5
6
|
import * as React from "react";
|
|
@@ -145,7 +146,7 @@ const Tree = React.forwardRef(function Tree({ className, items, expanded: expand
|
|
|
145
146
|
"data-disabled": item.disabled === true ? "" : void 0,
|
|
146
147
|
onFocus: () => setActiveId(item.id),
|
|
147
148
|
onClick: () => select(row),
|
|
148
|
-
className:
|
|
149
|
+
className: `group/tree-row flex h-control-sm cursor-default items-center gap-(--cue-space-1) rounded-control pr-(--cue-space-2) font-mono text-(length:--cue-text-ui) whitespace-nowrap text-fg-muted outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET} data-[selected]:bg-accent-soft data-[selected]:text-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-40`,
|
|
149
150
|
children: [
|
|
150
151
|
guides ? row.guides.map((guide, depth) => /* @__PURE__ */ jsx("span", {
|
|
151
152
|
"aria-hidden": "true",
|
|
@@ -239,7 +240,7 @@ const TreeVisibilityToggle = React.forwardRef(function TreeVisibilityToggle({ cl
|
|
|
239
240
|
if (event.defaultPrevented) return;
|
|
240
241
|
onValueChange(NEXT_VISIBILITY[value]);
|
|
241
242
|
},
|
|
242
|
-
className: cn(
|
|
243
|
+
className: cn(`flex size-icon-md shrink-0 cursor-pointer items-center justify-center rounded-control border-0 bg-transparent p-0 outline-none transition-colors duration-150 hover:text-fg ${FOCUS_RING} motion-reduce:transition-none data-[state=visible]:text-fg-subtle data-[state=ghost]:text-info data-[state=hidden]:text-warn`, className),
|
|
243
244
|
...elementProps,
|
|
244
245
|
children: /* @__PURE__ */ jsx(Glyph, { className: "size-icon-sm" })
|
|
245
246
|
});
|
package/dist/color/_thumb.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
+
import { FOCUS_RING_DATA_OFFSET_2 } from "../system/_focus-ring.js";
|
|
1
2
|
//#region src/color/_thumb.ts
|
|
2
3
|
/**
|
|
3
4
|
* The draggable puck shared by the colour area and every colour rail.
|
|
4
5
|
*
|
|
5
|
-
* The one place in this system where
|
|
6
|
+
* The one place in this system where the RIM is not a token colour: the thumb
|
|
6
7
|
* sits on top of arbitrary user colour, so it needs a light rim *and* a dark
|
|
7
8
|
* halo to stay visible against both ends of the spectrum. `--cue-fg` /
|
|
8
9
|
* `--cue-bg` supply the pair, which keeps it theme-driven without pretending a
|
|
9
|
-
* single token could do the job.
|
|
10
|
+
* single token could do the job. The keyboard ring is a different question —
|
|
11
|
+
* it is an indicator, not decoration — and reads `--cue-focus` like every
|
|
12
|
+
* other ring in this system (spec 2026-09-26-looks-fidelity §3.12, F-9): three
|
|
13
|
+
* shipped presets (hivehub, luma, venu, all light) fail WCAG 1.4.11 with the
|
|
14
|
+
* un-gated accent here, since the puck is exactly the small, thin indicator
|
|
15
|
+
* that clause guards.
|
|
10
16
|
*
|
|
11
17
|
* @internal Not part of the public API.
|
|
12
18
|
*/
|
|
13
|
-
const colorThumbClasses =
|
|
19
|
+
const colorThumbClasses = `size-[0.875rem] rounded-full border-2 border-fg shadow-[0_0_0_1px_var(--cue-bg)] outline-none ${FOCUS_RING_DATA_OFFSET_2} data-[dragging]:scale-110 data-[disabled]:opacity-40`;
|
|
14
20
|
//#endregion
|
|
15
21
|
export { colorThumbClasses };
|
package/dist/color/color-area.js
CHANGED
|
@@ -26,7 +26,7 @@ import { ColorArea, ColorThumb } from "react-aria-components";
|
|
|
26
26
|
function ColorArea$1({ className, thumbClassName, value, defaultValue, ...areaProps }) {
|
|
27
27
|
return /* @__PURE__ */ jsx(ColorArea, {
|
|
28
28
|
"data-slot": "color-area",
|
|
29
|
-
className: ariaClassName("relative h-[9rem] w-full touch-none rounded-
|
|
29
|
+
className: ariaClassName("relative h-[9rem] w-full touch-none rounded-control border border-border outline-none data-[disabled]:opacity-40", className),
|
|
30
30
|
value: toAriaColor(value),
|
|
31
31
|
defaultValue: toAriaColor(defaultValue),
|
|
32
32
|
...areaProps,
|
|
@@ -32,7 +32,7 @@ const SWATCH_SIZES = {
|
|
|
32
32
|
function ColorSwatch$1({ size = "md", className, color, ...swatchProps }) {
|
|
33
33
|
return /* @__PURE__ */ jsx("span", {
|
|
34
34
|
"data-slot": "color-swatch",
|
|
35
|
-
className: cn("relative inline-block shrink-0 overflow-hidden rounded-
|
|
35
|
+
className: cn("relative inline-block shrink-0 overflow-hidden rounded-control border border-border", SWATCH_SIZES[size], checkerClasses, className),
|
|
36
36
|
children: /* @__PURE__ */ jsx(ColorSwatch, {
|
|
37
37
|
color: toAriaColor(color),
|
|
38
38
|
className: "block size-full",
|