@mkbabb/glass-ui 3.7.0 → 3.9.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/README.md +1 -6
- package/dist/CardAction-DuArVky-.js +157 -0
- package/dist/{CommandShortcut-CY0aQTz5.js → CommandShortcut-CefCj5mt.js} +7 -7
- package/dist/{ContextMenuSubContent-BeDz7G6f.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
- package/dist/{DataTable-gtPOLZvl.js → DataTable-CUHMukiQ.js} +4 -4
- package/dist/DeckProgress-Dmk4_AKN.js +23 -0
- package/dist/{DialogContent-DG1YMR-P.js → DialogContent-BRkT1cjP.js} +3 -3
- package/dist/{DialogFooter-BCIaDP15.js → DialogFooter-Gprw8H_A.js} +1 -1
- package/dist/{HoverPopover-DXpOEw1P.js → HoverPopover-2LOIW34a.js} +1 -1
- package/dist/{IconTooltip-Cu86JR4e.js → IconTooltip-yefK7cJc.js} +1 -1
- package/dist/{MetricBadge-D-bRaQUD.js → MetricBadge-lTc002u2.js} +1 -1
- package/dist/{Notification-B5WHP3_1.js → Notification-BxK8LZMw.js} +1 -1
- package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
- package/dist/{PopoverContent-F1bWnYoh.js → PopoverContent-BId6ggf_.js} +1 -1
- package/dist/{Progress-c4vo4ALi.js → Progress-iEuD9pxG.js} +4 -4
- package/dist/{ScrollingText-BEp377U5.js → ScrollingText-BPP84wKo.js} +2 -2
- package/dist/{SelectScrollDownButton-DAo5NmY_.js → SelectScrollDownButton-T32cVFeM.js} +4 -4
- package/dist/{SelectSeparator-COFMJGng.js → SelectSeparator-C4Ql0gzV.js} +1 -1
- package/dist/{TabsList-COqIdW7i.js → TabsList-B8CVOQPC.js} +2 -2
- package/dist/{Toaster-BMaeziJJ.js → Toaster-1rYWrmAm.js} +1 -1
- package/dist/{ToggleGroupItem-C-AIkBUw.js → ToggleGroupItem-Cev4pOVK.js} +5 -5
- package/dist/animated-digit.js +1 -1
- package/dist/api/index.d.ts +5 -3
- package/dist/aurora.js +339 -408
- package/dist/{badge-DHQrc_GQ.js → badge-BvwvT50i.js} +4 -4
- package/dist/badge.js +1 -1
- package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
- package/dist/button.js +1 -1
- package/dist/canvas.d.ts +1 -0
- package/dist/canvas.js +3 -0
- package/dist/card.js +1 -1
- package/dist/carousel.js +106 -105
- package/dist/collapsible.js +1 -1
- package/dist/{color-DjJCAQ6f.js → color-8jBjWiJ6.js} +22 -14
- package/dist/color.js +2 -2
- package/dist/command.js +1 -1
- package/dist/compile-DAjIoEy2.js +158 -0
- package/dist/components/custom/aurora/composables/atoms.d.ts +90 -25
- package/dist/components/custom/aurora/composables/color.d.ts +0 -12
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +34 -23
- package/dist/components/custom/aurora/constants/presets.d.ts +10 -7
- package/dist/components/custom/aurora/constants/renderMode.d.ts +22 -0
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +3 -3
- package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
- package/dist/components/custom/constellation/Constellation.vue.d.ts +40 -5
- package/dist/components/custom/constellation/constellationField.d.ts +110 -5
- package/dist/components/custom/constellation/index.d.ts +2 -2
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
- package/dist/components/custom/dock/GlassDock.vue.d.ts +57 -67
- package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +57 -0
- package/dist/components/custom/dock/composables/index.d.ts +3 -0
- package/dist/components/custom/dock/composables/useDockHold.d.ts +61 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -59
- package/dist/components/custom/dock/index.d.ts +4 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -0
- package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +23 -5
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +2 -0
- package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +2 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +20 -5
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -2
- package/dist/components/custom/goo-blob/types.d.ts +8 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
- package/dist/components/custom/tabs/index.d.ts +2 -5
- package/dist/components/ui/button/index.d.ts +1 -1
- package/dist/components/ui/card/Card.vue.d.ts +28 -10
- package/dist/components/ui/card/index.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -4
- package/dist/components/ui/slider/Slider.vue.d.ts +3 -1
- package/dist/components/ui/slider/index.d.ts +14 -7
- package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
- package/dist/composables/color/index.d.ts +19 -0
- package/dist/composables/context/createContext.d.ts +1 -1
- package/dist/composables/dom/index.d.ts +1 -1
- package/dist/composables/dom/useResolveTokenColor.d.ts +27 -0
- package/dist/composables/glass/canvas2d/index.d.ts +2 -1
- package/dist/composables/glass/canvas2d/resolveCanvasColor.d.ts +20 -0
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +15 -1
- package/dist/composables/glass/index.d.ts +3 -1
- package/dist/composables/glass/useSpecularTracking.d.ts +33 -0
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +1 -1
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +4 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +1 -1
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +143 -74
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck-progress.d.ts +1 -0
- package/dist/deck-progress.js +2 -0
- package/dist/dialog.js +2 -2
- package/dist/dock.js +468 -354
- package/dist/{dockContext-DLgrVWsU.js → dockContext-BKeIMmNk.js} +1 -1
- package/dist/dom.js +6 -6
- package/dist/{dropdown-menu-BWpwutt0.js → dropdown-menu-D77jX6Df.js} +4 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/fonts/README.md +26 -18
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +35 -35
- package/dist/glass-panel.js +7 -7
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +154 -169
- package/dist/goo-blob.js +361 -274
- 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 -2
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/{menuItemVariants-B4eFR5Ix.js → menuItemVariants-CCoBNkU5.js} +1 -1
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +65 -65
- package/dist/motion.js +1 -1
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +2 -2
- package/dist/reactive.js +2 -2
- package/dist/resolveCanvasColor-BBiYfp8g.js +11 -0
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +9 -9
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-Cv1uO-Gq.js → sheet-VZEtNFvO.js} +2 -2
- package/dist/sheet.js +1 -1
- package/dist/slider-DC2mwuoe.js +142 -0
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/status-dot.js +17 -16
- package/dist/styles/animations.css +6 -2
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/density.css +230 -0
- package/dist/styles/dock/layer-group.css +263 -0
- package/dist/styles/dock/layers.css +355 -0
- package/dist/styles/dock/morph.css +244 -0
- package/dist/styles/dock/overflow.css +201 -0
- package/dist/styles/dock/shell.css +457 -0
- package/dist/styles/dock-controls.css +187 -50
- package/dist/styles/dock.css +65 -1181
- package/dist/styles/fonts.css +0 -25
- package/dist/styles/glass.css +482 -102
- package/dist/styles/index.css +12 -11
- package/dist/styles/theme.css +60 -2
- package/dist/styles/tokens.css +625 -72
- package/dist/styles/typography.css +52 -69
- package/dist/styles/utilities.css +91 -40
- package/dist/styles/view-transition.css +12 -40
- package/dist/switch.js +1 -1
- package/dist/tabs.js +183 -152
- package/dist/timeline.js +3 -3
- 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/{useCanvas2D-C31yfUGY.js → useCanvas2D-ClrQuZtp.js} +2 -1
- package/dist/{useConfiguratorState-B24TcgIn.js → useConfiguratorState-DxAqksK6.js} +24 -13
- package/dist/useResolveTokenColor-r9pnNjqK.js +24 -0
- package/dist/useSpecularTracking-BVRZsRHA.js +26 -0
- package/dist/{useTextHighlight-aMPdEpkq.js → useTextHighlight-DON84L8w.js} +1 -1
- package/dist/{useTouchGate-YQRwyUGU.js → useTouchGate-WFyJYsth.js} +1 -1
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +1 -1
- package/package.json +67 -36
- package/src/fonts/README.md +26 -18
- package/src/styles/animations.css +6 -2
- package/src/styles/dock/density.css +230 -0
- package/src/styles/dock/layer-group.css +263 -0
- package/src/styles/dock/layers.css +355 -0
- package/src/styles/dock/morph.css +244 -0
- package/src/styles/dock/overflow.css +201 -0
- package/src/styles/dock/shell.css +457 -0
- package/src/styles/dock-controls.css +187 -50
- package/src/styles/dock.css +65 -1181
- package/src/styles/fonts.css +0 -25
- package/src/styles/glass.css +482 -102
- package/src/styles/index.css +12 -11
- package/src/styles/theme.css +60 -2
- package/src/styles/tokens.css +625 -72
- package/src/styles/typography.css +52 -69
- package/src/styles/utilities.css +91 -40
- package/src/styles/view-transition.css +12 -40
- package/dist/CardAction-D8nSE62a.js +0 -163
- package/dist/DiscoGlyph-ZoBYpoxI.js +0 -132
- package/dist/GlyphFace-Ce_oe3tM.js +0 -51
- package/dist/UnderlineTabs-D_c1iYo-.js +0 -39
- package/dist/compile-iM4IUB66.js +0 -158
- package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
- package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
- package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
- package/dist/components/custom/disco-glyph/index.d.ts +0 -1
- package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
- package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
- package/dist/components/custom/glass-carousel/index.d.ts +0 -4
- package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
- package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
- package/dist/components/custom/glyph-face/index.d.ts +0 -2
- package/dist/components/custom/glyph-face/keys.d.ts +0 -9
- package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
- package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
- package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
- package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
- package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
- package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
- package/dist/disco-glyph.d.ts +0 -1
- package/dist/disco-glyph.js +0 -2
- package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/dist/glass-carousel.d.ts +0 -1
- package/dist/glass-carousel.js +0 -214
- package/dist/glyph-face.d.ts +0 -1
- package/dist/glyph-face.js +0 -3
- package/dist/keys-Dyf_uTs5.js +0 -9
- package/dist/responsive-tabs.d.ts +0 -1
- package/dist/responsive-tabs.js +0 -95
- package/dist/slider-BA9wIs5e.js +0 -130
- package/dist/styles/disco-glyph.css +0 -26
- package/dist/styles/glyph-face.css +0 -92
- package/dist/useViewTransition-DaN5Zrox.js +0 -21
- package/dist/vReveal-BE2TsPoR.js +0 -24
- package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/src/styles/disco-glyph.css +0 -26
- package/src/styles/glyph-face.css +0 -92
- /package/dist/{CollapsibleContent-D7UNsXQr.js → CollapsibleContent-CP9qF1v4.js} +0 -0
- /package/dist/{ContextMenuContent-DGKZX1Du.js → ContextMenuContent-DDa0v27s.js} +0 -0
- /package/dist/{HoverCardContent-Bn0UBMY9.js → HoverCardContent-B6CcQ8He.js} +0 -0
- /package/dist/{InstrumentChassis-BLJBl1BW.js → InstrumentChassis-C2f6cBaQ.js} +0 -0
- /package/dist/{InstrumentRail-BElFwKyt.js → InstrumentRail-CUJ05YVG.js} +0 -0
- /package/dist/{Label-DBc7bKzZ.js → Label-zRfbQdCn.js} +0 -0
- /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-B1GkAjNb.js} +0 -0
- /package/dist/{PaperBackdrop-DCGoGatv.js → PaperBackdrop-CqwjnfLv.js} +0 -0
- /package/dist/{SelectGroup-BcaFjvP4.js → SelectGroup-BFiod7X2.js} +0 -0
- /package/dist/{Separator-DZyqsCum.js → Separator-D7sD7RKj.js} +0 -0
- /package/dist/{Switch-2rsAtDfA.js → Switch-LDKLmmgx.js} +0 -0
- /package/dist/{TooltipProvider-CD2IXfRv.js → TooltipProvider-CmZzCuaG.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-gLzyemvl.js → _plugin-vue_export-helper-ok8pgSl5.js} +0 -0
- /package/dist/composables/{dom → motion}/useTextHighlight.d.ts +0 -0
- /package/dist/{createContext-CvNyBk4o.js → createContext-B44Sah_H.js} +0 -0
- /package/dist/{useGlassRenderer-HebgSEgN.js → useGlassRenderer-5I0YkI4t.js} +0 -0
- /package/dist/{useInterval-D3USn0yc.js → useInterval-Dsmqwi03.js} +0 -0
- /package/dist/{useResizeObserver-CSyxGxIX.js → useResizeObserver-CWCbk5Px.js} +0 -0
- /package/dist/{useSpringMount-LRZqJTaF.js → useSpringMount-BJSHcLl3.js} +0 -0
- /package/dist/{useTimer-DEJonOZa.js → useTimer-3xqf_54b.js} +0 -0
- /package/dist/{useUserInvalidAria-CQKjEfwP.js → useUserInvalidAria-DoJKMZ3s.js} +0 -0
- /package/dist/{useViewportReady-K96m-Mdv.js → useViewportReady-RIr5Wgkh.js} +0 -0
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* typography.css —
|
|
3
|
-
* (
|
|
2
|
+
* typography.css — Plus Jakarta Sans (text + display) + Fira Code (mono)
|
|
3
|
+
* (both OFL faces self-hosted via fonts.css)
|
|
4
4
|
*
|
|
5
|
-
* Golden-ratio scale (√φ ≈ 1.272).
|
|
6
|
-
* body, headings, prose, and math — and
|
|
7
|
-
*
|
|
5
|
+
* Golden-ratio scale (√φ ≈ 1.272). ONE brand register: Plus Jakarta Sans
|
|
6
|
+
* carries the text register — body, headings, prose, display, and math — and
|
|
7
|
+
* Fira Code carries mono. The library DEFAULT is the register every live
|
|
8
|
+
* surface paints (the demo + speedtest render Plus Jakarta everywhere). There
|
|
9
|
+
* is no display-serif voice and no preset opt-out: the default IS the register.
|
|
8
10
|
*
|
|
9
11
|
* Semantic type classes expose both Tailwind-friendly utility names
|
|
10
12
|
* (`.text-display-*`, `.text-body`, `.text-admin-label`) and feature
|
|
11
13
|
* utilities (`.cm-serif`, `.fira-code`, `.fourier-f`).
|
|
12
14
|
*
|
|
13
15
|
* Self-host font subsystem — glass-ui ships two OFL-1.1 face families as
|
|
14
|
-
* bundled woff2 assets: Plus Jakarta Sans (brand display
|
|
16
|
+
* bundled woff2 assets: Plus Jakarta Sans (brand text + display, font-display:
|
|
15
17
|
* optional) + Fira Code (canonical mono, font-display: swap). Both ship with
|
|
16
18
|
* Capsize-calibrated size-adjust / ascent-override / descent-override on the
|
|
17
|
-
* matching fallback faces so the swap is geometry-neutral (zero CLS).
|
|
18
|
-
*
|
|
19
|
-
*
|
|
19
|
+
* matching fallback faces so the swap is geometry-neutral (zero CLS). The
|
|
20
|
+
* register lives in tokens.css §0 (--font-stack-text/-display/-mono), bridged
|
|
21
|
+
* to --font-text/-display/-mono in theme.css; consumers override --font-text
|
|
22
|
+
* once to rebrand, no third-party CDN dependency on the LCP-critical path.
|
|
20
23
|
*/
|
|
21
24
|
|
|
22
25
|
/* ═══════════════════════════════════════════════
|
|
@@ -82,21 +85,15 @@
|
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
:root {
|
|
85
|
-
/* Font family tokens. `--font-
|
|
86
|
-
are NOT declared here — their source-of-truth lives in
|
|
87
|
-
(`--font-stack-*`), bridged to Tailwind via theme.css's
|
|
88
|
-
declaring `:root` literals here would shadow consumer
|
|
89
|
-
(un-layered `:root` wins over `@layer theme`). The
|
|
90
|
-
above expose `"Plus Jakarta Sans"` + `"Fira Code"`,
|
|
91
|
-
calibrated `"... Fallback"`.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
default) then the fallback chain. */
|
|
95
|
-
/* Independent brand/system sans stack; consumers override once for uniform sans. */
|
|
96
|
-
--font-brand-sans: "Helvetica Neue", "Arial Nova", Arial, system-ui, sans-serif;
|
|
97
|
-
--font-sans: var(--font-brand-sans);
|
|
98
|
-
--font-display-variation-settings: "WONK" 1, "SOFT" 0;
|
|
99
|
-
--font-display-weight: 400;
|
|
88
|
+
/* Font family tokens. `--font-text` / `--font-display` / `--font-serif` /
|
|
89
|
+
`--font-mono` are NOT declared here — their source-of-truth lives in
|
|
90
|
+
tokens.css §0 (`--font-stack-*`), bridged to Tailwind via theme.css's
|
|
91
|
+
`@theme` block; declaring `:root` literals here would shadow consumer
|
|
92
|
+
`@theme` overrides (un-layered `:root` wins over `@layer theme`). The
|
|
93
|
+
self-hosted faces above expose `"Plus Jakarta Sans"` + `"Fira Code"`,
|
|
94
|
+
each pairing with a calibrated `"... Fallback"`. The brand text register
|
|
95
|
+
(Plus Jakarta Sans) engages by default for every consumer; --font-mono
|
|
96
|
+
references `"Fira Code"` first then the fallback chain. */
|
|
100
97
|
|
|
101
98
|
/* Scale tokens */
|
|
102
99
|
--type-admin-label: 0.625rem; /* 10px */
|
|
@@ -116,8 +113,7 @@
|
|
|
116
113
|
/* Audacious display tier (v1.0.3). Extends the φ-ladder three rungs
|
|
117
114
|
beyond display-5 for poster-type consumers (speedtest hero,
|
|
118
115
|
dashboard pane titles when the consumer wants the number to win).
|
|
119
|
-
Same vw-axis as display-1..5 — consumer-agnostic.
|
|
120
|
-
sans preset still overrides via the existing :root override. */
|
|
116
|
+
Same vw-axis as display-1..5 — consumer-agnostic. */
|
|
121
117
|
--type-display-mega: clamp(5.382rem, 4rem + 9vw, 11.089rem); /* φ^(9/2) — peak 177px */
|
|
122
118
|
--type-display-hero: clamp(6.854rem, 4.5rem + 12vw, 17.942rem); /* φ^5 — peak 287px */
|
|
123
119
|
--type-display-audacious: clamp(8.728rem, 5rem + 16vw, 22rem); /* φ^(11/2) — peak 352px (fast.com peg) */
|
|
@@ -129,25 +125,18 @@
|
|
|
129
125
|
were retired in v0.8.6 (audit U.W0.C-c §1.1 / Union 2). */
|
|
130
126
|
}
|
|
131
127
|
|
|
132
|
-
:root[data-typography-preset="brand-uniform-sans"] {
|
|
133
|
-
--font-serif: var(--font-brand-sans);
|
|
134
|
-
--font-display: var(--font-brand-sans);
|
|
135
|
-
--font-display-variation-settings: normal;
|
|
136
|
-
--font-display-weight: 600;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
128
|
/* ═══════════════════════════════════════════════
|
|
140
|
-
BODY CASCADE —
|
|
129
|
+
BODY CASCADE — the brand text register inherits globally
|
|
141
130
|
═══════════════════════════════════════════════ */
|
|
142
131
|
body {
|
|
143
|
-
font-family: var(--font-
|
|
132
|
+
font-family: var(--font-text);
|
|
144
133
|
color: var(--foreground);
|
|
145
134
|
font-size: var(--type-body);
|
|
146
135
|
line-height: var(--type-leading-body);
|
|
147
136
|
}
|
|
148
137
|
|
|
149
138
|
/* ═══════════════════════════════════════════════
|
|
150
|
-
DISPLAY —
|
|
139
|
+
DISPLAY — Plus Jakarta Sans display, tracking-tight
|
|
151
140
|
═══════════════════════════════════════════════ */
|
|
152
141
|
@utility text-display-audacious {
|
|
153
142
|
font-family: var(--font-display);
|
|
@@ -155,8 +144,7 @@ body {
|
|
|
155
144
|
line-height: var(--type-leading-display);
|
|
156
145
|
letter-spacing: var(--type-tracking-tight);
|
|
157
146
|
font-optical-sizing: auto;
|
|
158
|
-
font-
|
|
159
|
-
font-weight: var(--font-display-weight);
|
|
147
|
+
font-weight: 600;
|
|
160
148
|
/* AQ.W3 §W3.3 — balance multi-line display headlines. Text-only (no box) so
|
|
161
149
|
balance is safe; degrades to unbalanced wrapping with zero break. */
|
|
162
150
|
text-wrap: balance;
|
|
@@ -177,7 +165,6 @@ body {
|
|
|
177
165
|
font-feature-settings: "ss01", "tnum", "lnum";
|
|
178
166
|
font-variant-numeric: tabular-nums lining-nums;
|
|
179
167
|
font-optical-sizing: auto;
|
|
180
|
-
font-variation-settings: var(--font-display-variation-settings);
|
|
181
168
|
display: inline-block;
|
|
182
169
|
max-inline-size: 100%;
|
|
183
170
|
/* AQ.W3 §W3.3 — `text-wrap: nowrap` (modern) sits AFTER `white-space:
|
|
@@ -193,8 +180,7 @@ body {
|
|
|
193
180
|
line-height: var(--type-leading-display);
|
|
194
181
|
letter-spacing: var(--type-tracking-tight);
|
|
195
182
|
font-optical-sizing: auto;
|
|
196
|
-
font-
|
|
197
|
-
font-weight: var(--font-display-weight);
|
|
183
|
+
font-weight: 600;
|
|
198
184
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
199
185
|
}
|
|
200
186
|
|
|
@@ -204,8 +190,7 @@ body {
|
|
|
204
190
|
line-height: var(--type-leading-display);
|
|
205
191
|
letter-spacing: var(--type-tracking-tight);
|
|
206
192
|
font-optical-sizing: auto;
|
|
207
|
-
font-
|
|
208
|
-
font-weight: var(--font-display-weight);
|
|
193
|
+
font-weight: 600;
|
|
209
194
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
210
195
|
}
|
|
211
196
|
|
|
@@ -215,8 +200,7 @@ body {
|
|
|
215
200
|
line-height: var(--type-leading-display);
|
|
216
201
|
letter-spacing: var(--type-tracking-tight);
|
|
217
202
|
font-optical-sizing: auto;
|
|
218
|
-
font-
|
|
219
|
-
font-weight: var(--font-display-weight);
|
|
203
|
+
font-weight: 600;
|
|
220
204
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
221
205
|
}
|
|
222
206
|
|
|
@@ -226,8 +210,7 @@ body {
|
|
|
226
210
|
line-height: var(--type-leading-display);
|
|
227
211
|
letter-spacing: var(--type-tracking-tight);
|
|
228
212
|
font-optical-sizing: auto;
|
|
229
|
-
font-
|
|
230
|
-
font-weight: var(--font-display-weight);
|
|
213
|
+
font-weight: 600;
|
|
231
214
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
232
215
|
}
|
|
233
216
|
|
|
@@ -237,8 +220,7 @@ body {
|
|
|
237
220
|
line-height: var(--type-leading-display);
|
|
238
221
|
letter-spacing: var(--type-tracking-tight);
|
|
239
222
|
font-optical-sizing: auto;
|
|
240
|
-
font-
|
|
241
|
-
font-weight: var(--font-display-weight);
|
|
223
|
+
font-weight: 600;
|
|
242
224
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
243
225
|
}
|
|
244
226
|
|
|
@@ -248,8 +230,7 @@ body {
|
|
|
248
230
|
line-height: var(--type-leading-display);
|
|
249
231
|
letter-spacing: var(--type-tracking-tight);
|
|
250
232
|
font-optical-sizing: auto;
|
|
251
|
-
font-
|
|
252
|
-
font-weight: var(--font-display-weight);
|
|
233
|
+
font-weight: 600;
|
|
253
234
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
254
235
|
}
|
|
255
236
|
|
|
@@ -259,16 +240,15 @@ body {
|
|
|
259
240
|
line-height: var(--type-leading-display);
|
|
260
241
|
letter-spacing: var(--type-tracking-tight);
|
|
261
242
|
font-optical-sizing: auto;
|
|
262
|
-
font-
|
|
263
|
-
font-weight: var(--font-display-weight);
|
|
243
|
+
font-weight: 600;
|
|
264
244
|
text-wrap: balance; /* AQ.W3 §W3.3 */
|
|
265
245
|
}
|
|
266
246
|
|
|
267
247
|
/* ═══════════════════════════════════════════════
|
|
268
|
-
HEADINGS / BODY —
|
|
248
|
+
HEADINGS / BODY — Plus Jakarta Sans text register
|
|
269
249
|
═══════════════════════════════════════════════ */
|
|
270
250
|
@utility text-title {
|
|
271
|
-
font-family: var(--font-
|
|
251
|
+
font-family: var(--font-text);
|
|
272
252
|
font-size: var(--type-title);
|
|
273
253
|
line-height: var(--type-leading-heading);
|
|
274
254
|
letter-spacing: var(--type-tracking-tight);
|
|
@@ -277,7 +257,7 @@ body {
|
|
|
277
257
|
}
|
|
278
258
|
|
|
279
259
|
@utility text-heading {
|
|
280
|
-
font-family: var(--font-
|
|
260
|
+
font-family: var(--font-text);
|
|
281
261
|
font-size: var(--type-heading);
|
|
282
262
|
line-height: var(--type-leading-heading);
|
|
283
263
|
font-weight: 700;
|
|
@@ -285,7 +265,7 @@ body {
|
|
|
285
265
|
}
|
|
286
266
|
|
|
287
267
|
@utility text-subheading {
|
|
288
|
-
font-family: var(--font-
|
|
268
|
+
font-family: var(--font-text);
|
|
289
269
|
font-size: var(--type-subheading);
|
|
290
270
|
line-height: var(--type-leading-body);
|
|
291
271
|
font-weight: 600;
|
|
@@ -300,7 +280,7 @@ body {
|
|
|
300
280
|
reads heavier than its numeric weight at pill size, so regular is the
|
|
301
281
|
not-bold register. */
|
|
302
282
|
@utility dock-label {
|
|
303
|
-
font-family: var(--font-
|
|
283
|
+
font-family: var(--font-text);
|
|
304
284
|
font-size: var(--dock-label-size, var(--type-subheading));
|
|
305
285
|
line-height: var(--type-leading-body);
|
|
306
286
|
font-weight: 400;
|
|
@@ -308,7 +288,7 @@ body {
|
|
|
308
288
|
}
|
|
309
289
|
|
|
310
290
|
@utility text-prose {
|
|
311
|
-
font-family: var(--font-
|
|
291
|
+
font-family: var(--font-text);
|
|
312
292
|
font-size: var(--type-prose);
|
|
313
293
|
line-height: var(--type-leading-prose);
|
|
314
294
|
font-weight: 400;
|
|
@@ -318,7 +298,7 @@ body {
|
|
|
318
298
|
}
|
|
319
299
|
|
|
320
300
|
@utility text-body {
|
|
321
|
-
font-family: var(--font-
|
|
301
|
+
font-family: var(--font-text);
|
|
322
302
|
font-size: var(--type-body);
|
|
323
303
|
line-height: var(--type-leading-body);
|
|
324
304
|
font-weight: 400;
|
|
@@ -326,14 +306,14 @@ body {
|
|
|
326
306
|
}
|
|
327
307
|
|
|
328
308
|
@utility text-small {
|
|
329
|
-
font-family: var(--font-
|
|
309
|
+
font-family: var(--font-text);
|
|
330
310
|
font-size: var(--type-small);
|
|
331
311
|
line-height: var(--type-leading-small);
|
|
332
312
|
font-weight: 400;
|
|
333
313
|
}
|
|
334
314
|
|
|
335
315
|
@utility text-caption {
|
|
336
|
-
font-family: var(--font-
|
|
316
|
+
font-family: var(--font-text);
|
|
337
317
|
font-size: var(--type-caption);
|
|
338
318
|
line-height: var(--type-leading-caption);
|
|
339
319
|
font-style: italic;
|
|
@@ -358,15 +338,15 @@ body {
|
|
|
358
338
|
}
|
|
359
339
|
|
|
360
340
|
/* ═══════════════════════════════════════════════
|
|
361
|
-
MATH —
|
|
341
|
+
MATH — Plus Jakarta Sans italic
|
|
362
342
|
═══════════════════════════════════════════════ */
|
|
363
343
|
@utility text-math {
|
|
364
|
-
font-family: var(--font-
|
|
344
|
+
font-family: var(--font-text);
|
|
365
345
|
font-style: italic;
|
|
366
346
|
}
|
|
367
347
|
|
|
368
348
|
@utility text-math-body {
|
|
369
|
-
font-family: var(--font-
|
|
349
|
+
font-family: var(--font-text);
|
|
370
350
|
font-size: var(--type-prose);
|
|
371
351
|
line-height: var(--type-leading-prose);
|
|
372
352
|
font-style: italic;
|
|
@@ -406,8 +386,13 @@ body {
|
|
|
406
386
|
/* ═══════════════════════════════════════════════
|
|
407
387
|
FONT FAMILY UTILITIES
|
|
408
388
|
═══════════════════════════════════════════════ */
|
|
389
|
+
/* .cm-serif — the Computer-Modern math/serif voice. A DISTINCT face from the
|
|
390
|
+
brand text register: it resolves to the consumer-supplied serif (system
|
|
391
|
+
serif by default; a math consumer maps Computer Modern / KaTeX over it). It
|
|
392
|
+
is NOT the Plus Jakarta text register — the one serif survivor of the
|
|
393
|
+
register reconciliation. */
|
|
409
394
|
@utility cm-serif {
|
|
410
|
-
font-family: var(--font-serif);
|
|
395
|
+
font-family: var(--font-serif-math, serif);
|
|
411
396
|
}
|
|
412
397
|
|
|
413
398
|
@utility fira-code {
|
|
@@ -426,7 +411,6 @@ body {
|
|
|
426
411
|
vertical-align: -0.05em;
|
|
427
412
|
font-weight: 700;
|
|
428
413
|
display: inline-block;
|
|
429
|
-
font-variation-settings: var(--font-display-variation-settings);
|
|
430
414
|
}
|
|
431
415
|
|
|
432
416
|
/* ═══════════════════════════════════════════════
|
|
@@ -439,9 +423,8 @@ body {
|
|
|
439
423
|
font-size: clamp(2.4rem, 1.8rem + 2vw, 3.33rem);
|
|
440
424
|
line-height: var(--type-leading-display);
|
|
441
425
|
letter-spacing: var(--type-tracking-tight);
|
|
442
|
-
font-weight:
|
|
426
|
+
font-weight: 600;
|
|
443
427
|
font-optical-sizing: auto;
|
|
444
|
-
font-variation-settings: var(--font-display-variation-settings);
|
|
445
428
|
}
|
|
446
429
|
|
|
447
430
|
/* AV.W16 TW3 — the pane title scales off its PANE's box, not the viewport.
|
package/src/styles/utilities.css
CHANGED
|
@@ -191,14 +191,32 @@
|
|
|
191
191
|
AL-W10 SLIM (X6 §M-1 + Y7 §3 + DESIGN.md §L3). I compose this
|
|
192
192
|
class onto every interactive surface that wants the iOS tap-
|
|
193
193
|
squish idiom; the press scales to `--scale-press` (0.96, the
|
|
194
|
-
canonical iOS `.regular` control rung)
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
194
|
+
canonical iOS `.regular` control rung). I keep this as a single
|
|
195
|
+
canonical rung — NOT a 3-rung ladder. The one outlier I leave
|
|
196
|
+
alone is the button `0.97` (`--scale-press-btn`), which consumes
|
|
197
|
+
its own slightly-softer token directly. The dock control now
|
|
198
|
+
tracks the canonical `--scale-press` (0.96) too (AT.W7-dock-b
|
|
199
|
+
press canon — the prior deeper `0.92` was retired to ONE source).
|
|
200
|
+
|
|
201
|
+
AX.W52 §6 doctrine — the `scale` register is reconciled onto
|
|
202
|
+
`--spring-smooth` (was `--spring-snappy`), the ONE button/interactive
|
|
203
|
+
scale register the §6 easing doctrine records and the gate asserts
|
|
204
|
+
across `.btn-pill`/`.tap-squish`/`.glass-btn`/`btn-interactive`. At
|
|
205
|
+
ζ=0.86 `--spring-smooth` settles a press crisply with a sub-perceptual
|
|
206
|
+
(~0.5%) peak — no visible bounce — so press still reads alive while
|
|
207
|
+
hover reads as a smooth glide on the SAME spring.
|
|
208
|
+
|
|
209
|
+
The transition lists the SURFACE legs (bg/border/box-shadow/color/
|
|
210
|
+
opacity) on the bezier `--ease-standard` alongside the spring `scale`
|
|
211
|
+
leg — the SAME coherent set `.btn-pill` carries. This is load-bearing:
|
|
212
|
+
`.tap-squish` and `.btn-pill` are co-composed on the button base and
|
|
213
|
+
this `transition` shorthand would otherwise CLOBBER `.btn-pill`'s
|
|
214
|
+
surface legs down to a scale-only animation (the cascade bug that left
|
|
215
|
+
every button transitioning ONLY `scale` — the live-readback RED). With
|
|
216
|
+
both classes carrying the full set, whichever wins the surface cross-
|
|
217
|
+
fade survives. On a non-button press surface the extra legs are inert
|
|
218
|
+
unless that prop changes, in which case a smooth cross-fade is the
|
|
219
|
+
desired interactive read anyway.
|
|
202
220
|
|
|
203
221
|
Under PRM I retire the press transform entirely and lean on the
|
|
204
222
|
consumer's own hover/active bg-tint cascade to acknowledge the
|
|
@@ -206,7 +224,13 @@
|
|
|
206
224
|
.tap-squish {
|
|
207
225
|
/* AQ.W3 §W3.2 identity base */
|
|
208
226
|
scale: 1;
|
|
209
|
-
transition:
|
|
227
|
+
transition:
|
|
228
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
229
|
+
border-color var(--duration-fast) var(--ease-standard),
|
|
230
|
+
box-shadow var(--duration-fast) var(--ease-standard),
|
|
231
|
+
color var(--duration-fast) var(--ease-standard),
|
|
232
|
+
opacity var(--duration-fast) var(--ease-standard),
|
|
233
|
+
scale var(--duration-fast) var(--spring-smooth);
|
|
210
234
|
transform-origin: center center;
|
|
211
235
|
}
|
|
212
236
|
.tap-squish:active {
|
|
@@ -683,9 +707,12 @@
|
|
|
683
707
|
`--duration-fast` + `--ease-standard` tokens. */
|
|
684
708
|
@utility scale-on-hover {
|
|
685
709
|
/* Individual-transform identity base (AQ.W3 §W3.2). Transition the `scale`
|
|
686
|
-
longhand (not `transform`) so the migrated hover scale animates.
|
|
710
|
+
longhand (not `transform`) so the migrated hover scale animates.
|
|
711
|
+
AX.W52 §6 doctrine — the `scale` transform leg rides `--spring-smooth`
|
|
712
|
+
(the settle register), NOT the bezier `--ease-standard` (a transform on a
|
|
713
|
+
bezier reads mechanical; springs read alive on transform). */
|
|
687
714
|
scale: 1;
|
|
688
|
-
transition: scale var(--duration-fast) var(--
|
|
715
|
+
transition: scale var(--duration-fast) var(--spring-smooth);
|
|
689
716
|
|
|
690
717
|
&:hover {
|
|
691
718
|
scale: var(--scale-hover);
|
|
@@ -982,7 +1009,8 @@
|
|
|
982
1009
|
|
|
983
1010
|
/* ── Text-highlight paint (CSS Custom Highlight API) ─────────────────────
|
|
984
1011
|
The default `::highlight()` paint for the `useTextHighlight` composable
|
|
985
|
-
(composables/
|
|
1012
|
+
(composables/motion; the `/motion-core` subpath, AX.W37). A named `Highlight`
|
|
1013
|
+
registered in `CSS.highlights`
|
|
986
1014
|
under one of these keys paints its `Range` set without a `<mark>` wrapper.
|
|
987
1015
|
Token-bridged: the search mark reads the canonical pastel-yellow rainbow
|
|
988
1016
|
token at a soft alpha; the equation/variable mark reads `--primary`. Both
|
|
@@ -1004,22 +1032,28 @@
|
|
|
1004
1032
|
|
|
1005
1033
|
/* ── Interactive-button four-state recipe ────────────────────────────────
|
|
1006
1034
|
`.btn-interactive` carries the canonical "Button-with-spring-hover"
|
|
1007
|
-
four-state contract — transition + hover-scale
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1035
|
+
four-state contract — transition + hover-scale + active-press + disabled-
|
|
1036
|
+
opacity + focus-ring fade-in. The Button primitive's variants emit the four
|
|
1037
|
+
states except `hover:scale-*`; this is the canonical opt-in that adds the
|
|
1038
|
+
spring-hover lift. Consumed by keyframes.js at 7 sites.
|
|
1039
|
+
|
|
1040
|
+
AX.W52 §6 — the hover lift is the restrained `--scale-hover-btn` (1.035, NOT
|
|
1041
|
+
the emphatic 1.08 `--scale-hover`) routed through `--spring-smooth` — the ONE
|
|
1042
|
+
button scale register the §6 doctrine records and the gate asserts across
|
|
1043
|
+
`.btn-pill`/`.tap-squish`/`.glass-btn`/`btn-interactive`. The surface legs
|
|
1044
|
+
stay on the bezier `--ease-standard` (a colour cross-fade reads as a wobble
|
|
1045
|
+
on a spring); only the `scale` transform leg springs. */
|
|
1012
1046
|
@utility btn-interactive {
|
|
1013
1047
|
/* AQ.W3 §W3.2 identity base */
|
|
1014
1048
|
scale: 1;
|
|
1015
1049
|
transition:
|
|
1016
1050
|
background-color var(--duration-fast) var(--ease-standard),
|
|
1017
1051
|
color var(--duration-fast) var(--ease-standard),
|
|
1018
|
-
scale var(--duration-fast) var(--
|
|
1052
|
+
scale var(--duration-fast) var(--spring-smooth),
|
|
1019
1053
|
opacity var(--duration-fast) var(--ease-standard);
|
|
1020
1054
|
|
|
1021
1055
|
&:hover {
|
|
1022
|
-
scale: var(--scale-hover);
|
|
1056
|
+
scale: var(--scale-hover-btn);
|
|
1023
1057
|
}
|
|
1024
1058
|
|
|
1025
1059
|
&:active {
|
|
@@ -1035,11 +1069,11 @@
|
|
|
1035
1069
|
box-shadow: var(--focus-ring-shadow);
|
|
1036
1070
|
outline: none;
|
|
1037
1071
|
/* Fade in; base state has no box-shadow transition → instant
|
|
1038
|
-
removal */
|
|
1072
|
+
removal. The `scale` leg keeps the `--spring-smooth` register. */
|
|
1039
1073
|
transition:
|
|
1040
1074
|
background-color var(--duration-fast) var(--ease-standard),
|
|
1041
1075
|
color var(--duration-fast) var(--ease-standard),
|
|
1042
|
-
scale var(--duration-fast) var(--
|
|
1076
|
+
scale var(--duration-fast) var(--spring-smooth),
|
|
1043
1077
|
opacity var(--duration-fast) var(--ease-standard),
|
|
1044
1078
|
box-shadow var(--duration-fast) var(--ease-standard);
|
|
1045
1079
|
}
|
|
@@ -1067,36 +1101,52 @@ html.no-transition *::after {
|
|
|
1067
1101
|
transition-duration: 0s !important;
|
|
1068
1102
|
}
|
|
1069
1103
|
|
|
1070
|
-
/* ── Forced-colors
|
|
1104
|
+
/* ── Forced-colors focus + silhouette rung (AQ.W2 §5 · generalized AX.W36) ────
|
|
1071
1105
|
Windows High Contrast / forced-colors mode STRIPS `box-shadow` — so the
|
|
1072
1106
|
glass focus rings (box-shadow + `outline: none`) vanish, leaving keyboard
|
|
1073
|
-
users with no visible focus
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1107
|
+
users with no visible focus. Restore a real `outline` keyed to the system
|
|
1108
|
+
`Highlight` color (outline survives forced-colors; box-shadow does not). The
|
|
1109
|
+
box-shadow ring stays the primary in normal mode (it carries the glass
|
|
1110
|
+
aesthetic) — these two are mutually exclusive by media query, NOT a parallel
|
|
1111
|
+
path.
|
|
1112
|
+
|
|
1113
|
+
AX.W36 — the focus-survival selector set is GENERALIZED to the broader
|
|
1114
|
+
interactive surface: the dock CONTROLS (`.dock-icon-button` / `.dock-tab-button`
|
|
1115
|
+
/ `.dock-select-trigger` / `.dock-dropdown-trigger`) + the pill button base
|
|
1116
|
+
(`.btn-pill`) all carry a box-shadow focus ring (dock.css / utilities.css) that
|
|
1117
|
+
vanishes under WHC just like the original five. This is the SAME `Highlight`
|
|
1118
|
+
outline rung extended to cover them — ONE block, ONE path (the glass-language
|
|
1119
|
+
structure-survival skin for the tier panes / StatusDot / floating surfaces lives
|
|
1120
|
+
co-located with the ladder it skins, in glass.css).
|
|
1121
|
+
|
|
1122
|
+
`forced-color-adjust: none` is deliberately NOT used — glass-ui's glassmorphic
|
|
1123
|
+
chrome is decorative and yields to the user's forced palette (css forced-colors
|
|
1124
|
+
guidance). Baseline Widely Available; this IS the fallback mechanism (it only
|
|
1125
|
+
activates under forced-colors), so no nested guard. */
|
|
1084
1126
|
@media (forced-colors: active) {
|
|
1085
1127
|
.focus-ring:focus-visible,
|
|
1086
1128
|
.glass-btn:focus-visible,
|
|
1087
1129
|
.interactive-item:focus-visible,
|
|
1130
|
+
.btn-pill:focus-visible,
|
|
1131
|
+
.dock-icon-button:focus-visible,
|
|
1132
|
+
.dock-tab-button:focus-visible,
|
|
1133
|
+
.dock-select-trigger:focus-visible,
|
|
1134
|
+
.dock-dropdown-trigger:focus-visible,
|
|
1088
1135
|
.input-pill:focus,
|
|
1089
1136
|
.input-pill:focus-visible {
|
|
1090
1137
|
outline: 2px solid Highlight;
|
|
1091
1138
|
outline-offset: 2px;
|
|
1092
1139
|
}
|
|
1093
1140
|
|
|
1094
|
-
/* Structural edges borne ONLY by box-shadow (the hairline catch-light
|
|
1095
|
-
|
|
1096
|
-
|
|
1141
|
+
/* Structural edges borne ONLY by box-shadow (the hairline catch-light + the
|
|
1142
|
+
dock SHELL pill edge) also vanish — restore a real border so the silhouette
|
|
1143
|
+
survives. CanvasText is the system text/border color. The `.glass-dock`
|
|
1144
|
+
shell is OUT of the glass-material group BY DESIGN (it hand-rolls a parallel
|
|
1145
|
+
surface — see glass.css), so it keeps its WHC edge HERE; the five-rung ladder
|
|
1146
|
+
+ `.glass-card` get their WHC border from the co-located glass-language skin
|
|
1147
|
+
in glass.css (one source per surface family, no double-declaration). */
|
|
1097
1148
|
.hairline-accent,
|
|
1098
|
-
.glass-dock
|
|
1099
|
-
.glass-card {
|
|
1149
|
+
.glass-dock {
|
|
1100
1150
|
border: 1px solid CanvasText;
|
|
1101
1151
|
}
|
|
1102
1152
|
}
|
|
@@ -1107,12 +1157,13 @@ html.no-transition *::after {
|
|
|
1107
1157
|
to the WCAG 2.5.5 (44px) minimum — ONE amendment retiring the per-consumer
|
|
1108
1158
|
`min-h-[44px]` one-liners. Token-driven (`--touch-target`); fine-pointer
|
|
1109
1159
|
byte-identical. Targets `Button size="icon"` (via the `data-size="icon"`
|
|
1110
|
-
attr Button.vue reflects), ExpandableContainer +
|
|
1160
|
+
attr Button.vue reflects), ExpandableContainer + SegmentedTabs (responsive
|
|
1161
|
+
mobile Select) triggers.
|
|
1111
1162
|
`min-block/inline-size` only RAISES — a larger explicit size is never lost. */
|
|
1112
1163
|
@media (pointer: coarse) {
|
|
1113
1164
|
[data-size="icon"],
|
|
1114
1165
|
.expandable-container__trigger,
|
|
1115
|
-
.
|
|
1166
|
+
.segmented-tabs__trigger {
|
|
1116
1167
|
min-block-size: var(--touch-target, 2.75rem);
|
|
1117
1168
|
min-inline-size: var(--touch-target, 2.75rem);
|
|
1118
1169
|
}
|
|
@@ -44,46 +44,18 @@
|
|
|
44
44
|
::view-transition-new(.gl-list-item):only-child { animation-name: gl-vt-slide-in; }
|
|
45
45
|
::view-transition-old(.gl-list-item):only-child { animation-name: gl-vt-slide-out; }
|
|
46
46
|
|
|
47
|
-
/*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
::view-transition-group(.gl-dock-layer) {
|
|
60
|
-
animation-duration: var(--vt-duration, var(--duration-normal));
|
|
61
|
-
animation-timing-function: var(--dock-resize-spring, var(--spring-dock));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/* AW.W3 — typed directional dock curves. The swap tags the active transition
|
|
65
|
-
* `dock-expand` / `dock-collapse` (the outer collapsed↔expanded pair) and
|
|
66
|
-
* `layer-forward` / `layer-back` (the inner DockLayerGroup pane swap) via the
|
|
67
|
-
* `types` argument to `startViewTransition` (Chrome 140+; feature-detected, the
|
|
68
|
-
* untyped fallback is the symmetric `.gl-dock-layer` curve above). iOS-feel
|
|
69
|
-
* motion is ASYMMETRIC — a snappier exit, a softer entry-overshoot. EXPAND
|
|
70
|
-
* (and forward) lead with the overshooting `--spring-dock`; COLLAPSE (and back)
|
|
71
|
-
* exit on the non-overshooting `--spring-snappy` (a quicker settle, no bounce on
|
|
72
|
-
* the way out). The shorter `--duration-fast` on the exit reads as the crisp
|
|
73
|
-
* dismiss. A non-typed engine never matches these — it runs the symmetric curve,
|
|
74
|
-
* which is the acceptable contract. PRM zeroes the animation (the `@media` at
|
|
75
|
-
* the top of this file). */
|
|
76
|
-
:active-view-transition-type(dock-expand) ::view-transition-group(.gl-dock-layer),
|
|
77
|
-
:active-view-transition-type(layer-forward) ::view-transition-group(.gl-dock-layer) {
|
|
78
|
-
animation-duration: var(--vt-duration, var(--duration-normal));
|
|
79
|
-
animation-timing-function: var(--dock-resize-spring, var(--spring-dock));
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
:active-view-transition-type(dock-collapse) ::view-transition-group(.gl-dock-layer),
|
|
83
|
-
:active-view-transition-type(layer-back) ::view-transition-group(.gl-dock-layer) {
|
|
84
|
-
animation-duration: var(--vt-duration-exit, var(--duration-fast));
|
|
85
|
-
animation-timing-function: var(--spring-snappy);
|
|
86
|
-
}
|
|
47
|
+
/* AX.W01 — the dock COLLAPSE View-Transitions recipe is RETIRED. The
|
|
48
|
+
* `::view-transition-group(.gl-dock-layer)` group + its `:active-view-transition-type
|
|
49
|
+
* (dock-expand|dock-collapse|layer-forward|layer-back)` asymmetric curve fork are
|
|
50
|
+
* DELETED: VT crossfades RASTERIZED snapshots — the wrong primitive for a layout
|
|
51
|
+
* morph (the "taffy"-stretch + text-blur + uncaptured-animating-ancestor desync +
|
|
52
|
+
* the co-mounted-docks snapshot-DROP). The dock collapse↔expand (and inner
|
|
53
|
+
* pane-swap) now morphs off the ONE `--dock-morph-t` spring scalar
|
|
54
|
+
* (`useLayerTransition` + `dock.css`), one clock on every engine. The SEPARABLE
|
|
55
|
+
* per-instance `view-transition-name` ROUTE-morph seam on the dock root stays
|
|
56
|
+
* (GlassDock.vue `rootVtStyle`) for the consumer's page/route geometry-morph — it
|
|
57
|
+
* is no longer the dock's own collapse mechanism. The `.gl-list-item` group recipe
|
|
58
|
+
* (non-dock) is UNTOUCHED above. */
|
|
87
59
|
|
|
88
60
|
@keyframes gl-vt-slide-in { from { opacity: 0; translate: 0 var(--vt-rise, 8px); } }
|
|
89
61
|
@keyframes gl-vt-slide-out { to { opacity: 0; translate: 0 var(--vt-rise, 8px); } }
|