@mkbabb/glass-ui 2.1.0 → 3.1.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/dist/{CardFooter-Yi0xtLLd.js → CardFooter-CSGcJkqa.js} +1 -1
- package/dist/{CommandShortcut-_INFUMu6.js → CommandShortcut-DWT19a2Y.js} +3 -3
- package/dist/{ContextMenuSubContent-DCkweFW9.js → ContextMenuSubContent-gAFxJ-qi.js} +1 -1
- package/dist/{DataTable-Ce00dbHD.js → DataTable-R8-Zidms.js} +3 -3
- package/dist/{DialogContent-CmCijgX9.js → DialogContent-2fALDSvc.js} +3 -3
- package/dist/{DialogFooter-DRdaCok0.js → DialogFooter-ClrNEOVU.js} +2 -2
- package/dist/{DiscoGlyph-wRA02zAJ.js → DiscoGlyph-C3JfMnRV.js} +1 -1
- package/dist/{GlyphFace-BnPMUZ16.js → GlyphFace-BRS8vUb7.js} +1 -1
- package/dist/HoverPopover-CWFCfLx3.js +96 -0
- package/dist/{IconTooltip-ge_mBSWR.js → IconTooltip-BkaA7tZ2.js} +1 -1
- package/dist/{Input-CbakTe3B.js → Input-DDpFn568.js} +3 -5
- package/dist/Label-DJty89bp.js +36 -0
- package/dist/{MetricBadge-DRBB18Xq.js → MetricBadge-DmAihkXd.js} +1 -1
- package/dist/{Notification-DrI1DT2v.js → Notification-OqIpADml.js} +2 -2
- package/dist/NumberFieldContent-DTH9gb_N.js +141 -0
- package/dist/{PopoverContent-BCH4eYs8.js → PopoverContent-EiklFrna.js} +1 -1
- package/dist/{Progress-CCH-2UBR.js → Progress-FApA9fm_.js} +1 -1
- package/dist/{ScrollingText-7P8skg5W.js → ScrollingText-BFd0i2zJ.js} +2 -2
- package/dist/{SelectScrollDownButton-yu8EYUnu.js → SelectScrollDownButton-Dth8-wXQ.js} +2 -2
- package/dist/{Toaster-DY8_jtHv.js → Toaster-Bjlunvq4.js} +69 -58
- package/dist/UnderlineTabs-DAWMLmJG.js +37 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +103 -90
- package/dist/badge.js +1 -1
- package/dist/{button-BlOW34DT.js → button-C0aHmBbt.js} +2 -0
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +1 -1
- package/dist/collapsible.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/composables/runtime.d.ts +24 -1
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +57 -0
- package/dist/components/custom/dialog-native/index.d.ts +1 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +20 -10
- package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +26 -4
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +16 -2
- package/dist/components/custom/labeled-field/LabeledInput.vue.d.ts +17 -1
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +2 -0
- package/dist/components/custom/toggle-chip/ToggleChip.vue.d.ts +6 -4
- package/dist/components/ui/input/Input.vue.d.ts +10 -7
- package/dist/components/ui/label/Label.vue.d.ts +8 -0
- package/dist/components/ui/textarea/Textarea.vue.d.ts +45 -8
- package/dist/components/ui/toast/Toaster.vue.d.ts +7 -1
- package/dist/components/ui/toast/index.d.ts +1 -0
- package/dist/composables/dark/index.d.ts +1 -0
- package/dist/composables/dom/index.d.ts +2 -0
- package/dist/composables/dom/useIdleReady.d.ts +63 -0
- package/dist/composables/dom/useUserInvalidAria.d.ts +32 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/motion/core/index.d.ts +8 -0
- package/dist/composables/motion/index.d.ts +0 -7
- package/dist/composables/motion/supportsCssTimeline.d.ts +8 -0
- package/dist/composables/motion/useRAFLoop.d.ts +7 -0
- package/dist/composables/motion/useScrollProgress.d.ts +6 -2
- package/dist/composables/motion/useStaggerReveal.d.ts +6 -0
- package/dist/composables/motion/useViewTransition.d.ts +31 -0
- package/dist/composables/motion/useYieldToMain.d.ts +29 -0
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constants-DwBwnG8N.js +13 -0
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +2 -2
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +13 -2
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +195 -176
- package/dist/dom.js +5 -4
- package/dist/{dropdown-menu-2K-SGkZU.js → dropdown-menu-BvRUamNs.js} +2 -2
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +3 -3
- package/dist/forms.d.ts +1 -0
- package/dist/forms.js +47 -42
- package/dist/glass-carousel.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +156 -275
- package/dist/glyph-face.js +2 -2
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +96 -57
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.d.ts +1 -0
- package/dist/motion-core.js +229 -0
- package/dist/motion.js +26 -228
- package/dist/notification.js +1 -1
- package/dist/number-field.d.ts +1 -0
- package/dist/number-field.js +2 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +3 -3
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +6 -6
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CLVkb3AO.js → sheet-CukNDezz.js} +53 -53
- package/dist/sheet.js +1 -1
- package/dist/{slider-BQaLYFLh.js → slider-DJvHkTRe.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/styles/animations.css +77 -0
- package/dist/styles/cards.css +6 -2
- package/dist/styles/dock.css +109 -109
- package/dist/styles/drawer.css +2 -2
- package/dist/styles/glass.css +89 -6
- package/dist/styles/index.css +10 -1
- package/dist/styles/instrument-chassis.css +28 -1
- package/dist/styles/scroll-driven.css +72 -0
- package/dist/styles/theme.css +6 -0
- package/dist/styles/tokens.css +345 -289
- package/dist/styles/typography.css +65 -131
- package/dist/styles/utilities.css +199 -81
- package/dist/styles/view-transition.css +62 -0
- package/dist/switch.d.ts +1 -0
- package/dist/switch.js +2 -0
- package/dist/tabs.js +40 -36
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-DcvTR9B4.js → useAnimatedNumber-DKQYVB7s.js} +9 -20
- package/dist/{useConfiguratorState-BlaevW0S.js → useConfiguratorState-BR5vUDL8.js} +5 -5
- package/dist/{useBreakpoint-BHlX-MhR.js → useIdleReady-Cmkhm03v.js} +30 -2
- package/dist/{useTouchGate-BhhEMlwJ.js → useTouchGate-D9Zvrzyc.js} +1 -1
- package/dist/useUserInvalidAria-DVu1eTXG.js +29 -0
- package/dist/useViewTransition-DYIK6Gzb.js +16 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/moveBefore.d.ts +15 -0
- package/package.json +27 -6
- package/src/styles/animations.css +77 -0
- package/src/styles/cards.css +6 -2
- package/src/styles/dock.css +109 -109
- package/src/styles/drawer.css +2 -2
- package/src/styles/glass.css +89 -6
- package/src/styles/index.css +10 -1
- package/src/styles/instrument-chassis.css +28 -1
- package/src/styles/scroll-driven.css +72 -0
- package/src/styles/theme.css +6 -0
- package/src/styles/tokens.css +345 -289
- package/src/styles/typography.css +65 -131
- package/src/styles/utilities.css +199 -81
- package/src/styles/view-transition.css +62 -0
- package/dist/HoverPopover-Btv4RQfv.js +0 -80
- package/dist/Label-C8QMJSsf.js +0 -32
- package/dist/UnderlineTabs-BtrUcXn-.js +0 -64
- package/dist/composables/motion/useSpringOrchestrator.d.ts +0 -15
- /package/dist/{CollapsibleContent-DHRuXE3P.js → CollapsibleContent-CVMOcYlV.js} +0 -0
- /package/dist/{ContextMenuContent-CvXfU5qz.js → ContextMenuContent-otjFIu8v.js} +0 -0
- /package/dist/{HoverCardContent-4nN5-5bz.js → HoverCardContent-DaGrgJBO.js} +0 -0
- /package/dist/{InstrumentChassis-DOaVYyWq.js → InstrumentChassis-CnHTMxds.js} +0 -0
- /package/dist/{InstrumentRail-jHDqXj70.js → InstrumentRail-C6dEbi8E.js} +0 -0
- /package/dist/{ModalOverlay-DKLVY-cj.js → ModalOverlay-iWiAgbYH.js} +0 -0
- /package/dist/{PaperBackdrop-Bc2drCqJ.js → PaperBackdrop-CeZ-w0R0.js} +0 -0
- /package/dist/{SelectGroup-O69GTQ77.js → SelectGroup-DdR4tdDY.js} +0 -0
- /package/dist/{SelectSeparator-GTHxKO0a.js → SelectSeparator-CXm_hlqA.js} +0 -0
- /package/dist/{Separator-_NCypg_C.js → Separator-D8AUMhxY.js} +0 -0
- /package/dist/{Switch-CL0uxu8F.js → Switch-Cr1t_F_U.js} +0 -0
- /package/dist/{ToggleGroupItem-BYG_8M9M.js → ToggleGroupItem-OesUouE7.js} +0 -0
- /package/dist/{TooltipProvider-C5QLSPto.js → TooltipProvider-DE78vbEP.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-n-_DRHWS.js → _plugin-vue_export-helper-Dq1MygBL.js} +0 -0
- /package/dist/{badge-BbxVKZfw.js → badge-x46my_Fo.js} +0 -0
- /package/dist/composables/{motion → dark}/installDarkModeSync.d.ts +0 -0
- /package/dist/{dockContext-BDGSrwsV.js → dockContext-D5NZCWJs.js} +0 -0
- /package/dist/{keys-DVkcUktU.js → keys-CaTQS-vx.js} +0 -0
- /package/dist/{menuItemVariants-B2nDL7zH.js → menuItemVariants-BsbGNq9C.js} +0 -0
- /package/dist/{presets-BMzCDrmR.js → presets-a-D93K1S.js} +0 -0
- /package/dist/{search-ocd8tmL9.js → search-DBAiUABx.js} +0 -0
- /package/dist/{useGlassRenderer-DMDdMH55.js → useGlassRenderer-Ds-nmrGz.js} +0 -0
- /package/dist/{useGlobalDark-PMiP5Jku.js → useGlobalDark-B0WvLJE3.js} +0 -0
- /package/dist/{useIntersectionPause-CXYfYg_C.js → useIntersectionPause-IY2CwPQb.js} +0 -0
- /package/dist/{useInterval-COlTCeVa.js → useInterval-DVgGUf_y.js} +0 -0
- /package/dist/{useKeyboardShortcuts-B1ev1YEC.js → useKeyboardShortcuts-Dpw_RUcB.js} +0 -0
- /package/dist/{useResizeObserver-F4aRR4Cj.js → useResizeObserver-Cg9npuM3.js} +0 -0
- /package/dist/{useSortable-Ck0rBJ4g.js → useSortable-Cq2Y1JLO.js} +0 -0
- /package/dist/{useSpringMount-BTRBNzXP.js → useSpringMount-Cfk1XK1R.js} +0 -0
- /package/dist/{useTimer-lp5NlH4w.js → useTimer-NAaj9zNq.js} +0 -0
- /package/dist/{x-cdWAmO-q.js → x-q7pJa83X.js} +0 -0
|
@@ -10,59 +10,27 @@
|
|
|
10
10
|
* (`.text-display-*`, `.text-body`, `.text-admin-label`) and feature
|
|
11
11
|
* utilities (`.cm-serif`, `.fira-code`, `.fourier-f`).
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* 5-way visual-fidelity test against pre-substitution General Sans
|
|
21
|
-
* baseline at 1200×766 hero size. Closest character match among the
|
|
22
|
-
* OFL candidate menu (Plus Jakarta Sans / Onest / Manrope / Inter /
|
|
23
|
-
* Geist). Carries `font-display: optional` so paint never blocks on
|
|
24
|
-
* the LCP-critical hero font.
|
|
25
|
-
*
|
|
26
|
-
* - **Fira Code** (latin + latin-ext, variable wght 300..700). The
|
|
27
|
-
* canonical glass-ui mono. OFL — full self-host permitted. Carries
|
|
28
|
-
* `font-display: swap` (post-LCP register; visual swap acceptable).
|
|
29
|
-
*
|
|
30
|
-
* Both ship with Capsize-calibrated `size-adjust` / `ascent-override` /
|
|
31
|
-
* `descent-override` metric overrides on the matching fallback faces so
|
|
32
|
-
* the swap (system → primary) is geometry-neutral; CLS contribution
|
|
33
|
-
* from the font-load is zero by construction.
|
|
34
|
-
*
|
|
35
|
-
* Consumers map `--font-brand-sans` / `--font-display` / `--font-mono`
|
|
36
|
-
* to reference these self-hosted families and get the full gestalt-2
|
|
37
|
-
* stack (self-host + optional + size-adjust + metric overrides) at the
|
|
38
|
-
* substrate layer without re-introducing third-party CDN dependencies
|
|
39
|
-
* on the LCP-critical path.
|
|
13
|
+
* Self-host font subsystem — glass-ui ships two OFL-1.1 face families as
|
|
14
|
+
* bundled woff2 assets: Plus Jakarta Sans (brand display sans, font-display:
|
|
15
|
+
* optional) + Fira Code (canonical mono, font-display: swap). Both ship with
|
|
16
|
+
* Capsize-calibrated size-adjust / ascent-override / descent-override on the
|
|
17
|
+
* matching fallback faces so the swap is geometry-neutral (zero CLS). Consumers
|
|
18
|
+
* map --font-brand-sans / --font-display / --font-mono to reference them, no
|
|
19
|
+
* third-party CDN dependency on the LCP-critical path.
|
|
40
20
|
*/
|
|
41
21
|
|
|
42
22
|
/* ═══════════════════════════════════════════════
|
|
43
23
|
OFL FACE FILES — Plus Jakarta Sans (brand display)
|
|
44
24
|
═══════════════════════════════════════════════ */
|
|
45
25
|
|
|
46
|
-
/* The payload-bearing "Plus Jakarta Sans" faces
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/* Plus Jakarta Sans — calibrated fallback face.
|
|
55
|
-
Wraps the platform's system sans-serif (San Francisco / Segoe UI /
|
|
56
|
-
Roboto / Arial) and overrides its metrics to match Plus Jakarta Sans's
|
|
57
|
-
x-width + ascent + descent. While the primary face hasn't arrived
|
|
58
|
-
(font-display: optional → renders in fallback if not in cache within
|
|
59
|
-
the 100ms block window), the fallback paints at Plus Jakarta's
|
|
60
|
-
geometry — the swap is metrically neutral, no CLS contribution.
|
|
61
|
-
|
|
62
|
-
The four values (size-adjust + ascent-override + descent-override per
|
|
63
|
-
system face) were derived programmatically via @capsizecss/core's
|
|
64
|
-
`createFontStack` against the bundled latin woff2 (AC.W6b Capsize
|
|
65
|
-
calibration; receipts at docs/tranches/AC/artefacts/W6b/). */
|
|
26
|
+
/* The payload-bearing "Plus Jakarta Sans" faces live in `fonts.css`
|
|
27
|
+
(`@mkbabb/glass-ui/styles/fonts`), split off the critical entry path so
|
|
28
|
+
`./styles` does not carry the ~99 KB-gzipped font binary. The calibrated
|
|
29
|
+
`local()` fallback face below carries NO payload, stays on the critical
|
|
30
|
+
path, and paints during the `font-display: optional` window. Its metric
|
|
31
|
+
overrides (per system face) were derived via @capsizecss/core's
|
|
32
|
+
`createFontStack` against the bundled latin woff2 — the swap is metrically
|
|
33
|
+
neutral (no CLS). */
|
|
66
34
|
@font-face {
|
|
67
35
|
font-family: "Plus Jakarta Sans Fallback";
|
|
68
36
|
src: local("System Font"), local(".SFNS-Regular"), local(".SFNSText-Regular"),
|
|
@@ -98,19 +66,12 @@
|
|
|
98
66
|
OFL FACE FILES — Fira Code (canonical mono)
|
|
99
67
|
═══════════════════════════════════════════════ */
|
|
100
68
|
|
|
101
|
-
/* The payload-bearing "Fira Code" faces
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
/* Fira Code — calibrated fallback face. Wraps the platform mono stack
|
|
108
|
-
(SF Mono / Menlo / Consolas / Courier New) with Capsize-derived
|
|
109
|
-
metric overrides referenced against Roboto Mono (the only mono entry
|
|
110
|
-
in `@capsizecss/metrics`; the platform monos cluster within ~2% of
|
|
111
|
-
Roboto Mono's metrics, so the override holds across the chain).
|
|
112
|
-
size-adjust ≈ 1.0 means Fira Code's x-width matches the system mono
|
|
113
|
-
exactly — the swap is geometrically transparent. */
|
|
69
|
+
/* The payload-bearing "Fira Code" faces live in `fonts.css`
|
|
70
|
+
(`@mkbabb/glass-ui/styles/fonts`), split off the critical entry path. The
|
|
71
|
+
calibrated `local()` fallback face below carries NO payload, stays on the
|
|
72
|
+
critical path, and covers the `font-display: swap` window. Its metric
|
|
73
|
+
overrides reference Roboto Mono (the platform monos cluster within ~2%);
|
|
74
|
+
size-adjust ≈ 1.0 makes the swap geometrically transparent. */
|
|
114
75
|
@font-face {
|
|
115
76
|
font-family: "Fira Code Fallback";
|
|
116
77
|
src: local("SF Mono"), local("SFMono-Regular"), local("Menlo"),
|
|
@@ -121,37 +82,16 @@
|
|
|
121
82
|
}
|
|
122
83
|
|
|
123
84
|
:root {
|
|
124
|
-
/* Font family tokens.
|
|
125
|
-
|
|
126
|
-
`--font-
|
|
127
|
-
here
|
|
128
|
-
(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
retiring the L.W1 `6ce14e5` fossil) removes those literals so the
|
|
135
|
-
tokens.css→theme.css bridge is the single resolution path.
|
|
136
|
-
|
|
137
|
-
Per AC.W6b (v1.5.0): the self-hosted OFL face files declared above
|
|
138
|
-
expose two new family names: `"Plus Jakarta Sans"` (brand display
|
|
139
|
-
sans — Path D substitute) + `"Fira Code"` (canonical mono). Both
|
|
140
|
-
families pair with their respective `"... Fallback"` faces (which
|
|
141
|
-
wrap the system fallback via `local()` + Capsize-calibrated
|
|
142
|
-
metric overrides — the swap is no-shift on geometry).
|
|
143
|
-
|
|
144
|
-
- `--font-brand-sans` ships its neutral default
|
|
145
|
-
(`"Helvetica Neue" → Arial Nova → Arial → system-ui → sans-serif`).
|
|
146
|
-
Consumers opting into Plus Jakarta Sans via the `brand-uniform-sans`
|
|
147
|
-
preset override this token at `:root` to:
|
|
148
|
-
`"Plus Jakarta Sans", "Plus Jakarta Sans Fallback", system-ui, sans-serif`.
|
|
149
|
-
|
|
150
|
-
- `--font-mono` references `"Fira Code"` first so the self-hosted
|
|
151
|
-
face engages by default for every glass-ui consumer; the
|
|
152
|
-
calibrated `"Fira Code Fallback"` covers the swap window, then
|
|
153
|
-
fallback `"Fira Mono"` + the generic `monospace` backstop the
|
|
154
|
-
chain for browsers that reject local() lookups. */
|
|
85
|
+
/* Font family tokens. `--font-serif` / `--font-display` / `--font-mono`
|
|
86
|
+
are NOT declared here — their source-of-truth lives in tokens.css
|
|
87
|
+
(`--font-stack-*`), bridged to Tailwind via theme.css's `@theme` block;
|
|
88
|
+
declaring `:root` literals here would shadow consumer `@theme` overrides
|
|
89
|
+
(un-layered `:root` wins over `@layer theme`). The self-hosted faces
|
|
90
|
+
above expose `"Plus Jakarta Sans"` + `"Fira Code"`, each pairing with a
|
|
91
|
+
calibrated `"... Fallback"`. `--font-brand-sans` ships a neutral default;
|
|
92
|
+
consumers opting into Plus Jakarta via the `brand-uniform-sans` preset
|
|
93
|
+
override it. `--font-mono` references `"Fira Code"` first (engages by
|
|
94
|
+
default) then the fallback chain. */
|
|
155
95
|
/* Independent brand/system sans stack; consumers override once for uniform sans. */
|
|
156
96
|
--font-brand-sans: "Helvetica Neue", "Arial Nova", Arial, system-ui, sans-serif;
|
|
157
97
|
--font-sans: var(--font-brand-sans);
|
|
@@ -217,31 +157,17 @@ body {
|
|
|
217
157
|
font-optical-sizing: auto;
|
|
218
158
|
font-variation-settings: var(--font-display-variation-settings);
|
|
219
159
|
font-weight: var(--font-display-weight);
|
|
160
|
+
/* AQ.W3 §W3.3 — balance multi-line display headlines. Text-only (no box) so
|
|
161
|
+
balance is safe; degrades to unbalanced wrapping with zero break. */
|
|
162
|
+
text-wrap: balance;
|
|
220
163
|
}
|
|
221
164
|
|
|
222
|
-
/*
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
get the canonical ceiling without re-declaring it.
|
|
229
|
-
|
|
230
|
-
Three knobs let consumers tune without forking the recipe:
|
|
231
|
-
- `--text-hero-size`: total clamp (default = canonical cap). Speedtest
|
|
232
|
-
overrides this to `clamp(3rem, 45cqi, var(--type-display-audacious))`
|
|
233
|
-
for its container-query metric column.
|
|
234
|
-
- `--text-hero-leading`: line-height; default 0.84 matches speedtest's
|
|
235
|
-
AB.W1.T3 tight-leading baseline.
|
|
236
|
-
- `--text-hero-tracking`: letter-spacing; default -0.03em (poster-type
|
|
237
|
-
register — tighter than `--type-tracking-tight`).
|
|
238
|
-
|
|
239
|
-
`font-weight: 300` (poster-type) and `font-feature-settings: ss01,
|
|
240
|
-
tnum, lnum` lock the numeric/stylistic-set baseline; consumers that
|
|
241
|
-
need different features re-declare locally. The utility is otherwise
|
|
242
|
-
substrate-only — consumer-side data-attribute registers (e.g.,
|
|
243
|
-
speedtest's `.text-hero[data-idle]` colour cascade) compose ON TOP of
|
|
244
|
-
this base. */
|
|
165
|
+
/* `.text-hero` — the poster-type hero register. Ceiling pegs to
|
|
166
|
+
`--type-display-audacious` (φ^(11/2) — peak 352px). Three knobs tune without
|
|
167
|
+
forking: `--text-hero-size` (total clamp), `--text-hero-leading` (line-height,
|
|
168
|
+
default 0.84), `--text-hero-tracking` (letter-spacing, default -0.03em).
|
|
169
|
+
`font-weight: 300` + `font-feature-settings: ss01, tnum, lnum` lock the
|
|
170
|
+
numeric/stylistic baseline; consumer data-attribute registers compose on top. */
|
|
245
171
|
@utility text-hero {
|
|
246
172
|
font-family: var(--font-display);
|
|
247
173
|
font-size: var(--text-hero-size, var(--type-display-audacious));
|
|
@@ -254,7 +180,11 @@ body {
|
|
|
254
180
|
font-variation-settings: var(--font-display-variation-settings);
|
|
255
181
|
display: inline-block;
|
|
256
182
|
max-inline-size: 100%;
|
|
183
|
+
/* AQ.W3 §W3.3 — `text-wrap: nowrap` (modern) sits AFTER `white-space:
|
|
184
|
+
nowrap` (legacy fallback) so supporting engines honor the modern form and
|
|
185
|
+
older ones fall through to `white-space`. Forgiving parse, no `@supports`. */
|
|
257
186
|
white-space: nowrap;
|
|
187
|
+
text-wrap: nowrap;
|
|
258
188
|
}
|
|
259
189
|
|
|
260
190
|
@utility text-display-hero {
|
|
@@ -265,6 +195,7 @@ body {
|
|
|
265
195
|
font-optical-sizing: auto;
|
|
266
196
|
font-variation-settings: var(--font-display-variation-settings);
|
|
267
197
|
font-weight: var(--font-display-weight);
|
|
198
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
268
199
|
}
|
|
269
200
|
|
|
270
201
|
@utility text-display-mega {
|
|
@@ -275,6 +206,7 @@ body {
|
|
|
275
206
|
font-optical-sizing: auto;
|
|
276
207
|
font-variation-settings: var(--font-display-variation-settings);
|
|
277
208
|
font-weight: var(--font-display-weight);
|
|
209
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
278
210
|
}
|
|
279
211
|
|
|
280
212
|
@utility text-display-5 {
|
|
@@ -285,6 +217,7 @@ body {
|
|
|
285
217
|
font-optical-sizing: auto;
|
|
286
218
|
font-variation-settings: var(--font-display-variation-settings);
|
|
287
219
|
font-weight: var(--font-display-weight);
|
|
220
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
288
221
|
}
|
|
289
222
|
|
|
290
223
|
@utility text-display-4 {
|
|
@@ -295,6 +228,7 @@ body {
|
|
|
295
228
|
font-optical-sizing: auto;
|
|
296
229
|
font-variation-settings: var(--font-display-variation-settings);
|
|
297
230
|
font-weight: var(--font-display-weight);
|
|
231
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
298
232
|
}
|
|
299
233
|
|
|
300
234
|
@utility text-display-3 {
|
|
@@ -305,6 +239,7 @@ body {
|
|
|
305
239
|
font-optical-sizing: auto;
|
|
306
240
|
font-variation-settings: var(--font-display-variation-settings);
|
|
307
241
|
font-weight: var(--font-display-weight);
|
|
242
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
308
243
|
}
|
|
309
244
|
|
|
310
245
|
@utility text-display-2 {
|
|
@@ -315,6 +250,7 @@ body {
|
|
|
315
250
|
font-optical-sizing: auto;
|
|
316
251
|
font-variation-settings: var(--font-display-variation-settings);
|
|
317
252
|
font-weight: var(--font-display-weight);
|
|
253
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
318
254
|
}
|
|
319
255
|
|
|
320
256
|
@utility text-display {
|
|
@@ -325,6 +261,7 @@ body {
|
|
|
325
261
|
font-optical-sizing: auto;
|
|
326
262
|
font-variation-settings: var(--font-display-variation-settings);
|
|
327
263
|
font-weight: var(--font-display-weight);
|
|
264
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
328
265
|
}
|
|
329
266
|
|
|
330
267
|
/* ═══════════════════════════════════════════════
|
|
@@ -336,6 +273,7 @@ body {
|
|
|
336
273
|
line-height: var(--type-leading-heading);
|
|
337
274
|
letter-spacing: var(--type-tracking-tight);
|
|
338
275
|
font-weight: 700;
|
|
276
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
339
277
|
}
|
|
340
278
|
|
|
341
279
|
@utility text-heading {
|
|
@@ -343,6 +281,7 @@ body {
|
|
|
343
281
|
font-size: var(--type-heading);
|
|
344
282
|
line-height: var(--type-leading-heading);
|
|
345
283
|
font-weight: 700;
|
|
284
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
346
285
|
}
|
|
347
286
|
|
|
348
287
|
@utility text-subheading {
|
|
@@ -350,25 +289,16 @@ body {
|
|
|
350
289
|
font-size: var(--type-subheading);
|
|
351
290
|
line-height: var(--type-leading-body);
|
|
352
291
|
font-weight: 600;
|
|
292
|
+
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
353
293
|
}
|
|
354
294
|
|
|
355
|
-
/*
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
literal bold inside a dock pill (the user mandate is "the start text
|
|
363
|
-
should not be bold", redressed to every bottom-dock label).
|
|
364
|
-
|
|
365
|
-
Composes the audacious-dock `--dock-label-size` knob when set
|
|
366
|
-
(utilities.css §audacious mobile carve declares `--dock-label-size:
|
|
367
|
-
14-15px` at narrow viewports); falls back to `--type-subheading` so
|
|
368
|
-
the register stays one rung above body-small at desktop. Weight 400
|
|
369
|
-
(regular) per the standing precept: Plus Jakarta Sans at the dock
|
|
370
|
-
pill size reads visually heavier than the numeric weight implies, so
|
|
371
|
-
the regular rung is the correct register for the not-bold posture. */
|
|
295
|
+
/* Canonical dock control label register — text labels INSIDE
|
|
296
|
+
`.dock-tab-button` (Start, Next, Submit, …) that want an emphatic character
|
|
297
|
+
without `.text-heading`'s `font-weight: 700` (which reads as literal bold in
|
|
298
|
+
a dock pill). Composes the `--dock-label-size` knob when set (dock.css
|
|
299
|
+
audacious mobile carve), else `--type-subheading`. Weight 400 — Plus Jakarta
|
|
300
|
+
reads heavier than its numeric weight at pill size, so regular is the
|
|
301
|
+
not-bold register. */
|
|
372
302
|
@utility dock-label {
|
|
373
303
|
font-family: var(--font-serif);
|
|
374
304
|
font-size: var(--dock-label-size, var(--type-subheading));
|
|
@@ -382,6 +312,9 @@ body {
|
|
|
382
312
|
font-size: var(--type-prose);
|
|
383
313
|
line-height: var(--type-leading-prose);
|
|
384
314
|
font-weight: 400;
|
|
315
|
+
/* AQ.W3 §W3.3 — `pretty` fixes orphans/rivers in prose. Prose registers
|
|
316
|
+
only (not every text class); degrades to default wrapping, zero break. */
|
|
317
|
+
text-wrap: pretty;
|
|
385
318
|
}
|
|
386
319
|
|
|
387
320
|
@utility text-body {
|
|
@@ -389,6 +322,7 @@ body {
|
|
|
389
322
|
font-size: var(--type-body);
|
|
390
323
|
line-height: var(--type-leading-body);
|
|
391
324
|
font-weight: 400;
|
|
325
|
+
text-wrap: pretty; /* AQ.W3 §W3.3 */
|
|
392
326
|
}
|
|
393
327
|
|
|
394
328
|
@utility text-small {
|