@cueplusplus/ui 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1083 -0
- package/README.md +26 -0
- package/dist/agent-runtime/tool-call-card.js +7 -3
- package/dist/brand/_chassis.d.ts +1 -1
- package/dist/brand/cue-mark.d.ts +1 -1
- package/dist/brand/cue-mark.js +1 -1
- package/dist/charts/ramps.js +1 -1
- package/dist/chat/agent-pile.js +2 -1
- package/dist/chat/ask-box.js +4 -3
- package/dist/chat/delegation-card.js +3 -2
- package/dist/chat/message-list.js +4 -2
- package/dist/chat/message.js +17 -7
- package/dist/chrome/_edge-scroller.js +2 -1
- package/dist/chrome/_status-bar.js +9 -3
- package/dist/chrome/_tabs-scroll.d.ts +17 -1
- package/dist/chrome/_tabs-scroll.js +20 -3
- package/dist/chrome/app-bar.js +10 -3
- package/dist/chrome/app-shell.js +2 -1
- package/dist/chrome/band.d.ts +18 -12
- package/dist/chrome/band.js +19 -31
- package/dist/chrome/eyebrow.d.ts +13 -5
- package/dist/chrome/eyebrow.js +18 -7
- package/dist/chrome/footer.d.ts +5 -0
- package/dist/chrome/footer.js +14 -3
- package/dist/chrome/navigation-menu.js +4 -2
- package/dist/chrome/page-shell.js +8 -5
- package/dist/chrome/panel.d.ts +5 -2
- package/dist/chrome/panel.js +9 -4
- package/dist/chrome/row.js +6 -3
- package/dist/chrome/scroll-area.js +2 -1
- package/dist/chrome/section-header.js +13 -4
- package/dist/chrome/segmented-control.js +12 -3
- package/dist/chrome/status-bar.js +2 -1
- package/dist/chrome/tabs.js +11 -3
- package/dist/chrome/toolbar.js +2 -1
- package/dist/chrome/tree.js +3 -2
- package/dist/color/_thumb.js +9 -3
- package/dist/color/color-area.js +1 -1
- package/dist/color/color-field.d.ts +2 -1
- package/dist/color/color-picker.d.ts +2 -1
- package/dist/color/color-swatch.js +1 -1
- package/dist/configurator/_overrides.js +13 -4
- package/dist/configurator/configurator.js +4 -1
- package/dist/configurator/export-dialog.js +5 -2
- package/dist/configurator/panel-sections.js +6 -2
- package/dist/configurator/token-editor.js +4 -1
- package/dist/date/calendar.js +12 -8
- package/dist/date/date-field.d.ts +2 -1
- package/dist/date/date-picker.d.ts +2 -1
- package/dist/date/date-range-picker.d.ts +2 -1
- package/dist/date/time-field.d.ts +2 -1
- package/dist/dmx/channel-matrix.js +3 -2
- package/dist/dmx/dmx-bar.js +1 -1
- package/dist/dmx/dmx-strip.js +1 -1
- package/dist/dmx/universe-grid.js +3 -2
- package/dist/elements/activity-graph.js +3 -3
- package/dist/elements/agent-card.js +3 -3
- package/dist/elements/approval-card.js +3 -3
- package/dist/elements/artifact-card.js +2 -2
- package/dist/elements/background-inbox.js +2 -2
- package/dist/elements/canvas-split.js +2 -2
- package/dist/elements/chart.js +1 -1
- package/dist/elements/chat-panel.js +2 -2
- package/dist/elements/checkpoint-history.js +2 -2
- package/dist/elements/clamp.js +2 -1
- package/dist/elements/code-diff.js +1 -1
- package/dist/elements/code-runner.js +1 -1
- package/dist/elements/command-palette.js +6 -5
- package/dist/elements/comparison-card.js +2 -2
- package/dist/elements/composer.js +9 -8
- package/dist/elements/computer-use.js +1 -1
- package/dist/elements/confidence-marker.js +2 -1
- package/dist/elements/connection-state.js +1 -1
- package/dist/elements/context-breakdown.js +1 -1
- package/dist/elements/context-usage.js +1 -1
- package/dist/elements/conversation-search.js +4 -3
- package/dist/elements/cost-meter.js +1 -1
- package/dist/elements/data-table.js +2 -2
- package/dist/elements/day-separator.js +1 -1
- package/dist/elements/diagram.js +1 -1
- package/dist/elements/document-reference.js +3 -3
- package/dist/elements/draft-restore.js +1 -1
- package/dist/elements/edit-message.js +4 -3
- package/dist/elements/elements.css +26 -5
- package/dist/elements/elicitation-form.js +3 -3
- package/dist/elements/empty-state.js +2 -1
- package/dist/elements/error-state.js +1 -1
- package/dist/elements/feedback-dialog.js +4 -3
- package/dist/elements/file-tree.js +2 -2
- package/dist/elements/flow-graph.js +2 -2
- package/dist/elements/guardrail-notice.js +3 -3
- package/dist/elements/image-generation.js +1 -1
- package/dist/elements/inline-citation.js +3 -3
- package/dist/elements/job-progress.js +3 -3
- package/dist/elements/launcher-bubble.js +2 -2
- package/dist/elements/loading-state.js +1 -1
- package/dist/elements/map-answer.js +3 -2
- package/dist/elements/markdown.js +5 -4
- package/dist/elements/math-block.js +1 -1
- package/dist/elements/mcp-server-panel.js +3 -3
- package/dist/elements/message-attachment.js +4 -4
- package/dist/elements/message-pair.js +1 -1
- package/dist/elements/message-queue.js +2 -2
- package/dist/elements/mobile-composer.js +4 -3
- package/dist/elements/model-picker.js +3 -3
- package/dist/elements/onboarding.js +2 -2
- package/dist/elements/permission-grant.js +2 -2
- package/dist/elements/permission-scopes.js +5 -4
- package/dist/elements/prompt-library.js +7 -6
- package/dist/elements/queue-dock.js +4 -3
- package/dist/elements/quota-banner.js +1 -1
- package/dist/elements/quote-reply.js +1 -1
- package/dist/elements/read-aloud.js +2 -2
- package/dist/elements/reasoning-panel.js +2 -1
- package/dist/elements/recommendation-card.d.ts +1 -1
- package/dist/elements/recommendation-card.js +2 -2
- package/dist/elements/regenerate-menu.js +2 -2
- package/dist/elements/research-report.js +1 -1
- package/dist/elements/retrieval-chunks.js +1 -1
- package/dist/elements/revert-dock.js +5 -4
- package/dist/elements/reviewable-diff.js +1 -1
- package/dist/elements/schedule-card.js +3 -3
- package/dist/elements/score-breakdown.js +1 -1
- package/dist/elements/scroll-anchor.js +2 -2
- package/dist/elements/settings-panel.js +3 -2
- package/dist/elements/shared-conversation.js +2 -2
- package/dist/elements/sources.js +4 -3
- package/dist/elements/speaker-identity.js +1 -1
- package/dist/elements/spec-sheet.js +1 -1
- package/dist/elements/streaming-text.js +1 -1
- package/dist/elements/subagent-list.js +2 -2
- package/dist/elements/suggestions.js +1 -1
- package/dist/elements/surfaces.d.ts +1 -1
- package/dist/elements/surfaces.js +2 -1
- package/dist/elements/tail-status.js +1 -1
- package/dist/elements/terminal-block.js +1 -1
- package/dist/elements/thread-list.js +1 -1
- package/dist/elements/thread-search.js +5 -4
- package/dist/elements/timeline.js +1 -1
- package/dist/elements/todo-list.js +2 -2
- package/dist/elements/tool-call.js +4 -3
- package/dist/elements/tool-error.js +2 -2
- package/dist/elements/tool-group.js +1 -1
- package/dist/elements/tool-timeline.js +4 -3
- package/dist/elements/trace-waterfall.js +1 -1
- package/dist/elements/verdict-row.js +2 -2
- package/dist/elements/voice-conversation.js +3 -2
- package/dist/elements/web-preview.js +1 -1
- package/dist/elements/web-search.js +2 -2
- package/dist/elements/work-collapse.js +2 -1
- package/dist/flow/node-card.js +3 -2
- package/dist/flow/use-flow-theme.js +2 -1
- package/dist/forms/_chassis-size.d.ts +22 -0
- package/dist/forms/_chassis.d.ts +28 -15
- package/dist/forms/_chassis.js +34 -8
- package/dist/forms/_listbox.js +8 -5
- package/dist/forms/autocomplete.d.ts +2 -1
- package/dist/forms/checkbox.js +8 -2
- package/dist/forms/combobox.d.ts +2 -1
- package/dist/forms/env-var-input.d.ts +2 -1
- package/dist/forms/env-var-input.js +3 -2
- package/dist/forms/field.d.ts +2 -1
- package/dist/forms/field.js +15 -4
- package/dist/forms/file-upload.js +3 -2
- package/dist/forms/index.d.ts +2 -1
- package/dist/forms/input-group.d.ts +2 -1
- package/dist/forms/input.d.ts +2 -1
- package/dist/forms/multi-select.d.ts +2 -1
- package/dist/forms/number-field.js +2 -1
- package/dist/forms/otp-field.d.ts +2 -1
- package/dist/forms/password-input.d.ts +2 -1
- package/dist/forms/password-input.js +4 -2
- package/dist/forms/radio-group.js +6 -2
- package/dist/forms/rating.js +2 -1
- package/dist/forms/scrub-input.d.ts +2 -1
- package/dist/forms/scrub-input.js +2 -1
- package/dist/forms/search-input.d.ts +2 -1
- package/dist/forms/search-input.js +2 -1
- package/dist/forms/select.d.ts +2 -1
- package/dist/forms/select.js +6 -2
- package/dist/forms/slider.js +6 -2
- package/dist/forms/switch.js +6 -2
- package/dist/forms/tags-input.d.ts +2 -1
- package/dist/forms/textarea.js +2 -1
- package/dist/forms/toggle-group.d.ts +1 -1
- package/dist/forms/toggle.d.ts +1 -1
- package/dist/forms/toggle.js +3 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -2
- package/dist/instruments/_data-row.js +2 -1
- package/dist/instruments/app-window-frame.js +1 -1
- package/dist/instruments/code-block.js +8 -2
- package/dist/instruments/group-bar.js +1 -1
- package/dist/instruments/ledger.js +6 -2
- package/dist/instruments/log-viewer.js +5 -3
- package/dist/instruments/progress.js +5 -2
- package/dist/instruments/seam-grid.js +5 -3
- package/dist/instruments/stat.js +10 -3
- package/dist/instruments/table.js +28 -10
- package/dist/instruments/terminal-frame.js +4 -2
- package/dist/instruments/usage-chart.js +1 -1
- package/dist/layout/_collapse.js +6 -1
- package/dist/layout/bento.js +7 -4
- package/dist/layout/breadcrumb.js +7 -3
- package/dist/layout/card.js +14 -6
- package/dist/layout/carousel.js +3 -2
- package/dist/layout/collapsible.js +5 -1
- package/dist/layout/container.js +2 -1
- package/dist/layout/description-list.js +4 -1
- package/dist/layout/frames.js +11 -5
- package/dist/layout/item.js +3 -2
- package/dist/layout/link.d.ts +16 -0
- package/dist/layout/link.js +22 -3
- package/dist/layout/pagination.js +2 -1
- package/dist/layout/preview.d.ts +32 -12
- package/dist/layout/preview.js +149 -40
- package/dist/layout/resizable.js +2 -1
- package/dist/layout/sidebar.js +11 -3
- package/dist/layout/stepper.js +6 -2
- package/dist/lib/cn.js +29 -2
- package/dist/midi/musical-time-input.d.ts +2 -1
- package/dist/midi/piano-keyboard.js +3 -2
- package/dist/midi/spectrum-visualizer.js +1 -1
- package/dist/midi/threshold-rail.js +2 -1
- package/dist/midi/timeline-ruler.js +1 -1
- package/dist/overlays/_surface.d.ts +72 -12
- package/dist/overlays/_surface.js +86 -12
- package/dist/overlays/command-palette.js +9 -5
- package/dist/overlays/dialog.d.ts +5 -0
- package/dist/overlays/dialog.js +6 -1
- package/dist/overlays/info-tip.js +2 -1
- package/dist/overlays/menubar.js +3 -1
- package/dist/overlays/popover.js +2 -1
- package/dist/overlays/toast.js +6 -2
- package/dist/overlays/tooltip.js +4 -1
- package/dist/primitives/button.d.ts +15 -0
- package/dist/primitives/button.js +40 -10
- package/dist/primitives/chip.d.ts +20 -2
- package/dist/primitives/chip.js +39 -17
- package/dist/primitives/kbd.d.ts +6 -0
- package/dist/primitives/kbd.js +10 -1
- package/dist/primitives/skeleton.js +1 -1
- package/dist/system/_focus-ring-field.js +29 -0
- package/dist/system/_focus-ring.js +125 -0
- package/dist/system/_paint-elevation.js +9 -0
- package/dist/system/_paint-glass.js +46 -0
- package/dist/system/_paint-glow.js +51 -0
- package/dist/system/_paint-ground-pattern.js +30 -0
- package/dist/system/_paint-rest-shade.js +32 -0
- package/dist/system/_paint-rim.js +59 -0
- package/dist/system/_paint-stroke-sunken.js +19 -0
- package/dist/system/_paint-stroke-surface-1.js +19 -0
- package/dist/system/_paint-stroke-surface-2.js +40 -0
- package/dist/system/_paint-texture.js +56 -0
- package/dist/system/_style-app-bar.js +65 -0
- package/dist/system/_style-band.js +57 -0
- package/dist/system/_style-body-leading.js +21 -0
- package/dist/system/_style-body-size.js +30 -0
- package/dist/system/_style-body-weight.js +24 -0
- package/dist/system/_style-body.js +27 -0
- package/dist/system/_style-caption.js +19 -0
- package/dist/system/_style-card-pad.js +43 -0
- package/dist/system/_style-check.js +33 -0
- package/dist/system/_style-chip.js +103 -0
- package/dist/system/_style-code.js +13 -0
- package/dist/system/_style-collapse.js +14 -0
- package/dist/system/_style-control-face.js +29 -0
- package/dist/system/_style-control-label.js +22 -0
- package/dist/system/_style-control-step.js +22 -0
- package/dist/system/_style-control.js +76 -0
- package/dist/system/_style-data-face.js +28 -0
- package/dist/system/_style-description.js +23 -0
- package/dist/system/_style-eyebrow.js +43 -0
- package/dist/system/_style-footer-rule.js +47 -0
- package/dist/system/_style-gutter.js +17 -0
- package/dist/system/_style-help-ink.js +14 -0
- package/dist/system/_style-help.js +29 -0
- package/dist/system/_style-input-face.js +34 -0
- package/dist/system/_style-kbd.js +46 -0
- package/dist/system/_style-label-case.js +36 -0
- package/dist/system/_style-label-face.js +32 -0
- package/dist/system/_style-label-ink.js +29 -0
- package/dist/system/_style-label-leading.js +14 -0
- package/dist/system/_style-label-size.js +36 -0
- package/dist/system/_style-label-tracking.js +45 -0
- package/dist/system/_style-label-weight.js +40 -0
- package/dist/system/_style-lede.js +49 -0
- package/dist/system/_style-link.js +46 -0
- package/dist/system/_style-menu.js +30 -0
- package/dist/system/_style-nav-item.js +41 -0
- package/dist/system/_style-nav-voice.js +43 -0
- package/dist/system/_style-option.js +42 -0
- package/dist/system/_style-overlay-title.js +35 -0
- package/dist/system/_style-page-title.js +48 -0
- package/dist/system/_style-popover-pad.js +13 -0
- package/dist/system/_style-quiet-ink.js +13 -0
- package/dist/system/_style-row-pad.js +13 -0
- package/dist/system/_style-seam.js +43 -0
- package/dist/system/_style-section-rule.js +26 -0
- package/dist/system/_style-segment.js +30 -0
- package/dist/system/_style-segmented-control.js +86 -0
- package/dist/system/_style-selected.js +36 -0
- package/dist/system/_style-stage-marks.js +26 -0
- package/dist/system/_style-tab.js +71 -0
- package/dist/system/_style-textarea.js +21 -0
- package/dist/system/_style-title.js +37 -0
- package/dist/system/_style-tooltip.js +17 -0
- package/dist/system/density.d.ts +15 -5
- package/dist/system/density.js +188 -25
- package/dist/system/index.d.ts +2 -2
- package/dist/system/index.js +2 -2
- package/dist/system/overrides.d.ts +1 -0
- package/dist/system/overrides.js +151 -3
- package/dist/system/portal.d.ts +3 -2
- package/dist/system/portal.js +22 -10
- package/dist/system/prepaint.d.ts +21 -5
- package/dist/system/prepaint.js +3 -1
- package/dist/system/published.d.ts +1 -0
- package/dist/system/published.js +131 -0
- package/dist/system/theme-provider.d.ts +168 -60
- package/dist/system/theme-provider.js +375 -79
- package/dist/system/theme-registry.d.ts +2 -1
- package/dist/system/theme-registry.js +27 -10
- package/dist/system/use-density.js +4 -3
- package/dist/system/use-theme.d.ts +5 -2
- package/dist/system/use-theme.js +7 -4
- package/dist/system/vocabulary.js +2 -2
- package/dist/theming/create-theme.js +12 -6
- package/dist/theming/serialize.d.ts +34 -2
- package/dist/theming/serialize.js +86 -4
- package/manifest/components/accordion.json +7 -1
- package/manifest/components/agent-pile.json +3 -0
- package/manifest/components/alert-dialog.json +38 -1
- package/manifest/components/app-bar.json +23 -2
- package/manifest/components/app-shell.json +5 -0
- package/manifest/components/ask-box.json +3 -1
- package/manifest/components/autocomplete.json +49 -1
- package/manifest/components/band.json +14 -3
- package/manifest/components/bento.json +12 -1
- package/manifest/components/breadcrumb.json +8 -1
- package/manifest/components/button.json +31 -3
- package/manifest/components/calendar.json +7 -0
- package/manifest/components/card.json +28 -1
- package/manifest/components/carousel.json +4 -1
- package/manifest/components/channel-matrix.json +40 -1
- package/manifest/components/chart-tooltip-content.json +38 -1
- package/manifest/components/chat-empty-state.json +3 -1
- package/manifest/components/checkbox-group.json +14 -0
- package/manifest/components/checkbox.json +14 -0
- package/manifest/components/chip.json +16 -1
- package/manifest/components/clamp.json +3 -1
- package/manifest/components/code-block.json +10 -1
- package/manifest/components/collapsible.json +13 -2
- package/manifest/components/color-area.json +4 -2
- package/manifest/components/color-field.json +14 -0
- package/manifest/components/color-picker.json +14 -0
- package/manifest/components/color-slider.json +3 -1
- package/manifest/components/colors-section.json +9 -1
- package/manifest/components/combobox.json +49 -1
- package/manifest/components/command-palette.json +37 -1
- package/manifest/components/composer-actions.json +3 -0
- package/manifest/components/composer-attach-button.json +3 -0
- package/manifest/components/composer-attachment-chip.json +3 -0
- package/manifest/components/composer-attachments.json +3 -0
- package/manifest/components/composer-bar.json +3 -0
- package/manifest/components/composer-command-item.json +3 -0
- package/manifest/components/composer-context.json +3 -0
- package/manifest/components/composer-input.json +3 -0
- package/manifest/components/composer-menu-item.json +3 -0
- package/manifest/components/composer-menu.json +3 -0
- package/manifest/components/composer-model-item.json +3 -0
- package/manifest/components/composer-model-trigger.json +3 -0
- package/manifest/components/composer-person-item.json +3 -0
- package/manifest/components/composer-send.json +3 -0
- package/manifest/components/composer-toolbar.json +3 -0
- package/manifest/components/composer-voice-button.json +3 -0
- package/manifest/components/composer-voice.json +3 -0
- package/manifest/components/composer.json +14 -0
- package/manifest/components/confidence-marker.json +3 -1
- package/manifest/components/container.json +2 -1
- package/manifest/components/context-menu.json +38 -1
- package/manifest/components/conversation-search.json +3 -1
- package/manifest/components/cue-mark.json +2 -2
- package/manifest/components/cue-portal-frame.json +1 -1
- package/manifest/components/data-row.json +3 -1
- package/manifest/components/data-tree.json +3 -1
- package/manifest/components/date-field.json +14 -0
- package/manifest/components/date-picker.json +14 -0
- package/manifest/components/date-range-picker.json +14 -0
- package/manifest/components/delegation-card.json +3 -1
- package/manifest/components/density.json +21 -7
- package/manifest/components/description-list.json +6 -1
- package/manifest/components/dialog.json +39 -1
- package/manifest/components/disclosure.json +13 -2
- package/manifest/components/dmx-bar.json +37 -1
- package/manifest/components/dmx-strip.json +37 -1
- package/manifest/components/drawer.json +38 -1
- package/manifest/components/dropdown-menu.json +38 -1
- package/manifest/components/edit-message.json +3 -1
- package/manifest/components/elements-command-palette.json +3 -1
- package/manifest/components/elements-composer.json +3 -0
- package/manifest/components/empty-state-composer.json +3 -1
- package/manifest/components/empty-state-greeting.json +3 -1
- package/manifest/components/empty-state-suggestion.json +3 -1
- package/manifest/components/empty-state-suggestions.json +3 -1
- package/manifest/components/env-var-input.json +14 -1
- package/manifest/components/export-dialog.json +6 -1
- package/manifest/components/eyebrow.json +13 -2
- package/manifest/components/feedback-dialog.json +3 -0
- package/manifest/components/field-description.json +14 -0
- package/manifest/components/field-error.json +14 -0
- package/manifest/components/field-label.json +15 -1
- package/manifest/components/field.json +14 -0
- package/manifest/components/file-upload.json +3 -0
- package/manifest/components/footer.json +14 -1
- package/manifest/components/frames.json +14 -1
- package/manifest/components/hover-card.json +38 -1
- package/manifest/components/info-tip.json +3 -0
- package/manifest/components/input-group.json +14 -0
- package/manifest/components/input.json +14 -0
- package/manifest/components/item.json +3 -1
- package/manifest/components/kbd.json +10 -1
- package/manifest/components/ledger.json +9 -2
- package/manifest/components/link.json +10 -0
- package/manifest/components/log-viewer.json +10 -0
- package/manifest/components/map-answer.json +3 -1
- package/manifest/components/markdown-text.json +3 -0
- package/manifest/components/menubar.json +41 -2
- package/manifest/components/message-list.json +10 -0
- package/manifest/components/message.json +6 -1
- package/manifest/components/mobile-composer.json +3 -1
- package/manifest/components/multi-select.json +49 -1
- package/manifest/components/musical-time-input.json +14 -0
- package/manifest/components/navigation-menu.json +41 -1
- package/manifest/components/node-card.json +3 -0
- package/manifest/components/number-field.json +14 -1
- package/manifest/components/otp-field.json +13 -0
- package/manifest/components/page-shell.json +14 -0
- package/manifest/components/pagination.json +3 -0
- package/manifest/components/panel-header.json +12 -0
- package/manifest/components/panel.json +13 -1
- package/manifest/components/password-input.json +14 -1
- package/manifest/components/permission-scopes.json +3 -1
- package/manifest/components/piano-keyboard.json +3 -0
- package/manifest/components/popover.json +39 -1
- package/manifest/components/preset-section.json +9 -1
- package/manifest/components/preview.json +30 -10
- package/manifest/components/progress.json +6 -1
- package/manifest/components/prompt-library.json +3 -1
- package/manifest/components/queue-dock.json +3 -1
- package/manifest/components/radio-group.json +8 -0
- package/manifest/components/radio.json +8 -0
- package/manifest/components/rating.json +4 -1
- package/manifest/components/reasoning-panel.json +3 -1
- package/manifest/components/recommendation-card.json +1 -1
- package/manifest/components/resizable.json +4 -1
- package/manifest/components/revert-dock.json +3 -1
- package/manifest/components/row.json +5 -1
- package/manifest/components/scroll-area.json +4 -2
- package/manifest/components/scrollable-tabs-list.json +19 -0
- package/manifest/components/scrub-input.json +14 -1
- package/manifest/components/seam-cell.json +1 -0
- package/manifest/components/seam-grid.json +1 -0
- package/manifest/components/seam-list.json +5 -1
- package/manifest/components/search-input.json +14 -1
- package/manifest/components/section-header.json +15 -2
- package/manifest/components/segmented-control.json +17 -0
- package/manifest/components/select.json +28 -0
- package/manifest/components/settings-panel.json +3 -0
- package/manifest/components/shape-section.json +9 -1
- package/manifest/components/sheet.json +38 -1
- package/manifest/components/shimmer-label.json +3 -0
- package/manifest/components/sidebar.json +19 -2
- package/manifest/components/slider.json +8 -0
- package/manifest/components/sources.json +3 -1
- package/manifest/components/stat.json +9 -0
- package/manifest/components/status-bar.json +4 -0
- package/manifest/components/stepper.json +8 -0
- package/manifest/components/swap-label.json +3 -0
- package/manifest/components/switch.json +8 -0
- package/manifest/components/table-scroll-region.json +20 -2
- package/manifest/components/table.json +20 -2
- package/manifest/components/tabs.json +20 -1
- package/manifest/components/tags-input.json +49 -1
- package/manifest/components/terminal-frame.json +3 -0
- package/manifest/components/textarea.json +16 -0
- package/manifest/components/theme-configurator.json +38 -1
- package/manifest/components/theme-provider.json +37 -19
- package/manifest/components/thread-search.json +3 -1
- package/manifest/components/threshold-rail.json +3 -0
- package/manifest/components/time-field.json +14 -0
- package/manifest/components/toast.json +39 -0
- package/manifest/components/toggle-group.json +1 -19
- package/manifest/components/toggle.json +3 -5
- package/manifest/components/token-editor.json +6 -1
- package/manifest/components/tool-call-card.json +9 -2
- package/manifest/components/tool-call.json +3 -1
- package/manifest/components/tool-timeline.json +3 -1
- package/manifest/components/toolbar.json +4 -1
- package/manifest/components/tooltip.json +40 -1
- package/manifest/components/tree-visibility-toggle.json +3 -0
- package/manifest/components/tree.json +3 -0
- package/manifest/components/universe-grid.json +3 -0
- package/manifest/components/voice-conversation.json +3 -0
- package/manifest/components/work-collapse.json +3 -1
- package/manifest/manifest.json +205 -185
- package/manifest/tokens.json +260 -4
- package/package.json +6 -6
|
@@ -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,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,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,29 @@
|
|
|
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
|
+
//#endregion
|
|
29
|
+
export { HELP_INK, HELP_SIZE };
|
|
@@ -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,46 @@
|
|
|
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
|
+
//#endregion
|
|
46
|
+
export { KBD_BOX, KBD_EDGE, 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 };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//#region src/system/_style-label-size.ts
|
|
2
|
+
/**
|
|
3
|
+
* A chassis caption's size: its own historic rung by default, one shared size
|
|
4
|
+
* inside a style set that declares `--cue-style-label-size`.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.6 (R2). `FieldLabel`, a `SectionHeader`
|
|
7
|
+
* label, a table head and a group row, a `Sidebar.Section` label and a menu
|
|
8
|
+
* group label all spent `text-(length:--cue-text-label)`; the `Stat` label
|
|
9
|
+
* alone spent `text-(length:--cue-text-micro)`. The four measured Looks set
|
|
10
|
+
* their captions at one size (tender and porcelain 0.875rem, zine and kiln
|
|
11
|
+
* 0.75rem), and a size chosen per call site would not follow the Look.
|
|
12
|
+
*
|
|
13
|
+
* **Optional, so each reader keeps its own fallback** (spec §3.0, F-3): the
|
|
14
|
+
* name is emitted as `initial` on the shared `[data-style]` reset, so under no
|
|
15
|
+
* set, `console` and every set that declines it this resolves to exactly what
|
|
16
|
+
* the class it replaced resolved to, at the label itself — which is also what
|
|
17
|
+
* keeps a `<Density>` island's rung reaching it.
|
|
18
|
+
*
|
|
19
|
+
* **Put it before any `leading-*` class in the same `cn()`.** `tailwind-merge`
|
|
20
|
+
* reads a font-size utility as overriding an earlier line-height one (Tailwind's
|
|
21
|
+
* named sizes carry a line-height), so `cn("leading-none", LABEL_SIZE)` drops
|
|
22
|
+
* the `leading-none`. The class this replaced had the same rule; the order at
|
|
23
|
+
* each call site is the order it already had.
|
|
24
|
+
*
|
|
25
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives:
|
|
26
|
+
* `@repo/docgen` attributes a token to a component by the file its class
|
|
27
|
+
* string lives in, so a component that reads the label ink but not the label
|
|
28
|
+
* size (`Checkbox`, `Switch`) is not credited with this one.
|
|
29
|
+
*
|
|
30
|
+
* @internal Not part of the public API.
|
|
31
|
+
*/
|
|
32
|
+
const LABEL_SIZE = "text-[length:var(--cue-style-label-size,var(--cue-text-label))]";
|
|
33
|
+
/** @see LABEL_SIZE — for the `Stat` label, which read the micro rung before this existed. */
|
|
34
|
+
const LABEL_SIZE_MICRO = "text-[length:var(--cue-style-label-size,var(--cue-text-micro))]";
|
|
35
|
+
//#endregion
|
|
36
|
+
export { LABEL_SIZE, LABEL_SIZE_MICRO };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/system/_style-label-tracking.ts
|
|
2
|
+
/**
|
|
3
|
+
* A label's tracking: its own historic rung of the caps ladder by default, one
|
|
4
|
+
* shared tracking inside a style set that declares it.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26 (the label-voice brief). Unlike {@link LABEL_FACE} and the
|
|
7
|
+
* case reader beside it, this name is **optional**
|
|
8
|
+
* (`@cueplusplus/tokens`' `STYLE_SET_OPTIONAL`), because its readers do not
|
|
9
|
+
* share one fallback. `FieldLabel`, `Slider`, a calendar weekday and the
|
|
10
|
+
* stepper trail all read `tracking-caps-tight`; `Eyebrow` alone reads
|
|
11
|
+
* `tracking-caps-loose`; a table head, a `Stat` label, a group heading and
|
|
12
|
+
* most of the rest read plain `tracking-caps` — three different values, each
|
|
13
|
+
* already what that component renders today. A set that declines the name (as
|
|
14
|
+
* every mono set does) leaves every reader at its own historic tier, which is
|
|
15
|
+
* the no-op this axis promises; a set that declares one real value (`normal`,
|
|
16
|
+
* for `tender`, `kiln` and `porcelain`) overrides every reader to that SAME
|
|
17
|
+
* tracking at once, regardless of which tier it used to read — which is the
|
|
18
|
+
* point under a sans, sentence-case voice: there is no caps rung left to
|
|
19
|
+
* space out.
|
|
20
|
+
*
|
|
21
|
+
* Three exports, one token: each pairs `--cue-style-label-tracking` with the
|
|
22
|
+
* one ladder rung that call site read before this existed, so a component
|
|
23
|
+
* that switches to one of these keeps rendering its own historic value under
|
|
24
|
+
* every set that declines the name — which today is every set but the three
|
|
25
|
+
* sans ones.
|
|
26
|
+
*
|
|
27
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives: one
|
|
28
|
+
* reader per file, so `@repo/docgen` attributes exactly this token to exactly
|
|
29
|
+
* the components that import it, regardless of which of the three exports a
|
|
30
|
+
* given file reaches for.
|
|
31
|
+
*
|
|
32
|
+
* @internal Not part of the public API.
|
|
33
|
+
*/
|
|
34
|
+
const LABEL_TRACKING = "tracking-[var(--cue-style-label-tracking,var(--cue-tracking-caps))]";
|
|
35
|
+
/** @see LABEL_TRACKING — for a reader that read `tracking-caps-tight` before this existed. */
|
|
36
|
+
const LABEL_TRACKING_TIGHT = "tracking-[var(--cue-style-label-tracking,var(--cue-tracking-caps-tight))]";
|
|
37
|
+
/** @see LABEL_TRACKING — for a reader that read `tracking-caps-loose` before this existed. */
|
|
38
|
+
const LABEL_TRACKING_LOOSE = "tracking-[var(--cue-style-label-tracking,var(--cue-tracking-caps-loose))]";
|
|
39
|
+
/**
|
|
40
|
+
* {@link LABEL_TRACKING} for a caption that declared no tracking of its own
|
|
41
|
+
* (plan V.2, K131): the label tracking, falling back to `inherit`.
|
|
42
|
+
*/
|
|
43
|
+
const LABEL_TRACKING_INHERIT = "tracking-[var(--cue-style-label-tracking,inherit)]";
|
|
44
|
+
//#endregion
|
|
45
|
+
export { LABEL_TRACKING, LABEL_TRACKING_INHERIT, LABEL_TRACKING_LOOSE, LABEL_TRACKING_TIGHT };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//#region src/system/_style-label-weight.ts
|
|
2
|
+
/**
|
|
3
|
+
* A chassis caption's weight: what it rendered before by default, one shared
|
|
4
|
+
* weight inside a style set that declares `--cue-style-label-weight`.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.6 (R2). Porcelain's captions, table heads,
|
|
7
|
+
* group labels, tags and key caps are `font-medium` (coss.md §4); every other
|
|
8
|
+
* Look's are regular. The label readers, `Chip` and `Kbd` read it.
|
|
9
|
+
*
|
|
10
|
+
* **Two fallbacks, because the sites declared two different things.** The
|
|
11
|
+
* table head and the table group row are `<th>` cells, whose user-agent weight
|
|
12
|
+
* is bold, and they spent `font-normal` to undo it: their reader falls back to
|
|
13
|
+
* `400`, {@link LABEL_WEIGHT_NORMAL}. Every other reader declared no weight at
|
|
14
|
+
* all and inherited its parent's, so its fallback is `inherit`,
|
|
15
|
+
* {@link LABEL_WEIGHT} — the spec's `400` is what each of them computes on a
|
|
16
|
+
* page, but a literal `400` would override the weight a `Kbd` or a `Chip`
|
|
17
|
+
* inherits from a heavier parent today, which a fallback may not do (the R
|
|
18
|
+
* lanes' rule: the fallback is the site's current value).
|
|
19
|
+
*
|
|
20
|
+
* **Written `font-[number:…]`, not as a bare `[font-weight:…]` property.** The
|
|
21
|
+
* `number:` hint is what makes Tailwind emit `font-weight` (and not a family)
|
|
22
|
+
* for a `var()`, and it is also what `tailwind-merge` reads as a font weight: a
|
|
23
|
+
* caller's `className="font-medium"` replaces this class, as it replaced
|
|
24
|
+
* `font-normal`. A bare `[font-weight:…]` would not merge, and Tailwind sorts
|
|
25
|
+
* it AFTER every named `font-*` utility (measured: a named weight declares
|
|
26
|
+
* `--tw-font-weight` too, and a rule with more declarations sorts first), so
|
|
27
|
+
* the caller's weight would silently lose — against every `className` prop's
|
|
28
|
+
* "merged over the defaults" contract.
|
|
29
|
+
*
|
|
30
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives: one
|
|
31
|
+
* token per file, so `@repo/docgen` credits `Chip` and `Kbd` with the label
|
|
32
|
+
* weight and not with the label size or ink they do not read.
|
|
33
|
+
*
|
|
34
|
+
* @internal Not part of the public API.
|
|
35
|
+
*/
|
|
36
|
+
const LABEL_WEIGHT = "font-[number:var(--cue-style-label-weight,inherit)]";
|
|
37
|
+
/** @see LABEL_WEIGHT — for a `<th>` reader that spent `font-normal` before this existed. */
|
|
38
|
+
const LABEL_WEIGHT_NORMAL = "font-[number:var(--cue-style-label-weight,400)]";
|
|
39
|
+
//#endregion
|
|
40
|
+
export { LABEL_WEIGHT, LABEL_WEIGHT_NORMAL };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/system/_style-lede.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `PageShell` subtitle's size and ink: the lede under a page title.
|
|
4
|
+
*
|
|
5
|
+
* Spec 2026-09-26-looks-fidelity §3.5 and §10.4, plan R1 and its Graphite
|
|
6
|
+
* addition. The subtitle spelt `text-(length:--cue-text-ui) … text-fg-muted`.
|
|
7
|
+
* It is a lede — the one sentence under a title, which three Looks set a rung
|
|
8
|
+
* above their body copy (T2, Z43, P1) — so it reads `style-lede-size`; and a
|
|
9
|
+
* lede's ink is `style-lede-ink`, which falls back to the prose ink, which falls
|
|
10
|
+
* back to the old class. Two names for one colour because Graphite's docs body
|
|
11
|
+
* reads in `fg` while its ledes stay muted (G5 against G74), and Kiln's ledes
|
|
12
|
+
* read in `fg` with its prose (K49): so a set that names only the prose ink
|
|
13
|
+
* moves the ledes with it, and one that also names the lede ink parts them.
|
|
14
|
+
*
|
|
15
|
+
* | property | reads | fallback |
|
|
16
|
+
* |-----------|--------------------------------------------|------------------------|
|
|
17
|
+
* | font-size | `style-lede-size` | `var(--cue-text-ui)` |
|
|
18
|
+
* | color | `style-lede-ink`, then `style-prose-ink` | `var(--cue-fg-muted)` |
|
|
19
|
+
*
|
|
20
|
+
* `style-lede-ink` enters the contract with Graphite's round (plan L5.1); until
|
|
21
|
+
* it does, nothing declares it and the chain reads the prose ink, and nothing
|
|
22
|
+
* declares that either — so under every shipped set the subtitle computes
|
|
23
|
+
* `fg-muted`, as it did. The docs site's ledes size from `--docs-text-body`
|
|
24
|
+
* instead and are the docs site's own readers (spec §5.2), not this constant.
|
|
25
|
+
*
|
|
26
|
+
* Two constants, not one, because the subtitle's `leading-*` sits between them:
|
|
27
|
+
* `tailwind-merge` drops a `leading-*` that precedes a font size in one list.
|
|
28
|
+
*
|
|
29
|
+
* @internal Not part of the public API.
|
|
30
|
+
*/
|
|
31
|
+
const LEDE_SIZE = "text-[length:var(--cue-style-lede-size,var(--cue-text-ui))]";
|
|
32
|
+
/** @see LEDE_SIZE — the lede's ink, through the prose ink to `fg-muted`. */
|
|
33
|
+
const LEDE_INK = "text-[color:var(--cue-style-lede-ink,var(--cue-style-prose-ink,var(--cue-fg-muted)))]";
|
|
34
|
+
/**
|
|
35
|
+
* The lede's leading (plan V.2, T110, Z95, Z96, P1): `style-lede-leading`,
|
|
36
|
+
* falling back to the `leading-ui` the subtitle drew. Three Looks set their
|
|
37
|
+
* ledes on a leading of their own — Tender 1.4, Porcelain 1.5 and Zine a clamp
|
|
38
|
+
* from 1.4 on a phone to 1.3333 on a desktop — none of which is their body's.
|
|
39
|
+
*/
|
|
40
|
+
const LEDE_LEADING = "leading-[var(--cue-style-lede-leading,var(--cue-leading-ui))]";
|
|
41
|
+
/**
|
|
42
|
+
* The lede's tracking (plan V.2, Z96): the prose tracking, which spec §3.5
|
|
43
|
+
* already gives "the prose readers and ledes", falling back to `inherit` — the
|
|
44
|
+
* subtitle declared none. Kiln (-0.02em) and Zine (-0.01em) declare it, so
|
|
45
|
+
* their `PageShell` subtitles take their prose's tracking with this.
|
|
46
|
+
*/
|
|
47
|
+
const LEDE_TRACKING = "tracking-[var(--cue-style-prose-tracking,inherit)]";
|
|
48
|
+
//#endregion
|
|
49
|
+
export { LEDE_INK, LEDE_LEADING, LEDE_SIZE, LEDE_TRACKING };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/system/_style-link.ts
|
|
2
|
+
/**
|
|
3
|
+
* `Link`'s ink, rule, offset, weight and hover ink, each a style-set name read
|
|
4
|
+
* with the class it replaced as its fallback.
|
|
5
|
+
*
|
|
6
|
+
* Fidelity spec 2026-09-26 §3.7 (plan R3). Tender inks its links in the
|
|
7
|
+
* accent, kiln its prose links in the focus colour; four Looks rule the
|
|
8
|
+
* underline in the text's own colour rather than a hairline, tender draws it
|
|
9
|
+
* 2px under rather than 4px, porcelain sets its links at 500, and kiln and
|
|
10
|
+
* zine hover to an ink other than the accent. Each is the set's to say.
|
|
11
|
+
*
|
|
12
|
+
* **Every fallback is what the site rendered before this existed**, so under
|
|
13
|
+
* no set, and under every set that declines a name, the reader is a no-op:
|
|
14
|
+
* `fg` for the ink, `border` for the rule, `4px` for the offset, the
|
|
15
|
+
* accent on hover, and `inherit` for the weight — the link set no weight, and
|
|
16
|
+
* took its parent's.
|
|
17
|
+
*
|
|
18
|
+
* `INLINE_LINK_INK` falls back through `style-link-ink`, so a set that inks
|
|
19
|
+
* every link (tender) inks the prose link too without saying so twice, and a
|
|
20
|
+
* set that inks only prose links (kiln) leaves the plain link alone.
|
|
21
|
+
*
|
|
22
|
+
* **Its own module**, for the reason `_style-control-face.ts` gives:
|
|
23
|
+
* `@repo/docgen` attributes every token a file spells to each component that
|
|
24
|
+
* imports it. Only `layout/link.tsx` imports this.
|
|
25
|
+
*
|
|
26
|
+
* @internal Not part of the public API.
|
|
27
|
+
*/
|
|
28
|
+
/** Every link's ink: `fg`, or the set's `style-link-ink`. */
|
|
29
|
+
const LINK_INK = "text-[color:var(--cue-style-link-ink,var(--cue-fg))]";
|
|
30
|
+
/** The `underline` variant's ink: the set's `style-inline-link-ink`, else {@link LINK_INK}'s chain. */
|
|
31
|
+
const INLINE_LINK_INK = "text-[color:var(--cue-style-inline-link-ink,var(--cue-style-link-ink,var(--cue-fg)))]";
|
|
32
|
+
/** The underline's colour: `border`, or the set's `style-link-rule`. */
|
|
33
|
+
const LINK_RULE = "decoration-[color:var(--cue-style-link-rule,var(--cue-border))]";
|
|
34
|
+
/** The underline's offset: 4px, or the set's `style-link-offset`. */
|
|
35
|
+
const LINK_OFFSET = "underline-offset-[var(--cue-style-link-offset,4px)]";
|
|
36
|
+
/**
|
|
37
|
+
* Every link's weight: its parent's, or the set's `style-link-weight`.
|
|
38
|
+
* `font-[number:…]` rather than an arbitrary `[font-weight:…]`, so a caller's
|
|
39
|
+
* `font-*` weight still replaces it through `twMerge` — `_style-control.ts`'s
|
|
40
|
+
* `CONTROL_WEIGHT` says why.
|
|
41
|
+
*/
|
|
42
|
+
const LINK_WEIGHT = "font-[number:var(--cue-style-link-weight,inherit)]";
|
|
43
|
+
/** Every link's hover ink: the accent, or the set's `style-hover-ink`. */
|
|
44
|
+
const HOVER_INK = "hover:text-[color:var(--cue-style-hover-ink,var(--cue-accent))]";
|
|
45
|
+
//#endregion
|
|
46
|
+
export { HOVER_INK, INLINE_LINK_INK, LINK_INK, LINK_OFFSET, LINK_RULE, LINK_WEIGHT };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/system/_style-menu.ts
|
|
2
|
+
/**
|
|
3
|
+
* A menu row's resting ink and its highlight.
|
|
4
|
+
*
|
|
5
|
+
* Spec 2026-09-26-looks-fidelity §3.7 and §3.8 (plan R4). `menuItemClasses`
|
|
6
|
+
* said `text-fg-muted` and `data-[highlighted]:bg-accent-soft`. A Look whose
|
|
7
|
+
* menu rows are full-contrast (tender, porcelain) or whose highlight is a
|
|
8
|
+
* faint neutral or none (porcelain, kiln) reads these names instead.
|
|
9
|
+
*
|
|
10
|
+
* **The fallbacks are the classes they replace**: `var(--cue-fg-muted)` —
|
|
11
|
+
* spec §3.7 gives `style-quiet-ink` that fallback for a menu row — and
|
|
12
|
+
* `var(--cue-accent-soft)`.
|
|
13
|
+
*
|
|
14
|
+
* **Its own module**, for the docgen reason `_style-nav-voice.ts` gives. It is
|
|
15
|
+
* reached through `overlays/_surface.ts`, whose every importer docgen already
|
|
16
|
+
* credits with the whole overlay recipe.
|
|
17
|
+
*
|
|
18
|
+
* @internal Not part of the public API.
|
|
19
|
+
*/
|
|
20
|
+
const MENU_ITEM_INK = "text-[color:var(--cue-style-quiet-ink,var(--cue-fg-muted))] data-[highlighted]:bg-[color:var(--cue-style-menu-highlight,var(--cue-accent-soft))]";
|
|
21
|
+
/**
|
|
22
|
+
* A menu row's corner (plan V.2, P112): `style-menu-item-radius`, falling back
|
|
23
|
+
* to the `rounded-control` corner the row drew. Porcelain rounds its menu and
|
|
24
|
+
* select rows at 0.6 of its control corner. A select's and a filterable list's
|
|
25
|
+
* rows read the same name with a `0px` fallback (`_style-option.ts`), since
|
|
26
|
+
* they drew no corner.
|
|
27
|
+
*/
|
|
28
|
+
const MENU_ITEM_RADIUS = "rounded-[var(--cue-style-menu-item-radius,calc(var(--cue-radius-control)*var(--cue-radius-scale)))]";
|
|
29
|
+
//#endregion
|
|
30
|
+
export { MENU_ITEM_INK, MENU_ITEM_RADIUS };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//#region src/system/_style-nav-item.ts
|
|
2
|
+
/**
|
|
3
|
+
* What a `Sidebar.Item` reads from the style set: its resting ink, and the
|
|
4
|
+
* ground, ink and weight of the item that is the current page.
|
|
5
|
+
*
|
|
6
|
+
* Spec 2026-09-26-looks-fidelity §3.8 and §10.4 (plan R4 and its Graphite
|
|
7
|
+
* addition). The item said `text-fg-muted` at rest and, as the current page, an
|
|
8
|
+
* `accent-soft` ground under an `accent` ink. A Look whose sidebar is a softer
|
|
9
|
+
* ink (porcelain), whose current page is inverted (kiln), tinted and medium
|
|
10
|
+
* (porcelain) or marked by ink alone (graphite) reads these names instead.
|
|
11
|
+
*
|
|
12
|
+
* **Every fallback is the class it replaced**, for the reason
|
|
13
|
+
* `_style-control-face.ts` gives: `var(--cue-fg-muted)`, `var(--cue-accent-soft)`
|
|
14
|
+
* and `var(--cue-accent)`, and `400` for the weight, which the item inherited
|
|
15
|
+
* and computed under every shipped set.
|
|
16
|
+
*
|
|
17
|
+
* **The active weight yields to a caller's own weight.** The item set no
|
|
18
|
+
* weight in any state, so `<Sidebar.Item className="font-medium">` was 500
|
|
19
|
+
* whether current or not. A `data-[active]:` weight is `(0,2,0)` and would
|
|
20
|
+
* beat that class on the current item alone, so it is written
|
|
21
|
+
* `[:where(&[data-active])]:` — the same state at zero specificity — and a
|
|
22
|
+
* caller's weight class wins in both states again. The active ground and ink
|
|
23
|
+
* replaced `data-[active]:` classes and keep their standing, as those did.
|
|
24
|
+
*
|
|
25
|
+
* **The active ground reads two names, the sidebar's own first.**
|
|
26
|
+
* `style-selected-ground` is also the selected table row's ground
|
|
27
|
+
* (`_style-selected.ts`), where `transparent` would leave a selection with no
|
|
28
|
+
* mark at all; graphite's sidebar has no fill (G57). So the item reads
|
|
29
|
+
* `style-nav-active-ground` and falls back through `style-selected-ground`,
|
|
30
|
+
* which keeps kiln's and porcelain's values here, and the table reads
|
|
31
|
+
* `style-selected-ground` alone (spec §10.4). `style-nav-active-ground`
|
|
32
|
+
* entered the contract in the fidelity plan's L5.1, and `graphite` declares it
|
|
33
|
+
* `transparent` (G57).
|
|
34
|
+
*
|
|
35
|
+
* **Its own module**, for the docgen reason `_style-nav-voice.ts` gives.
|
|
36
|
+
*
|
|
37
|
+
* @internal Not part of the public API.
|
|
38
|
+
*/
|
|
39
|
+
const NAV_ITEM = "text-[color:var(--cue-style-nav-ink,var(--cue-fg-muted))] data-[active]:bg-[color:var(--cue-style-nav-active-ground,var(--cue-style-selected-ground,var(--cue-accent-soft)))] data-[active]:text-[color:var(--cue-style-selected-ink,var(--cue-accent))] [:where(&[data-active])]:font-[number:var(--cue-style-selected-weight,400)]";
|
|
40
|
+
//#endregion
|
|
41
|
+
export { NAV_ITEM };
|