@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,21 @@
|
|
|
1
|
+
//#region src/system/_style-disclosure.ts
|
|
2
|
+
/**
|
|
3
|
+
* The inline disclosure toggle's ink, hover ink and weight (round 6, spec §11,
|
|
4
|
+
* lane R6.Z: `style-disclosure-ink`, `style-disclosure-hover-ink`,
|
|
5
|
+
* `style-disclosure-weight`), each falling back to what `Disclosure` drew:
|
|
6
|
+
* `fg-subtle`, `fg-muted` under the pointer, and the weight it inherited.
|
|
7
|
+
* greptile.com's phone contents box is a `details` whose summary is 500 in
|
|
8
|
+
* `fg` and stays so under the pointer (Z137).
|
|
9
|
+
*
|
|
10
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: the accordion
|
|
11
|
+
* and collapsible triggers ride `_style-collapse.ts` and read none of these.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const DISCLOSURE_INK = "text-[color:var(--cue-style-disclosure-ink,var(--cue-fg-subtle))]";
|
|
16
|
+
/** @see DISCLOSURE_INK */
|
|
17
|
+
const DISCLOSURE_HOVER_INK = "hover:text-[color:var(--cue-style-disclosure-hover-ink,var(--cue-fg-muted))]";
|
|
18
|
+
/** @see DISCLOSURE_INK */
|
|
19
|
+
const DISCLOSURE_WEIGHT = "font-[number:var(--cue-style-disclosure-weight,inherit)]";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { DISCLOSURE_HOVER_INK, DISCLOSURE_INK, DISCLOSURE_WEIGHT };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/system/_style-empty-state.ts
|
|
2
|
+
/**
|
|
3
|
+
* The empty state's own voice (round 6, spec §11, lane R6.P): its title's face,
|
|
4
|
+
* size, weight and leading (`style-empty-title-face`, `-size`, `-weight`,
|
|
5
|
+
* `-leading`), falling back to the inherited face, the `text-emphasis` rung and
|
|
6
|
+
* the inherited weight and leading; its icon's size (`style-empty-icon-size`),
|
|
7
|
+
* falling back to `space-7`; the gap between its parts (`style-empty-gap`),
|
|
8
|
+
* falling back to `space-3`; and its block padding (`style-empty-pad`), falling
|
|
9
|
+
* back to `space-7`. coss.com/ui's Empty sets a 20px, 600-weight heading-face
|
|
10
|
+
* title on a 1.4 line, an 18px icon, 24px between its parts and 80px (48px on a
|
|
11
|
+
* phone) above and below (P156).
|
|
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 EMPTY_TITLE_FACE = "font-[family-name:var(--cue-style-empty-title-face,inherit)]";
|
|
20
|
+
/**
|
|
21
|
+
* The hint's face and weight: the body names (`style-body-face`,
|
|
22
|
+
* `style-body-weight`), each falling back to the `inherit` the hint drew — it
|
|
23
|
+
* set neither, so a caller's face on the root reached it. The shared
|
|
24
|
+
* `BODY_VOICE` falls back to mono, which is what the sites it replaced drew; the
|
|
25
|
+
* title's face above falls back to `inherit` for the same reason (the closing
|
|
26
|
+
* pass's adversarial review).
|
|
27
|
+
*/
|
|
28
|
+
const EMPTY_HINT_VOICE = "font-[family-name:var(--cue-style-body-face,inherit)] font-[number:var(--cue-style-body-weight,inherit)]";
|
|
29
|
+
/** @see EMPTY_TITLE_FACE */
|
|
30
|
+
const EMPTY_TITLE_SIZE = "text-[length:var(--cue-style-empty-title-size,var(--cue-text-emphasis))]";
|
|
31
|
+
/** @see EMPTY_TITLE_FACE */
|
|
32
|
+
const EMPTY_TITLE_WEIGHT = "font-[number:var(--cue-style-empty-title-weight,inherit)]";
|
|
33
|
+
/** @see EMPTY_TITLE_FACE */
|
|
34
|
+
const EMPTY_TITLE_LEADING = "leading-[var(--cue-style-empty-title-leading,inherit)]";
|
|
35
|
+
/** @see EMPTY_TITLE_FACE */
|
|
36
|
+
const EMPTY_ICON_SIZE = "size-[var(--cue-style-empty-icon-size,var(--cue-space-7))]";
|
|
37
|
+
/** @see EMPTY_TITLE_FACE */
|
|
38
|
+
const EMPTY_GAP = "gap-[var(--cue-style-empty-gap,var(--cue-space-3))]";
|
|
39
|
+
/** @see EMPTY_TITLE_FACE */
|
|
40
|
+
const EMPTY_PAD = "py-[var(--cue-style-empty-pad,var(--cue-space-7))]";
|
|
41
|
+
//#endregion
|
|
42
|
+
export { EMPTY_GAP, EMPTY_HINT_VOICE, EMPTY_ICON_SIZE, EMPTY_PAD, EMPTY_TITLE_FACE, EMPTY_TITLE_LEADING, EMPTY_TITLE_SIZE, EMPTY_TITLE_WEIGHT };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/system/_style-eyebrow.ts
|
|
2
|
+
/**
|
|
3
|
+
* The eyebrow's voice: its face, size, ink, weight and whether it prints the
|
|
4
|
+
* `//` glyph — the console's by default, the style set's choice inside one.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.6 (R2). `Eyebrow` is the one caption the
|
|
7
|
+
* four measured Looks each draw differently from the rest of their labels:
|
|
8
|
+
* zine's is a 1–1.125rem kicker, kiln's a mono 0.8125rem at weight 500 in a
|
|
9
|
+
* softened heading ink, tender's is in the body ink, and none of the four
|
|
10
|
+
* prints the slashes. So it has names of its own rather than riding the label
|
|
11
|
+
* names — but it falls back THROUGH them, so a set that restyles its labels
|
|
12
|
+
* and says nothing about its eyebrow gets an eyebrow that matches its labels.
|
|
13
|
+
*
|
|
14
|
+
* Every name is optional (spec §3.0, F-3), emitted as `initial` on the shared
|
|
15
|
+
* `[data-style]` reset, so under no set, `console` and every set that declines
|
|
16
|
+
* them each reader resolves to exactly what the class it replaced resolved to:
|
|
17
|
+
*
|
|
18
|
+
* - face: `LABEL_FACE`'s own chain, `var(--cue-style-label-face, var(--cue-font-mono))`;
|
|
19
|
+
* - size: `var(--cue-style-label-size, var(--cue-text-label))`, the label size's chain;
|
|
20
|
+
* - ink: `var(--cue-accent)`, what `text-accent` compiled to;
|
|
21
|
+
* - weight: `inherit` — the eyebrow declared none (see `_style-label-weight.ts`
|
|
22
|
+
* on why a literal `400` would not be a no-op, and on the `font-[number:…]`
|
|
23
|
+
* spelling);
|
|
24
|
+
* - glyph: `inline`, the slashes' own display. A flex item is blockified either
|
|
25
|
+
* way, so under no set it computes what it computed before; `none` removes it.
|
|
26
|
+
*
|
|
27
|
+
* **One module for the five**, because `Eyebrow` is their only reader:
|
|
28
|
+
* `@repo/docgen` attributes a token by the file its class string lives in, and
|
|
29
|
+
* every importer of this file reads every name in it.
|
|
30
|
+
*
|
|
31
|
+
* @internal Not part of the public API.
|
|
32
|
+
*/
|
|
33
|
+
const EYEBROW_FACE = "font-[family-name:var(--cue-style-eyebrow-face,var(--cue-style-label-face,var(--cue-font-mono)))]";
|
|
34
|
+
/** @see EYEBROW_FACE — the eyebrow's size, falling back through the label size. */
|
|
35
|
+
const EYEBROW_SIZE = "text-[length:var(--cue-style-eyebrow-size,var(--cue-style-label-size,var(--cue-text-label)))]";
|
|
36
|
+
/** @see EYEBROW_FACE — the eyebrow's ink; the accent by default. */
|
|
37
|
+
const EYEBROW_INK = "text-[color:var(--cue-style-eyebrow-ink,var(--cue-accent))]";
|
|
38
|
+
/** @see EYEBROW_FACE — the eyebrow's weight; inherited by default. */
|
|
39
|
+
const EYEBROW_WEIGHT = "font-[number:var(--cue-style-eyebrow-weight,inherit)]";
|
|
40
|
+
/** @see EYEBROW_FACE — the `//` glyph's display: `inline` by default, `none` to drop it. */
|
|
41
|
+
const EYEBROW_GLYPH = "[display:var(--cue-style-eyebrow-glyph,inline)]";
|
|
42
|
+
//#endregion
|
|
43
|
+
export { EYEBROW_FACE, EYEBROW_GLYPH, EYEBROW_INK, EYEBROW_SIZE, EYEBROW_WEIGHT };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/system/_style-field-chassis.ts
|
|
2
|
+
/**
|
|
3
|
+
* The field chassis's inline padding and hover edge (round 6, spec §11, lane
|
|
4
|
+
* R6.T: `style-field-pad`, `style-field-hover-edge`), and its invalid edge.
|
|
5
|
+
*
|
|
6
|
+
* stripe.com pads its text field, textarea and select trigger 16px
|
|
7
|
+
* (`--hds-space-core-200`) where ours pad 12px (`space-4` at normal), so the
|
|
8
|
+
* padding is the rung times a set's multiplier (T132, T148); it draws a
|
|
9
|
+
* lavender edge under the pointer (`--hds-color-input-border-hoverSubdued`,
|
|
10
|
+
* T132, T148, T153). An invalid field's resting edge there is a pale red
|
|
11
|
+
* (`--hds-color-input-border-errorBlur`, T147), which Tender refuses (spec
|
|
12
|
+
* §6.2), so no set spends a name for it and the edge is plain `danger`.
|
|
13
|
+
*
|
|
14
|
+
* **The fallbacks are the classes they replace**: each rung's `px-(--cue-space-*)`
|
|
15
|
+
* times 1, the `transparent` the chassis's border already is (so a pointer
|
|
16
|
+
* over a field under a set that declines the name changes nothing: Tailwind
|
|
17
|
+
* emits `hover:` before `focus:` and `data-[invalid]:`, so a focused or
|
|
18
|
+
* invalid field keeps its own edge).
|
|
19
|
+
*
|
|
20
|
+
* @internal Not part of the public API.
|
|
21
|
+
*/
|
|
22
|
+
const FIELD_PAD_SM = "px-[calc(var(--cue-space-3)*var(--cue-style-field-pad,1))]";
|
|
23
|
+
/** The `md` rung's inline padding, and the textarea's. */
|
|
24
|
+
const FIELD_PAD_MD = "px-[calc(var(--cue-space-4)*var(--cue-style-field-pad,1))]";
|
|
25
|
+
/** The `lg` rung's inline padding. */
|
|
26
|
+
const FIELD_PAD_LG = "px-[calc(var(--cue-space-5)*var(--cue-style-field-pad,1))]";
|
|
27
|
+
/** The edge under a pointer that can hover. */
|
|
28
|
+
const FIELD_HOVER_EDGE = "hover:border-[color:var(--cue-style-field-hover-edge,transparent)]";
|
|
29
|
+
/** An invalid field's edge: `danger`, the class the chassis drew before round 6. */
|
|
30
|
+
const INVALID_EDGE = "data-[invalid]:border-danger";
|
|
31
|
+
/**
|
|
32
|
+
* The select trigger's own hover edge: it draws `border-strong` under the
|
|
33
|
+
* pointer where the rest of the chassis draws nothing, so its reader falls
|
|
34
|
+
* back to that, and a set's field hover edge reaches it too.
|
|
35
|
+
*/
|
|
36
|
+
const SELECT_HOVER_EDGE = "hover:not-data-disabled:border-[color:var(--cue-style-field-hover-edge,var(--cue-border-strong))]";
|
|
37
|
+
//#endregion
|
|
38
|
+
export { FIELD_HOVER_EDGE, FIELD_PAD_LG, FIELD_PAD_MD, FIELD_PAD_SM, INVALID_EDGE, SELECT_HOVER_EDGE };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/system/_style-field-gap.ts
|
|
2
|
+
/**
|
|
3
|
+
* The gap between a field's label, its control and its help line (round 6,
|
|
4
|
+
* spec §11, lane R6.T: `style-field-gap`, MULT), falling back to the `space-2`
|
|
5
|
+
* it drew times 1. stripe.com leaves 8px under a label
|
|
6
|
+
* (`.hds-field__label-layout`'s margin) where ours leaves 6px at normal (T147).
|
|
7
|
+
*
|
|
8
|
+
* @internal Not part of the public API.
|
|
9
|
+
*/
|
|
10
|
+
const FIELD_GAP = "gap-[calc(var(--cue-space-2)*var(--cue-style-field-gap,1))]";
|
|
11
|
+
//#endregion
|
|
12
|
+
export { FIELD_GAP };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region src/system/_style-footer-rule.ts
|
|
2
|
+
/**
|
|
3
|
+
* The width of the rule across the top of `Footer`, and the line style of
|
|
4
|
+
* both of its rules.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.11 (plan R4). `Footer` spends `Band`'s
|
|
7
|
+
* recipe, whose rule is `--cue-band-rule` wide, and a Look whose bands carry
|
|
8
|
+
* no rule but whose footer does (kiln) needs the footer's width on its own.
|
|
9
|
+
* `--cue-style-footer-rule` is that width, and this reads it.
|
|
10
|
+
*
|
|
11
|
+
* **The fallback is the class it replaces**: `bandClasses("rule")`'s
|
|
12
|
+
* `border-t-(length:--cue-band-rule)`, which compiles to
|
|
13
|
+
* `var(--cue-band-rule)`. Composed after it, so `tailwind-merge` drops the
|
|
14
|
+
* recipe's own width and keeps this one; `Band` is untouched.
|
|
15
|
+
*
|
|
16
|
+
* **The line style fills Tailwind's own slot** (`style-footer-rule-style`,
|
|
17
|
+
* round 5 of plan V.2: `tender` dashes both rules, T120 and T121). Both of
|
|
18
|
+
* the footer's rules are written by width utilities — the band rule by
|
|
19
|
+
* `border-t-[length:…]` above, the fine print's by `border-t` — and each
|
|
20
|
+
* writes `border-top-style: var(--tw-border-style)`, a slot Tailwind
|
|
21
|
+
* registers as `@property` with `inherits: false` and `initial-value: solid`,
|
|
22
|
+
* which is the solid rule the footer always drew. So `Footer` spends
|
|
23
|
+
* {@link FOOTER_RULE_STYLE} on both elements, as `_style-app-bar.ts` fills the
|
|
24
|
+
* same slot for the bar's rule: one declaration each, rather than a raw
|
|
25
|
+
* `[border-top-style:…]` that Tailwind would emit after `border-dotted` and
|
|
26
|
+
* that would beat a caller's own style class. Through the slot, a caller's
|
|
27
|
+
* `className="border-dotted"` still wins on the landmark, because a style
|
|
28
|
+
* utility writes `border-style` itself and is emitted after the width
|
|
29
|
+
* utilities. The slot does not inherit, so filling it on the landmark reaches
|
|
30
|
+
* no descendant's border, which is why the fine-print row fills it too.
|
|
31
|
+
*
|
|
32
|
+
* Its own name rather than `style-chrome-rule-style`, the bar's: the sources
|
|
33
|
+
* style the two ends of a page apart. Tender's dashes its footer's rules and
|
|
34
|
+
* draws the rule under its header solid; zine's dashes its header rule.
|
|
35
|
+
*
|
|
36
|
+
* **Its own module, and not in `_band.ts`**, whose docblock says why: docgen
|
|
37
|
+
* publishes every `--cue-*` in that file as a token both `Band` and `Footer`
|
|
38
|
+
* paint, and `Band` reads neither name here. A band's rule keeps its solid
|
|
39
|
+
* under every set.
|
|
40
|
+
*
|
|
41
|
+
* @internal Not part of the public API.
|
|
42
|
+
*/
|
|
43
|
+
const FOOTER_RULE = "border-t-[length:var(--cue-style-footer-rule,var(--cue-band-rule))]";
|
|
44
|
+
/** Both footer rules' line style, filling the slot their `border-t` utilities read. */
|
|
45
|
+
const FOOTER_RULE_STYLE = "[--tw-border-style:var(--cue-style-footer-rule-style,solid)]";
|
|
46
|
+
//#endregion
|
|
47
|
+
export { FOOTER_RULE, FOOTER_RULE_STYLE };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/system/_style-glyph-ink.ts
|
|
2
|
+
/**
|
|
3
|
+
* A control's glyph ink (round 6, spec §11, lane R6.P: `style-glyph-ink`): the
|
|
4
|
+
* chevron on a select and a filterable field, a number field's steppers, the
|
|
5
|
+
* date trigger's calendar mark, a calendar's month arrows, pagination's
|
|
6
|
+
* ellipsis and an empty state's icon. Each falls back to the `fg-subtle` or
|
|
7
|
+
* `fg-muted` it drew. coss.com/ui draws all of them in `fg` (P151.chevron-ink,
|
|
8
|
+
* P174.chevron-ink, P165.stepper-ink, P167.ellipsis, P189.nav-ink,
|
|
9
|
+
* P156.icon-ink).
|
|
10
|
+
*
|
|
11
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
12
|
+
* file, so only the components that read it are credited with it.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the public API.
|
|
15
|
+
*/
|
|
16
|
+
const GLYPH_INK_SUBTLE = "text-[color:var(--cue-style-glyph-ink,var(--cue-fg-subtle))]";
|
|
17
|
+
/** @see GLYPH_INK_SUBTLE */
|
|
18
|
+
const GLYPH_INK_MUTED = "text-[color:var(--cue-style-glyph-ink,var(--cue-fg-muted))]";
|
|
19
|
+
//#endregion
|
|
20
|
+
export { GLYPH_INK_MUTED, GLYPH_INK_SUBTLE };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/system/_style-glyph-opacity.ts
|
|
2
|
+
/**
|
|
3
|
+
* An affordance glyph's opacity (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-glyph-opacity`): the chevron on a select and a filterable field, the
|
|
5
|
+
* date trigger's calendar mark, a calendar's month arrows, and a glyph in an
|
|
6
|
+
* input group's gutters. Each falls back to `1`, the opacity it drew.
|
|
7
|
+
* coss.com/ui paints all of them in `fg` at 80% (P151, P153, P161, P174,
|
|
8
|
+
* P189), and its number-field steppers, pagination ellipsis and empty-state
|
|
9
|
+
* icon at full strength, so those read `style-glyph-ink` alone.
|
|
10
|
+
*
|
|
11
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
12
|
+
* file, so only the components that read it are credited with it.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the public API.
|
|
15
|
+
*/
|
|
16
|
+
const GLYPH_OPACITY = "opacity-[var(--cue-style-glyph-opacity,1)]";
|
|
17
|
+
/** @see GLYPH_OPACITY — on the glyphs inside a wrapper, so a focus ring on the wrapper keeps its strength. */
|
|
18
|
+
const GLYPH_OPACITY_SVG = "[&_svg]:opacity-[var(--cue-style-glyph-opacity,1)]";
|
|
19
|
+
//#endregion
|
|
20
|
+
export { GLYPH_OPACITY, GLYPH_OPACITY_SVG };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region src/system/_style-glyph-size.ts
|
|
2
|
+
/**
|
|
3
|
+
* A control's glyph size (round 6, spec §11, lane R6.P: `style-glyph-size`): the
|
|
4
|
+
* date trigger's calendar mark and a number field's stepper glyphs, falling
|
|
5
|
+
* back to the `icon-sm` they drew. coss.com/ui draws both 16px (P153.icon,
|
|
6
|
+
* P165.stepper-glyph).
|
|
7
|
+
*
|
|
8
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
9
|
+
* file, so only the components that read it are credited with it.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
const GLYPH_SIZE = "size-[var(--cue-style-glyph-size,var(--cue-icon-sm))]";
|
|
14
|
+
/**
|
|
15
|
+
* The same size for a glyph set as type: a number field's − and +, which fall
|
|
16
|
+
* back to the size they inherited. coss.com/ui's stepper glyphs are 16px
|
|
17
|
+
* (P165.stepper-glyph).
|
|
18
|
+
*/
|
|
19
|
+
const GLYPH_TEXT_SIZE = "text-[length:var(--cue-style-glyph-size,inherit)]";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { GLYPH_SIZE, GLYPH_TEXT_SIZE };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/system/_style-group-gap.ts
|
|
2
|
+
/**
|
|
3
|
+
* The gap between the items of a group control (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-group-gap`): a ToggleGroup's toggles and a tab list's tabs, falling
|
|
5
|
+
* back to the `space-1` both drew. coss.com/ui sets both 2px apart (P141,
|
|
6
|
+
* P182.gap).
|
|
7
|
+
*
|
|
8
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
9
|
+
* file, so only the components that read it are credited with it.
|
|
10
|
+
*
|
|
11
|
+
* @internal Not part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
const GROUP_GAP = "gap-[var(--cue-style-group-gap,var(--cue-space-1))]";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { GROUP_GAP };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/system/_style-group-label-pad.ts
|
|
2
|
+
/**
|
|
3
|
+
* A menu group label's block padding (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-group-label-pad`), falling back to the `0px` it drew inside its fixed
|
|
5
|
+
* row height. coss.com/ui pads its labels 6px (P163.label-pad).
|
|
6
|
+
*
|
|
7
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
8
|
+
* file, so only the components that read it are credited with it.
|
|
9
|
+
*
|
|
10
|
+
* @internal Not part of the public API.
|
|
11
|
+
*/
|
|
12
|
+
const GROUP_LABEL_PAD = "py-[var(--cue-style-group-label-pad,0px)]";
|
|
13
|
+
//#endregion
|
|
14
|
+
export { GROUP_LABEL_PAD };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/system/_style-group-label.ts
|
|
2
|
+
/**
|
|
3
|
+
* A caption over a group of rows (round 6, spec §11, lane R6.P:
|
|
4
|
+
* `style-group-label-size`, `style-group-label-ink`): a menu's and a command
|
|
5
|
+
* palette's group labels. A menu's falls back through `style-label-size` and
|
|
6
|
+
* `style-label-ink` to the rung and ink it drew; the palette's, which read no
|
|
7
|
+
* label name, to its `text-micro` and `fg-subtle`. coss.com/ui sets both at
|
|
8
|
+
* 12px in `fg-muted` (P163.label-size, P152.group-label, P152.group-label-ink),
|
|
9
|
+
* where its field labels are 14px `fg`.
|
|
10
|
+
*
|
|
11
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason: one token per
|
|
12
|
+
* file, so only the components that read it are credited with it.
|
|
13
|
+
*
|
|
14
|
+
* @internal Not part of the public API.
|
|
15
|
+
*/
|
|
16
|
+
const GROUP_LABEL_SIZE = "text-[length:var(--cue-style-group-label-size,var(--cue-style-label-size,var(--cue-text-label)))]";
|
|
17
|
+
/** @see GROUP_LABEL_SIZE */
|
|
18
|
+
const GROUP_LABEL_INK = "text-[color:var(--cue-style-group-label-ink,var(--cue-style-label-ink,var(--cue-fg-subtle)))]";
|
|
19
|
+
/** @see GROUP_LABEL_SIZE — the palette's, which read no label name. */
|
|
20
|
+
const GROUP_LABEL_SIZE_MICRO = "text-[length:var(--cue-style-group-label-size,var(--cue-text-micro))]";
|
|
21
|
+
/** @see GROUP_LABEL_SIZE */
|
|
22
|
+
const GROUP_LABEL_INK_SUBTLE = "text-[color:var(--cue-style-group-label-ink,var(--cue-fg-subtle))]";
|
|
23
|
+
//#endregion
|
|
24
|
+
export { GROUP_LABEL_INK, GROUP_LABEL_INK_SUBTLE, GROUP_LABEL_SIZE, GROUP_LABEL_SIZE_MICRO };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region src/system/_style-gutter.ts
|
|
2
|
+
/**
|
|
3
|
+
* A padded `Container`'s gutter (plan V.2, T119): `style-gutter`, falling back
|
|
4
|
+
* to the `space-6` it drew. Tender's page column is 16px in from the viewport
|
|
5
|
+
* on a phone and its band column is 1232px wide at 1440, where `space-6` is
|
|
6
|
+
* 24px. A proportion of the rung (RUNG(`space-6`)), so it follows density.
|
|
7
|
+
*
|
|
8
|
+
* Spec §3.11 withdrew a `style-gutter` in round 1 because no row needed it;
|
|
9
|
+
* T38 and T119 are the rows.
|
|
10
|
+
*
|
|
11
|
+
* **Optional** (spec §3.0). Its own module for docgen's reason.
|
|
12
|
+
*
|
|
13
|
+
* @internal Not part of the public API.
|
|
14
|
+
*/
|
|
15
|
+
const GUTTER = "px-[var(--cue-style-gutter,var(--cue-space-6))]";
|
|
16
|
+
//#endregion
|
|
17
|
+
export { GUTTER };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/system/_style-help-ink.ts
|
|
2
|
+
/**
|
|
3
|
+
* The help ink, for a site that reads it without the help size: a table's
|
|
4
|
+
* caption and the breadcrumb's separator (plan V.2, P122, P128) —
|
|
5
|
+
* `style-help-ink`, falling back to the `fg-subtle` both drew. The same class
|
|
6
|
+
* `_style-help.ts`'s `HELP_INK` spells for a field's description, restated in
|
|
7
|
+
* a module of its own so docgen does not publish `style-help-size` as a
|
|
8
|
+
* token of a table or a breadcrumb.
|
|
9
|
+
*
|
|
10
|
+
* @internal Not part of the public API.
|
|
11
|
+
*/
|
|
12
|
+
const HELP_INK = "text-[color:var(--cue-style-help-ink,var(--cue-fg-subtle))]";
|
|
13
|
+
//#endregion
|
|
14
|
+
export { HELP_INK };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//#region src/system/_style-help.ts
|
|
2
|
+
/**
|
|
3
|
+
* The size and ink of a field's helper text: the micro rung in `fg-subtle`,
|
|
4
|
+
* until a style set says otherwise.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.5, plan R1. `FieldDescription` and
|
|
7
|
+
* `FieldError` each spelt `font-mono text-(length:--cue-text-micro)`, the
|
|
8
|
+
* description in `fg-subtle` and the error in `danger`. Tender and Porcelain set
|
|
9
|
+
* helper text a rung larger and a step darker (T55, P48), in the Look's label
|
|
10
|
+
* face — so both lines now wear `LABEL_FACE` and read the size here, and the
|
|
11
|
+
* description reads the ink. The error keeps `danger`: a Look's helper ink is
|
|
12
|
+
* not a reason to quieten a validation message.
|
|
13
|
+
*
|
|
14
|
+
* | property | reads | fallback |
|
|
15
|
+
* |-----------|-------------------|---------------------------|
|
|
16
|
+
* | font-size | `style-help-size` | `var(--cue-text-micro)` |
|
|
17
|
+
* | color | `style-help-ink` | `var(--cue-fg-subtle)` |
|
|
18
|
+
*
|
|
19
|
+
* **Both names are optional** (spec §3.0), declared on no `:root` and left at the
|
|
20
|
+
* shared `[data-style]` reset by every shipped set, so each reader computes the
|
|
21
|
+
* old class's value at the element.
|
|
22
|
+
*
|
|
23
|
+
* @internal Not part of the public API.
|
|
24
|
+
*/
|
|
25
|
+
const HELP_SIZE = "text-[length:var(--cue-style-help-size,var(--cue-text-micro))]";
|
|
26
|
+
/** @see HELP_SIZE — the description's ink; `FieldError` keeps `text-danger`. */
|
|
27
|
+
const HELP_INK = "text-[color:var(--cue-style-help-ink,var(--cue-fg-subtle))]";
|
|
28
|
+
/**
|
|
29
|
+
* The help line's leading (round 6, spec §11, lane R6.T: `style-help-leading`),
|
|
30
|
+
* falling back to the body leading `FieldDescription` read. stripe.com sets
|
|
31
|
+
* its field description and its field error on one line height
|
|
32
|
+
* (`--hds-font-input-description-lineHeight`, 18.2px on 14px: 1.3, T147).
|
|
33
|
+
*/
|
|
34
|
+
const HELP_LEADING = "leading-[var(--cue-style-help-leading,var(--cue-style-body-leading,inherit))]";
|
|
35
|
+
/** The error line's leading: the same name, falling back to the `inherit` `FieldError` drew (no leading class). */
|
|
36
|
+
const HELP_LEADING_ERROR = "leading-[var(--cue-style-help-leading,inherit)]";
|
|
37
|
+
//#endregion
|
|
38
|
+
export { HELP_INK, HELP_LEADING, HELP_LEADING_ERROR, HELP_SIZE };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/system/_style-hover-card-width.ts
|
|
2
|
+
/**
|
|
3
|
+
* A hover card's width (round 6, spec §11, lane R6.P: `style-hover-card-width`),
|
|
4
|
+
* falling back to the 20rem it drew, under the same viewport cap. coss.com/ui's
|
|
5
|
+
* preview card is 256px (`w-64`, P169.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 HOVER_CARD_WIDTH = "w-[min(var(--cue-style-hover-card-width,20rem),calc(100vw-2rem))]";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { HOVER_CARD_WIDTH };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/system/_style-input-face.ts
|
|
2
|
+
/**
|
|
3
|
+
* The face a typing surface wears: mono by default, the style set's choice
|
|
4
|
+
* inside one.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26 (the label-voice brief). `forms/_chassis.ts`'s
|
|
7
|
+
* `controlSurface` and `bareControlClasses` — the shared recessed-control
|
|
8
|
+
* chassis a text field, a textarea, a number field, a combobox, a select
|
|
9
|
+
* trigger and everything else a person types into all ride — spoke
|
|
10
|
+
* `font-mono` before this existed, the same fact `_style-control-face.ts`
|
|
11
|
+
* records for `Button`. What was missing was a way for a sans-voiced Look to
|
|
12
|
+
* change the ONE surface that is neither a control nor a caption: text a
|
|
13
|
+
* person types, which a face chosen per call site would not follow. So the
|
|
14
|
+
* style set says it, through `--cue-style-input-face`, and this reads it.
|
|
15
|
+
*
|
|
16
|
+
* **The fallback is the old class, spelt out**, for the identical reason
|
|
17
|
+
* `_style-control-face.ts` gives: `font-mono` compiles to
|
|
18
|
+
* `font-family: var(--cue-font-mono)`, and `--cue-style-input-face` is
|
|
19
|
+
* declared on no `:root`, so under no set this resolves to exactly what
|
|
20
|
+
* `font-mono` resolved to, at the control itself. A call site that
|
|
21
|
+
* deliberately keeps a typed value in mono regardless of the set — a hex
|
|
22
|
+
* colour code, a DMX value, anything code-shaped rather than prose — restates
|
|
23
|
+
* `font-mono` directly instead of importing this, exactly as `color-picker.tsx`
|
|
24
|
+
* already did for its hex field before this axis existed.
|
|
25
|
+
*
|
|
26
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives: one
|
|
27
|
+
* reader per file, so `@repo/docgen` attributes exactly this token to exactly
|
|
28
|
+
* the components that import it.
|
|
29
|
+
*
|
|
30
|
+
* @internal Not part of the public API.
|
|
31
|
+
*/
|
|
32
|
+
const INPUT_FACE = "font-[family-name:var(--cue-style-input-face,var(--cue-font-mono))]";
|
|
33
|
+
//#endregion
|
|
34
|
+
export { INPUT_FACE };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
//#region src/system/_style-kbd.ts
|
|
2
|
+
/**
|
|
3
|
+
* A key cap's rim and size: the box edge and the micro rung by default, the
|
|
4
|
+
* style set's choice inside one.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.6 (R2), F-16. `Kbd` spent `border-border`
|
|
7
|
+
* and `text-(length:--cue-text-micro)`. Porcelain's `MenuShortcut` key caps
|
|
8
|
+
* have no rim at all and sit at 0.75rem (coss.md, P55), which a set says as
|
|
9
|
+
* `--cue-style-kbd-edge: transparent` and `--cue-style-chip-size: 0.75rem` —
|
|
10
|
+
* the chip's size name, because `Kbd` is sized off `h-chip` to sit on a chip's
|
|
11
|
+
* row, and a Look that retunes one retunes both. The border's width stays, so
|
|
12
|
+
* a key cap keeps its box and its baseline in every Look.
|
|
13
|
+
*
|
|
14
|
+
* Both names are optional (spec §3.0, F-3): under no set, `console` and every
|
|
15
|
+
* set that declines them each reader resolves to exactly what the class it
|
|
16
|
+
* replaced resolved to, at the key cap itself.
|
|
17
|
+
*
|
|
18
|
+
* **Put {@link KBD_SIZE} before `leading-none` in the same `cn()`**, as
|
|
19
|
+
* `_style-label-size.ts` explains: `tailwind-merge` drops a `leading-*` that a
|
|
20
|
+
* later font-size follows.
|
|
21
|
+
*
|
|
22
|
+
* **Its own module**, apart from `_style-chip.ts` though it reads one of the
|
|
23
|
+
* chip's names, because `@repo/docgen` credits every importer with every token
|
|
24
|
+
* in a file, and `Kbd` reads none of the chip's other names.
|
|
25
|
+
*
|
|
26
|
+
* @internal Not part of the public API.
|
|
27
|
+
*/
|
|
28
|
+
const KBD_EDGE = "border-[color:var(--cue-style-kbd-edge,var(--cue-border))]";
|
|
29
|
+
/** @see KBD_EDGE — the key cap's size: the chip's size name, the micro rung by default. */
|
|
30
|
+
const KBD_SIZE = "text-[length:var(--cue-style-kbd-size,var(--cue-style-chip-size,var(--cue-text-micro)))]";
|
|
31
|
+
/**
|
|
32
|
+
* The key cap's own box (plan V.2, P55, P111): its height and minimum width
|
|
33
|
+
* (`style-kbd-height`, the `chip-h` it shared with the chip), its inline
|
|
34
|
+
* padding (`style-kbd-pad`, `space-2`) and its corner (`style-kbd-radius`, the
|
|
35
|
+
* `rounded-control` corner). Porcelain's key caps are 20px, 4px in and
|
|
36
|
+
* rounded at 0.4 of its control corner, while its chips are a phone-to-desktop
|
|
37
|
+
* clamp — so the cap stopped riding the chip's `h-chip`.
|
|
38
|
+
*
|
|
39
|
+
* The size above reads `style-kbd-size` first for the same reason (P14):
|
|
40
|
+
* Porcelain's chip text ramps from 14px on a phone to 12px on a desktop,
|
|
41
|
+
* where its key caps stay 12px. It falls back through the chip's size, so a
|
|
42
|
+
* Look that names only the chip's keeps its key caps beside it.
|
|
43
|
+
*/
|
|
44
|
+
const KBD_BOX = "h-[var(--cue-style-kbd-height,var(--cue-chip-h))] min-w-[var(--cue-style-kbd-height,var(--cue-chip-h))] px-[var(--cue-style-kbd-pad,var(--cue-space-2))] rounded-[var(--cue-style-kbd-radius,calc(var(--cue-radius-control)*var(--cue-radius-scale)))]";
|
|
45
|
+
/**
|
|
46
|
+
* A key's leading (round 6, spec §11, lane R6.P: `style-kbd-leading`), falling
|
|
47
|
+
* back to the `leading-none` it drew. coss.com/ui's keys set 12px on a 16px line
|
|
48
|
+
* (P162.leading).
|
|
49
|
+
*/
|
|
50
|
+
const KBD_LEADING = "leading-[var(--cue-style-kbd-leading,1)]";
|
|
51
|
+
/**
|
|
52
|
+
* A key's fill (round 6, spec §11, lane R6.G: `style-kbd-fill`), falling back
|
|
53
|
+
* to the `surface-2` it drew. agent-native.com's header key sits on
|
|
54
|
+
* `bg-elevated`, #f4f3ef in light and #2e2e2e in dark (G141.fill).
|
|
55
|
+
*/
|
|
56
|
+
const KBD_FILL = "bg-[color:var(--cue-style-kbd-fill,var(--cue-surface-2))]";
|
|
57
|
+
//#endregion
|
|
58
|
+
export { KBD_BOX, KBD_EDGE, KBD_FILL, KBD_LEADING, KBD_SIZE };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/system/_style-label-case.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `text-transform` a chassis caption wears: `uppercase` by default, the
|
|
4
|
+
* style set's choice inside one.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26 (the label-voice brief). Every mono-uppercase chassis
|
|
7
|
+
* caption spent a literal `uppercase` utility before this existed, and a face
|
|
8
|
+
* changed to sans through {@link LABEL_FACE} alone still shouts — a sentence-
|
|
9
|
+
* case label rendered in a sans face and still transformed to caps is a sans
|
|
10
|
+
* label wearing the console's voice, not the source site's. So the two travel
|
|
11
|
+
* together at every call site.
|
|
12
|
+
*
|
|
13
|
+
* **The fallback is the old class, spelt out.** `uppercase` compiles to
|
|
14
|
+
* `text-transform: uppercase`, and `--cue-style-label-case` is declared on no
|
|
15
|
+
* `:root` — deliberately, for the identical reason `_style-control-face.ts`
|
|
16
|
+
* gives for its own name: a `:root` declaration would freeze the page's
|
|
17
|
+
* choice into every nested font or theme island. So under no set this
|
|
18
|
+
* resolves to exactly what `uppercase` resolved to, at the label itself; and
|
|
19
|
+
* every shipped set but a sans-voiced one restates `uppercase`, which
|
|
20
|
+
* `@cueplusplus/tokens` refuses to build otherwise for `console`.
|
|
21
|
+
*
|
|
22
|
+
* Written as a bare arbitrary property (`[text-transform:…]`) rather than a
|
|
23
|
+
* named Tailwind utility because none of Tailwind's `uppercase` / `lowercase`
|
|
24
|
+
* / `capitalize` / `normal-case` utilities take a dynamic value — the same
|
|
25
|
+
* reason `_paint-*` readers reach for `[mask-image:…]` and `[background-*:…]`
|
|
26
|
+
* instead of a utility that does not exist for a `var()`-driven keyword.
|
|
27
|
+
*
|
|
28
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives: one
|
|
29
|
+
* reader per file, so `@repo/docgen` attributes exactly this token to exactly
|
|
30
|
+
* the components that import it.
|
|
31
|
+
*
|
|
32
|
+
* @internal Not part of the public API.
|
|
33
|
+
*/
|
|
34
|
+
const LABEL_CASE = "[text-transform:var(--cue-style-label-case,uppercase)]";
|
|
35
|
+
//#endregion
|
|
36
|
+
export { LABEL_CASE };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/system/_style-label-face.ts
|
|
2
|
+
/**
|
|
3
|
+
* The face a chassis caption wears: mono by default, the style set's choice inside one.
|
|
4
|
+
*
|
|
5
|
+
* Spec 2026-09-26 (the label-voice brief). `FieldLabel`, `Eyebrow`, a table head,
|
|
6
|
+
* a `Stat` label, a group or section heading and a dozen more chassis sites all
|
|
7
|
+
* spoke `font-mono … uppercase` before this existed — the same fact
|
|
8
|
+
* `_style-control-face.ts` records for `Button` and the `Tabs` trigger, one
|
|
9
|
+
* layer over. What was missing was a way for a sans-voiced Look (stripe's,
|
|
10
|
+
* replit's, coss's) to change a LABEL's face rather than only a control's, and
|
|
11
|
+
* a face chosen per call site would not follow the Look. So the style set says
|
|
12
|
+
* it, through `--cue-style-label-face`, and this reads it.
|
|
13
|
+
*
|
|
14
|
+
* Always paired with {@link LABEL_CASE}: a sans face still shouting in caps is
|
|
15
|
+
* still the console's voice, not the source site's, so the two travel
|
|
16
|
+
* together at every call site.
|
|
17
|
+
*
|
|
18
|
+
* **The fallback is the old class, spelt out**, for the identical reason
|
|
19
|
+
* `_style-control-face.ts` gives: `font-mono` compiles to
|
|
20
|
+
* `font-family: var(--cue-font-mono)`, and `--cue-style-label-face` is
|
|
21
|
+
* declared on no `:root`, so under no set this resolves to exactly what
|
|
22
|
+
* `font-mono` resolved to, at the label itself.
|
|
23
|
+
*
|
|
24
|
+
* **Its own module**, because `@repo/docgen` attributes a token to a component
|
|
25
|
+
* by the file its class string lives in, following only `_`-prefixed imports.
|
|
26
|
+
* One reader per file — see `_style-control-face.ts`'s note.
|
|
27
|
+
*
|
|
28
|
+
* @internal Not part of the public API.
|
|
29
|
+
*/
|
|
30
|
+
const LABEL_FACE = "font-[family-name:var(--cue-style-label-face,var(--cue-font-mono))]";
|
|
31
|
+
//#endregion
|
|
32
|
+
export { LABEL_FACE };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region src/system/_style-label-ink.ts
|
|
2
|
+
/**
|
|
3
|
+
* A chassis caption's ink: its own historic role by default, one shared ink
|
|
4
|
+
* inside a style set that declares `--cue-style-label-ink`.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.6 (R2). Two inks, both already on the
|
|
7
|
+
* page: `FieldLabel`, a `SectionHeader` label and the `Checkbox` and `Switch`
|
|
8
|
+
* labels spent `text-fg-muted`; a table head and a group row, a
|
|
9
|
+
* `Sidebar.Section` label, a `Stat` label and a menu group label spent the
|
|
10
|
+
* quieter `text-fg-subtle`. Tender and porcelain draw every caption in the
|
|
11
|
+
* body ink (`var(--cue-fg)`), kiln in the muted one — one value a set says
|
|
12
|
+
* once, which is why the name exists.
|
|
13
|
+
*
|
|
14
|
+
* **Optional, so each reader keeps its own fallback** (spec §3.0, F-3): under
|
|
15
|
+
* no set, `console` and every set that declines the name this resolves to
|
|
16
|
+
* exactly what `text-fg-muted` or `text-fg-subtle` resolved to, at the label
|
|
17
|
+
* itself — so a nested theme island still repaints it.
|
|
18
|
+
*
|
|
19
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives: one
|
|
20
|
+
* token per file, so `@repo/docgen` credits exactly the components that read
|
|
21
|
+
* the label ink with it.
|
|
22
|
+
*
|
|
23
|
+
* @internal Not part of the public API.
|
|
24
|
+
*/
|
|
25
|
+
const LABEL_INK = "text-[color:var(--cue-style-label-ink,var(--cue-fg-muted))]";
|
|
26
|
+
/** @see LABEL_INK — for a reader that spent `text-fg-subtle` before this existed. */
|
|
27
|
+
const LABEL_INK_SUBTLE = "text-[color:var(--cue-style-label-ink,var(--cue-fg-subtle))]";
|
|
28
|
+
//#endregion
|
|
29
|
+
export { LABEL_INK, LABEL_INK_SUBTLE };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/system/_style-label-leading.ts
|
|
2
|
+
/**
|
|
3
|
+
* A field label's leading (plan V.2, P10): `style-label-leading`, falling back
|
|
4
|
+
* to the `leading-none` (`1`) the label drew. Porcelain's field label is 16px
|
|
5
|
+
* on 14px type, a 1.143 leading.
|
|
6
|
+
*
|
|
7
|
+
* **Optional** (spec §3.0). Its own module because docgen attributes a token
|
|
8
|
+
* to a component by the file its class string lives in.
|
|
9
|
+
*
|
|
10
|
+
* @internal Not part of the public API.
|
|
11
|
+
*/
|
|
12
|
+
const LABEL_LEADING = "leading-[var(--cue-style-label-leading,1)]";
|
|
13
|
+
//#endregion
|
|
14
|
+
export { LABEL_LEADING };
|