@mkbabb/glass-ui 3.10.0 → 3.10.1
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/{CardAction-DuArVky-.js → CardAction-DrAcAV4d.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-mV2e1aG6.js} +2 -2
- package/dist/{DataTable-CUHMukiQ.js → DataTable-C3E6jZ5B.js} +2 -2
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-BxaaafFi.js} +1 -1
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CDA_SaCe.js} +1 -1
- package/dist/{MetricBadge-BZVWIxNy.js → MetricBadge-idgrkqoP.js} +5 -7
- package/dist/{Notification-DLMhblXR.js → Notification-Cu0nN17_.js} +1 -1
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CHEWghnY.js} +2 -2
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-DpUvdYY-.js} +1 -1
- package/dist/{Progress-iEuD9pxG.js → Progress-BW-StFw2.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DruYCni_.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-pirzjm--.js} +3 -3
- package/dist/{Switch-Ch-k3Rv-.js → Switch-DeAqg6pi.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-BAVzOZpg.js} +2 -2
- package/dist/{Toaster-1rYWrmAm.js → Toaster-CvuuW_y9.js} +49 -46
- package/dist/{ToggleGroupItem-Cev4pOVK.js → ToggleGroupItem-DtD37b4G.js} +4 -4
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +3 -4
- package/dist/api.js +1 -1
- package/dist/aurora.js +66 -66
- package/dist/{badge-CaoFJzRb.js → badge-NdCQMvvB.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-DyiWFAOE.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.js +5 -5
- package/dist/collapsible.js +1 -1
- package/dist/{color-C5ls_QF7.js → color-B65wWyQz.js} +9 -7
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +12 -0
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +35 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +36 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +18 -0
- package/dist/components/custom/constellation/constellationField.d.ts +10 -151
- package/dist/components/custom/constellation/constellationInteraction.d.ts +102 -0
- package/dist/components/custom/constellation/index.d.ts +3 -1
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
- package/dist/components/custom/dock/GlassDock.vue.d.ts +2 -110
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +131 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +23 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +0 -29
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
- package/dist/components/custom/goo-blob/constants.d.ts +52 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +0 -8
- package/dist/components/custom/tabs/constants.d.ts +12 -0
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
- package/dist/components/custom/underline/index.d.ts +2 -0
- package/dist/components/custom/underline/types.d.ts +56 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/slider/index.d.ts +22 -19
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/composables/color/index.d.ts +12 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/motion/core/index.d.ts +0 -1
- package/dist/composables/motion/curves.d.ts +48 -0
- package/dist/composables/motion/index.d.ts +2 -0
- package/dist/composables/motion/springPresets.d.ts +33 -0
- package/dist/composables/motion/suite.d.ts +2 -0
- package/dist/composables/motion/useSpringMount.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +260 -225
- package/dist/controls.js +48 -14
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +339 -327
- package/dist/dockContext-bho8B1A4.js +17 -0
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DVnQcA0E.js} +7 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +38 -61
- package/dist/forms.js +2 -2
- package/dist/fourier-field.js +137 -102
- package/dist/fourier-math.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +287 -209
- package/dist/goo-blob.js +243 -212
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/{math-DTpRVC0e.js → math-BUU9hHID.js} +18 -2
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +69 -70
- package/dist/motion-curves.d.ts +1 -0
- package/dist/motion-curves.js +130 -0
- package/dist/motion.js +38 -37
- package/dist/notification.js +1 -1
- package/dist/number-field.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 +1 -1
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +6 -6
- package/dist/select.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-ChSXcJpU.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-CyzcxBoh.js → slider-sfl8gFDD.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets-aRSm-4_k.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +18 -74
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/layer-group.css +22 -0
- package/dist/styles/dock/layers.css +11 -1
- package/dist/styles/dock/morph.css +95 -19
- package/dist/styles/dock/shell.css +12 -0
- package/dist/styles/dock-controls.css +28 -31
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/floating-panel.css +2 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +304 -0
- package/dist/styles/glass/material.css +238 -0
- package/dist/styles/glass/progress-rail.css +78 -0
- package/dist/styles/glass/squircle.css +66 -0
- package/dist/styles/glass/surfaces.css +306 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +31 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/index.css +24 -6
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/theme.css +13 -20
- package/dist/styles/tokens/color-radius.css +250 -0
- package/dist/styles/tokens/dark-arm.css +194 -0
- package/dist/styles/tokens/glass.css +413 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +406 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +361 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +132 -0
- package/dist/styles/tokens.css +22 -2355
- package/dist/styles/typography.css +18 -6
- package/dist/styles/utilities/a11y-overrides.css +140 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +365 -0
- package/dist/styles/utilities/btn.css +399 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1260
- package/dist/styles/view-transition.css +0 -51
- package/dist/switch.js +1 -1
- package/dist/tabs.js +98 -98
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-DfVgP4te.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-BdQXh9ie.js} +1 -1
- package/dist/useSpecularTracking-DFK_fhpG.js +32 -0
- package/dist/useSpringMount-DXUzxBjV.js +108 -0
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +34 -52
- package/src/styles/animations.css +18 -74
- package/src/styles/dock/layer-group.css +22 -0
- package/src/styles/dock/layers.css +11 -1
- package/src/styles/dock/morph.css +95 -19
- package/src/styles/dock/shell.css +12 -0
- package/src/styles/dock-controls.css +28 -31
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +304 -0
- package/src/styles/glass/material.css +238 -0
- package/src/styles/glass/progress-rail.css +78 -0
- package/src/styles/glass/squircle.css +66 -0
- package/src/styles/glass/surfaces.css +306 -0
- package/src/styles/glass.css +31 -1188
- package/src/styles/index.css +24 -6
- package/src/styles/paper.css +2 -68
- package/src/styles/theme.css +13 -20
- package/src/styles/tokens/color-radius.css +250 -0
- package/src/styles/tokens/dark-arm.css +194 -0
- package/src/styles/tokens/glass.css +413 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +406 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +361 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +132 -0
- package/src/styles/tokens.css +22 -2355
- package/src/styles/typography.css +18 -6
- package/src/styles/utilities/a11y-overrides.css +140 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +365 -0
- package/src/styles/utilities/btn.css +399 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1260
- package/src/styles/view-transition.css +0 -51
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
- package/dist/components/custom/deck-progress/index.d.ts +0 -2
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
- package/dist/components/custom/dialog-native/index.d.ts +0 -1
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +0 -41
- package/dist/components/custom/glass-panel/index.d.ts +0 -2
- package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
- package/dist/components/custom/handmark/brush.d.ts +0 -219
- package/dist/components/custom/handmark/freehand.d.ts +0 -69
- package/dist/components/custom/handmark/geometry.d.ts +0 -32
- package/dist/components/custom/handmark/index.d.ts +0 -21
- package/dist/components/custom/handmark/ink.d.ts +0 -11
- package/dist/components/custom/handmark/texture.d.ts +0 -39
- package/dist/components/custom/handmark/types.d.ts +0 -53
- package/dist/components/custom/handmark/useHandMark.d.ts +0 -66
- package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +0 -31
- package/dist/components/custom/header-ribbon/index.d.ts +0 -2
- package/dist/components/custom/header-ribbon/types.d.ts +0 -7
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
- package/dist/components/custom/instrument-rail/index.d.ts +0 -2
- package/dist/composables/motion/useRouteTransition.d.ts +0 -42
- package/dist/deck-progress.d.ts +0 -1
- package/dist/deck-progress.js +0 -2
- package/dist/dockContext-BKeIMmNk.js +0 -9
- package/dist/glass-panel.d.ts +0 -1
- package/dist/glass-panel.js +0 -44
- package/dist/handmark.d.ts +0 -1
- package/dist/handmark.js +0 -609
- package/dist/header-ribbon.d.ts +0 -1
- package/dist/header-ribbon.js +0 -63
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
- package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
- package/dist/useSpringMount-BJSHcLl3.js +0 -113
- package/dist/useViewTransition-DaN5Zrox.js +0 -21
- package/dist/vReveal-zUIQk-rJ.js +0 -53
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-Drow5WkV.js} +0 -0
- /package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-DufLHi0y.js} +0 -0
- /package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-BrQ5p181.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-B-F818RU.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-DWghtRt7.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-Ce_V55zi.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-C8NMonuo.js} +0 -0
- /package/dist/{presets-Dkdv55Gt.js → presets-1OhFpaIC.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-CjVgzjQT.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CRvVzOvP.js} +0 -0
- /package/dist/{useCanvas2D-ClrQuZtp.js → useCanvas2D-CSeH8h16.js} +0 -0
- /package/dist/{useGlobalDark-d6waty-X.js → useGlobalDark-D7R9OypB.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-DAdVPVp4.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-D3USn0yc.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
- /package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-CcgmgMQt.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-DnyGXKKY.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-B3b10W6r.js} +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/* tokens/property-regs.css
|
|
2
|
+
§18 Houdini @property registrations (progress/phase/ripple/specular/glass-level/ui-scale) + §11b the pointer-anchored moving-specular :root/.dark magnitude cohort. LAST — registrations + the magnitude cohort that reads them.
|
|
3
|
+
Carved from the tokens.css cascade root; @import-ed by tokens.css in
|
|
4
|
+
cascade order. Same :root cascade context as its siblings. */
|
|
5
|
+
/* ═══════════════════════════════════════════════
|
|
6
|
+
§18 TYPED CSS PROPERTIES — Houdini @property registrations
|
|
7
|
+
(AI.W4 grammar — adjacent to §2.C tokens above)
|
|
8
|
+
|
|
9
|
+
Three typed custom properties register with the CSS Houdini @property
|
|
10
|
+
API so transitions interpolate VALUES (percentage / length) rather
|
|
11
|
+
than the textual representation. Unregistered fallback is safe — the
|
|
12
|
+
`initial-value` provides a sensible default for any consumer that
|
|
13
|
+
imports this stylesheet on a browser that doesn't yet support the
|
|
14
|
+
typed @property registration (the cross-fade collapses to the
|
|
15
|
+
initial value, then re-paints at the new state).
|
|
16
|
+
|
|
17
|
+
Browser support: Chromium 85+, Safari 16.4+, Firefox 128+. The
|
|
18
|
+
speedtest deployment target sits well within the floor.
|
|
19
|
+
|
|
20
|
+
• --progress-crescendo (percentage) — the leading-edge brightness
|
|
21
|
+
ramp on `<Progress variant="gradient">` past 85% modelValue.
|
|
22
|
+
`inherits: false` because the value is consumed at one
|
|
23
|
+
declaration only (the gradient stop calculation); inheriting
|
|
24
|
+
would let an unrelated ancestor accidentally drive a sibling
|
|
25
|
+
progress bar.
|
|
26
|
+
|
|
27
|
+
• --phase-tint-amount (percentage) — the chassis depth-of-tint
|
|
28
|
+
companion to `--phase-color`. `inherits: true` because the
|
|
29
|
+
value cascades from the chassis root through every region
|
|
30
|
+
wrapper that reads it for a sympathetic tint (matches the
|
|
31
|
+
`--phase-color` inheritance pattern).
|
|
32
|
+
|
|
33
|
+
• --ripple-radius (length) — the `btn-audacious` press ripple
|
|
34
|
+
radial. `inherits: false` because each button owns its own
|
|
35
|
+
ripple state (a hovered parent must not push a ripple-radius
|
|
36
|
+
onto a non-pressed child).
|
|
37
|
+
═══════════════════════════════════════════════ */
|
|
38
|
+
|
|
39
|
+
@property --progress-crescendo {
|
|
40
|
+
syntax: "<percentage>";
|
|
41
|
+
inherits: false;
|
|
42
|
+
initial-value: 0%;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@property --phase-tint-amount {
|
|
46
|
+
syntax: "<percentage>";
|
|
47
|
+
inherits: true;
|
|
48
|
+
initial-value: 0%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@property --ripple-radius {
|
|
52
|
+
syntax: "<length>";
|
|
53
|
+
inherits: false;
|
|
54
|
+
initial-value: 0px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* ═══════════════════════════════════════════════
|
|
58
|
+
§11b POINTER-ANCHORED MOVING SPECULAR (AV.W15)
|
|
59
|
+
|
|
60
|
+
The iOS-26 Liquid Glass "light travels around the material /
|
|
61
|
+
illuminate under your fingertip" behaviour. A masked radial-gradient
|
|
62
|
+
catch-light rides the surface at (--specular-x, --specular-y), driven
|
|
63
|
+
by the consumer's pointer-tracked --mouse-x/--mouse-y write. Registered
|
|
64
|
+
as typed custom properties so the position INTERPOLATES smoothly between
|
|
65
|
+
pointer samples (a bare unregistered var() snaps; the @property reg lets
|
|
66
|
+
the engine animate the percentage stop).
|
|
67
|
+
|
|
68
|
+
• --specular-x / --specular-y (percentage) — the catch-light centre.
|
|
69
|
+
`inherits: false` because each glass surface owns its own pointer
|
|
70
|
+
position (a hovered parent must not push its specular onto a child —
|
|
71
|
+
the no-glass-on-glass discipline made mechanical).
|
|
72
|
+
|
|
73
|
+
• --specular-intensity (number) — the catch-light alpha multiplier.
|
|
74
|
+
`inherits: false` for the same per-surface-ownership reason; rises on
|
|
75
|
+
hover/active, settles to its rest floor on leave.
|
|
76
|
+
|
|
77
|
+
@property crosses Baseline 2024-07-09. The consumption (the masked
|
|
78
|
+
radial + the reduced-motion static bracket + the var() fallback) lives
|
|
79
|
+
in glass-specular-track.css; the registrations live here alongside the
|
|
80
|
+
other three regs so the typed-property tier has one home.
|
|
81
|
+
═══════════════════════════════════════════════ */
|
|
82
|
+
|
|
83
|
+
@property --specular-x {
|
|
84
|
+
syntax: "<percentage>";
|
|
85
|
+
inherits: false;
|
|
86
|
+
initial-value: 50%;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@property --specular-y {
|
|
90
|
+
syntax: "<percentage>";
|
|
91
|
+
inherits: false;
|
|
92
|
+
initial-value: 50%;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@property --specular-intensity {
|
|
96
|
+
syntax: "<number>";
|
|
97
|
+
inherits: false;
|
|
98
|
+
initial-value: 0;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* AX.W54 — the GLASS-FIRST single knob. `--glass-level` is the ONE clarity
|
|
102
|
+
scalar threaded through BOTH glass ladders at their single sites (the
|
|
103
|
+
`--glass-bg-*` opacity recipe + the `--glass-blur-*` radii). It is a typed,
|
|
104
|
+
INHERITING <number> so a host setting it on any ancestor retunes every
|
|
105
|
+
descendant glass surface (the @container-free cascade path) — and so it
|
|
106
|
+
animates smoothly rather than snapping. The level acts as a clarity multiplier
|
|
107
|
+
that PRESERVES level=1 (byte-identical to the hand-tuned ladder):
|
|
108
|
+
• level 1 — the calibrated glass (today's surfaces, unchanged).
|
|
109
|
+
• level 0 — the OPAQUE escape: solid `--card` + `blur(0)` through the SAME
|
|
110
|
+
machinery (the `.glass-opaque` rung + the a11y brackets ride it).
|
|
111
|
+
• level >1 — clearer (more transparent + more diffuse) in lockstep.
|
|
112
|
+
Glass is the DEFAULT surface register for EVERY band (USER-DECIDED MAXIMAL);
|
|
113
|
+
the opaque level-0 rung is the explicit opt-out. W55 carries the over-light
|
|
114
|
+
legibility on the SEPARATE `--glass-tint-*` axis (the `--glass-backdrop` probe
|
|
115
|
+
lifts the tint toward ink — level = opacity+blur, tint = darken-over-light, the
|
|
116
|
+
two axes coordinate but never collapse: the a11y Clear↔Tinted escape rides
|
|
117
|
+
level-up here AND tint-toward-ink under `prefers-contrast: more`). */
|
|
118
|
+
@property --glass-level {
|
|
119
|
+
syntax: "<number>";
|
|
120
|
+
inherits: true;
|
|
121
|
+
initial-value: 1;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* AX.W51 D18 — the master comfortable-sizing scalar registered typed. The
|
|
125
|
+
`<number>` syntax guarantees `calc(<base> * var(--ui-scale))` is always valid (a
|
|
126
|
+
malformed override CLAMPS to the initial value 1, not an invalidated calc — the
|
|
127
|
+
fail-safe); `inherits: true` (unlike the per-element specular @property cohort)
|
|
128
|
+
so a SCOPED override (a dense data-table region) cascades to every descendant
|
|
129
|
+
control without a per-element set; the type makes it animatable (a density
|
|
130
|
+
toggle COULD spring it). Mirrors the `--glass-level` registration above (the
|
|
131
|
+
cascading-scalar idiom), distinct from the per-element specular @property cohort
|
|
132
|
+
(those are `inherits: false`). */
|
|
133
|
+
@property --ui-scale {
|
|
134
|
+
syntax: "<number>";
|
|
135
|
+
inherits: true;
|
|
136
|
+
initial-value: 1;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* ── The specular-intensity magnitude cohort (AX.W09) ──────────────────────
|
|
140
|
+
The catch-light alpha multiplier at each interaction state, as a SINGLE
|
|
141
|
+
overridable token cohort (was three buried literals across glass.css —
|
|
142
|
+
`0.35` rest floor / `0.6` hover / `0.85` active — and the `.dark` arm's
|
|
143
|
+
`0.22`). `glass.css`'s `.glass-material::before` rest/hover/active rules READ
|
|
144
|
+
these, so the subtle-vs-extreme magnitude is a knob a consumer (or the dark
|
|
145
|
+
arm) retunes ON THE CASCADE — never a re-buried literal. Override on `:root`
|
|
146
|
+
to retune library-wide; the cartoon-shadow override contract is the precedent.
|
|
147
|
+
|
|
148
|
+
Re-baselined AGAIN at AX.W52 D19 — with the central screen-disc replaced by a
|
|
149
|
+
BOUNDED plus-lighter edge gleam (glass.css), the gleam is a whisper at every
|
|
150
|
+
rung, so the cohort drops further (the W09 0.22/0.32 ceiling still lifted the
|
|
151
|
+
whole-tile disc on hover):
|
|
152
|
+
• rest 0 — static, unwired surfaces are CLEAN; the gleam wakes only on
|
|
153
|
+
hover/active or on a pointer-wired surface. Aligns the painted
|
|
154
|
+
rest with the @property `--specular-intensity { initial-value:
|
|
155
|
+
0 }` dormancy.
|
|
156
|
+
• hover 0.10 — a whisper edge gleam, not a bloom.
|
|
157
|
+
• active 0.16 — the press whisper. */
|
|
158
|
+
:root {
|
|
159
|
+
--glass-specular-intensity-rest: 0;
|
|
160
|
+
--glass-specular-intensity-hover: 0.1;
|
|
161
|
+
--glass-specular-intensity-active: 0.16;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Over the deep canvas `plus-lighter` still lifts, so the dark arm runs a touch
|
|
165
|
+
softer on the interaction rungs (rest already 0). */
|
|
166
|
+
.dark {
|
|
167
|
+
--glass-specular-intensity-hover: 0.08;
|
|
168
|
+
--glass-specular-intensity-active: 0.12;
|
|
169
|
+
}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
/* tokens/scale-paper.css
|
|
2
|
+
§11 interactive scales & focus · §12 paper textures · §13 gold · §14 rainbow · §16 timeline · §17 metric · §19 table density · §20 platform motion.
|
|
3
|
+
Carved from the tokens.css cascade root; @import-ed by tokens.css in
|
|
4
|
+
cascade order. Same :root cascade context as its siblings. */
|
|
5
|
+
:root {
|
|
6
|
+
/* ═══════════════════════════════════════════════
|
|
7
|
+
§11 INTERACTIVE SCALES & FOCUS
|
|
8
|
+
═══════════════════════════════════════════════ */
|
|
9
|
+
--scale-hover: 1.08;
|
|
10
|
+
/* AX.W52 — the restrained BUTTON hover lift. `--scale-hover` (1.08) is an
|
|
11
|
+
8% jump — emphatic for a marquee CTA, jarring as the general hover. The
|
|
12
|
+
button family (the audacious CTAs + `btn-interactive`) lifts on the
|
|
13
|
+
smaller `--scale-hover-btn` routed through `--spring-smooth` (the
|
|
14
|
+
sub-perceptual settle, not the snappy bounce), so the hover reads as ONE
|
|
15
|
+
coherent glide with the surface-leg cross-fade rather than a mechanical
|
|
16
|
+
pop. The dock keeps its proportionally-larger `--scale-hover-dock` (small
|
|
17
|
+
icon, bigger lift reads smaller).
|
|
18
|
+
AX.W54 Q3 — lifted 1.035 → 1.05: the 1.035 overshot DOWN (W52 tamed the
|
|
19
|
+
1.08 snap so hard the lift read as nothing), so the glass hover now reads
|
|
20
|
+
as THREE legs together on hover — the specular gleam waking, a perceptible
|
|
21
|
+
scale, and the bg/border cross-fade — distinguishable from rest BEFORE the
|
|
22
|
+
click. Still sub-perceptual-bounce on `--spring-smooth`; the magnitude
|
|
23
|
+
moved, the easing register did not. */
|
|
24
|
+
--scale-hover-btn: 1.05;
|
|
25
|
+
--scale-hover-dock: 1.1;
|
|
26
|
+
--scale-press: 0.96;
|
|
27
|
+
|
|
28
|
+
/* Press-scale rungs. `--scale-press` (0.96) is the canonical iOS Liquid
|
|
29
|
+
Glass press value every primitive reaches for unless it has a documented
|
|
30
|
+
reason (DESIGN.md §L3); `--scale-press-btn` aliases the slightly-softer
|
|
31
|
+
`--scale-press-sm` (0.97) the button + slider recipes consume.
|
|
32
|
+
|
|
33
|
+
AT.W7-dock-b — press canon. `--scale-press-dock` previously hard-coded a
|
|
34
|
+
deeper 0.92 (a second magic press value with no documented rationale),
|
|
35
|
+
so a dock control pressed visibly harder than every other primitive. It
|
|
36
|
+
now references the canonical `--scale-press` (0.96) — ONE source for the
|
|
37
|
+
press scale across the system. A consumer wanting the dock's old deeper
|
|
38
|
+
press overrides `--scale-press-dock` on the dock instance. */
|
|
39
|
+
--scale-press-dock: var(--scale-press);
|
|
40
|
+
--scale-press-sm: 0.97;
|
|
41
|
+
--scale-press-btn: var(--scale-press-sm);
|
|
42
|
+
|
|
43
|
+
/* AX.W53 — the SegmentedTabs travel-squish cap. The active indicator
|
|
44
|
+
(segmented/pill slider OR the underline rule) STRETCHES along its travel
|
|
45
|
+
axis as it glides between tabs, then settles to fit — the Material 3
|
|
46
|
+
ELASTIC / Apple Liquid-Glass "controls insist on animating themselves"
|
|
47
|
+
register, kept RESTRAINED. The deform is volume-preserving (stretch X,
|
|
48
|
+
compress Y in lockstep: `scale: var(--stretch) calc(1 / var(--stretch))`)
|
|
49
|
+
so it reads as an elastic warp, never a size pump. The cap holds the peak
|
|
50
|
+
LOW (1.08 ≈ +8%) — iOS 26.2 dialed motion DOWN; a high-frequency control
|
|
51
|
+
wants a whisper of squish, not a bounce. A consumer dials the elasticity
|
|
52
|
+
(or to 1 for none) without touching source. */
|
|
53
|
+
--tab-indicator-max-stretch: 1.08;
|
|
54
|
+
--opacity-disabled: 0.5;
|
|
55
|
+
--opacity-icon-muted: 0.8;
|
|
56
|
+
|
|
57
|
+
--focus-ring-width: 2px;
|
|
58
|
+
--focus-ring-shadow: 0 0 0 var(--focus-ring-width) color-mix(in srgb, var(--ring) 30%, transparent),
|
|
59
|
+
0 0 8px color-mix(in srgb, var(--ring) 15%, transparent);
|
|
60
|
+
--focus-ring: var(--focus-ring-shadow);
|
|
61
|
+
|
|
62
|
+
/* ═══════════════════════════════════════════════
|
|
63
|
+
§12 PAPER TEXTURES
|
|
64
|
+
═══════════════════════════════════════════════ */
|
|
65
|
+
/* Canonical subtle paper-texture opacity — restored from fourier-original
|
|
66
|
+
(`4df1a06:web/src/style.css:53-54`) after A.W3.5.ab confirmed the
|
|
67
|
+
heretofore `opacity='1'` URI rendered as an overt grain field in every
|
|
68
|
+
downstream consumer of `.paper-texture`. The SVG `opacity` attribute is
|
|
69
|
+
baked at parse-time and cannot read a CSS var, so the subtle value must
|
|
70
|
+
be inlined; if a consumer needs a heavier overlay, they should layer
|
|
71
|
+
a wrapper element with its own `opacity:`/`mix-blend-mode:` atop. */
|
|
72
|
+
--paper-clean-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
|
|
73
|
+
--paper-aged-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='5' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
|
|
74
|
+
|
|
75
|
+
/* ═══════════════════════════════════════════════
|
|
76
|
+
§13 GOLD (accent family kept for consumers using it)
|
|
77
|
+
═══════════════════════════════════════════════ */
|
|
78
|
+
--gold: oklch(0.751 0.147 84.2);
|
|
79
|
+
--gold-light: oklch(0.890 0.183 96.1);
|
|
80
|
+
--gold-dark: oklch(0.599 0.132 64.2);
|
|
81
|
+
/* AY.W-PRIM-POLISH D1 — the saturated CTA plate the AW.W13 gold-CTA contract
|
|
82
|
+
names. A FIXED deep gold (mode-INVARIANT — the gold-CTA hover backplate must
|
|
83
|
+
be dark in BOTH modes so the white label clears ≥4.5:1; deepening toward the
|
|
84
|
+
mode-flipping `--foreground` brightened the dark plate to a cream-gold and
|
|
85
|
+
broke dark). ~`--gold-dark` deepened toward warm-ink → ~rgb(120,87,45),
|
|
86
|
+
6.5:1 white in light / 5.5:1 in dark. The opaque base of `btn-audacious-gold`
|
|
87
|
+
:hover. */
|
|
88
|
+
--gold-deep: oklch(0.487 0.103 63.0);
|
|
89
|
+
|
|
90
|
+
--color-gold: var(--gold);
|
|
91
|
+
--color-gold-light: var(--gold-light);
|
|
92
|
+
--color-gold-dark: var(--gold-dark);
|
|
93
|
+
--color-gold-deep: var(--gold-deep);
|
|
94
|
+
|
|
95
|
+
/* ═══════════════════════════════════════════════
|
|
96
|
+
§14 RAINBOW PALETTE — oklch (AV.W16 TW2; mode-independent, no .dark
|
|
97
|
+
mirror; hue preserved from the prior hsl() cadence)
|
|
98
|
+
═══════════════════════════════════════════════ */
|
|
99
|
+
--rainbow-red: oklch(0.636 0.210 25.5);
|
|
100
|
+
--rainbow-orange: oklch(0.737 0.163 58.9);
|
|
101
|
+
--rainbow-yellow: oklch(0.900 0.183 103.7);
|
|
102
|
+
--rainbow-green: oklch(0.772 0.233 144.8);
|
|
103
|
+
--rainbow-blue: oklch(0.633 0.162 252.1);
|
|
104
|
+
--rainbow-indigo: oklch(0.566 0.206 294.1);
|
|
105
|
+
--rainbow-violet: oklch(0.684 0.250 327.9);
|
|
106
|
+
|
|
107
|
+
--rainbow-pastel-red: oklch(0.793 0.066 18.7);
|
|
108
|
+
--rainbow-pastel-orange: oklch(0.823 0.059 57.3);
|
|
109
|
+
--rainbow-pastel-yellow: oklch(0.889 0.068 98.1);
|
|
110
|
+
--rainbow-pastel-green: oklch(0.826 0.072 149.5);
|
|
111
|
+
--rainbow-pastel-blue: oklch(0.783 0.056 264.2);
|
|
112
|
+
--rainbow-pastel-indigo: oklch(0.772 0.062 300.2);
|
|
113
|
+
--rainbow-pastel-violet: oklch(0.799 0.070 314.4);
|
|
114
|
+
|
|
115
|
+
/* ═══════════════════════════════════════════════
|
|
116
|
+
§16 TIMELINE
|
|
117
|
+
Timeline primitive tokens. All three variants (scrubber +
|
|
118
|
+
segmented + continuous) compose these. Both segmented + continuous
|
|
119
|
+
arrays carry the same `TimelineSegment[]` data shape; only the
|
|
120
|
+
rendering geometry differs. See DESIGN.md `## Timeline Primitive`.
|
|
121
|
+
═══════════════════════════════════════════════ */
|
|
122
|
+
|
|
123
|
+
/* Heights — per-variant rail thickness */
|
|
124
|
+
--timeline-scrubber-height: 0.5rem; /* 8px — single-track scrubber */
|
|
125
|
+
--timeline-segmented-height: 0.625rem; /* 10px — N adjacent bands */
|
|
126
|
+
--timeline-continuous-height: 0.75rem; /* 12px — ONE pill, N regions */
|
|
127
|
+
|
|
128
|
+
/* Geometry — shared across all variants */
|
|
129
|
+
--timeline-dot-size: 0.875rem; /* 14px — boundary dot diameter (pointer: fine) */
|
|
130
|
+
--timeline-dot-size-touch: 1.25rem; /* 20px — boundary dot diameter (pointer: coarse) */
|
|
131
|
+
--timeline-touch-target: 44px; /* AC.W6d F2.I-04 — WCAG 2.5.5 target-size floor.
|
|
132
|
+
The `::before` halo around each dot extends to
|
|
133
|
+
this dimension so finger-precision users meet
|
|
134
|
+
the (target-size: 44×44 minimum) clause without
|
|
135
|
+
the visible dot growing to that footprint at
|
|
136
|
+
pointer: fine. */
|
|
137
|
+
--timeline-segment-flex: 1 1 0; /* per-cell flex distribution (segmented) */
|
|
138
|
+
|
|
139
|
+
/* Boundary-dot glass knobs (Q.W4 Lane B — promoted from
|
|
140
|
+
ContinuousTimeline.vue SFC fallbacks; `3cb70db` minted these as a
|
|
141
|
+
private dialect). The continuous-variant dot is a GLASS primitive:
|
|
142
|
+
a translucent tinted fill over a backdrop blur with a hairline
|
|
143
|
+
ring. These knobs let consumers retune the resting glass + the
|
|
144
|
+
per-state tints without a `:deep()` reach.
|
|
145
|
+
fill — resting translucent fill
|
|
146
|
+
blur — backdrop blur tier behind the dot
|
|
147
|
+
ring — hairline glass ring (border-color)
|
|
148
|
+
tint-current — wash colour for the active-phase dot
|
|
149
|
+
tint-completed — wash colour for the completed-phase dot
|
|
150
|
+
check-color — completion-tick stroke (defaults to the
|
|
151
|
+
completed tint) */
|
|
152
|
+
--timeline-dot-fill: var(--surface-tint-12);
|
|
153
|
+
--timeline-dot-blur: var(--glass-blur-quiet);
|
|
154
|
+
--timeline-dot-ring: var(--glass-border-floating);
|
|
155
|
+
--timeline-dot-tint-current: var(--accent, var(--foreground));
|
|
156
|
+
--timeline-dot-tint-completed: var(--success, var(--foreground));
|
|
157
|
+
--timeline-dot-check-color: var(--timeline-dot-tint-completed);
|
|
158
|
+
|
|
159
|
+
/* Continuous-variant specific — seam dividers between regions.
|
|
160
|
+
Set `--timeline-continuous-seam-opacity: 0` to suppress the
|
|
161
|
+
inter-region 1px dividers entirely. Default `0.25` reads as a
|
|
162
|
+
subtle hairline; the `--timeline-continuous-seam-color` knob lets
|
|
163
|
+
consumers override the seam tint independently of opacity. */
|
|
164
|
+
--timeline-continuous-seam-opacity: 0.25;
|
|
165
|
+
--timeline-continuous-seam-color: color-mix(
|
|
166
|
+
in srgb,
|
|
167
|
+
var(--foreground) calc(var(--timeline-continuous-seam-opacity) * 100%),
|
|
168
|
+
transparent
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
/* Per-segment default gradient fallback — applied when a segment
|
|
172
|
+
omits its `gradient` field. Consumers can override per-phase via
|
|
173
|
+
the `--timeline-segment-gradient-{key}` knobs below. */
|
|
174
|
+
--timeline-segment-default-gradient: linear-gradient(
|
|
175
|
+
90deg,
|
|
176
|
+
var(--surface-tint-15),
|
|
177
|
+
var(--surface-tint-25)
|
|
178
|
+
);
|
|
179
|
+
|
|
180
|
+
/* Per-phase gradient defaults — paint the canonical chart palette
|
|
181
|
+
at the gradient leading edge, fading to a 60%-opacity tail. The
|
|
182
|
+
speedtest consumer wires these via `gradient: "var(--timeline-segment-gradient-ping)"`
|
|
183
|
+
per segment; the same names work for any consumer who follows the
|
|
184
|
+
ping/download/upload/jitter taxonomy. */
|
|
185
|
+
--timeline-segment-gradient-ping: linear-gradient(
|
|
186
|
+
90deg,
|
|
187
|
+
var(--chart-ping),
|
|
188
|
+
color-mix(in srgb, var(--chart-ping) 60%, transparent)
|
|
189
|
+
);
|
|
190
|
+
--timeline-segment-gradient-download: linear-gradient(
|
|
191
|
+
90deg,
|
|
192
|
+
var(--chart-download),
|
|
193
|
+
color-mix(in srgb, var(--chart-download) 60%, transparent)
|
|
194
|
+
);
|
|
195
|
+
--timeline-segment-gradient-upload: linear-gradient(
|
|
196
|
+
90deg,
|
|
197
|
+
var(--chart-upload),
|
|
198
|
+
color-mix(in srgb, var(--chart-upload) 60%, transparent)
|
|
199
|
+
);
|
|
200
|
+
--timeline-segment-gradient-jitter: linear-gradient(
|
|
201
|
+
90deg,
|
|
202
|
+
var(--chart-jitter),
|
|
203
|
+
color-mix(in srgb, var(--chart-jitter) 60%, transparent)
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
/* ═══════════════════════════════════════════════
|
|
207
|
+
§17 METRIC
|
|
208
|
+
|
|
209
|
+
MetricRow / MetricStack value-clamp dialect. The declared values are the
|
|
210
|
+
`audacious` poster register — the hero-scale clamp for a single giant
|
|
211
|
+
number; MetricStack's `[data-register="result"]` selector overrides it
|
|
212
|
+
locally for the compact multi-row ledger. Three clamp arms each: `min`
|
|
213
|
+
(floor), `cqi` (the binding container-query middle term), `max`
|
|
214
|
+
(ceiling); unit carries min/max only (its cqi is a fixed 6cqi).
|
|
215
|
+
═══════════════════════════════════════════════ */
|
|
216
|
+
|
|
217
|
+
/* Value register — audacious-poster hero clamp */
|
|
218
|
+
--metric-row-value-clamp-min: 4.5rem;
|
|
219
|
+
--metric-row-value-clamp-cqi: 34cqi;
|
|
220
|
+
--metric-row-value-clamp-max: var(--type-display-hero);
|
|
221
|
+
|
|
222
|
+
/* Unit register — one tier below the value it qualifies */
|
|
223
|
+
--metric-row-unit-clamp-min: 1.5rem;
|
|
224
|
+
--metric-row-unit-clamp-max: 3.25rem;
|
|
225
|
+
|
|
226
|
+
/* Label register — uppercase, the binding row-height term in the
|
|
227
|
+
compact `result` register */
|
|
228
|
+
--metric-row-label-clamp-min: 1.125rem;
|
|
229
|
+
--metric-row-label-clamp-cqi: 5cqi;
|
|
230
|
+
--metric-row-label-clamp-max: 2.75rem;
|
|
231
|
+
|
|
232
|
+
/* ═══════════════════════════════════════════════
|
|
233
|
+
§2.D INSTRUMENT-CLUSTER COMPOSITION RHYTHM
|
|
234
|
+
|
|
235
|
+
The instrument-chassis family owns the under-meter / progress-cluster
|
|
236
|
+
grammar.
|
|
237
|
+
|
|
238
|
+
• `--meter-progress-inset` — the negative-margin inset that pulls the
|
|
239
|
+
under-meter bar INTO the unpainted ring lane around the dial canvas
|
|
240
|
+
(~4% of meter-size). Consumed at `.phase-progress` via
|
|
241
|
+
`margin-block-start: calc(-1 * var(--meter-progress-inset))`. The
|
|
242
|
+
`--meter-size` reference resolves against the consumer's own
|
|
243
|
+
declaration; the 200px fallback keeps the calc well-defined.
|
|
244
|
+
• `--progress-stack-gap` — vertical rhythm between any two stacked
|
|
245
|
+
progress rails inside one cluster.
|
|
246
|
+
═══════════════════════════════════════════════ */
|
|
247
|
+
--meter-progress-inset: calc(var(--meter-size, 200px) * 0.04);
|
|
248
|
+
--progress-stack-gap: clamp(0.1875rem, 0.4cqi, 0.375rem);
|
|
249
|
+
|
|
250
|
+
/* ═══════════════════════════════════════════════
|
|
251
|
+
§2.E CELEBRATION-TIER REGISTER
|
|
252
|
+
|
|
253
|
+
Shared peak for any "completion" / "thank-you" surface.
|
|
254
|
+
|
|
255
|
+
• `--celebration-row-rhythm` — gap between the cluster's rows (cqi-axis).
|
|
256
|
+
• `--text-celebration-headline-size` — the single designed peak both
|
|
257
|
+
celebration surfaces clamp toward (cqi-axis).
|
|
258
|
+
• `--complete-headline-size` — the per-consumer font-size hook a consumer
|
|
259
|
+
assigns the canon clamp to so its headline pegs at the shared peak;
|
|
260
|
+
the default falls back to a smaller hero-rung clamp.
|
|
261
|
+
═══════════════════════════════════════════════ */
|
|
262
|
+
--celebration-row-rhythm: clamp(0.5rem, 1.6cqi, 1rem);
|
|
263
|
+
--text-celebration-headline-size: clamp(2.5rem, 12cqi, 9rem);
|
|
264
|
+
--complete-headline-size: clamp(2.25rem, 11cqi, 4rem);
|
|
265
|
+
|
|
266
|
+
/* ═══════════════════════════════════════════════
|
|
267
|
+
§19 TABLE DENSITY
|
|
268
|
+
|
|
269
|
+
A single unitless knob `--table-density` scales the cell padding +
|
|
270
|
+
header row height of the Table / DataTable primitive. Default `1`
|
|
271
|
+
resolves to 1rem cell padding + 3rem header height; 0.75 is a compact
|
|
272
|
+
admin table, 1.25 is comfortable/touch-friendly. The derived tokens are
|
|
273
|
+
read by the `table-cell` / `table-head` utilities; changing the knob
|
|
274
|
+
cascades instantly via CSS inheritance — no JS prop needed.
|
|
275
|
+
═══════════════════════════════════════════════ */
|
|
276
|
+
--table-density: 1;
|
|
277
|
+
--table-cell-px: calc(1rem * var(--table-density));
|
|
278
|
+
--table-cell-py: calc(1rem * var(--table-density));
|
|
279
|
+
--table-head-h: calc(3rem * var(--table-density));
|
|
280
|
+
--table-head-px: calc(1rem * var(--table-density));
|
|
281
|
+
|
|
282
|
+
/* ═══════════════════════════════════════════════
|
|
283
|
+
§20 PLATFORM MOTION (AQ.W5)
|
|
284
|
+
|
|
285
|
+
The native-platform motion substrate axes. Three families, each read
|
|
286
|
+
by a `@supports`-gated CSS recipe in `scroll-driven.css`,
|
|
287
|
+
`animations.css` (§TOP-LAYER), and `view-transition.css` — every visual
|
|
288
|
+
knob a token so a consumer retunes without editing library source.
|
|
289
|
+
|
|
290
|
+
SCROLL-DRIVEN (scroll-driven.css). Values mirror the JS-fallback
|
|
291
|
+
composable defaults (`useScrollProgress` / `useStaggerReveal`) so the
|
|
292
|
+
native CSS path and the fallback path read identically — no visual seam
|
|
293
|
+
at the `@supports` boundary.
|
|
294
|
+
|
|
295
|
+
TOP-LAYER (animations.css §TOP-LAYER). The `@starting-style` entry/exit
|
|
296
|
+
grammar for native `<dialog>` / `[popover]` glass surfaces. Backdrop dim
|
|
297
|
+
uses the `hsl(var(--background) / α)` channel form — the legitimate
|
|
298
|
+
single-token alpha case (AQ.W2's color-mix migration is orthogonal).
|
|
299
|
+
|
|
300
|
+
VIEW-TRANSITION (view-transition.css). The shared `.gl-list-item` group
|
|
301
|
+
recipe + the `--vt-*` axes the `useViewTransition` substrate consumers
|
|
302
|
+
(dock layer swap, muster J's verdict re-rank) tune their swap against.
|
|
303
|
+
═══════════════════════════════════════════════ */
|
|
304
|
+
--scroll-progress-scroller: root;
|
|
305
|
+
--scroll-reveal-rise: 6px;
|
|
306
|
+
--scroll-reveal-range-end: 60%;
|
|
307
|
+
|
|
308
|
+
--top-layer-enter-scale: 0.96;
|
|
309
|
+
--top-layer-backdrop-blur: 8px;
|
|
310
|
+
--top-layer-backdrop-dim: 0.5;
|
|
311
|
+
|
|
312
|
+
--vt-duration: var(--duration-normal);
|
|
313
|
+
/* AX.W05 — ONE iOS-spring vocabulary: every spring-flavored transition reads
|
|
314
|
+
a governed `--spring-*` register. The legacy apple-spring cubic-bezier
|
|
315
|
+
(+27.5% overshoot) was a SECOND authority beside the regen `--spring-*`
|
|
316
|
+
cohort; it is EXCISED. Its emphatic-overshoot register maps to the playful
|
|
317
|
+
`--spring-bouncy` (the closest `linear()` overshoot stop-set), so the VT
|
|
318
|
+
default + the cards/top-layer transitions share one spring primitive
|
|
319
|
+
(CPU + GPU sample the same curve). No cubic-bezier fallback seed survives —
|
|
320
|
+
the `linear()` spring degrades to `ease` where `linear()` is unsupported. */
|
|
321
|
+
--vt-ease: var(--spring-bouncy);
|
|
322
|
+
--vt-rise: 8px;
|
|
323
|
+
|
|
324
|
+
/* AT.W6-dock-c / AU.W8 — the dock layer-swap morph timing, minted ONCE so
|
|
325
|
+
both engine paths are timing-IDENTICAL: the FLIP fallback (via
|
|
326
|
+
`--dock-motion-resize`), the native View-Transition group (its
|
|
327
|
+
`animation-timing-function`), AND the runtime SpringProgress driver
|
|
328
|
+
(AU.W8.3) consume this same `(0.32, 0.7)` source curve. Retires the AQ.W6
|
|
329
|
+
fork where the VT path ran `--vt-ease` (apple-spring, +27.5% overshoot)
|
|
330
|
+
while the FLIP ran the snappy spring. `--vt-ease` still defaults the
|
|
331
|
+
other VT recipes (`.gl-list-item`).
|
|
332
|
+
|
|
333
|
+
AU.W8 — RETARGET snappy → dock. `--spring-snappy` (ζ=0.65, +6.8%) read as
|
|
334
|
+
mechanical: a stiff plateau at ~48% with too little overshoot to feel
|
|
335
|
+
alive ("not iOS-smooth"). AW.W2 then retuned the dock spring to the
|
|
336
|
+
iOS-control register: `--spring-dock` ((0.32, 0.7), ~+4.6%) settles snappy
|
|
337
|
+
with a restrained overshoot — the felt iOS dock morph, off the prior
|
|
338
|
+
playful +18.5% register. The runtime driver's DOCK_SPRING const MIRRORS the
|
|
339
|
+
(0.32, 0.7) PRESETS row, so the CSS token and the JS-driven morph are
|
|
340
|
+
bit-identical. */
|
|
341
|
+
--dock-resize-spring: var(--spring-dock);
|
|
342
|
+
|
|
343
|
+
/* AT.W7-dock-b — dock-control press micro-feedback spring. A TRANSFORM-ONLY
|
|
344
|
+
spring (`scale`/`rotate`) the dock controls apply to their hover/press
|
|
345
|
+
activation so the squish reads with a touch of spring-back rather than a
|
|
346
|
+
flat ease. STRICTLY transform-scoped: it must never touch the surface-tier
|
|
347
|
+
`[data-held]` fades (background/border/box-shadow), which stay on
|
|
348
|
+
`--duration-fast var(--ease-standard)`. The duration pairs with
|
|
349
|
+
`--duration-fast`; consumers retune the whole feel via this one token.
|
|
350
|
+
|
|
351
|
+
AY.W-DOCK2 (D6) — the register is `--spring-smooth`, the §6 easing-doctrine
|
|
352
|
+
transform-press register (tokens.css §2: transform hover/press/active →
|
|
353
|
+
`--spring-smooth`/`--spring-snappy`, NEVER `--spring-bouncy`; a press must
|
|
354
|
+
settle, never overshoot into a visible bounce). The prior `--spring-bouncy`
|
|
355
|
+
ROOT default was off-doctrine, shadowed for the four named controls by a
|
|
356
|
+
per-surface re-point in dock-controls.css — the exact per-surface fork the
|
|
357
|
+
doctrine kills. The re-point is now a DEAD byte-identical redeclaration and is
|
|
358
|
+
DELETED; the ROOT token IS the doctrine register, so any other consumer of
|
|
359
|
+
`--dock-press-spring` inherits the correct smooth register. */
|
|
360
|
+
--dock-press-spring: var(--duration-fast) var(--spring-smooth);
|
|
361
|
+
}
|