@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,48 @@
|
|
|
1
|
+
//#region src/system/_style-page-title.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `PageShell` h1's voice: mono, `text-title`, weight 500, at the page's own
|
|
4
|
+
* tracking and leading, in `fg`, until a style set says otherwise.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.2 (and §3.1 for the ink and the variation),
|
|
7
|
+
* plan R1. The page title and a card's title are separate voices, because three
|
|
8
|
+
* Looks measure them apart: Porcelain 36px against 16px, Kiln 64px against 32px,
|
|
9
|
+
* Zine a display face against a sans. So the h1 reads its own five
|
|
10
|
+
* `style-page-title-*` names rather than the title voice's
|
|
11
|
+
* (`_style-title.ts`), and shares only the two names every heading shares:
|
|
12
|
+
* `style-heading-ink` and `style-display-variation`.
|
|
13
|
+
*
|
|
14
|
+
* | property | reads | fallback (the class it replaced) |
|
|
15
|
+
* |-------------------------|--------------------------------|----------------------------------|
|
|
16
|
+
* | font-family | `style-page-title-face` | `var(--cue-font-mono)` (`font-mono`) |
|
|
17
|
+
* | font-size | `style-page-title-size` | `var(--cue-text-title)` |
|
|
18
|
+
* | font-weight | `style-page-title-weight` | `500` (`font-medium`) |
|
|
19
|
+
* | letter-spacing | `style-page-title-tracking` | `normal` |
|
|
20
|
+
* | line-height | `style-page-title-leading` | `inherit` |
|
|
21
|
+
* | font-variation-settings | `style-display-variation` | `normal` |
|
|
22
|
+
* | color | `style-heading-ink` | `var(--cue-fg)` (`text-fg`) |
|
|
23
|
+
*
|
|
24
|
+
* **Every name is optional** (spec §3.0): none is declared on `:root`, `console`
|
|
25
|
+
* declines each, and every shipped set leaves them at the shared
|
|
26
|
+
* `[data-style] { …: initial }` reset, so each `var()` resolves its fallback at
|
|
27
|
+
* the h1 itself — the value the old class computed there, under every set and in
|
|
28
|
+
* every density island.
|
|
29
|
+
*
|
|
30
|
+
* **Weight is `font-[number:…]`**, the typed form: a bare `font-[var(…)]` is
|
|
31
|
+
* read as a family by `tailwind-merge`, and the arbitrary property
|
|
32
|
+
* `[font-weight:…]` is in no `tailwind-merge` group at all, so a caller's
|
|
33
|
+
* `font-bold` would no longer replace it — and it sorts after `font-bold` in the
|
|
34
|
+
* built stylesheet, so it would win. `number:` keeps both Tailwind and
|
|
35
|
+
* `tailwind-merge` reading a weight.
|
|
36
|
+
*
|
|
37
|
+
* **Size before leading**, because `tailwind-merge` drops a `leading-*` that
|
|
38
|
+
* precedes a font size in the same list.
|
|
39
|
+
*
|
|
40
|
+
* **Its own module**, because `@repo/docgen` attributes a token to a component by
|
|
41
|
+
* the file its class string lives in, following only `_`-prefixed imports:
|
|
42
|
+
* every name here is one the page title spends, and nothing else imports it.
|
|
43
|
+
*
|
|
44
|
+
* @internal Not part of the public API.
|
|
45
|
+
*/
|
|
46
|
+
const PAGE_TITLE_VOICE = "font-[family-name:var(--cue-style-page-title-face,var(--cue-font-mono))] text-[length:var(--cue-style-page-title-size,var(--cue-text-title))] font-[number:var(--cue-style-page-title-weight,500)] tracking-[var(--cue-style-page-title-tracking,normal)] leading-[var(--cue-style-page-title-leading,inherit)] [font-variation-settings:var(--cue-style-display-variation,normal)] text-[color:var(--cue-style-heading-ink,var(--cue-fg))] [overflow-wrap:anywhere]";
|
|
47
|
+
//#endregion
|
|
48
|
+
export { PAGE_TITLE_VOICE };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/system/_style-page.ts
|
|
2
|
+
/**
|
|
3
|
+
* Pagination's current page (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-page-current-ground`, `style-page-current-rim`, `style-page-current-edge`),
|
|
5
|
+
* falling back to the `accent-soft` fill and no rim, as it drew. coss.com/ui marks the
|
|
6
|
+
* current page as an outline button: the surface, in a 1px rim (P167.current,
|
|
7
|
+
* P167.current-edge).
|
|
8
|
+
*
|
|
9
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
10
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
11
|
+
* reason: one component's tokens per file.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const PAGE_CURRENT = "border-solid border-[length:var(--cue-style-page-current-rim,0px)] border-[color:var(--cue-style-page-current-edge,transparent)] bg-[color:var(--cue-style-page-current-ground,var(--cue-accent-soft))] text-accent";
|
|
16
|
+
//#endregion
|
|
17
|
+
export { PAGE_CURRENT };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/system/_style-palette.ts
|
|
2
|
+
/**
|
|
3
|
+
* The command palette's own parts (round 6, spec §11, lane R6.P): the rule under
|
|
4
|
+
* its search field (`style-palette-rule`), falling back to the `border` it
|
|
5
|
+
* drew, and its footer's block padding (`style-palette-footer-pad`), falling
|
|
6
|
+
* back to `space-2`. coss.com/ui draws no rule there and pads its footer 12px
|
|
7
|
+
* (P152.input-rule, P152.footer).
|
|
8
|
+
*
|
|
9
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
10
|
+
* file, so only the components that read it are credited with it.
|
|
11
|
+
*
|
|
12
|
+
* @internal Not part of the public API.
|
|
13
|
+
*/
|
|
14
|
+
const PALETTE_RULE = "border-[color:var(--cue-style-palette-rule,var(--cue-border))]";
|
|
15
|
+
/** @see PALETTE_RULE */
|
|
16
|
+
const PALETTE_FOOTER_PAD = "py-[var(--cue-style-palette-footer-pad,var(--cue-space-2))]";
|
|
17
|
+
//#endregion
|
|
18
|
+
export { PALETTE_FOOTER_PAD, PALETTE_RULE };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/system/_style-panel.ts
|
|
2
|
+
/**
|
|
3
|
+
* A panel header's padding and rule (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-panel-pad-y`, `style-panel-pad-x`, `style-panel-rule`), falling back
|
|
5
|
+
* to the row paddings and the `border` it drew. coss.com/ui's frame panel pads
|
|
6
|
+
* its header 16px by 20px and draws no rule under it (P158, P158.pad-inline,
|
|
7
|
+
* P158.header-rule).
|
|
8
|
+
*
|
|
9
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
10
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
11
|
+
* reason: one component's tokens per file.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const PANEL_PAD_Y = "py-[var(--cue-style-panel-pad-y,var(--cue-pad-row-y))]";
|
|
16
|
+
/** @see PANEL_PAD_Y */
|
|
17
|
+
const PANEL_PAD_X = "px-[var(--cue-style-panel-pad-x,var(--cue-pad-row-x))]";
|
|
18
|
+
/** @see PANEL_PAD_Y */
|
|
19
|
+
const PANEL_RULE = "border-[color:var(--cue-style-panel-rule,var(--cue-border))]";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { PANEL_PAD_X, PANEL_PAD_Y, PANEL_RULE };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/system/_style-popover-pad.ts
|
|
2
|
+
/**
|
|
3
|
+
* The popover's padding (plan V.2, P131): the `space-4` rung times
|
|
4
|
+
* `style-popover-pad`, `1` under a set that has none. Porcelain's popover is
|
|
5
|
+
* 16px in.
|
|
6
|
+
*
|
|
7
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason.
|
|
8
|
+
*
|
|
9
|
+
* @internal Not part of the public API.
|
|
10
|
+
*/
|
|
11
|
+
const POPOVER_PAD = "p-[calc(var(--cue-space-4)*var(--cue-style-popover-pad,1))]";
|
|
12
|
+
//#endregion
|
|
13
|
+
export { POPOVER_PAD };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/system/_style-popover-width.ts
|
|
2
|
+
/**
|
|
3
|
+
* A popover's width (round 6, spec §11, lane R6.P: `style-popover-width`), falling
|
|
4
|
+
* back to the `auto` it drew, sized to its content under its viewport cap.
|
|
5
|
+
* coss.com/ui's popover is 320px (`w-80`, P168.width).
|
|
6
|
+
*
|
|
7
|
+
* **Optional** (spec §3.0): declared by `porcelain` alone, and the reader falls
|
|
8
|
+
* back to what the component drew. Its own module for docgen's reason: one
|
|
9
|
+
* component's tokens per file.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
const POPOVER_WIDTH = "w-[var(--cue-style-popover-width,auto)]";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { POPOVER_WIDTH };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/system/_style-quiet-ink.ts
|
|
2
|
+
/**
|
|
3
|
+
* The quiet ink, for a site that reads it without the rest of the control
|
|
4
|
+
* vocabulary: the disclosure trigger (plan V.2, P125) — `style-quiet-ink`,
|
|
5
|
+
* falling back to the `fg-muted` it drew. The same class `_style-control.ts`
|
|
6
|
+
* spells as `GHOST_INK`, restated in a module of its own so docgen does not
|
|
7
|
+
* publish every button name as a token of an accordion.
|
|
8
|
+
*
|
|
9
|
+
* @internal Not part of the public API.
|
|
10
|
+
*/
|
|
11
|
+
const QUIET_INK = "text-[color:var(--cue-style-quiet-ink,var(--cue-fg-muted))]";
|
|
12
|
+
//#endregion
|
|
13
|
+
export { QUIET_INK };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/system/_style-radio.ts
|
|
2
|
+
/**
|
|
3
|
+
* A checked radio (round 6, spec §11, lane R6.P): its ground
|
|
4
|
+
* (`style-radio-checked-ground`), falling back to the `sunken` it keeps; its dot's
|
|
5
|
+
* ink and size (`style-radio-dot-ink`, `style-radio-dot-size`), falling back to
|
|
6
|
+
* the `accent` half-size dot it drew. coss.com/ui fills a checked radio in `fg`
|
|
7
|
+
* around a 6px dot in the page ground (P171.checked-edge, P171.dot-size).
|
|
8
|
+
*
|
|
9
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
10
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
11
|
+
* reason: one component's tokens per file.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const RADIO_CHECKED_GROUND = "data-[checked]:bg-[color:var(--cue-style-radio-checked-ground,var(--cue-sunken))]";
|
|
16
|
+
/** @see RADIO_CHECKED_GROUND */
|
|
17
|
+
const RADIO_DOT = "size-[var(--cue-style-radio-dot-size,calc(1/2*100%))] bg-[color:var(--cue-style-radio-dot-ink,var(--cue-accent))]";
|
|
18
|
+
//#endregion
|
|
19
|
+
export { RADIO_CHECKED_GROUND, RADIO_DOT };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/system/_style-row-disabled.ts
|
|
2
|
+
/**
|
|
3
|
+
* A disabled row's fade in a menu, a command palette and a listbox (round 6,
|
|
4
|
+
* spec §11, lane R6.P: `style-row-disabled-opacity`), falling back to the 0.4 it
|
|
5
|
+
* drew. Its own name rather than `style-disabled-opacity`: a set that lifts the
|
|
6
|
+
* controls' fade to 1 and dims them by ink (Tender) would otherwise leave a
|
|
7
|
+
* disabled row undimmed. coss.com/ui fades its disabled menu row to 0.64
|
|
8
|
+
* (P163.disabled).
|
|
9
|
+
*
|
|
10
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
11
|
+
* file, so only the components that read it are credited with it.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const ROW_DISABLED_OPACITY = "data-[disabled]:opacity-[var(--cue-style-row-disabled-opacity,0.4)]";
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ROW_DISABLED_OPACITY };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/system/_style-row-pad.ts
|
|
2
|
+
/**
|
|
3
|
+
* A table row's block padding (plan V.2, P121): the `pad-row-y` rung times
|
|
4
|
+
* `style-row-pad`, `1` under a set that has none. Porcelain's table rows are
|
|
5
|
+
* 40px, half again its rung's padding.
|
|
6
|
+
*
|
|
7
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason.
|
|
8
|
+
*
|
|
9
|
+
* @internal Not part of the public API.
|
|
10
|
+
*/
|
|
11
|
+
const ROW_PAD_Y = "py-[calc(var(--cue-pad-row-y)*var(--cue-style-row-pad,1))]";
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ROW_PAD_Y };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/system/_style-row.ts
|
|
2
|
+
/**
|
|
3
|
+
* `Row` in the rule idiom (round 6, spec §11, lane R6.T: `style-row-ink`,
|
|
4
|
+
* `style-row-block-pad`, `style-row-rule-style`).
|
|
5
|
+
*
|
|
6
|
+
* stripe.com's list with dividers (`.hds-list--show-dividers`) draws each item
|
|
7
|
+
* in its soft ink (`--hds-color-text-soft`), pads its foot 16px and rules it
|
|
8
|
+
* 1px dashed in its quiet border ink (`.hds-list__item--showDivider`, T136).
|
|
9
|
+
* Each reader falls back to the class it replaced: `text-fg`, the row's
|
|
10
|
+
* `--cue-pad-row-y`, and the solid of the `--tw-border-style` slot the rule's
|
|
11
|
+
* `border-t` reads (`_style-footer-rule.ts` gives the reason for the slot).
|
|
12
|
+
* The block pad and the rule style apply to the rule idiom only; a seam row
|
|
13
|
+
* (`SeamList`) keeps its own.
|
|
14
|
+
*
|
|
15
|
+
* @internal Not part of the public API.
|
|
16
|
+
*/
|
|
17
|
+
const ROW_INK = "text-[color:var(--cue-style-row-ink,var(--cue-fg))]";
|
|
18
|
+
/**
|
|
19
|
+
* A ruled row's block padding, at zero specificity (`:where()`), the only
|
|
20
|
+
* `py` a ruled row carries: a consumer's own `py-*` beats it wherever
|
|
21
|
+
* Tailwind emits the two, as it beat the `py-(--cue-pad-row-y)` this replaced —
|
|
22
|
+
* a consumer composing `rowVariants({ className: "py-2" })` on its own element
|
|
23
|
+
* kept its padding before round 6, and an arbitrary-value reader, emitted after
|
|
24
|
+
* `py-2`, took it away (the closing pass's adversarial review).
|
|
25
|
+
*/
|
|
26
|
+
const ROW_BLOCK_PAD = "[:where(&)]:py-[var(--cue-style-row-block-pad,var(--cue-pad-row-y))]";
|
|
27
|
+
/** The line style of the rule a ruled row draws above itself. */
|
|
28
|
+
const ROW_RULE_STYLE = "[--tw-border-style:var(--cue-style-row-rule-style,solid)]";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { ROW_BLOCK_PAD, ROW_INK, ROW_RULE_STYLE };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/system/_style-scrollbar.ts
|
|
2
|
+
/**
|
|
3
|
+
* A scroll area's bar and thumb (round 6, spec §11, lane R6.P: `style-scrollbar-size`,
|
|
4
|
+
* `style-scrollbar-thumb`), falling back to the `space-3` bar and the
|
|
5
|
+
* `border-strong` thumb it drew. coss.com/ui's bar is 6px (P172, P172.thumb).
|
|
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 SCROLLBAR_SIZE_V = "data-[orientation=vertical]:w-[var(--cue-style-scrollbar-size,var(--cue-space-3))]";
|
|
14
|
+
/** @see SCROLLBAR_SIZE_V */
|
|
15
|
+
const SCROLLBAR_SIZE_H = "data-[orientation=horizontal]:h-[var(--cue-style-scrollbar-size,var(--cue-space-3))]";
|
|
16
|
+
/** @see SCROLLBAR_SIZE_V */
|
|
17
|
+
const SCROLLBAR_THUMB = "bg-[color:var(--cue-style-scrollbar-thumb,var(--cue-border-strong))]";
|
|
18
|
+
//#endregion
|
|
19
|
+
export { SCROLLBAR_SIZE_H, SCROLLBAR_SIZE_V, SCROLLBAR_THUMB };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/system/_style-seam.ts
|
|
2
|
+
/**
|
|
3
|
+
* The seam idiom's ink: the colour that shows through a 1px gap and becomes the
|
|
4
|
+
* hairline between two filled cells.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26 R-8. `SeamGrid`, `SeamList` and `<Card seam>` each hard-coded
|
|
7
|
+
* `bg-border` for it, so a style set could say how its bands are ruled
|
|
8
|
+
* (`--cue-band-rule-color`) and had no way to say that the line INSIDE a
|
|
9
|
+
* component is lighter than a box edge — which is what every site in the
|
|
10
|
+
* 2026-09-22 corpus that draws seams does (agent-native's seam is its subtle
|
|
11
|
+
* line, not its default border). `--cue-style-seam-color` is that statement.
|
|
12
|
+
*
|
|
13
|
+
* **The fallback is the old class, spelt out.** `bg-border` compiles to
|
|
14
|
+
* `background-color: var(--cue-border)`, and `--cue-style-seam-color` is on no
|
|
15
|
+
* `:root` — a `:root` `var(--cue-border)` would be substituted at `<html>` and
|
|
16
|
+
* freeze the page's border into every theme island. Under no set this resolves
|
|
17
|
+
* at the grid itself, exactly as `bg-border` did.
|
|
18
|
+
*
|
|
19
|
+
* @internal Not part of the public API.
|
|
20
|
+
*/
|
|
21
|
+
const SEAM_INK = "bg-[color:var(--cue-style-seam-color,var(--cue-border))]";
|
|
22
|
+
/**
|
|
23
|
+
* The rim a bordered seam container draws around its cells, in the seam's ink.
|
|
24
|
+
*
|
|
25
|
+
* The rim is part of the idiom rather than an unrelated border: `SeamGrid`'s
|
|
26
|
+
* `bordered` is "a hairline rim around the whole grid as well as between the
|
|
27
|
+
* cells", and a rim in the box-edge colour around seams in a lighter one reads
|
|
28
|
+
* as a box drawn around a grid — the one thing the idiom exists not to be.
|
|
29
|
+
*
|
|
30
|
+
* **`bg-clip-padding` is what keeps a translucent seam honest.** The container's
|
|
31
|
+
* own background is the seam, and by default it paints under the border too; an
|
|
32
|
+
* opaque ink hides that, but a share over transparency — graphite's
|
|
33
|
+
* `color-mix(in oklch, var(--cue-border) 60%, transparent)` — would lay the rim
|
|
34
|
+
* over a second copy of itself and draw it darker than the seams it encloses.
|
|
35
|
+
* Under an opaque ink, which is every set but graphite and every page under no
|
|
36
|
+
* set, the clip changes nothing a reader can see: the border covers exactly the
|
|
37
|
+
* area it removes the background from.
|
|
38
|
+
*
|
|
39
|
+
* @internal Not part of the public API.
|
|
40
|
+
*/
|
|
41
|
+
const SEAM_RIM = "border-[color:var(--cue-style-seam-color,var(--cue-border))] bg-clip-padding";
|
|
42
|
+
//#endregion
|
|
43
|
+
export { SEAM_INK, SEAM_RIM };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/system/_style-section-rule.ts
|
|
2
|
+
/**
|
|
3
|
+
* The ink of a rule that divides a section: `SectionHeader`'s hairline and the
|
|
4
|
+
* rule over `Footer`'s fine print.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.11 (plan R4). Both drew `var(--cue-border)`
|
|
7
|
+
* through `bg-border` and `border-border`, and a Look that sets its sections
|
|
8
|
+
* apart by space alone (kiln) had no way to take the line away without taking
|
|
9
|
+
* the box edges with it. `--cue-style-section-rule` says it, and these read it.
|
|
10
|
+
*
|
|
11
|
+
* **The fallbacks are the old classes, spelt out**, for the reason
|
|
12
|
+
* `_style-control-face.ts` gives. Two exports because the two readers paint
|
|
13
|
+
* the same ink through two properties: the header's rule is a `h-px` block
|
|
14
|
+
* with a ground, the footer's is a top border.
|
|
15
|
+
*
|
|
16
|
+
* **Its own module**, for the docgen reason `_style-nav-voice.ts` gives: both
|
|
17
|
+
* readers read exactly this one name.
|
|
18
|
+
*
|
|
19
|
+
* @internal Not part of the public API.
|
|
20
|
+
*/
|
|
21
|
+
/** A rule drawn as a filled hairline block (`SectionHeader`). */
|
|
22
|
+
const SECTION_RULE_FILL = "bg-[color:var(--cue-style-section-rule,var(--cue-border))]";
|
|
23
|
+
/** A rule drawn as a border (`Footer`'s fine print); the element sets which side. */
|
|
24
|
+
const SECTION_RULE_EDGE = "border-[color:var(--cue-style-section-rule,var(--cue-border))]";
|
|
25
|
+
//#endregion
|
|
26
|
+
export { SECTION_RULE_EDGE, SECTION_RULE_FILL };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/system/_style-segment-pad.ts
|
|
2
|
+
/**
|
|
3
|
+
* A tab's and a segment's inline padding at the md step (round 6, spec §11, lane
|
|
4
|
+
* R6.P: `style-segment-pad`), falling back to the `space-4` both drew. coss.com/ui
|
|
5
|
+
* pads both 9px (P182.pad, P173.item-pad).
|
|
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 SEGMENT_PAD = "px-[var(--cue-style-segment-pad,var(--cue-space-4))]";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SEGMENT_PAD };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/system/_style-segment.ts
|
|
2
|
+
/**
|
|
3
|
+
* The segment family's shared half: the ink of a choice that is not the
|
|
4
|
+
* current one — read by `SegmentedControl` and `Tabs` alike.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.8 and §3.10 (plan R4). Both components
|
|
7
|
+
* mark the current choice their own way — a tinted segment, an underlined
|
|
8
|
+
* tab — and two Looks draw both as one object: a filled track with the choice
|
|
9
|
+
* raised on it as a pill with an edge and a resting shade (kiln, porcelain).
|
|
10
|
+
* The segment names say it, in both components at once. Where each component
|
|
11
|
+
* draws the track, and what it reads for its current choice, has a fallback of
|
|
12
|
+
* its own, so it lives with that component: `SegmentedControl`'s frame and
|
|
13
|
+
* pressed segment in `_style-segmented-control.ts`, the `Tabs` list and active
|
|
14
|
+
* tab in `_style-tab.ts`.
|
|
15
|
+
*
|
|
16
|
+
* **The fallback is the class it replaced**, for the reason
|
|
17
|
+
* `_style-control-face.ts` gives: an idle choice was `text-fg-muted`.
|
|
18
|
+
*
|
|
19
|
+
* **Its own module, holding only what both read**, because `@repo/docgen`
|
|
20
|
+
* credits a component with every `--cue-*` in each `_`-prefixed file it
|
|
21
|
+
* imports (`_style-nav-voice.ts`'s note). When the pressed segment's constants
|
|
22
|
+
* lived here, `Tabs` was published as a user of `--cue-accent-soft`, the
|
|
23
|
+
* pressed segment's fallback, which no tab paints.
|
|
24
|
+
*
|
|
25
|
+
* @internal Not part of the public API.
|
|
26
|
+
*/
|
|
27
|
+
/** A choice that is not the current one. */
|
|
28
|
+
const SEGMENT_IDLE_INK = "text-[color:var(--cue-style-segment-idle-ink,var(--cue-fg-muted))]";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { SEGMENT_IDLE_INK };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
//#region src/system/_style-segmented-control.ts
|
|
2
|
+
/**
|
|
3
|
+
* What `SegmentedControl` reads from the style set: the track its segments sit
|
|
4
|
+
* in, and the pressed segment's ground, ink, weight, edge, resting shade and
|
|
5
|
+
* corners.
|
|
6
|
+
*
|
|
7
|
+
* Spec 2026-09-26-looks-fidelity §3.8 and §3.10 (plan R4). The shared half of
|
|
8
|
+
* the segment family — the track and the idle ink — is `_style-segment.ts`,
|
|
9
|
+
* whose docblock tells the family's story; the active tab's counterpart is in
|
|
10
|
+
* `_style-tab.ts`.
|
|
11
|
+
*
|
|
12
|
+
* **The track is the frame.** Spec §3.8 names "the list" as the reader of
|
|
13
|
+
* `style-segment-track` and `style-segment-inset`, and R4 first read them on
|
|
14
|
+
* the `ToggleGroup` inside the frame. That box has no corners and sits inside
|
|
15
|
+
* the frame's own ground, border and padding, so a Look's track (kiln's
|
|
16
|
+
* `surface-3`, porcelain's tint inset 2px) drew a square box within a rounded
|
|
17
|
+
* `surface-1` rim instead of a rounded track with the pill on it. The frame is
|
|
18
|
+
* the rounded object — `rounded-control`, the rim, the ground, the inset — so
|
|
19
|
+
* it reads both names, with its own classes as the fallbacks:
|
|
20
|
+
* `var(--cue-surface-1)` and `var(--cue-space-1)`. The list reads nothing.
|
|
21
|
+
* The overflow chevrons sit in the frame's padding over the segments, so their
|
|
22
|
+
* ground follows the track too, laid over an opaque `surface-1` so a
|
|
23
|
+
* translucent track (porcelain's) still hides the segments scrolled beneath.
|
|
24
|
+
*
|
|
25
|
+
* **Every fallback is the class it replaced**, for the reason
|
|
26
|
+
* `_style-control-face.ts` gives:
|
|
27
|
+
*
|
|
28
|
+
* - the frame: `bg-surface-1` and `p-(--cue-space-1)`; the chevrons:
|
|
29
|
+
* `bg-surface-1`, under a transparent layer;
|
|
30
|
+
* - the ground and ink: `bg-accent-soft` and `text-accent`;
|
|
31
|
+
* - weight `400`, which the segment inherited and computed under every
|
|
32
|
+
* shipped set;
|
|
33
|
+
* - the edge: `transparent`, drawn as an inset ring so it never moves layout;
|
|
34
|
+
* - the resting shade: `paint-rest-shade`, `transparent` under every pack but
|
|
35
|
+
* glaze;
|
|
36
|
+
* - the corners: `rounded-control`'s own value (below).
|
|
37
|
+
*
|
|
38
|
+
* **The edge and the rest shade are one `shadow-[…]` list**, and it is written
|
|
39
|
+
* out in full rather than built from `REST_SHADE`: Tailwind finds a class by
|
|
40
|
+
* scanning source text, so a class assembled at runtime is a class it never
|
|
41
|
+
* generates (`_focus-ring.ts` records the failure). `test/system/style-navigation.test.tsx`
|
|
42
|
+
* holds the literal to `REST_SHADE`, spaces as underscores. A transparent
|
|
43
|
+
* layer paints nothing, so the list is a rendered no-op until a Look names an
|
|
44
|
+
* edge or a pack a shade.
|
|
45
|
+
*
|
|
46
|
+
* **What the segment never had yields to a caller's class.** The ground and
|
|
47
|
+
* ink replaced `data-[pressed]:bg-accent-soft` and `data-[pressed]:text-accent`
|
|
48
|
+
* and keep the standing those classes had. The weight and the shadow are
|
|
49
|
+
* declarations the segment had in no state, so a caller's
|
|
50
|
+
* `itemClassName="font-medium shadow-sm"` applied to the pressed segment as to
|
|
51
|
+
* the others. A `data-[pressed]:` utility is `(0,2,0)` and would beat such a
|
|
52
|
+
* class on the pressed segment alone, so these are written
|
|
53
|
+
* `[:where(&[data-pressed])]:` — the same state at zero specificity — and a
|
|
54
|
+
* caller's class wins in every state again. The weight is `font-[number:…]`
|
|
55
|
+
* for `_style-nav-voice.ts`'s reason.
|
|
56
|
+
*
|
|
57
|
+
* **The segment's radius nests in the track's inset**:
|
|
58
|
+
* `radius-control` less `style-segment-inset`, so a pill inset 2px into its
|
|
59
|
+
* track keeps concentric corners. Its fallback is `0px`, not the frame's
|
|
60
|
+
* `space-1`: at `0px` it is `rounded-control`'s own value, which is what the
|
|
61
|
+
* segment drew, and one name's readers keep their own fallbacks (spec §3.0).
|
|
62
|
+
* Only a set that names an inset nests the corners.
|
|
63
|
+
*
|
|
64
|
+
* **Its own module**, for the docgen reason `_style-segment.ts` gives: the
|
|
65
|
+
* frame, the `accent-soft` fallback and the nested radius are this
|
|
66
|
+
* component's alone.
|
|
67
|
+
*
|
|
68
|
+
* @internal Not part of the public API.
|
|
69
|
+
*/
|
|
70
|
+
/** The frame, which is the track: its ground and its inset. */
|
|
71
|
+
const SEGMENTED_TRACK = "bg-[color:var(--cue-style-segment-track,var(--cue-surface-1))] p-[var(--cue-style-segment-inset,var(--cue-space-1))]";
|
|
72
|
+
/** The overflow chevrons' ground: the track's colour over an opaque `surface-1`. */
|
|
73
|
+
const SEGMENTED_CHEVRON_GROUND = "bg-surface-1 bg-[image:linear-gradient(var(--cue-style-segment-track,transparent),var(--cue-style-segment-track,transparent))]";
|
|
74
|
+
/** A segment's corners, nested inside the track's inset. */
|
|
75
|
+
const SEGMENT_RADIUS = "rounded-[calc(var(--cue-radius-control)*var(--cue-radius-scale)-var(--cue-style-segment-inset,0px))]";
|
|
76
|
+
/** `SegmentedControl`'s pressed segment. */
|
|
77
|
+
const SEGMENT_PRESSED = "data-[pressed]:bg-[color:var(--cue-style-segment-ground,var(--cue-accent-soft))] data-[pressed]:text-[color:var(--cue-style-segment-ink,var(--cue-accent))] [:where(&[data-pressed])]:font-[number:var(--cue-style-segment-weight,400)] [:where(&[data-pressed])]: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)]";
|
|
78
|
+
/**
|
|
79
|
+
* The frame's rim (plan V.2, K129): `style-segment-rim`, falling back to the
|
|
80
|
+
* `border-border` the frame drew. Kiln's source draws its segmented track with
|
|
81
|
+
* no rim at all — a `surface-3` ground and nothing around it — and the frame's
|
|
82
|
+
* border was the one part of the control no name reached.
|
|
83
|
+
*/
|
|
84
|
+
const SEGMENTED_RIM = "border-[color:var(--cue-style-segment-rim,var(--cue-border))]";
|
|
85
|
+
//#endregion
|
|
86
|
+
export { SEGMENTED_CHEVRON_GROUND, SEGMENTED_RIM, SEGMENTED_TRACK, SEGMENT_PRESSED, SEGMENT_RADIUS };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/system/_style-selected.ts
|
|
2
|
+
/**
|
|
3
|
+
* The ground and ink of a selected table row.
|
|
4
|
+
*
|
|
5
|
+
* Spec 2026-09-26-looks-fidelity §3.8 (plan R4). `Table.Row` said
|
|
6
|
+
* `data-[selected]:bg-accent-soft` and set no ink of its own. Spec §3.8 names
|
|
7
|
+
* this row as a reader of both `style-selected-ground` and
|
|
8
|
+
* `style-selected-ink`, and the two travel together for a reason a Look makes
|
|
9
|
+
* concrete: kiln's selection is inverted, `var(--cue-fg)` behind
|
|
10
|
+
* `var(--cue-bg)`, and a row that took the ground without the ink would set
|
|
11
|
+
* the table's `fg` text on an `fg` ground.
|
|
12
|
+
*
|
|
13
|
+
* **Each fallback is this reader's own value**, which is not the sidebar's
|
|
14
|
+
* (spec §3.0: readers of one name keep their own fallbacks). The ground was
|
|
15
|
+
* `var(--cue-accent-soft)`. The ink was inherited from the table's `text-fg`,
|
|
16
|
+
* so its fallback is `currentColor`, which on `color` computes exactly the
|
|
17
|
+
* inherited value — under no set and every set that declines the name, the
|
|
18
|
+
* row renders what it did.
|
|
19
|
+
*
|
|
20
|
+
* **The ink yields to a caller's own ink.** The row set no colour, so
|
|
21
|
+
* `<Table.Row selected className="text-fg-muted">` stayed muted when selected.
|
|
22
|
+
* A `data-[selected]:` ink is `(0,2,0)` and would beat that class, and
|
|
23
|
+
* `currentColor` on `color` takes the PARENT's colour, not the row's own class;
|
|
24
|
+
* so the ink is written `[:where(&[data-selected])]:` — the same state at zero
|
|
25
|
+
* specificity — and a caller's ink class wins again. The ground replaced
|
|
26
|
+
* `data-[selected]:bg-accent-soft` and keeps its standing, as that did.
|
|
27
|
+
*
|
|
28
|
+
* **Its own module**, for the docgen reason `_style-nav-voice.ts` gives: the
|
|
29
|
+
* table reads neither `style-nav-active-ground` nor `style-selected-weight`,
|
|
30
|
+
* so it does not share `_style-nav-item.ts`.
|
|
31
|
+
*
|
|
32
|
+
* @internal Not part of the public API.
|
|
33
|
+
*/
|
|
34
|
+
const SELECTED_ROW = "data-[selected]:bg-[color:var(--cue-style-selected-ground,var(--cue-accent-soft))] [:where(&[data-selected])]:text-[color:var(--cue-style-selected-ink,currentColor)]";
|
|
35
|
+
//#endregion
|
|
36
|
+
export { SELECTED_ROW };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/system/_style-skeleton.ts
|
|
2
|
+
/**
|
|
3
|
+
* A skeleton block's corner (round 6, spec §11, lane R6.P: `style-skeleton-radius`),
|
|
4
|
+
* falling back to the `rounded-control` corner it drew. coss.com/ui rounds its
|
|
5
|
+
* skeletons 6px (P177.radius).
|
|
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 SKELETON_RADIUS = "rounded-[var(--cue-style-skeleton-radius,calc(var(--cue-radius-control)*var(--cue-radius-scale)))]";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SKELETON_RADIUS };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/system/_style-slider.ts
|
|
2
|
+
/**
|
|
3
|
+
* A slider's rail and thumb (round 6, spec §11, lane R6.P): the rail's height and
|
|
4
|
+
* ink (`style-slider-track-height`, `style-slider-track-ink`), falling back to
|
|
5
|
+
* the `h-0.5` and `border` it drew; the thumb's size, fill, rim width and rim
|
|
6
|
+
* ink (`style-slider-thumb-size`, `-fill`, `-rim`, `-edge`), falling back to
|
|
7
|
+
* its 8px `accent` dot with no rim. coss.com/ui draws a 4px rail in its input
|
|
8
|
+
* ink and a 16px (20px on a phone) white thumb in a 1px rim (P178).
|
|
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 SLIDER_TRACK_HEIGHT = "h-[var(--cue-style-slider-track-height,0.125rem)]";
|
|
17
|
+
/** @see SLIDER_TRACK_HEIGHT */
|
|
18
|
+
const SLIDER_TRACK_INK = "bg-[color:var(--cue-style-slider-track-ink,var(--cue-border))]";
|
|
19
|
+
/** @see SLIDER_TRACK_HEIGHT */
|
|
20
|
+
const SLIDER_THUMB_SIZE = "size-[var(--cue-style-slider-thumb-size,0.5rem)]";
|
|
21
|
+
/** @see SLIDER_TRACK_HEIGHT */
|
|
22
|
+
const SLIDER_THUMB_FILL = "bg-[color:var(--cue-style-slider-thumb-fill,var(--cue-accent))]";
|
|
23
|
+
/** @see SLIDER_TRACK_HEIGHT — a width, so a set that names none draws no rim at all. */
|
|
24
|
+
const SLIDER_THUMB_RIM = "border-solid border-[length:var(--cue-style-slider-thumb-rim,0px)] border-[color:var(--cue-style-slider-thumb-edge,transparent)]";
|
|
25
|
+
//#endregion
|
|
26
|
+
export { SLIDER_THUMB_FILL, SLIDER_THUMB_RIM, SLIDER_THUMB_SIZE, SLIDER_TRACK_HEIGHT, SLIDER_TRACK_INK };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/system/_style-stage-marks.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether a preview frame draws its registration marks — spec
|
|
4
|
+
* 2026-09-26-looks-fidelity §3.11, `style-stage-marks` (row P52).
|
|
5
|
+
*
|
|
6
|
+
* The four crosshairs at a frame's stage corners are this library's own
|
|
7
|
+
* furniture, and four of the measured Looks' sources draw nothing there. A
|
|
8
|
+
* mark is decoration, so a set says `none` and the marks go; `inline` keeps
|
|
9
|
+
* them.
|
|
10
|
+
*
|
|
11
|
+
* **The fallback is the old value, spelt out.** A mark is an absolutely
|
|
12
|
+
* positioned `<span>`, which the engine blockifies: `inline` computes
|
|
13
|
+
* `display: block`, exactly what the span computed with no `display` class at
|
|
14
|
+
* all. `--cue-style-stage-marks` is on no `:root` (contract round 2's optional
|
|
15
|
+
* names are reset to `initial` under every `[data-style]` that declines them),
|
|
16
|
+
* so under no set and every shipped set today the marks draw as they did.
|
|
17
|
+
*
|
|
18
|
+
* **Its own module**, because `@repo/docgen` attributes a token to a component
|
|
19
|
+
* by the file its class string lives in, following only `_`-prefixed imports.
|
|
20
|
+
* `Preview` is this file's only reader.
|
|
21
|
+
*
|
|
22
|
+
* @internal Not part of the public API.
|
|
23
|
+
*/
|
|
24
|
+
const STAGE_MARKS = "[display:var(--cue-style-stage-marks,inline)]";
|
|
25
|
+
//#endregion
|
|
26
|
+
export { STAGE_MARKS };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//#region src/system/_style-stat.ts
|
|
2
|
+
/**
|
|
3
|
+
* `Stat`'s value, detail and gap (round 6, spec §11, lane R6.T:
|
|
4
|
+
* `style-stat-size`, `-weight`, `-leading`, `-tracking`,
|
|
5
|
+
* `style-stat-detail-size`, `-detail-leading`, `style-stat-gap`).
|
|
6
|
+
*
|
|
7
|
+
* stripe.com sets a stat's value in its xxl text rung (`hds-text--xxl`: 48px,
|
|
8
|
+
* 40px on phones, at 300, 1.0 and 1.07 leading, −0.02em and −0.01em
|
|
9
|
+
* tracking) and its description in its body rung (`hds-text--md`: 16px at
|
|
10
|
+
* 300 and 1.4), 12px apart (`.hds-stat`'s gap), T137. Each reader falls back
|
|
11
|
+
* to the class it replaced: the value's `text-title`, inherited weight,
|
|
12
|
+
* `leading-none` and inherited tracking; the detail's `text-label` and
|
|
13
|
+
* inherited leading; and `space-2` times 1.
|
|
14
|
+
*
|
|
15
|
+
* @internal Not part of the public API.
|
|
16
|
+
*/
|
|
17
|
+
const STAT_SIZE = "text-[length:var(--cue-style-stat-size,var(--cue-text-title))]";
|
|
18
|
+
/** The value's weight. */
|
|
19
|
+
const STAT_WEIGHT = "font-[number:var(--cue-style-stat-weight,inherit)]";
|
|
20
|
+
/** The value's leading. */
|
|
21
|
+
const STAT_LEADING = "leading-[var(--cue-style-stat-leading,1)]";
|
|
22
|
+
/** The value's tracking. */
|
|
23
|
+
const STAT_TRACKING = "tracking-[var(--cue-style-stat-tracking,inherit)]";
|
|
24
|
+
/** The detail's size. */
|
|
25
|
+
const STAT_DETAIL_SIZE = "text-[length:var(--cue-style-stat-detail-size,var(--cue-text-label))]";
|
|
26
|
+
/** The detail's leading. */
|
|
27
|
+
const STAT_DETAIL_LEADING = "leading-[var(--cue-style-stat-detail-leading,inherit)]";
|
|
28
|
+
/** The gap between the label, the value and the detail. */
|
|
29
|
+
const STAT_GAP = "gap-[calc(var(--cue-space-2)*var(--cue-style-stat-gap,1))]";
|
|
30
|
+
//#endregion
|
|
31
|
+
export { STAT_DETAIL_LEADING, STAT_DETAIL_SIZE, STAT_GAP, STAT_LEADING, STAT_SIZE, STAT_TRACKING, STAT_WEIGHT };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/system/_style-stepper.ts
|
|
2
|
+
/**
|
|
3
|
+
* A number field's stepper width at the md step (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-stepper-width`), falling back to the square `control-md` box it drew.
|
|
5
|
+
* coss.com/ui's steppers are 38px wide (40px on a phone) beside a 32px field
|
|
6
|
+
* (P165.stepper).
|
|
7
|
+
*
|
|
8
|
+
* **Optional** (spec §3.0): each name is declared by `porcelain` alone and each
|
|
9
|
+
* reader falls back to what the component drew. Its own module for docgen's
|
|
10
|
+
* reason: one component's tokens per file.
|
|
11
|
+
*
|
|
12
|
+
* @internal Not part of the public API.
|
|
13
|
+
*/
|
|
14
|
+
const STEPPER_WIDTH = "w-[var(--cue-style-stepper-width,var(--cue-control-md))]";
|
|
15
|
+
//#endregion
|
|
16
|
+
export { STEPPER_WIDTH };
|