@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
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/system/_style-switch.ts
|
|
2
|
+
/**
|
|
3
|
+
* The switch's thumb (round 6, spec §11, lane R6.T: `style-switch-thumb`,
|
|
4
|
+
* `style-switch-disabled-thumb`).
|
|
5
|
+
*
|
|
6
|
+
* stripe.com's thumb is white in every state (`--hds-color-input-icon-onSolid`),
|
|
7
|
+
* and its disabled thumb is its quiet border ink (`--hds-color-input-icon-disabled`,
|
|
8
|
+
* #d4dee9). Ours was `fg-muted` at rest and `accent-fg` when checked. The one
|
|
9
|
+
* name serves both states, each falling back to what it drew (T146); the
|
|
10
|
+
* disabled thumb reads its own, falling back to the resting state's value.
|
|
11
|
+
*
|
|
12
|
+
* @internal Not part of the public API.
|
|
13
|
+
*/
|
|
14
|
+
const SWITCH_THUMB = "bg-[color:var(--cue-style-switch-thumb,var(--cue-fg-muted))]";
|
|
15
|
+
/** The checked thumb: the same name, falling back to `accent-fg`. */
|
|
16
|
+
const SWITCH_THUMB_CHECKED = "data-[checked]:bg-[color:var(--cue-style-switch-thumb,var(--cue-accent-fg))]";
|
|
17
|
+
/** The disabled thumb, unchecked and checked, each falling back through the thumb's own name to what it drew. */
|
|
18
|
+
const SWITCH_THUMB_DISABLED = "data-[disabled]:bg-[color:var(--cue-style-switch-disabled-thumb,var(--cue-style-switch-thumb,var(--cue-fg-muted)))] data-[disabled]:data-[checked]:bg-[color:var(--cue-style-switch-disabled-thumb,var(--cue-style-switch-thumb,var(--cue-accent-fg)))]";
|
|
19
|
+
/**
|
|
20
|
+
* The switch track's rim (round 6, spec §11, lane R6.P: `style-switch-edge`),
|
|
21
|
+
* falling back to the `border` it drew at rest and the `border-strong` on hover.
|
|
22
|
+
* coss.com/ui's unchecked track draws no rim (P180.track-edge).
|
|
23
|
+
*/
|
|
24
|
+
const SWITCH_EDGE = "border-[color:var(--cue-style-switch-edge,var(--cue-border))] hover:border-[color:var(--cue-style-switch-edge,var(--cue-border-strong))]";
|
|
25
|
+
//#endregion
|
|
26
|
+
export { SWITCH_EDGE, SWITCH_THUMB, SWITCH_THUMB_CHECKED, SWITCH_THUMB_DISABLED };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/system/_style-tab-hover.ts
|
|
2
|
+
/**
|
|
3
|
+
* An idle tab's hover ink (round 6, spec §11, lane R6.P: `style-tab-hover-ink`),
|
|
4
|
+
* falling back to the `fg` it drew. coss.com/ui's idle tabs keep their muted ink
|
|
5
|
+
* under the pointer (P182.hover).
|
|
6
|
+
*
|
|
7
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
8
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
9
|
+
* reason: one component's tokens per file.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
const TAB_HOVER_INK = "hover:text-[color:var(--cue-style-tab-hover-ink,var(--cue-fg))]";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { TAB_HOVER_INK };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
//#region src/system/_style-tab.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `Tabs` list's rule and track, and the active tab: its underline, and its
|
|
4
|
+
* ground, ink, weight and shadow when a Look raises it as a segment.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.8 (plan R4). The list hung its tabs off a
|
|
7
|
+
* 1px `border-b`, and the active tab laid an accent `::after` over it. A Look
|
|
8
|
+
* that draws its tabs as a segmented track (kiln, porcelain) has neither, and
|
|
9
|
+
* `style-tab-rule` and `style-tab-underline` take them away.
|
|
10
|
+
*
|
|
11
|
+
* **The fallbacks are the classes they replace**: `border-b` is 1px wide, and
|
|
12
|
+
* the underline was the accent, `var(--cue-accent)`. The width utility keeps
|
|
13
|
+
* `border-b`'s solid style, so it replaces it whole.
|
|
14
|
+
*
|
|
15
|
+
* **The list is the track.** `Tabs` has no frame, so the list reads
|
|
16
|
+
* `style-segment-track` and `style-segment-inset`, and falls back to what it
|
|
17
|
+
* had: no ground and no padding (`transparent`, `0px`). Its corners are
|
|
18
|
+
* square, and stay so: a radius on the list would curl the ends of its 1px
|
|
19
|
+
* rule under every set. A Look that draws its tabs on a track (kiln,
|
|
20
|
+
* porcelain) takes the rule away and owes the track its corners; spec §3.8
|
|
21
|
+
* leaves how to the Look lanes.
|
|
22
|
+
*
|
|
23
|
+
* **The active tab**, raised as a segment by a Look that draws its tabs on a
|
|
24
|
+
* track: its ground, ink, weight, edge and resting shade, read through the
|
|
25
|
+
* segment names (`_style-segment.ts` tells the family's story). The ink
|
|
26
|
+
* replaced `data-[active]:text-accent` and keeps that class's standing. The
|
|
27
|
+
* ground falls back to none (`transparent`, spec §3.8): a tab is marked by its
|
|
28
|
+
* underline. The ground, the weight (`400`, inherited and computed under every
|
|
29
|
+
* shipped set) and the shadow (a `transparent` inset edge and the paint axis's
|
|
30
|
+
* resting shade, one list written out for the reason
|
|
31
|
+
* `_style-segmented-control.ts` gives) are declarations the tab had in no
|
|
32
|
+
* state, so they are written `[:where(&[data-active])]:` — the active state at
|
|
33
|
+
* zero specificity — and a caller's `className="font-medium bg-surface-2
|
|
34
|
+
* shadow-sm"` still applies to the active tab as to the others.
|
|
35
|
+
*
|
|
36
|
+
* **Its own module**, for the docgen reason `_style-nav-voice.ts` gives:
|
|
37
|
+
* `SegmentedControl` shares `_style-segment.ts` with the tabs, and reads
|
|
38
|
+
* none of these.
|
|
39
|
+
*
|
|
40
|
+
* @internal Not part of the public API.
|
|
41
|
+
*/
|
|
42
|
+
/** The list behind the tabs, which is the track: its ground and its inset. */
|
|
43
|
+
const TAB_TRACK = "bg-[color:var(--cue-style-segment-track,transparent)] p-[var(--cue-style-segment-inset,0px)] rounded-[var(--cue-style-tab-radius,0px)]";
|
|
44
|
+
/**
|
|
45
|
+
* A tab's corners and its resting weight (plan V.2, P41).
|
|
46
|
+
*
|
|
47
|
+
* Under a set that names `style-tab-radius` the list above is a rounded track
|
|
48
|
+
* and every tab a pill inside it, rounded on all four corners at the track's
|
|
49
|
+
* radius less the inset, as a pressed segment nests inside its frame. Under a
|
|
50
|
+
* set that does not, a tab keeps the `rounded-t-control` it drew: its top two
|
|
51
|
+
* corners at the control corner, its bottom two square on the list's rule.
|
|
52
|
+
* Both are one expression per edge, so neither needs a class the other lacks:
|
|
53
|
+
*
|
|
54
|
+
* - top: `tab-radius`, else the control corner **plus** the inset, less the
|
|
55
|
+
* inset — which is the control corner exactly, whether or not the set names
|
|
56
|
+
* an inset (Porcelain names one, 2px, before it names a tab radius);
|
|
57
|
+
* - bottom: `tab-radius`, else the inset, less the inset — `0px`.
|
|
58
|
+
*
|
|
59
|
+
* The weight is the segment weight on every tab, not only the active one —
|
|
60
|
+
* Porcelain's idle tabs are 500 too — falling back to 400. A caller's
|
|
61
|
+
* `font-*` class on a tab replaces it through `tailwind-merge`.
|
|
62
|
+
*/
|
|
63
|
+
const TAB_SHAPE = "rounded-t-[calc(var(--cue-style-tab-radius,calc(var(--cue-radius-control)*var(--cue-radius-scale)+var(--cue-style-segment-inset,0px)))-var(--cue-style-segment-inset,0px))] rounded-b-[calc(var(--cue-style-tab-radius,var(--cue-style-segment-inset,0px))-var(--cue-style-segment-inset,0px))] font-[number:var(--cue-style-segment-weight,400)]";
|
|
64
|
+
/** The list's bottom rule, as a width. */
|
|
65
|
+
const TAB_RULE = "border-b-[length:var(--cue-style-tab-rule,1px)]";
|
|
66
|
+
/** The active tab's underline ink, on its `::after`. */
|
|
67
|
+
const TAB_UNDERLINE = "data-[active]:after:bg-[color:var(--cue-style-tab-underline,var(--cue-accent))]";
|
|
68
|
+
/** The `Tabs` active tab. Its ground falls back to none: a tab is marked by its underline. */
|
|
69
|
+
const TAB_ACTIVE = "[:where(&[data-active])]:bg-[color:var(--cue-style-segment-ground,transparent)] data-[active]:text-[color:var(--cue-style-segment-ink,var(--cue-accent))] [:where(&[data-active])]:font-[number:var(--cue-style-segment-weight,400)] [:where(&[data-active])]:shadow-[inset_0_0_0_var(--cue-border-width)_var(--cue-style-segment-edge,transparent),0_calc(2px*var(--cue-paint-shadow-scale))_calc(4px*var(--cue-paint-shadow-scale))_var(--cue-paint-rest-shade,transparent)]";
|
|
70
|
+
//#endregion
|
|
71
|
+
export { TAB_ACTIVE, TAB_RULE, TAB_SHAPE, TAB_TRACK, TAB_UNDERLINE };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FOCUS_RING_PAINT } from "./_focus-ring.js";
|
|
2
|
+
//#region src/system/_style-text-focus.ts
|
|
3
|
+
/**
|
|
4
|
+
* The focus ring of a text control — a link, and a disclosure's trigger —
|
|
5
|
+
* with its offset read from the style set (round 6, spec §11, lane R6.T:
|
|
6
|
+
* `style-text-focus-offset`).
|
|
7
|
+
*
|
|
8
|
+
* `_focus-ring.ts`'s fixed shapes are the ring every other site draws; these
|
|
9
|
+
* two compose its width and colour ({@link FOCUS_RING_PAINT}) with an offset
|
|
10
|
+
* a Look may move, as the button chassis does with `style-focus-offset`. Each
|
|
11
|
+
* falls back to the fixed shape it replaces: the disclosure's two pixels in
|
|
12
|
+
* (`FOCUS_RING_INSET_2`, because sections sit inside `overflow-hidden` panels)
|
|
13
|
+
* and the link's two pixels clear (`FOCUS_RING_OFFSET_2`). stripe.com draws
|
|
14
|
+
* both rings 3px clear (`--hds-focus-outline-offset` on `.hds-link` and on the
|
|
15
|
+
* accordion's summary), so tender sets `3px` (T128, T144).
|
|
16
|
+
*
|
|
17
|
+
* A name of its own, not `style-focus-offset`: the source draws its buttons'
|
|
18
|
+
* rings at another offset (`--hds-focus-outline-button-offset`, T50).
|
|
19
|
+
*
|
|
20
|
+
* @internal Not part of the public API.
|
|
21
|
+
*/
|
|
22
|
+
const COLLAPSE_FOCUS_RING = `${FOCUS_RING_PAINT} focus-visible:outline-offset-[var(--cue-style-text-focus-offset,-2px)]`;
|
|
23
|
+
/** A link's focus ring: as {@link COLLAPSE_FOCUS_RING}, falling back to two pixels clear. */
|
|
24
|
+
const LINK_FOCUS_RING = `${FOCUS_RING_PAINT} focus-visible:outline-offset-[var(--cue-style-text-focus-offset,2px)]`;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { COLLAPSE_FOCUS_RING, LINK_FOCUS_RING };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/system/_style-textarea.ts
|
|
2
|
+
/**
|
|
3
|
+
* A textarea's leading and block padding (plan V.2, P139):
|
|
4
|
+
* `style-input-leading`, falling back to the `leading-ui` it drew, and the
|
|
5
|
+
* `space-3` rung times `style-textarea-pad`, `1` under a set that has none.
|
|
6
|
+
* Porcelain's textarea sets 1.45 and 5.5px.
|
|
7
|
+
*
|
|
8
|
+
* The padding is a name of its own and not `style-control-pad`, the button's
|
|
9
|
+
* inline proportion: Tender, Zine and Kiln declare that one (1.5, 1.625,
|
|
10
|
+
* 0.75), and a textarea that read it would move in every one of them where
|
|
11
|
+
* no row measured it.
|
|
12
|
+
*
|
|
13
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason.
|
|
14
|
+
*
|
|
15
|
+
* @internal Not part of the public API.
|
|
16
|
+
*/
|
|
17
|
+
const TEXTAREA_LEADING = "leading-[var(--cue-style-input-leading,var(--cue-leading-ui))]";
|
|
18
|
+
/** @see TEXTAREA_LEADING */
|
|
19
|
+
const TEXTAREA_PAD_Y = "py-[calc(var(--cue-space-3)*var(--cue-style-textarea-pad,1))]";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { TEXTAREA_LEADING, TEXTAREA_PAD_Y };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/system/_style-title.ts
|
|
2
|
+
/**
|
|
3
|
+
* The title voice: a `Card`, `Panel` or `Bento` tile's name — mono,
|
|
4
|
+
* `text-emphasis`, weight 500, in `fg`, until a style set says otherwise.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.3 (and §3.1 for the ink and the variation),
|
|
7
|
+
* plan R1. `CardTitle`, `PanelHeader`'s title and `Bento.Tile`'s title each
|
|
8
|
+
* spelt `font-mono text-(length:--cue-text-emphasis) font-medium text-fg`, so a
|
|
9
|
+
* Look could not move a card's name without a per-call-site class — and every
|
|
10
|
+
* Look the fidelity round measured draws it differently (Tender 26px at 300,
|
|
11
|
+
* Kiln 32px at 400, Porcelain 16px at 700, three of the four in sans).
|
|
12
|
+
*
|
|
13
|
+
* | property | reads | fallback (the class it replaced) |
|
|
14
|
+
* |-------------------------|---------------------------|----------------------------------|
|
|
15
|
+
* | font-family | `style-title-face` | `var(--cue-font-mono)` (`font-mono`) |
|
|
16
|
+
* | font-size | `style-title-size` | `var(--cue-text-emphasis)` |
|
|
17
|
+
* | font-weight | `style-title-weight` | `500` (`font-medium`) |
|
|
18
|
+
* | letter-spacing | `style-title-tracking` | `normal` |
|
|
19
|
+
* | line-height | `style-title-leading` | `inherit` |
|
|
20
|
+
* | font-variation-settings | `style-display-variation` | `normal` |
|
|
21
|
+
* | color | `style-heading-ink` | `var(--cue-fg)` (`text-fg`) |
|
|
22
|
+
*
|
|
23
|
+
* **Every name is optional** (spec §3.0), declared on no `:root` and left at the
|
|
24
|
+
* shared `[data-style]` reset by every shipped set, so each `var()` resolves its
|
|
25
|
+
* fallback at the title — what the old classes computed there.
|
|
26
|
+
*
|
|
27
|
+
* An overlay's title shares the face, the weight, the ink and the variation but
|
|
28
|
+
* not the size, the tracking or the leading, so it is `_style-overlay-title.ts`
|
|
29
|
+
* and not an import of this: docgen would publish every name in this file as a
|
|
30
|
+
* token of every overlay. `_style-page-title.ts` says why the weight is
|
|
31
|
+
* `font-[number:…]` and why the size comes before the leading.
|
|
32
|
+
*
|
|
33
|
+
* @internal Not part of the public API.
|
|
34
|
+
*/
|
|
35
|
+
const TITLE_VOICE = "font-[family-name:var(--cue-style-title-face,var(--cue-font-mono))] text-[length:var(--cue-style-title-size,var(--cue-text-emphasis))] font-[number:var(--cue-style-title-weight,500)] tracking-[var(--cue-style-title-tracking,normal)] leading-[var(--cue-style-title-leading,inherit)] [font-variation-settings:var(--cue-style-title-variation,var(--cue-style-display-variation,normal))] text-[color:var(--cue-style-heading-ink,var(--cue-fg))]";
|
|
36
|
+
//#endregion
|
|
37
|
+
export { TITLE_VOICE };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/system/_style-toast.ts
|
|
2
|
+
/**
|
|
3
|
+
* A toast's padding and width (round 6, spec §11, lane R6.P: `style-toast-pad-y`,
|
|
4
|
+
* `style-toast-pad-x`, `style-toast-width`), falling back to the `space-3` block
|
|
5
|
+
* and `space-4` inline-start padding and the 20rem viewport it drew; the
|
|
6
|
+
* inline-end padding keeps its room for the close button. coss.com/ui pads its
|
|
7
|
+
* toast 12px by 14px and sets it 360px wide (P184.pad, P184.pad-inline,
|
|
8
|
+
* P184.width).
|
|
9
|
+
*
|
|
10
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
11
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
12
|
+
* reason: one component's tokens per file.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the public API.
|
|
15
|
+
*/
|
|
16
|
+
const TOAST_PAD_Y = "py-[var(--cue-style-toast-pad-y,var(--cue-space-3))]";
|
|
17
|
+
/** @see TOAST_PAD_Y */
|
|
18
|
+
const TOAST_PAD_X = "pl-[var(--cue-style-toast-pad-x,var(--cue-space-4))]";
|
|
19
|
+
/** @see TOAST_PAD_Y */
|
|
20
|
+
const TOAST_WIDTH = "w-[var(--cue-style-toast-width,20rem)]";
|
|
21
|
+
//#endregion
|
|
22
|
+
export { TOAST_PAD_X, TOAST_PAD_Y, TOAST_WIDTH };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//#region src/system/_style-toggle.ts
|
|
2
|
+
/**
|
|
3
|
+
* `Toggle` — and so `ToggleGroup`'s items — at rest and pressed (round 6, spec
|
|
4
|
+
* §11, lane R6.T: `style-toggle-edge`, `style-toggle-ink`,
|
|
5
|
+
* `style-toggle-pressed-ground`, `style-toggle-pressed-edge`).
|
|
6
|
+
*
|
|
7
|
+
* stripe.com's select tiles (`.hds-select-tile`, one of N options drawn as
|
|
8
|
+
* tiles) stand in its field edge at rest (`--hds-color-input-border-default`)
|
|
9
|
+
* with its field text ink (`--hds-color-input-text-solid`), and a selected
|
|
10
|
+
* tile fills with a 12% lilac and edges in its brand-400 (T155). Ours drew a
|
|
11
|
+
* transparent edge in `fg-muted`, and `accent-soft` with no edge when
|
|
12
|
+
* pressed. Each reader falls back to the class it replaced.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the public API.
|
|
15
|
+
*/
|
|
16
|
+
const TOGGLE_EDGE = "border-[color:var(--cue-style-toggle-edge,transparent)]";
|
|
17
|
+
/** A toggle's resting ink. */
|
|
18
|
+
const TOGGLE_INK = "text-[color:var(--cue-style-toggle-ink,var(--cue-fg-muted))]";
|
|
19
|
+
/** A pressed toggle's ground. */
|
|
20
|
+
const TOGGLE_PRESSED_GROUND = "data-[pressed]:bg-[color:var(--cue-style-toggle-pressed-ground,var(--cue-accent-soft))]";
|
|
21
|
+
/** A pressed toggle's edge. */
|
|
22
|
+
const TOGGLE_PRESSED_EDGE = "data-[pressed]:border-[color:var(--cue-style-toggle-pressed-edge,transparent)]";
|
|
23
|
+
/**
|
|
24
|
+
* A pressed toggle's ink (round 6, spec §11, lane R6.K: `style-toggle-pressed-ink`),
|
|
25
|
+
* falling back to the `accent` it drew. replit.com's pressed filter pill is
|
|
26
|
+
* white on an ink fill (K148).
|
|
27
|
+
*/
|
|
28
|
+
const TOGGLE_PRESSED_INK = "data-[pressed]:text-[color:var(--cue-style-toggle-pressed-ink,var(--cue-accent))]";
|
|
29
|
+
/**
|
|
30
|
+
* The hover state (lanes R6.T and R6.K: `style-toggle-hover-edge`, `-hover-ground`,
|
|
31
|
+
* `-hover-ink`). replit.com's filter pills hover by darkening their edge alone
|
|
32
|
+
* (#d8d5cf to #a8a49d), keeping a transparent ground and their resting ink,
|
|
33
|
+
* where ours filled `surface-2` and inked `fg` (K148). Each falls back to what
|
|
34
|
+
* the toggle drew under the pointer: its resting edge (through `style-toggle-edge`),
|
|
35
|
+
* `surface-2` and `fg`.
|
|
36
|
+
*/
|
|
37
|
+
const TOGGLE_HOVER_EDGE = "hover:border-[color:var(--cue-style-toggle-hover-edge,var(--cue-style-toggle-edge,transparent))]";
|
|
38
|
+
/** @see TOGGLE_HOVER_EDGE */
|
|
39
|
+
const TOGGLE_HOVER_GROUND = "hover:bg-[color:var(--cue-style-toggle-hover-ground,var(--cue-surface-2))]";
|
|
40
|
+
/** @see TOGGLE_HOVER_EDGE */
|
|
41
|
+
const TOGGLE_HOVER_INK = "hover:text-[color:var(--cue-style-toggle-hover-ink,var(--cue-fg))]";
|
|
42
|
+
/**
|
|
43
|
+
* A disabled toggle's ink and edge, through the disabled names every control reads
|
|
44
|
+
* (`style-disabled-ink`, `style-disabled-edge`), each falling back to the toggle's own resting value;
|
|
45
|
+
* the fade reads `style-disabled-opacity` as the other controls' does. stripe.com's disabled tile
|
|
46
|
+
* pales its ink and draws its disabled border (T155.disabled, T155.disabled-edge).
|
|
47
|
+
*/
|
|
48
|
+
const TOGGLE_DISABLED = "data-[disabled]:text-[color:var(--cue-style-disabled-ink,var(--cue-style-toggle-ink,var(--cue-fg-muted)))] data-[disabled]:border-[color:var(--cue-style-disabled-edge,var(--cue-style-toggle-edge,transparent))]";
|
|
49
|
+
//#endregion
|
|
50
|
+
export { TOGGLE_DISABLED, TOGGLE_EDGE, TOGGLE_HOVER_EDGE, TOGGLE_HOVER_GROUND, TOGGLE_HOVER_INK, TOGGLE_INK, TOGGLE_PRESSED_EDGE, TOGGLE_PRESSED_GROUND, TOGGLE_PRESSED_INK };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region src/system/_style-toolbar.ts
|
|
2
|
+
/**
|
|
3
|
+
* The toolbar as a framed bar (round 6, spec §11, lane R6.P): its rim on the sides
|
|
4
|
+
* it did not draw (`style-toolbar-rim`, a width, falling back to `0px`, so the
|
|
5
|
+
* bar keeps only its bottom rule) and the rim's ink (`style-toolbar-edge`,
|
|
6
|
+
* falling back to `border`); its corner, padding, height and gap
|
|
7
|
+
* (`style-toolbar-radius`, `-pad`, `-height`, `-gap`), falling back to the
|
|
8
|
+
* square, inline-padded, `chrome-toolbar`-tall strip it drew; and a separator's
|
|
9
|
+
* height (`style-toolbar-separator-height`), falling back to `60%`. coss.com/ui
|
|
10
|
+
* draws its toolbar as a 14px-rounded bar in a 1px rim, 4px in, its groups 8px
|
|
11
|
+
* apart and its separators 20px tall (P185).
|
|
12
|
+
*
|
|
13
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
14
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
15
|
+
* reason: one component's tokens per file.
|
|
16
|
+
*
|
|
17
|
+
* @internal Not part of the public API.
|
|
18
|
+
*/
|
|
19
|
+
const TOOLBAR_FRAME = "border-t-[length:var(--cue-style-toolbar-rim,0px)] border-x-[length:var(--cue-style-toolbar-rim,0px)] border-[color:var(--cue-style-toolbar-edge,var(--cue-border))] rounded-[var(--cue-style-toolbar-radius,0px)] p-[var(--cue-style-toolbar-pad,0_var(--cue-pad-row-x))] h-[var(--cue-style-toolbar-height,var(--cue-chrome-toolbar))] gap-[var(--cue-style-toolbar-gap,var(--cue-space-2))]";
|
|
20
|
+
/** @see TOOLBAR_FRAME */
|
|
21
|
+
const TOOLBAR_SEPARATOR_HEIGHT = "data-[orientation=vertical]:h-[var(--cue-style-toolbar-separator-height,60%)]";
|
|
22
|
+
//#endregion
|
|
23
|
+
export { TOOLBAR_FRAME, TOOLBAR_SEPARATOR_HEIGHT };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/system/_style-tooltip.ts
|
|
2
|
+
/**
|
|
3
|
+
* A tooltip's size and padding (plan V.2, P129): the help size, falling back
|
|
4
|
+
* to the `text-label` rung the tooltip drew, and `style-tooltip-pad`, one or
|
|
5
|
+
* two rem lengths, falling back to the `space-2` block and `space-3` inline
|
|
6
|
+
* padding it drew. Porcelain's tooltip is 12px type, 4px by 8px in. Its
|
|
7
|
+
* leading is the body leading (`_style-body-leading.ts`).
|
|
8
|
+
*
|
|
9
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
const TOOLTIP_SIZE = "text-[length:var(--cue-style-help-size,var(--cue-text-label))]";
|
|
14
|
+
/** @see TOOLTIP_SIZE */
|
|
15
|
+
const TOOLTIP_PAD = "p-[var(--cue-style-tooltip-pad,var(--cue-space-2)_var(--cue-space-3))]";
|
|
16
|
+
/**
|
|
17
|
+
* The tooltip's tracking (round 6, spec §11, lane R6.T: `style-tooltip-tracking`),
|
|
18
|
+
* falling back to the `inherit` it drew (no tracking class of its own).
|
|
19
|
+
* stripe.com's tooltip sets 0.2px on its 15px text, 0.0133em (T131).
|
|
20
|
+
*/
|
|
21
|
+
const TOOLTIP_TRACKING = "tracking-[var(--cue-style-tooltip-tracking,inherit)]";
|
|
22
|
+
/**
|
|
23
|
+
* The tooltip's corner (round 6, spec §11, lane R6.T: `style-tooltip-radius`), falling back to the
|
|
24
|
+
* overlay corner it drew. stripe.com's overlays take three corners — its dialog 16px, its select
|
|
25
|
+
* popover 4px (which `radius-overlay` follows), its tooltip 8px (T131.radius) — and the dialog already
|
|
26
|
+
* has `style-dialog-radius`. Scaled by `radius-scale` as the dialog's is: `rounded-overlay` is
|
|
27
|
+
* `calc(var(--cue-radius-overlay) * var(--cue-radius-scale))`, and a reader without the scale drew
|
|
28
|
+
* 6px where the tooltip drew 4.5px at ultra-compact (the closing pass's adversarial review).
|
|
29
|
+
*/
|
|
30
|
+
const TOOLTIP_RADIUS = "rounded-[calc(var(--cue-style-tooltip-radius,var(--cue-radius-overlay))*var(--cue-radius-scale))]";
|
|
31
|
+
/**
|
|
32
|
+
* The tooltip's face (round 6, spec §11, lane R6.Z: `style-tooltip-face`),
|
|
33
|
+
* falling back through the control face to the mono it drew. greptile.com's
|
|
34
|
+
* seat tooltip is Space Mono beside its DM Sans buttons (Z115).
|
|
35
|
+
*/
|
|
36
|
+
const TOOLTIP_FACE = "font-[family-name:var(--cue-style-tooltip-face,var(--cue-style-control-face,var(--cue-font-mono)))]";
|
|
37
|
+
/** The tooltip's ink (`style-tooltip-ink`), falling back to the `fg` it drew; greptile.com's is slate (Z115). */
|
|
38
|
+
const TOOLTIP_INK = "text-[color:var(--cue-style-tooltip-ink,var(--cue-fg))]";
|
|
39
|
+
/**
|
|
40
|
+
* The tooltip's leading (`style-tooltip-leading`), falling back through the
|
|
41
|
+
* body leading to the `leading-ui` it drew (`BODY_LEADING`). greptile.com's
|
|
42
|
+
* tooltip sets a 20px line on 10px type (Z115).
|
|
43
|
+
*/
|
|
44
|
+
const TOOLTIP_LEADING = "leading-[var(--cue-style-tooltip-leading,var(--cue-style-body-leading,var(--cue-leading-ui)))]";
|
|
45
|
+
//#endregion
|
|
46
|
+
export { TOOLTIP_FACE, TOOLTIP_INK, TOOLTIP_LEADING, TOOLTIP_PAD, TOOLTIP_RADIUS, TOOLTIP_SIZE, TOOLTIP_TRACKING };
|
package/dist/system/density.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import "./published.js";
|
|
1
2
|
import * as React from "react";
|
|
2
3
|
import { Paint, StyleSet } from "@cueplusplus/tokens";
|
|
3
4
|
import { Density as Density$1 } from "@cueplusplus/theme-base";
|
|
@@ -9,7 +10,7 @@ interface DensityProps {
|
|
|
9
10
|
*/
|
|
10
11
|
density: Density$1;
|
|
11
12
|
/**
|
|
12
|
-
* A
|
|
13
|
+
* A paint pack for this subtree.
|
|
13
14
|
*
|
|
14
15
|
* Optional, and **absent means inherit**, exactly as `styleSet` is: an island
|
|
15
16
|
* that names none stamps no `data-paint` and passes the ambient pack straight
|
|
@@ -18,7 +19,8 @@ interface DensityProps {
|
|
|
18
19
|
*/
|
|
19
20
|
paint?: Paint;
|
|
20
21
|
/**
|
|
21
|
-
* A style set for this subtree: `console`, `editorial` or
|
|
22
|
+
* A style set for this subtree: `console`, `editorial`, `marketing` or
|
|
23
|
+
* `graphite`.
|
|
22
24
|
*
|
|
23
25
|
* Optional, and **absent means inherit** — an island that names none stamps no
|
|
24
26
|
* `data-style` and passes the ambient set straight through, exactly as a bare
|
|
@@ -27,7 +29,7 @@ interface DensityProps {
|
|
|
27
29
|
*
|
|
28
30
|
* - `console` inside a page that is not console. That is the whole job of the
|
|
29
31
|
* default set: it restates the `:root` defaults, so a subtree stamped with
|
|
30
|
-
* it renders the ordinary look inside
|
|
32
|
+
* it renders the ordinary look inside a page under any other set.
|
|
31
33
|
* - Moving the band rhythm with the rung. `--cue-band-y` is
|
|
32
34
|
* `calc(var(--cue-space-7) * 2)` declared on the `[data-style]` element, and
|
|
33
35
|
* a custom property's `var()` references are substituted where they are
|
|
@@ -35,6 +37,13 @@ interface DensityProps {
|
|
|
35
37
|
* the rhythm already resolved above it. Restating the set here re-resolves
|
|
36
38
|
* it against this island's rung, which is how a denser island gets a
|
|
37
39
|
* proportionally tighter band instead of the outer one's.
|
|
40
|
+
*
|
|
41
|
+
* The library restates the set for you where an island changes what a set's
|
|
42
|
+
* values read besides the rung — the theme's inks, the pairing's faces: a
|
|
43
|
+
* nested `ThemeProvider` that names a theme or a mode, and a `Preview` stage
|
|
44
|
+
* with a theme, a mode or a pairing, stamp the set and the pack in force
|
|
45
|
+
* beside it. This island changes only the rung, so it does not, and the
|
|
46
|
+
* rhythm above stays the opt-in the second bullet describes.
|
|
38
47
|
*/
|
|
39
48
|
styleSet?: StyleSet;
|
|
40
49
|
/** Subtree that should render at `density`. */
|
|
@@ -58,7 +67,7 @@ interface DensityProps {
|
|
|
58
67
|
* omitted where there is none. It is read by nothing this island does —
|
|
59
68
|
* theme and mode are deliberately *not* re-scoped here; density was for a long
|
|
60
69
|
* time the only axis an island could override (spec §6), and a named
|
|
61
|
-
* `styleSet`
|
|
70
|
+
* `styleSet` and a named `paint` are the other two — it exists so a theme's own
|
|
62
71
|
* generated CSS can address exactly this island regardless of how many
|
|
63
72
|
* *other* themed providers sit between it and the one it belongs to. A CSS
|
|
64
73
|
* ancestor selector can only ask "does some ancestor carry theme `x`", never
|
|
@@ -70,7 +79,8 @@ interface DensityProps {
|
|
|
70
79
|
* is how the axis inherits: custom properties inherit down the DOM, so an island
|
|
71
80
|
* that stamped the ambient set would be restating an answer it already had, and
|
|
72
81
|
* an island that stamped a *default* set would silently re-point the rhythm of
|
|
73
|
-
* every page that nested one.
|
|
82
|
+
* every page that nested one. `data-paint` joins them on exactly those terms
|
|
83
|
+
* when a `paint` is named.
|
|
74
84
|
*
|
|
75
85
|
* @example
|
|
76
86
|
* <Density density="ultra-compact">
|