@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
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { FOCUS_RING_OFFSET_2 } from "../system/_focus-ring.js";
|
|
3
|
+
import { CONTROL_FACE } from "../system/_style-control-face.js";
|
|
4
|
+
import { BODY_SIZE_LABEL } from "../system/_style-body-size.js";
|
|
5
|
+
import { HELP_INK } from "../system/_style-help-ink.js";
|
|
2
6
|
import * as React from "react";
|
|
3
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
8
|
//#region src/layout/breadcrumb.tsx
|
|
@@ -6,7 +10,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
6
10
|
* A crumb that goes somewhere. Muted until hovered, never underlined — the
|
|
7
11
|
* trail is navigation furniture and should not read as body-copy links.
|
|
8
12
|
*/
|
|
9
|
-
const CRUMB_LINK_CLASSES =
|
|
13
|
+
const CRUMB_LINK_CLASSES = `cursor-pointer rounded-control border-0 bg-transparent p-0 ${CONTROL_FACE} ${BODY_SIZE_LABEL} text-fg-muted no-underline transition-colors duration-150 outline-none hover:text-accent ${FOCUS_RING_OFFSET_2}`;
|
|
10
14
|
/**
|
|
11
15
|
* Where you are, and how to get back.
|
|
12
16
|
*
|
|
@@ -28,13 +32,13 @@ const Breadcrumb = React.forwardRef(function Breadcrumb({ className, items, sepa
|
|
|
28
32
|
className: cn("min-w-0", className),
|
|
29
33
|
...elementProps,
|
|
30
34
|
children: /* @__PURE__ */ jsx("ol", {
|
|
31
|
-
className:
|
|
35
|
+
className: cn(`m-0 flex list-none flex-wrap items-center gap-(--cue-space-2) p-0 ${BODY_SIZE_LABEL} text-fg-muted`, CONTROL_FACE),
|
|
32
36
|
children: items.map((item, index) => {
|
|
33
37
|
const last = index === items.length - 1;
|
|
34
38
|
return /* @__PURE__ */ jsxs(React.Fragment, { children: [index === 0 ? null : /* @__PURE__ */ jsx("li", {
|
|
35
39
|
"data-slot": "breadcrumb-separator",
|
|
36
40
|
"aria-hidden": "true",
|
|
37
|
-
className:
|
|
41
|
+
className: `${HELP_INK} select-none`,
|
|
38
42
|
children: separator
|
|
39
43
|
}), /* @__PURE__ */ jsx("li", {
|
|
40
44
|
"data-slot": "breadcrumb-item",
|
package/dist/layout/card.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { BODY_VOICE } from "../system/_style-body.js";
|
|
3
|
+
import { BODY_SIZE } from "../system/_style-body-size.js";
|
|
4
|
+
import { RIM_INSET } from "../system/_paint-rim.js";
|
|
5
|
+
import { TITLE_VOICE } from "../system/_style-title.js";
|
|
6
|
+
import { SEAM_INK, SEAM_RIM } from "../system/_style-seam.js";
|
|
7
|
+
import { STROKE_SURFACE_1 } from "../system/_paint-stroke-surface-1.js";
|
|
8
|
+
import { CARD_PAD, CARD_PAD_BOTTOM, CARD_PAD_SEAM_BOTTOM, CARD_PAD_SEAM_TOP, CARD_PAD_TOP, CARD_PAD_X } from "../system/_style-card-pad.js";
|
|
9
|
+
import { DESCRIPTION_LEADING, DESCRIPTION_TRACKING } from "../system/_style-description.js";
|
|
2
10
|
import * as React from "react";
|
|
3
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
12
|
/**
|
|
@@ -19,7 +27,7 @@ const Card = {
|
|
|
19
27
|
ref,
|
|
20
28
|
"data-slot": "card",
|
|
21
29
|
"data-seam": seam ? "" : void 0,
|
|
22
|
-
className: cn("group/card flex flex-col overflow-hidden rounded-
|
|
30
|
+
className: cn("group/card flex flex-col overflow-hidden rounded-surface", seam ? `border ${SEAM_RIM} gap-px ${SEAM_INK}` : `${STROKE_SURFACE_1} ${RIM_INSET}`, className),
|
|
23
31
|
...elementProps
|
|
24
32
|
});
|
|
25
33
|
}),
|
|
@@ -27,7 +35,7 @@ const Card = {
|
|
|
27
35
|
return /* @__PURE__ */ jsxs("div", {
|
|
28
36
|
ref,
|
|
29
37
|
"data-slot": "card-header",
|
|
30
|
-
className: cn(
|
|
38
|
+
className: cn(`flex items-start justify-between gap-(--cue-space-4) bg-surface-1 ${CARD_PAD_X} ${CARD_PAD_TOP} pb-0 ${CARD_PAD_SEAM_BOTTOM}`, className),
|
|
31
39
|
...elementProps,
|
|
32
40
|
children: [/* @__PURE__ */ jsx("div", {
|
|
33
41
|
className: "flex min-w-0 flex-col gap-(--cue-space-1)",
|
|
@@ -43,7 +51,7 @@ const Card = {
|
|
|
43
51
|
return /* @__PURE__ */ jsx("h3", {
|
|
44
52
|
ref,
|
|
45
53
|
"data-slot": "card-title",
|
|
46
|
-
className: cn(
|
|
54
|
+
className: cn(TITLE_VOICE, className),
|
|
47
55
|
...elementProps
|
|
48
56
|
});
|
|
49
57
|
}),
|
|
@@ -51,7 +59,7 @@ const Card = {
|
|
|
51
59
|
return /* @__PURE__ */ jsx("p", {
|
|
52
60
|
ref,
|
|
53
61
|
"data-slot": "card-description",
|
|
54
|
-
className: cn(
|
|
62
|
+
className: cn(`${BODY_VOICE} ${BODY_SIZE} ${DESCRIPTION_LEADING} ${DESCRIPTION_TRACKING} text-fg-muted`, className),
|
|
55
63
|
...elementProps
|
|
56
64
|
});
|
|
57
65
|
}),
|
|
@@ -59,7 +67,7 @@ const Card = {
|
|
|
59
67
|
return /* @__PURE__ */ jsx("div", {
|
|
60
68
|
ref,
|
|
61
69
|
"data-slot": "card-content",
|
|
62
|
-
className: cn(
|
|
70
|
+
className: cn(`bg-surface-1 ${CARD_PAD}`, className),
|
|
63
71
|
...elementProps
|
|
64
72
|
});
|
|
65
73
|
}),
|
|
@@ -67,7 +75,7 @@ const Card = {
|
|
|
67
75
|
return /* @__PURE__ */ jsx("div", {
|
|
68
76
|
ref,
|
|
69
77
|
"data-slot": "card-footer",
|
|
70
|
-
className: cn(
|
|
78
|
+
className: cn(`flex items-center justify-end gap-(--cue-space-3) bg-surface-1 ${CARD_PAD_X} pt-0 ${CARD_PAD_BOTTOM} ${CARD_PAD_SEAM_TOP}`, className),
|
|
71
79
|
...elementProps
|
|
72
80
|
});
|
|
73
81
|
})
|
package/dist/layout/carousel.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 { IconButton } from "../primitives/icon-button.js";
|
|
4
5
|
import { ChevronLeftGlyph, ChevronRightGlyph } from "./_glyphs.js";
|
|
5
6
|
import * as React from "react";
|
|
@@ -118,7 +119,7 @@ const Carousel = {
|
|
|
118
119
|
scrollNext();
|
|
119
120
|
}
|
|
120
121
|
},
|
|
121
|
-
className: cn(
|
|
122
|
+
className: cn(`relative outline-none ${FOCUS_RING_OFFSET_2}`, className),
|
|
122
123
|
...elementProps,
|
|
123
124
|
children
|
|
124
125
|
})
|
|
@@ -202,7 +203,7 @@ const Carousel = {
|
|
|
202
203
|
"aria-label": dotLabel(index),
|
|
203
204
|
"aria-current": index === selectedIndex ? "true" : void 0,
|
|
204
205
|
onClick: () => scrollTo(index),
|
|
205
|
-
className: cn(
|
|
206
|
+
className: cn(`size-[0.25rem] cursor-pointer rounded-full border-0 p-0 transition-colors duration-150 outline-none ${FOCUS_RING_OFFSET_2} motion-reduce:transition-none`, index === selectedIndex ? "bg-accent" : "bg-border-strong")
|
|
206
207
|
}, index))
|
|
207
208
|
});
|
|
208
209
|
})
|
|
@@ -1,5 +1,9 @@
|
|
|
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_FACE } from "../system/_style-label-face.js";
|
|
5
|
+
import { LABEL_CASE } from "../system/_style-label-case.js";
|
|
6
|
+
import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
|
|
3
7
|
import { collapseCaretClasses, collapseLabelClasses, collapsePanelBodyClasses, collapseTriggerClasses, collapsiblePanelClasses } from "./_collapse.js";
|
|
4
8
|
import { ChevronRightGlyph } from "./_glyphs.js";
|
|
5
9
|
import * as React from "react";
|
|
@@ -94,7 +98,7 @@ const Disclosure = React.forwardRef(function Disclosure({ className, label = "ad
|
|
|
94
98
|
children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
|
|
95
99
|
ref,
|
|
96
100
|
"data-slot": "disclosure-trigger",
|
|
97
|
-
className: cn(
|
|
101
|
+
className: cn(`group/disclosure inline-flex cursor-pointer items-center gap-(--cue-space-2) self-start border-0 bg-transparent p-0 py-(--cue-space-2) text-(length:--cue-text-label) text-fg-subtle transition-colors duration-150 outline-none select-none hover:text-fg-muted ${FOCUS_RING_OFFSET_2}`, LABEL_FACE, LABEL_TRACKING, LABEL_CASE, className),
|
|
98
102
|
...elementProps,
|
|
99
103
|
children: [
|
|
100
104
|
/* @__PURE__ */ jsx("span", {
|
package/dist/layout/container.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { GUTTER } from "../system/_style-gutter.js";
|
|
2
3
|
import * as React from "react";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/layout/container.tsx
|
|
@@ -35,7 +36,7 @@ const Container = React.forwardRef(function Container({ className, width = "narr
|
|
|
35
36
|
return /* @__PURE__ */ jsx("div", {
|
|
36
37
|
ref,
|
|
37
38
|
"data-slot": "container",
|
|
38
|
-
className: cn("mx-auto w-full", WIDTHS[width], padded ?
|
|
39
|
+
className: cn("mx-auto w-full", WIDTHS[width], padded ? GUTTER : null, className),
|
|
39
40
|
...elementProps
|
|
40
41
|
});
|
|
41
42
|
});
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { LABEL_FACE } from "../system/_style-label-face.js";
|
|
3
|
+
import { LABEL_CASE } from "../system/_style-label-case.js";
|
|
4
|
+
import { LABEL_TRACKING } from "../system/_style-label-tracking.js";
|
|
2
5
|
import * as React from "react";
|
|
3
6
|
import { jsx } from "react/jsx-runtime";
|
|
4
7
|
//#region src/layout/description-list.tsx
|
|
@@ -20,7 +23,7 @@ const DescriptionList = {
|
|
|
20
23
|
return /* @__PURE__ */ jsx("dt", {
|
|
21
24
|
ref,
|
|
22
25
|
"data-slot": "description-list-term",
|
|
23
|
-
className: cn("
|
|
26
|
+
className: cn("text-(length:--cue-text-label) text-fg-subtle", LABEL_FACE, LABEL_TRACKING, LABEL_CASE, className),
|
|
24
27
|
...elementProps
|
|
25
28
|
});
|
|
26
29
|
}),
|
package/dist/layout/frames.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
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 { LABEL_INK_SUBTLE } from "../system/_style-label-ink.js";
|
|
5
|
+
import { LABEL_FACE } from "../system/_style-label-face.js";
|
|
6
|
+
import { LABEL_TRACKING_INHERIT } from "../system/_style-label-tracking.js";
|
|
7
|
+
import { LABEL_SIZE_MICRO } from "../system/_style-label-size.js";
|
|
3
8
|
import { GROUND_CLASSES } from "./_ground.js";
|
|
9
|
+
import { CAPTION_CASE } from "../system/_style-caption.js";
|
|
4
10
|
import * as React from "react";
|
|
5
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
12
|
//#region src/layout/frames.tsx
|
|
@@ -105,7 +111,7 @@ const HEIGHT_CLASSES = {
|
|
|
105
111
|
* scroller fills stays where a reader left it. The ground is on the box for the
|
|
106
112
|
* same reason — a board's grid does not move with its art.
|
|
107
113
|
*/
|
|
108
|
-
const ROOT_CLASS = "relative min-w-0 overflow-hidden rounded-
|
|
114
|
+
const ROOT_CLASS = "relative min-w-0 overflow-hidden rounded-surface border border-border";
|
|
109
115
|
/**
|
|
110
116
|
* The scroller: a row of frames, sideways only, with a rung of the space
|
|
111
117
|
* ladder's top between them.
|
|
@@ -117,7 +123,7 @@ const ROOT_CLASS = "relative min-w-0 overflow-hidden rounded-(--radius-surface)
|
|
|
117
123
|
* there is no frame loop here for `reduced-motion.test.ts` to find, and there
|
|
118
124
|
* must not be.
|
|
119
125
|
*/
|
|
120
|
-
const CANVAS_CLASS =
|
|
126
|
+
const CANVAS_CLASS = `flex h-full min-w-0 items-start gap-(--cue-space-8) overflow-x-auto overflow-y-hidden scroll-smooth p-(--cue-space-6) outline-none motion-reduce:scroll-auto ${FOCUS_RING_INSET_2}`;
|
|
121
127
|
/**
|
|
122
128
|
* The column: the same frames, stacked, sized by what they hold.
|
|
123
129
|
*
|
|
@@ -127,7 +133,7 @@ const CANVAS_CLASS = "flex h-full min-w-0 items-start gap-(--cue-space-8) overfl
|
|
|
127
133
|
* It keeps the focus ring and the keyboard handler: the region is still
|
|
128
134
|
* focusable, and arrow keys still scroll it, they just scroll the page.
|
|
129
135
|
*/
|
|
130
|
-
const COLUMN_CLASS =
|
|
136
|
+
const COLUMN_CLASS = `flex min-w-0 flex-col gap-(--cue-space-6) p-(--cue-space-6) outline-none ${FOCUS_RING_INSET_2}`;
|
|
131
137
|
/** A column is sized by its contents, so the box must not hold a height. */
|
|
132
138
|
const COLUMN_ROOT_CLASS = "h-auto";
|
|
133
139
|
/** The affordance, and only where there is something to afford. */
|
|
@@ -237,7 +243,7 @@ const FramesRoot = React.forwardRef(function FramesRoot({ children, label, heigh
|
|
|
237
243
|
});
|
|
238
244
|
});
|
|
239
245
|
/** One cell: the specimen, and the line under it. */
|
|
240
|
-
const ITEM_CLASS = "flex min-w-0 shrink-0 flex-col items-center gap-(--cue-space-2) rounded-
|
|
246
|
+
const ITEM_CLASS = "flex min-w-0 shrink-0 flex-col items-center gap-(--cue-space-2) rounded-control p-(--cue-space-2)";
|
|
241
247
|
/** The one a reader is inspecting. An outline and not a border: a border would move the cell. */
|
|
242
248
|
const ITEM_SELECTED_CLASS = "outline-2 outline-solid -outline-offset-1 outline-accent";
|
|
243
249
|
const ITEM_BODY_CLASS = "flex min-w-0 items-center justify-center";
|
|
@@ -262,7 +268,7 @@ const ITEM_BODY_CLASS = "flex min-w-0 items-center justify-center";
|
|
|
262
268
|
* behaves like any other line, rather than inheriting the empty string and
|
|
263
269
|
* vanishing.
|
|
264
270
|
*/
|
|
265
|
-
const ITEM_CAPTION_CLASS =
|
|
271
|
+
const ITEM_CAPTION_CLASS = `min-w-0 truncate text-center ${LABEL_FACE} ${CAPTION_CASE} ${LABEL_TRACKING_INHERIT} ${LABEL_SIZE_MICRO} ${LABEL_INK_SUBTLE} [opacity:var(--preview-captions,1)] [pointer-events:var(--preview-captions-pe,auto)]`;
|
|
266
272
|
/**
|
|
267
273
|
* A design canvas: frames side by side, each holding one axis of one component.
|
|
268
274
|
*
|
package/dist/layout/item.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { FOCUS_RING } from "../system/_focus-ring.js";
|
|
2
3
|
import { cva } from "../lib/cva.js";
|
|
3
4
|
import * as React from "react";
|
|
4
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -15,7 +16,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
15
16
|
* @example
|
|
16
17
|
* <div className={itemVariants({ variant: "outline" })} />
|
|
17
18
|
*/
|
|
18
|
-
const itemVariants = cva("flex w-full items-center gap-(--cue-space-4) rounded-
|
|
19
|
+
const itemVariants = cva("flex w-full items-center gap-(--cue-space-4) rounded-control px-(--cue-pad-row-x) py-(--cue-pad-row-y) text-left font-mono text-(length:--cue-text-ui) text-fg", {
|
|
19
20
|
variants: {
|
|
20
21
|
variant: {
|
|
21
22
|
plain: "",
|
|
@@ -23,7 +24,7 @@ const itemVariants = cva("flex w-full items-center gap-(--cue-space-4) rounded-(
|
|
|
23
24
|
soft: "bg-surface-2"
|
|
24
25
|
},
|
|
25
26
|
interactive: {
|
|
26
|
-
true:
|
|
27
|
+
true: `cursor-pointer transition-colors duration-150 outline-none hover:bg-surface-2 ${FOCUS_RING} disabled:pointer-events-none disabled:opacity-40`,
|
|
27
28
|
false: ""
|
|
28
29
|
}
|
|
29
30
|
},
|
package/dist/layout/link.d.ts
CHANGED
|
@@ -13,6 +13,22 @@ import { useRender } from "@base-ui/react/use-render";
|
|
|
13
13
|
* alone would fail WCAG 1.4.1 — and it offsets the rule by 4px so descenders
|
|
14
14
|
* are not struck through.
|
|
15
15
|
*
|
|
16
|
+
* The ink, the rule's colour and offset, the weight and the hover ink are the
|
|
17
|
+
* style set's to change (spec §3.7): each reads a `style-link-*` name, or
|
|
18
|
+
* `style-hover-ink`, with what this recipe drew before as its fallback —
|
|
19
|
+
* `_style-link.ts` lists them. The `underline` variant's ink falls back
|
|
20
|
+
* through every link's, so a set that inks all links inks prose links too.
|
|
21
|
+
*
|
|
22
|
+
* **Each variant carries its own ink, and the base carries none.** The two
|
|
23
|
+
* inks are two `text-[color:…]` utilities, and `linkVariants()` is exported to
|
|
24
|
+
* be spread onto an anchor without `cn()`: were the plain ink in the base and
|
|
25
|
+
* the prose ink in the variant, an underlined link would carry both, and which
|
|
26
|
+
* one painted would be decided by the order Tailwind happened to emit them in.
|
|
27
|
+
* The same holds for a class a caller concatenates onto it: it does not replace
|
|
28
|
+
* the recipe's own, and the offset reader is emitted after every numeric
|
|
29
|
+
* `underline-offset-*`. Merge with `tailwind-merge`, or pass `className` to
|
|
30
|
+
* `Link`, which merges, to override one.
|
|
31
|
+
*
|
|
16
32
|
* @example
|
|
17
33
|
* <a className={linkVariants({ variant: "underline" })} href="/docs">Docs</a>
|
|
18
34
|
*/
|
package/dist/layout/link.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
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 { CONTROL_FACE } from "../system/_style-control-face.js";
|
|
3
5
|
import { cva } from "../lib/cva.js";
|
|
6
|
+
import { HOVER_INK, INLINE_LINK_INK, LINK_INK, LINK_OFFSET, LINK_RULE, LINK_WEIGHT } from "../system/_style-link.js";
|
|
4
7
|
import * as React from "react";
|
|
5
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
9
|
import { useRender } from "@base-ui/react/use-render";
|
|
@@ -16,13 +19,29 @@ import { useRender } from "@base-ui/react/use-render";
|
|
|
16
19
|
* alone would fail WCAG 1.4.1 — and it offsets the rule by 4px so descenders
|
|
17
20
|
* are not struck through.
|
|
18
21
|
*
|
|
22
|
+
* The ink, the rule's colour and offset, the weight and the hover ink are the
|
|
23
|
+
* style set's to change (spec §3.7): each reads a `style-link-*` name, or
|
|
24
|
+
* `style-hover-ink`, with what this recipe drew before as its fallback —
|
|
25
|
+
* `_style-link.ts` lists them. The `underline` variant's ink falls back
|
|
26
|
+
* through every link's, so a set that inks all links inks prose links too.
|
|
27
|
+
*
|
|
28
|
+
* **Each variant carries its own ink, and the base carries none.** The two
|
|
29
|
+
* inks are two `text-[color:…]` utilities, and `linkVariants()` is exported to
|
|
30
|
+
* be spread onto an anchor without `cn()`: were the plain ink in the base and
|
|
31
|
+
* the prose ink in the variant, an underlined link would carry both, and which
|
|
32
|
+
* one painted would be decided by the order Tailwind happened to emit them in.
|
|
33
|
+
* The same holds for a class a caller concatenates onto it: it does not replace
|
|
34
|
+
* the recipe's own, and the offset reader is emitted after every numeric
|
|
35
|
+
* `underline-offset-*`. Merge with `tailwind-merge`, or pass `className` to
|
|
36
|
+
* `Link`, which merges, to override one.
|
|
37
|
+
*
|
|
19
38
|
* @example
|
|
20
39
|
* <a className={linkVariants({ variant: "underline" })} href="/docs">Docs</a>
|
|
21
40
|
*/
|
|
22
|
-
const linkVariants = cva(
|
|
41
|
+
const linkVariants = cva(`cursor-pointer rounded-control ${CONTROL_FACE} ${LINK_WEIGHT} transition-colors duration-150 outline-none ${HOVER_INK} ${FOCUS_RING_OFFSET_2}`, {
|
|
23
42
|
variants: { variant: {
|
|
24
|
-
plain:
|
|
25
|
-
underline:
|
|
43
|
+
plain: `no-underline ${LINK_INK}`,
|
|
44
|
+
underline: `underline ${INLINE_LINK_INK} ${LINK_RULE} ${LINK_OFFSET} hover:decoration-[color:var(--cue-style-hover-ink,var(--cue-accent))]`
|
|
26
45
|
} },
|
|
27
46
|
defaultVariants: { variant: "plain" }
|
|
28
47
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../lib/cn.js";
|
|
3
|
+
import { FOCUS_RING_INSET } from "../system/_focus-ring.js";
|
|
3
4
|
import { IconButton } from "../primitives/icon-button.js";
|
|
4
5
|
import { ChevronLeftGlyph, ChevronRightGlyph } from "./_glyphs.js";
|
|
5
6
|
import * as React from "react";
|
|
@@ -62,7 +63,7 @@ function paginationRange(page, pageCount, siblingCount = 1) {
|
|
|
62
63
|
* with `accent-soft` when it is the page you are on — never a solid accent
|
|
63
64
|
* fill, which at console density reads as a second, louder button.
|
|
64
65
|
*/
|
|
65
|
-
const PAGE_BUTTON_CLASSES =
|
|
66
|
+
const PAGE_BUTTON_CLASSES = `inline-flex h-control-sm min-w-control-sm cursor-pointer items-center justify-center rounded-control border-0 bg-transparent px-(--cue-space-2) font-mono text-(length:--cue-text-ui) tabular-nums text-fg-muted transition-colors duration-150 outline-none select-none hover:bg-surface-2 hover:text-fg ${FOCUS_RING_INSET}`;
|
|
66
67
|
/**
|
|
67
68
|
* The pager: previous, a window of page numbers, next.
|
|
68
69
|
*
|
package/dist/layout/preview.d.ts
CHANGED
|
@@ -55,15 +55,29 @@ interface PreviewProps extends Omit<React.ComponentPropsWithoutRef<"div">, "chil
|
|
|
55
55
|
mode?: Mode;
|
|
56
56
|
/** A rung of the density ladder for the stage only, as a `<Density>` island would set it. */
|
|
57
57
|
density?: Density$1;
|
|
58
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* A font pairing for the stage only, stamped as `data-font` and republished to
|
|
60
|
+
* React, so an overlay opened on the stage wears the stage's pairing rather
|
|
61
|
+
* than the page's, and `useTheme().font` read on the stage reports it. The
|
|
62
|
+
* stage also takes `font-sans` when a pairing is named: `data-font` re-declares
|
|
63
|
+
* the family's custom properties, but `font-family` inherits as an already
|
|
64
|
+
* computed value, so unclassed text on the stage would otherwise keep the
|
|
65
|
+
* family it resolved above it. Unset, the stage inherits and adds neither.
|
|
66
|
+
*/
|
|
59
67
|
font?: FontName;
|
|
60
68
|
/**
|
|
61
|
-
* A style set for the stage only: `console`, `editorial` or
|
|
69
|
+
* A style set for the stage only: `console`, `editorial`, `marketing` or
|
|
70
|
+
* `graphite`.
|
|
62
71
|
*
|
|
63
72
|
* Unset, the stage inherits and **no attribute is emitted at all** — the same
|
|
64
|
-
* rule the other four follow here
|
|
65
|
-
*
|
|
66
|
-
*
|
|
73
|
+
* rule the other four follow here — unless the stage names a `theme`, a `mode`
|
|
74
|
+
* or a `font`. Then it restates the set in force around it, because a set's
|
|
75
|
+
* block declares values that read those axes (its seam ink and band rule
|
|
76
|
+
* read the theme, its control and display faces read the pairing) and a
|
|
77
|
+
* custom property resolves where it is declared: restated, they resolve
|
|
78
|
+
* against the stage. Unlike `theme`, naming one loads nothing and needs
|
|
79
|
+
* nothing: every set is emitted by `@cueplusplus/tokens` into the stylesheet
|
|
80
|
+
* every consumer already imports, so a stage is scoped to
|
|
67
81
|
* `[data-style="<name>"]` and the block is on the page by construction.
|
|
68
82
|
*
|
|
69
83
|
* The set is republished to React as well as stamped, so a popover opened on
|
|
@@ -72,15 +86,18 @@ interface PreviewProps extends Omit<React.ComponentPropsWithoutRef<"div">, "chil
|
|
|
72
86
|
*/
|
|
73
87
|
styleSet?: StyleSet;
|
|
74
88
|
/**
|
|
75
|
-
* A
|
|
89
|
+
* A paint pack for the stage: the finish its surfaces wear.
|
|
76
90
|
*
|
|
77
91
|
* Stamped as `data-paint` on the stage element, and republished to React for
|
|
78
92
|
* the same reason `styleSet` is — a popover opened on the stage mounts on
|
|
79
93
|
* `<body>` and inherits nothing from the stage's DOM, so it has to be told.
|
|
80
94
|
*
|
|
81
|
-
* Absent means inherit
|
|
82
|
-
*
|
|
83
|
-
*
|
|
95
|
+
* Absent means inherit — and a stage that names a `theme`, a `mode` or a
|
|
96
|
+
* `font` restates the pack in force around it, so the pack's strokes and
|
|
97
|
+
* inks, which are the theme's colours mixed, resolve against the stage's
|
|
98
|
+
* theme rather than the page's. `none` is a value that opts OUT of an ambient
|
|
99
|
+
* pack, which is what a stage uses to show a component unpainted inside a
|
|
100
|
+
* page that is not.
|
|
84
101
|
*/
|
|
85
102
|
paint?: Paint;
|
|
86
103
|
/**
|
|
@@ -151,12 +168,15 @@ interface PreviewProps extends Omit<React.ComponentPropsWithoutRef<"div">, "chil
|
|
|
151
168
|
*
|
|
152
169
|
* **The stage is the island; the chrome is not.** `theme`, `mode`, `density`,
|
|
153
170
|
* `font` and `styleSet` land on the stage element only, and the stage
|
|
154
|
-
* republishes the theme, density and style-set contexts so
|
|
155
|
-
* it follows it. The tools, the footer, the grips and anything they open stay
|
|
171
|
+
* republishes the theme (pairing included), density and style-set contexts so
|
|
172
|
+
* an overlay opened on it follows it. The tools, the footer, the grips and anything they open stay
|
|
156
173
|
* in the scope around the Preview — a `terminal` preview's own controls do not
|
|
157
174
|
* turn cyan. With none of the five set, the stage carries no attribute and
|
|
158
175
|
* costs what a `<div>` costs. A stage `theme` with no `mode` repeats the page's
|
|
159
|
-
* mode beside it
|
|
176
|
+
* mode beside it, a stage `theme` or `mode` with no `density` the page's rung,
|
|
177
|
+
* and a stage `theme`, `mode` or `font` restates the page's
|
|
178
|
+
* style set and paint pack beside it, so their theme-reading values resolve
|
|
179
|
+
* against the stage.
|
|
160
180
|
*
|
|
161
181
|
* **`resizable` is handles of its own**, both axes by default: an edge grip per
|
|
162
182
|
* axis that is a keyboard-operable `separator` valued in pixels, and a corner
|