@mkbabb/glass-ui 3.10.1 → 3.11.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/{CardAction-DrAcAV4d.js → CardAction-DuArVky-.js} +2 -2
- package/dist/{CommandShortcut-mV2e1aG6.js → CommandShortcut-CefCj5mt.js} +2 -2
- package/dist/{DataTable-C3E6jZ5B.js → DataTable-CUHMukiQ.js} +2 -2
- package/dist/DeckProgress-Dmk4_AKN.js +23 -0
- package/dist/{DialogContent-BxaaafFi.js → DialogContent-BRkT1cjP.js} +1 -1
- package/dist/{HoverPopover-CDA_SaCe.js → HoverPopover-2LOIW34a.js} +1 -1
- package/dist/InstrumentRail-CUJ05YVG.js +44 -0
- package/dist/{MetricBadge-idgrkqoP.js → MetricBadge-BZVWIxNy.js} +7 -5
- package/dist/{Notification-Cu0nN17_.js → Notification-DLMhblXR.js} +1 -1
- package/dist/{NumberFieldContent-CHEWghnY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
- package/dist/{PopoverContent-DpUvdYY-.js → PopoverContent-BId6ggf_.js} +1 -1
- package/dist/{Progress-BW-StFw2.js → Progress-iEuD9pxG.js} +1 -1
- package/dist/{ScrollingText-DruYCni_.js → ScrollingText-BPP84wKo.js} +1 -1
- package/dist/{SelectScrollDownButton-pirzjm--.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
- package/dist/{Switch-DeAqg6pi.js → Switch-Ch-k3Rv-.js} +1 -1
- package/dist/{TabsList-BAVzOZpg.js → TabsList-B8CVOQPC.js} +2 -2
- package/dist/{Toaster-CvuuW_y9.js → Toaster-1rYWrmAm.js} +46 -49
- package/dist/{ToggleGroupItem-DtD37b4G.js → ToggleGroupItem-COu_4IW4.js} +21 -17
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +5 -4
- package/dist/api.js +2 -2
- package/dist/aurora.js +70 -70
- package/dist/{badge-NdCQMvvB.js → badge-CaoFJzRb.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DyiWFAOE.js → button-DN39cGqL.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-B65wWyQz.js → color-C5ls_QF7.js} +7 -9
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/constants/presets.d.ts +62 -5
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/constellation/Constellation.vue.d.ts +0 -12
- package/dist/components/custom/constellation/constellationField.d.ts +151 -10
- package/dist/components/custom/constellation/index.d.ts +1 -3
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +0 -11
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +27 -0
- package/dist/components/custom/deck-progress/index.d.ts +2 -0
- 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/DockTabButton.vue.d.ts +4 -3
- package/dist/components/custom/dock/GlassDock.vue.d.ts +115 -3
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +0 -36
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +0 -44
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +37 -5
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +0 -17
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +41 -0
- package/dist/components/custom/glass-panel/index.d.ts +2 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +3 -4
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +8 -11
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +242 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +50 -0
- package/dist/components/custom/handmark/index.d.ts +21 -0
- package/dist/components/custom/handmark/ink.d.ts +11 -0
- package/dist/components/custom/handmark/texture.d.ts +39 -0
- package/dist/components/custom/handmark/types.d.ts +53 -0
- package/dist/components/custom/handmark/useHandMark.d.ts +87 -0
- package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +31 -0
- package/dist/components/custom/header-ribbon/index.d.ts +2 -0
- package/dist/components/custom/header-ribbon/types.d.ts +7 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +91 -0
- package/dist/components/custom/instrument-rail/index.d.ts +2 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +0 -1
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/slider/index.d.ts +19 -22
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/components/ui/toggle/index.d.ts +1 -1
- package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +7 -1
- package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +3 -1
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +13 -0
- package/dist/composables/color/index.d.ts +0 -12
- package/dist/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +21 -1
- package/dist/composables/glass/useSpecularTracking.d.ts +3 -12
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +0 -2
- package/dist/composables/motion/useRouteTransition.d.ts +42 -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 +225 -260
- package/dist/controls.js +14 -48
- package/dist/dark.d.ts +1 -1
- package/dist/dark.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 +345 -340
- package/dist/dockContext-BKeIMmNk.js +9 -0
- package/dist/{dropdown-menu-DVnQcA0E.js → dropdown-menu-D77jX6Df.js} +4 -7
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +79 -38
- package/dist/forms.js +2 -2
- package/dist/fourier-field.js +102 -137
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.d.ts +1 -0
- package/dist/glass-panel.js +44 -0
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +209 -287
- package/dist/goo-blob.js +212 -243
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +662 -0
- package/dist/header-ribbon.d.ts +1 -0
- package/dist/header-ribbon.js +63 -0
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/instrument-rail.d.ts +1 -0
- package/dist/instrument-rail.js +2 -0
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/{math-BUU9hHID.js → math-DTpRVC0e.js} +2 -18
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +70 -69
- package/dist/motion.js +37 -38
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-1OhFpaIC.js → presets-BP_ALM0m.js} +14 -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-ChSXcJpU.js → sheet-VZEtNFvO.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-sfl8gFDD.js → slider-ClgpP7EB.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +111 -15
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/layer-group.css +0 -22
- package/dist/styles/dock/layers.css +1 -11
- package/dist/styles/dock/morph.css +19 -95
- package/dist/styles/dock/shell.css +0 -12
- package/dist/styles/dock-controls.css +31 -28
- package/dist/styles/drawer.css +0 -2
- package/dist/styles/floating-panel.css +0 -2
- package/dist/styles/glass-refract.css +0 -2
- package/dist/styles/glass.css +1188 -31
- package/dist/styles/hover-popover.css +0 -2
- package/dist/styles/index.css +6 -24
- package/dist/styles/instrument-chassis.css +0 -4
- package/dist/styles/paper.css +68 -2
- package/dist/styles/theme.css +20 -13
- package/dist/styles/tokens.css +2360 -22
- package/dist/styles/typography.css +6 -18
- package/dist/styles/utilities.css +1291 -19
- package/dist/styles/view-transition.css +51 -0
- 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/{useAnimatedNumber-DfVgP4te.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
- package/dist/{useConfiguratorState-BdQXh9ie.js → useConfiguratorState-DxAqksK6.js} +1 -1
- package/dist/useGlassRenderer-D7YGOYiM.js +69 -0
- package/dist/{useGlobalDark-D7R9OypB.js → useGlobalDark-D1wgEqfW.js} +21 -2
- package/dist/useSpecularTracking-BVRZsRHA.js +26 -0
- package/dist/useSpringMount-BJSHcLl3.js +113 -0
- package/dist/useViewTransition-DaN5Zrox.js +21 -0
- package/dist/vReveal-zUIQk-rJ.js +53 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +57 -33
- package/src/styles/animations.css +111 -15
- package/src/styles/dock/layer-group.css +0 -22
- package/src/styles/dock/layers.css +1 -11
- package/src/styles/dock/morph.css +19 -95
- package/src/styles/dock/shell.css +0 -12
- package/src/styles/dock-controls.css +31 -28
- package/src/styles/glass.css +1188 -31
- package/src/styles/index.css +6 -24
- package/src/styles/paper.css +68 -2
- package/src/styles/theme.css +20 -13
- package/src/styles/tokens.css +2360 -22
- package/src/styles/typography.css +6 -18
- package/src/styles/utilities.css +1291 -19
- package/src/styles/view-transition.css +51 -0
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +0 -1
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +0 -35
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
- package/dist/components/custom/constellation/constants.d.ts +0 -36
- package/dist/components/custom/constellation/constellationDraw.d.ts +0 -18
- package/dist/components/custom/constellation/constellationInteraction.d.ts +0 -102
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +0 -15
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +0 -131
- package/dist/components/custom/dock/constants.d.ts +0 -23
- package/dist/components/custom/fourier-field/presets.d.ts +0 -54
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +0 -18
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +0 -41
- package/dist/components/custom/goo-blob/constants.d.ts +0 -52
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +0 -1
- package/dist/components/custom/tabs/constants.d.ts +0 -12
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
- package/dist/components/custom/underline/index.d.ts +0 -2
- package/dist/components/custom/underline/types.d.ts +0 -56
- package/dist/composables/motion/curves.d.ts +0 -48
- package/dist/composables/motion/springPresets.d.ts +0 -33
- package/dist/composables/motion/suite.d.ts +0 -2
- package/dist/dockContext-bho8B1A4.js +0 -17
- package/dist/motion-curves.d.ts +0 -1
- package/dist/motion-curves.js +0 -130
- package/dist/springPresets-aRSm-4_k.js +0 -40
- package/dist/styles/glass/a11y-fallback.css +0 -245
- package/dist/styles/glass/ladder.css +0 -304
- package/dist/styles/glass/material.css +0 -238
- package/dist/styles/glass/progress-rail.css +0 -78
- package/dist/styles/glass/squircle.css +0 -66
- package/dist/styles/glass/surfaces.css +0 -306
- package/dist/styles/tokens/color-radius.css +0 -250
- package/dist/styles/tokens/dark-arm.css +0 -194
- package/dist/styles/tokens/glass.css +0 -413
- package/dist/styles/tokens/light-dark.css +0 -158
- package/dist/styles/tokens/offsets-sizing.css +0 -406
- package/dist/styles/tokens/property-regs.css +0 -169
- package/dist/styles/tokens/scale-paper.css +0 -361
- package/dist/styles/tokens/scheme-motion.css +0 -334
- package/dist/styles/tokens/shadow.css +0 -132
- package/dist/styles/utilities/a11y-overrides.css +0 -140
- package/dist/styles/utilities/animate.css +0 -26
- package/dist/styles/utilities/base.css +0 -365
- package/dist/styles/utilities/btn.css +0 -399
- package/dist/styles/utilities/components.css +0 -317
- package/dist/underline.d.ts +0 -1
- package/dist/underline.js +0 -85
- package/dist/useSpecularTracking-DFK_fhpG.js +0 -32
- package/dist/useSpringMount-DXUzxBjV.js +0 -108
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/src/styles/glass/a11y-fallback.css +0 -245
- package/src/styles/glass/ladder.css +0 -304
- package/src/styles/glass/material.css +0 -238
- package/src/styles/glass/progress-rail.css +0 -78
- package/src/styles/glass/squircle.css +0 -66
- package/src/styles/glass/surfaces.css +0 -306
- package/src/styles/tokens/color-radius.css +0 -250
- package/src/styles/tokens/dark-arm.css +0 -194
- package/src/styles/tokens/glass.css +0 -413
- package/src/styles/tokens/light-dark.css +0 -158
- package/src/styles/tokens/offsets-sizing.css +0 -406
- package/src/styles/tokens/property-regs.css +0 -169
- package/src/styles/tokens/scale-paper.css +0 -361
- package/src/styles/tokens/scheme-motion.css +0 -334
- package/src/styles/tokens/shadow.css +0 -132
- package/src/styles/utilities/a11y-overrides.css +0 -140
- package/src/styles/utilities/animate.css +0 -26
- package/src/styles/utilities/base.css +0 -365
- package/src/styles/utilities/btn.css +0 -399
- package/src/styles/utilities/components.css +0 -317
- /package/dist/{CollapsibleContent-Drow5WkV.js → CollapsibleContent-CP9qF1v4.js} +0 -0
- /package/dist/{DialogFooter-DufLHi0y.js → DialogFooter-Gprw8H_A.js} +0 -0
- /package/dist/{IconTooltip-BrQ5p181.js → IconTooltip-Cus0fvK0.js} +0 -0
- /package/dist/{Input-B-F818RU.js → Input-xuDwALQR.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-DWghtRt7.js → _plugin-vue_export-helper-ok8pgSl5.js} +0 -0
- /package/dist/{compile-Ce_V55zi.js → compile-BOXjLUxu.js} +0 -0
- /package/dist/{constants-C8NMonuo.js → constants-yKeKnE84.js} +0 -0
- /package/dist/{prng-CjVgzjQT.js → prng-D27-B3tK.js} +0 -0
- /package/dist/{resolveCanvasColor-CRvVzOvP.js → resolveCanvasColor-BBiYfp8g.js} +0 -0
- /package/dist/{useCanvas2D-CSeH8h16.js → useCanvas2D-ClrQuZtp.js} +0 -0
- /package/dist/{useIntersectionPause-DAdVPVp4.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
- /package/dist/{useInterval-D3USn0yc.js → useInterval-Dsmqwi03.js} +0 -0
- /package/dist/{useKeyboardShortcuts-i8tHd5WO.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
- /package/dist/{useScrollProgress-CcgmgMQt.js → useScrollProgress-CffFGLa5.js} +0 -0
- /package/dist/{useSortable-DnyGXKKY.js → useSortable-C8ReQ50P.js} +0 -0
- /package/dist/{useTextHighlight-B3b10W6r.js → useTextHighlight-CWEi25hf.js} +0 -0
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
/* tokens/light-dark.css
|
|
2
|
-
§-1a coarse-pointer comfort + §-1b light-dark() color architecture — the @media (pointer:coarse) / @media (min-resolution) / @supports (light-dark()) overrides. After the master token partials (overrides 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
|
-
/* AX.W51 D18 — the GLOBAL coarse-pointer comfort amplification. The WHOLE library
|
|
7
|
-
— buttons, inputs, badges, toggles, the dock (a specialization that reads
|
|
8
|
-
`--ui-scale`) — grows ~1.5× on touch from this ONE place, the W45 dock-only 1.5×
|
|
9
|
-
lifted to the master scalar so the touch scale is CONSISTENT across the library
|
|
10
|
-
(at HEAD the dock grew but the buttons did not — the three-scale split). The
|
|
11
|
-
WCAG-2.5.5 44px touch floor is enforced HERE too: `--control-floor` lifts to
|
|
12
|
-
`--touch-target`, so every scaled control-height `max(scaled, floor)` clamps at
|
|
13
|
-
≥ 44px regardless of the scalar (a consumer dialing `--ui-scale` below 1 still
|
|
14
|
-
cannot drop a control under the target). Fine-pointer is byte-identical
|
|
15
|
-
(`--ui-scale` stays 1). `--ui-coarse-scale` is the public default a consumer
|
|
16
|
-
retunes. */
|
|
17
|
-
@media (pointer: coarse) {
|
|
18
|
-
:root {
|
|
19
|
-
--ui-scale: var(--ui-coarse-scale, 1.5);
|
|
20
|
-
--control-floor: var(--touch-target, 2.75rem);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* AV.W7 F2 — high-resolution overlay-blur restore. On a 2dppx+ display the
|
|
25
|
-
richer 24px overlay wash is amortised by the extra device pixels (the blur
|
|
26
|
-
samples a denser backing store), so the design ceiling is restored where it
|
|
27
|
-
is affordable. Standard-density displays keep the 15px budget radius set in
|
|
28
|
-
§-1a `:root`. Token-only override — every overlay surface that reads
|
|
29
|
-
`--glass-blur-overlay-radius` inherits the restored value automatically. */
|
|
30
|
-
@media (min-resolution: 2dppx) {
|
|
31
|
-
:root {
|
|
32
|
-
--glass-blur-overlay-radius: 24px;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/* ═══════════════════════════════════════════════
|
|
37
|
-
§-1b LIGHT-DARK() COLOR ARCHITECTURE (AQ.W2 §2)
|
|
38
|
-
|
|
39
|
-
Every PAIRED color token (a token whose `:root` and `.dark` values are
|
|
40
|
-
BOTH a <color> and differ) folds onto one `light-dark(light, dark)`
|
|
41
|
-
declaration, keyed off the element's `color-scheme` (§-1). This is the
|
|
42
|
-
single-source-of-truth collapse of the `.dark` mirror AND the dynamism
|
|
43
|
-
win: an unregistered custom property holding a `light-dark()` expression
|
|
44
|
-
re-resolves under a descendant `color-scheme` override (a `.dark`
|
|
45
|
-
code-block embedded in a light page, or vice-versa).
|
|
46
|
-
|
|
47
|
-
DISCIPLINE (§2b — BINDING): these tokens MUST stay UNREGISTERED (no
|
|
48
|
-
`@property … syntax:"<color>"`). A registered <color> would resolve ONCE
|
|
49
|
-
at the declaring element and inherit the RESOLVED color, freezing the
|
|
50
|
-
descendant re-resolution. glass-ui's only `@property` registrations (§18)
|
|
51
|
-
are non-color (percentage/length), so the discipline holds — W2 adds NO
|
|
52
|
-
color `@property`.
|
|
53
|
-
|
|
54
|
-
The semantic `var()`-aliases (`--background`, `--muted`, `--border`,
|
|
55
|
-
`--secondary`, `--accent`, `--card-foreground`, …) do NOT appear here:
|
|
56
|
-
they point at the SAME source name in both modes and auto-track once the
|
|
57
|
-
`--neutral-*` ladder + `--foreground` resolve via `light-dark()`. Their
|
|
58
|
-
redundant `.dark` re-declarations DELETE below.
|
|
59
|
-
|
|
60
|
-
FALLBACK (§2c): this whole block is `@supports`-gated, so an engine
|
|
61
|
-
WITHOUT `light-dark()` skips it and the retained `.dark` class block (the
|
|
62
|
-
SOLE fallback floor) drives dark exactly as at HEAD. `light-dark()` is the
|
|
63
|
-
enhancement OVER the class — not a parallel alias. Baseline Newly
|
|
64
|
-
Available; the fallback floor is the pre-existing class block (net-zero
|
|
65
|
-
new fallback LOC).
|
|
66
|
-
═══════════════════════════════════════════════ */
|
|
67
|
-
@supports (color: light-dark(white, black)) {
|
|
68
|
-
:root {
|
|
69
|
-
/* Neutral ladder — the source the var()-aliases track */
|
|
70
|
-
--neutral-0: light-dark(hsl(48 12% 98%), hsl(24 8% 6%));
|
|
71
|
-
--neutral-1: light-dark(hsl(48 10% 95%), hsl(24 6% 11%));
|
|
72
|
-
--neutral-2: light-dark(hsl(48 9% 90%), hsl(24 5% 16%));
|
|
73
|
-
--neutral-3: light-dark(hsl(48 8% 82%), hsl(24 5% 22%));
|
|
74
|
-
--neutral-4: light-dark(hsl(48 7% 70%), hsl(24 5% 34%));
|
|
75
|
-
--neutral-5: light-dark(hsl(48 6% 40%), hsl(48 5% 62%));
|
|
76
|
-
--neutral-6: light-dark(hsl(48 7% 30%), hsl(48 6% 72%));
|
|
77
|
-
|
|
78
|
-
/* Core surfaces + ink */
|
|
79
|
-
--foreground: light-dark(hsl(24 10% 10%), hsl(48 10% 90%));
|
|
80
|
-
--card: light-dark(var(--neutral-0), hsl(24 8% 10%));
|
|
81
|
-
--popover: light-dark(var(--neutral-0), hsl(24 8% 10%));
|
|
82
|
-
--surface-public-data-panel: light-dark(hsl(44 16% 96%), hsl(36 9% 12%));
|
|
83
|
-
|
|
84
|
-
--primary: light-dark(hsl(24 10% 10%), hsl(48 10% 90%));
|
|
85
|
-
--primary-foreground: light-dark(var(--neutral-0), hsl(24 10% 10%));
|
|
86
|
-
/* AX.W44 — dark-arm lift. The stock shadcn dark `hsl(0 62.8% 30.6%)`
|
|
87
|
-
(L≈30.6) was a saturated-PLATE value used AS INK over `--card` by the
|
|
88
|
-
Alert destructive variant — 1.75:1 over card (illegible) / 1.91:1 vs the
|
|
89
|
-
page. Lifted to `hsl(0 80% 60%)`: 4.60:1 as text over `--card` (clears the
|
|
90
|
-
4.5 body floor) AND 5.03:1 as a plate vs the dark page (clears the 3.0
|
|
91
|
-
graphic floor). The light arm is UNCHANGED (already 4.70:1). Lockstep with
|
|
92
|
-
the `.dark` fallback floor below (§2c). */
|
|
93
|
-
--destructive: light-dark(hsl(0 72% 50%), hsl(0 80% 60%));
|
|
94
|
-
--destructive-foreground: light-dark(var(--neutral-0), hsl(48 10% 90%));
|
|
95
|
-
--ring: light-dark(hsl(24 10% 10%), hsl(48 10% 70%));
|
|
96
|
-
--shadow: light-dark(hsl(24 10% 10%), hsl(0 0% 5%));
|
|
97
|
-
|
|
98
|
-
/* §4 native-control accent — the per-mode arms (dark reads the
|
|
99
|
-
mid-tone ring for checkmark-glyph contrast headroom, NOT the
|
|
100
|
-
near-white dark primary). Joins the light-dark() collapse; still
|
|
101
|
-
re-specified as `accent-color` inside `.dark` per §2b. */
|
|
102
|
-
--accent-color: light-dark(var(--primary), var(--ring));
|
|
103
|
-
|
|
104
|
-
/* Section palette — jewel tones brightened L for dark (oklch pairs;
|
|
105
|
-
AV.W16 TW2 — hue preserved, L evened) */
|
|
106
|
-
--section-color-0: light-dark(oklch(0.552 0.192 359.8), oklch(0.721 0.145 354.0));
|
|
107
|
-
--section-color-1: light-dark(oklch(0.502 0.165 305.9), oklch(0.733 0.113 308.2));
|
|
108
|
-
--section-color-2: light-dark(oklch(0.484 0.163 265.5), oklch(0.718 0.107 268.4));
|
|
109
|
-
--section-color-3: light-dark(oklch(0.542 0.089 222.8), oklch(0.767 0.091 219.9));
|
|
110
|
-
--section-color-4: light-dark(oklch(0.551 0.088 171.1), oklch(0.776 0.105 172.6));
|
|
111
|
-
--section-color-5: light-dark(oklch(0.623 0.124 69.6), oklch(0.813 0.109 78.2));
|
|
112
|
-
--section-color-6: light-dark(oklch(0.579 0.201 30.4), oklch(0.693 0.151 28.1));
|
|
113
|
-
--section-color-7: light-dark(oklch(0.532 0.180 317.5), oklch(0.739 0.134 318.1));
|
|
114
|
-
--section-color-8: light-dark(oklch(0.520 0.176 8.4), oklch(0.709 0.142 2.3));
|
|
115
|
-
--section-color-9: light-dark(oklch(0.492 0.038 239.6), oklch(0.763 0.032 239.0));
|
|
116
|
-
--section-color-10: light-dark(oklch(0.556 0.103 128.8), oklch(0.794 0.116 127.9));
|
|
117
|
-
--section-color-11: light-dark(oklch(0.601 0.092 208.0), oklch(0.805 0.095 206.7));
|
|
118
|
-
--section-color-12: light-dark(oklch(0.513 0.163 291.9), oklch(0.719 0.115 295.6));
|
|
119
|
-
|
|
120
|
-
--accent-pink: light-dark(oklch(0.613 0.197 353.8), oklch(0.683 0.131 354.7));
|
|
121
|
-
--section-heading: light-dark(oklch(0.545 0.189 352.8), oklch(0.711 0.123 349.3));
|
|
122
|
-
--accent-red: light-dark(oklch(0.574 0.216 27.5), oklch(0.644 0.165 22.9));
|
|
123
|
-
|
|
124
|
-
/* Viz basis (amber/green stay var()-aliases → auto-track) */
|
|
125
|
-
--viz-fourier: light-dark(oklch(0.579 0.201 30.4), oklch(0.693 0.151 28.1));
|
|
126
|
-
--viz-chebyshev: light-dark(oklch(0.484 0.163 265.5), oklch(0.718 0.107 268.4));
|
|
127
|
-
--viz-legendre: light-dark(oklch(0.532 0.180 317.5), oklch(0.739 0.134 318.1));
|
|
128
|
-
|
|
129
|
-
/* WCAG companion chart labels */
|
|
130
|
-
--chart-ping-label: light-dark(oklch(0.40 0.18 230), oklch(0.85 0.12 230));
|
|
131
|
-
--chart-download-label: light-dark(oklch(0.40 0.20 22), oklch(0.85 0.14 22));
|
|
132
|
-
--chart-upload-label: light-dark(oklch(0.40 0.16 55), oklch(0.85 0.12 55));
|
|
133
|
-
--chart-jitter-label: light-dark(oklch(0.40 0.20 305), oklch(0.85 0.14 305));
|
|
134
|
-
|
|
135
|
-
/* Semantic UI accents */
|
|
136
|
-
--tier-featured: light-dark(oklch(0.841 0.173 84.2), oklch(0.867 0.165 88.7));
|
|
137
|
-
--tier-saved: light-dark(oklch(0.676 0.176 252.3), oklch(0.748 0.135 250.1));
|
|
138
|
-
--like: light-dark(oklch(0.633 0.200 24.9), oklch(0.690 0.162 22.2));
|
|
139
|
-
--success: light-dark(oklch(0.720 0.192 149.5), oklch(0.805 0.186 151.6));
|
|
140
|
-
--warning: light-dark(oklch(0.770 0.165 70.6), oklch(0.809 0.150 76.6));
|
|
141
|
-
--info: light-dark(oklch(0.626 0.186 259.6), oklch(0.713 0.138 259.5));
|
|
142
|
-
--delete: light-dark(oklch(0.597 0.198 25.5), oklch(0.644 0.170 23.1));
|
|
143
|
-
|
|
144
|
-
/* Semantic foregrounds (warning-foreground is identical both modes
|
|
145
|
-
→ stays a single light-mode declaration, no light-dark() needed) */
|
|
146
|
-
--success-foreground: light-dark(var(--neutral-0), hsl(48 10% 96%));
|
|
147
|
-
--info-foreground: light-dark(var(--neutral-0), hsl(48 10% 96%));
|
|
148
|
-
|
|
149
|
-
/* Cartoon-shadow color primitives (§2d — plain colors, convert) */
|
|
150
|
-
--shadow-cartoon-color: light-dark(rgb(0 0 0 / 0.12), rgb(255 255 255 / 0.07));
|
|
151
|
-
--shadow-cartoon-color-soft: light-dark(rgb(0 0 0 / 0.06), rgb(255 255 255 / 0.03));
|
|
152
|
-
|
|
153
|
-
/* Gold family */
|
|
154
|
-
--gold: light-dark(oklch(0.751 0.147 84.2), oklch(0.784 0.143 86.0));
|
|
155
|
-
--gold-light: light-dark(oklch(0.890 0.183 96.1), oklch(0.898 0.182 97.4));
|
|
156
|
-
--gold-dark: light-dark(oklch(0.599 0.132 64.2), oklch(0.678 0.150 63.8));
|
|
157
|
-
}
|
|
158
|
-
}
|
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
/* tokens/offsets-sizing.css
|
|
2
|
-
§9 animation offsets · §10 sizing (control heights, dropdown, carousel, stack-overlap, touch-target floor).
|
|
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
|
-
§9 ANIMATION OFFSETS
|
|
8
|
-
═══════════════════════════════════════════════ */
|
|
9
|
-
/* Hover lift offsets */
|
|
10
|
-
--lift-sm: -1px;
|
|
11
|
-
--lift-md: -2px;
|
|
12
|
-
--lift-lg: -4px;
|
|
13
|
-
|
|
14
|
-
/* Layout tokens */
|
|
15
|
-
--mask-fade-width: 1rem;
|
|
16
|
-
/* J.W3.C — dock content overflow caps. When dock content exceeds
|
|
17
|
-
these dimensions, the inner `.dock-layers` (horizontal) /
|
|
18
|
-
`.glass-dock.vertical` (rail) container scrolls with a
|
|
19
|
-
`.scroll-fade-{x,y}` mask-fade so the boundary feathers rather
|
|
20
|
-
than cliffs. Defaults clamp to 80vw / 80vh capped at sensible
|
|
21
|
-
desktop widths; consumers override per-dock by setting either
|
|
22
|
-
token directly on a `.glass-dock` instance. User findings 1 + 5a. */
|
|
23
|
-
/* AX.W04 — `--dock-max-inline-size` is the canonical inline cap EVERY overflow
|
|
24
|
-
strategy reads: `overflow="scroll"` scrolls past it, and `overflow="wrap"`
|
|
25
|
-
wraps to N rows on the over-cap crossing (the dock shrink-wraps to content,
|
|
26
|
-
`max-inline-size` caps that intrinsic width at this token). The prior
|
|
27
|
-
`--dock-overflow-bp: 640px` viewport-breakpoint token (the magic-640
|
|
28
|
-
snap-back) is DELETED — the wrap is content-driven, not viewport-coupled, so
|
|
29
|
-
there is no breakpoint threshold to name. */
|
|
30
|
-
--dock-max-inline-size: min(80vw, 64rem);
|
|
31
|
-
--dock-max-block-size: min(80vh, 48rem);
|
|
32
|
-
|
|
33
|
-
/* AB.W1.T1 — chassis max-block-size guardrail.
|
|
34
|
-
Maximum block size a centred consumer-app card may consume while
|
|
35
|
-
preserving the inline dock footprint. The recipe subtracts the
|
|
36
|
-
consumer-owned `--dock-footer-space` (dock height + dock inset +
|
|
37
|
-
card-edge inset) and `--page-padding-top` from the dynamic viewport,
|
|
38
|
-
then takes one further rem of breathing room so the card never
|
|
39
|
-
butts the dock — the user mandate is `≥ 1rem visible gap above
|
|
40
|
-
dock`. Both consumer tokens carry safe fallbacks for callers that
|
|
41
|
-
have not declared them.
|
|
42
|
-
|
|
43
|
-
Consumers should shrink internal regions (meter, readout, timeline)
|
|
44
|
-
before falling back to scroll. This token is a guardrail against
|
|
45
|
-
chassis overflow, NOT a license to make the card scroll as the
|
|
46
|
-
default solution; clamp-first / no-scroll-first is the canon.
|
|
47
|
-
See DESIGN.md `## Chassis sizing — dock-adjusted viewport`. */
|
|
48
|
-
--chassis-max-block-size: calc(
|
|
49
|
-
100dvh
|
|
50
|
-
- var(--dock-footer-space, 5.75rem)
|
|
51
|
-
- var(--page-padding-top, 0rem)
|
|
52
|
-
- 1rem
|
|
53
|
-
);
|
|
54
|
-
/* R0G-2 (AO.W3/W4) — chassis mobile dial-reserve canon. instrument-
|
|
55
|
-
chassis.css's mobile breakpoint reserves the dial's final box from
|
|
56
|
-
frame 0 via these vars (with the same values as inline fallbacks, the
|
|
57
|
-
safety net). Token-first home so the vars resolve canonically. */
|
|
58
|
-
--instrument-dial-min-height-mobile: 24rem;
|
|
59
|
-
--instrument-dial-meter-reserve-mobile: minmax(0, 1fr);
|
|
60
|
-
|
|
61
|
-
--max-width-input: 24rem;
|
|
62
|
-
--input-min-width-sm: 5rem;
|
|
63
|
-
--min-width-input-sm: var(--input-min-width-sm);
|
|
64
|
-
/* AU.W8b.4 — canonical popover width (Combobox list + anchor). Lifts the
|
|
65
|
-
`w-[200px]` arbitrary-value wrap to the `w-popover` @theme utility. */
|
|
66
|
-
--popover-width: 200px;
|
|
67
|
-
--chart-height-compact: 15rem;
|
|
68
|
-
--chart-height-default: 22.5rem;
|
|
69
|
-
--chart-height-large: 25rem;
|
|
70
|
-
--chart-margin: 1.25rem;
|
|
71
|
-
--paper-texture-size: 200px 200px;
|
|
72
|
-
|
|
73
|
-
/* Border opacity scale */
|
|
74
|
-
--border-opacity-light: 0.15;
|
|
75
|
-
--border-opacity-medium: 0.25;
|
|
76
|
-
--border-opacity-strong: 0.6;
|
|
77
|
-
|
|
78
|
-
/* ═══════════════════════════════════════════════
|
|
79
|
-
§10 SIZING
|
|
80
|
-
═══════════════════════════════════════════════ */
|
|
81
|
-
/* ── The ONE comfortable-sizing scale doctrine (AX.W51 D18) ──────────────
|
|
82
|
-
`--ui-scale` is the MASTER comfortable-sizing scalar — ONE unitless knob
|
|
83
|
-
(registered @property <number>, inherits:true, default the identity 1)
|
|
84
|
-
every interactive-control magnitude derives through `calc(<base> *
|
|
85
|
-
var(--ui-scale))`, so a single override grows control HEIGHT + PADDING +
|
|
86
|
-
GAP + FONT-SIZE + GLYPH in LOCKSTEP, proportion preserved, no per-component
|
|
87
|
-
hack. The cohorts below (`--control-h-*` heights, `--control-text*` control
|
|
88
|
-
fonts, `--ui-glyph*` glyphs) are its reading surfaces; the CVA bases + the
|
|
89
|
-
`.btn-pill`/`.input-pill` pills consume them.
|
|
90
|
-
|
|
91
|
-
ONE scale system, not three. The dock (`--dock-scale`) and the dropdown
|
|
92
|
-
family (`--dropdown-text`, W50) are SPECIALIZATIONS that read this axis:
|
|
93
|
-
`--dock-scale: calc(var(--ui-scale) * var(--dock-local-scale, 1))` — the
|
|
94
|
-
dock multiplies ON TOP of the global comfort axis (its existing geometry
|
|
95
|
-
`calc` cascade inherits the global axis for free, zero edit). A consumer
|
|
96
|
-
re-tints the whole library's comfort from ONE `:root { --ui-scale: … }`
|
|
97
|
-
override (or a scoped region — a dense data-table sets it lower) — the
|
|
98
|
-
token-first axis.
|
|
99
|
-
|
|
100
|
-
EXCLUDED — the φ-DISPLAY ladder (`--type-display-*` / `--type-title` /
|
|
101
|
-
`--type-heading` / `--type-subheading`): a hero/title is a TYPOGRAPHIC
|
|
102
|
-
identity, NOT a touch target, so it does NOT grow on the comfort/coarse
|
|
103
|
-
axis. Only interactive-CONTROL text rides `--ui-scale`. Containers (card /
|
|
104
|
-
panel radii + paddings) are separate `--radius-*` / `--space-*` axes.
|
|
105
|
-
|
|
106
|
-
The desktop default is the IDENTITY (1) — byte-exact preservation, no
|
|
107
|
-
reflow of shipped consumers. The comfort GROWTH lives at the coarse-pointer
|
|
108
|
-
default (`--ui-coarse-scale`, §below) + the consumer override. The
|
|
109
|
-
WCAG-2.5.5 44px touch floor survives as a `max(…, --control-floor)` clamp
|
|
110
|
-
inside the scaled control-size (the coarse block lifts `--control-floor` to
|
|
111
|
-
`--touch-target`, so a sub-1 scale cannot drop a control under the target).
|
|
112
|
-
Coordinates with W54's `--glass-level` + W55's `--glass-tint-*` — SEPARATE
|
|
113
|
-
axes (size vs material vs legibility); a control is comfortably-sized AND
|
|
114
|
-
glass AND legible, three orthogonal knobs. */
|
|
115
|
-
--ui-scale: 1;
|
|
116
|
-
/* The global coarse-pointer comfort default — the WHOLE library grows ~1.5×
|
|
117
|
-
on touch from ONE place (the @media (pointer: coarse) block at §below lifts
|
|
118
|
-
:root --ui-scale to this). The dock's prior parallel 1.5× becomes the global
|
|
119
|
-
default it now shares. Public library-default identity — a consumer sets
|
|
120
|
-
1.3 / 1.75 on :root or a scope. */
|
|
121
|
-
--ui-coarse-scale: 1.5;
|
|
122
|
-
/* The control-height cohort — the h-7/h-9/h-10/h-11 register (28/36/40/44px)
|
|
123
|
-
the CVA size rungs encode, each scaled by the master axis. The CVA rungs
|
|
124
|
-
read these via `h-[var(--control-h-*)]` instead of the raw `h-N` literal.
|
|
125
|
-
`--control-floor` is the WCAG-2.5.5 clamp seam (0 at desktop, lifted to
|
|
126
|
-
--touch-target under coarse-pointer); each height is `max(scaled, floor)`. */
|
|
127
|
-
--control-floor: 0px;
|
|
128
|
-
--control-h-xs: max(calc(1.75rem * var(--ui-scale)), var(--control-floor));
|
|
129
|
-
--control-h-sm: max(calc(2.25rem * var(--ui-scale)), var(--control-floor));
|
|
130
|
-
--control-h-md: max(calc(2.5rem * var(--ui-scale)), var(--control-floor));
|
|
131
|
-
--control-h-lg: max(calc(2.75rem * var(--ui-scale)), var(--control-floor));
|
|
132
|
-
/* The control-FONT register (RED 3 — the user's "font too small"). A comfort
|
|
133
|
-
multiplier BETWEEN the static φ-ladder rung and the painted control font,
|
|
134
|
-
so interactive-control text grows on the comfort axis while the φ-DISPLAY
|
|
135
|
-
ladder stays a pure typographic scale (display headings do NOT grow on
|
|
136
|
-
touch). `--control-text` is the workhorse (the `text-sm` register the
|
|
137
|
-
buttons/inputs/triggers carried); `--control-text-sm` is the quieter rung
|
|
138
|
-
(the `text-xs` badge/caption register). W50's `--dropdown-text` IS the
|
|
139
|
-
picker-family specialization of this register.
|
|
140
|
-
|
|
141
|
-
AY.W-SCALE1 — the no-double-vw reconcile: the desktop-fluid viewport base
|
|
142
|
-
lives ONCE in `--type-small` / `--type-caption` (typography.css §scale — a
|
|
143
|
-
gentle `clamp(…vw…)` so the control font grows on a wide display); the
|
|
144
|
-
`--ui-scale` comfort scalar multiplies that FLUID base exactly ONCE HERE. The
|
|
145
|
-
vw term is applied once (in the rung), the comfort factor once (here) — under
|
|
146
|
-
the coarse 1.5× the font grows by the comfort factor ONCE, NOT vw×1.5
|
|
147
|
-
over-scaled. Do NOT inline a second clamp() here, and do NOT multiply the rung
|
|
148
|
-
by --ui-scale at the rung. */
|
|
149
|
-
--control-text: calc(var(--type-small) * var(--ui-scale));
|
|
150
|
-
--control-text-sm: calc(var(--type-caption) * var(--ui-scale));
|
|
151
|
-
/* The control-GLYPH cohort (RED 4 — the glyph grows WITH the box). The
|
|
152
|
-
1rem/0.875rem control-glyph register the `size-4`/`size-3.5` literals
|
|
153
|
-
encode; the un-sized-<svg> CVA rule reads these via
|
|
154
|
-
`size-[var(--ui-glyph)]`, KEEPING the `:not([class*=size-])` host-sized-icon
|
|
155
|
-
escape intact (an explicit `size-9` still wins). */
|
|
156
|
-
--ui-glyph: calc(1rem * var(--ui-scale));
|
|
157
|
-
--ui-glyph-sm: calc(0.875rem * var(--ui-scale));
|
|
158
|
-
|
|
159
|
-
/* ── The picker-family type-scale (AX.W50 D17) ───────────────────────────
|
|
160
|
-
ONE governed two-rung scale the WHOLE shadcn picker family (Select /
|
|
161
|
-
DropdownMenu / Combobox / ContextMenu / Command / MultiSelect) reads, so the
|
|
162
|
-
family paints at ONE uniform scale instead of the scattered raw
|
|
163
|
-
`text-sm`/`text-xs` Tailwind-literal lottery (item rows at `text-sm`,
|
|
164
|
-
headings/shortcuts at `text-xs`, the two filter inputs at mismatched heights).
|
|
165
|
-
A consumer re-tints the whole family from ONE override.
|
|
166
|
-
|
|
167
|
-
It is a SPECIALIZATION of W51's control-font register (one scale system, not
|
|
168
|
-
three): `--dropdown-text` reads `--control-text` (the comfort-scaled `text-sm`)
|
|
169
|
-
and `--dropdown-text-secondary` reads `--control-text-sm` (the comfort-scaled
|
|
170
|
-
`text-xs`), so the picker family rides the SAME `--ui-scale` comfort axis as
|
|
171
|
-
every other control — a `--ui-scale` bump grows the dropdowns too. A consumer
|
|
172
|
-
wanting the family LARGER than the rest overrides `--dropdown-text` directly
|
|
173
|
-
(e.g. `var(--type-body)`); the override re-resolves every family surface.
|
|
174
|
-
|
|
175
|
-
Scale-contract (which surface reads which rung):
|
|
176
|
-
• PRIMARY (`--dropdown-text`) → item rows, triggers, filter inputs, empties.
|
|
177
|
-
• SECONDARY (`--dropdown-text-secondary`) → section labels, group-headings,
|
|
178
|
-
keyboard shortcuts (the quieter-than-item caption register; resolves the
|
|
179
|
-
witness-2 contradiction — the Select/DropdownMenu/ContextMenu labels
|
|
180
|
-
collapse DOWN to the secondary rung to match the Combobox/Command headings,
|
|
181
|
-
ONE rung for the section-label role family-wide).
|
|
182
|
-
`--dropdown-input-height` unifies the two filter-input heights (Combobox was
|
|
183
|
-
h-10, Command was h-11) onto ONE register — a specialization of W51's
|
|
184
|
-
`--control-h-md` so the picker input scales on the comfort axis with the font. */
|
|
185
|
-
--dropdown-text: var(--control-text);
|
|
186
|
-
--dropdown-text-secondary: var(--control-text-sm);
|
|
187
|
-
--dropdown-input-height: var(--control-h-md);
|
|
188
|
-
|
|
189
|
-
--size-icon-btn: 2.5rem;
|
|
190
|
-
--icon-xs: 0.75rem;
|
|
191
|
-
--icon-sm: 0.875rem;
|
|
192
|
-
--icon-md: 1rem;
|
|
193
|
-
--icon-lg: 1.25rem;
|
|
194
|
-
--icon-xl: 1.5rem;
|
|
195
|
-
/* V.W2 T9 — 32px rung; spinner glyphs (Loader2) + dense table-row buttons.
|
|
196
|
-
Naming follows the radius ladder + Tailwind convention (2xl > xl > xxl) —
|
|
197
|
-
see B6 §2.4 for the naming rationale. */
|
|
198
|
-
--icon-2xl: 2rem;
|
|
199
|
-
/* V.W2 T10 — 40px rung; empty-state hero glyph (DashboardMap MapIcon).
|
|
200
|
-
AI.W5-ζ — rebound from `2.5rem` literal to `var(--size-icon-btn)` so
|
|
201
|
-
the alignment is contractual single-source-of-truth rather than the
|
|
202
|
-
coincidental numerical match noted prior. */
|
|
203
|
-
--icon-3xl: var(--size-icon-btn);
|
|
204
|
-
/* V.W2 T11 — 56px rung; FlowSelector school/home survey-flow picker.
|
|
205
|
-
Largest rung in the icon ladder; reserved for hero-class glyphs. */
|
|
206
|
-
--icon-hero: 3.5rem;
|
|
207
|
-
|
|
208
|
-
/* Golden-ratio spacing rungs — φ² and φ³. Preemptive substrate; W4 hero
|
|
209
|
-
chassis + W5 StoryChassis migration land the consumers. R3 §A row 1.
|
|
210
|
-
The 0..4 rungs are not currently named (consumers reach via
|
|
211
|
-
Tailwind's spacing scale); 5/6 land here because their values fall
|
|
212
|
-
outside the default ladder and the audacious chassis pattern wants
|
|
213
|
-
a named handle. */
|
|
214
|
-
--space-phi-5: 2.618rem; /* φ² */
|
|
215
|
-
--space-phi-6: 4.236rem; /* φ³ */
|
|
216
|
-
|
|
217
|
-
/* Dock geometry — consumers may override locally */
|
|
218
|
-
--dock-h: calc(var(--size-icon-btn) + 0.75rem + 3px);
|
|
219
|
-
--dock-margin: 0.5rem;
|
|
220
|
-
--dock-menubar-reserve: 4rem;
|
|
221
|
-
|
|
222
|
-
/* AX.W45 — the dock geometry multiplier. `--dock-scale` threads the WHOLE
|
|
223
|
-
`.glass-dock[data-density]` geometry cascade (box, padding, gap, tab,
|
|
224
|
-
tile-min, glyph) via `calc(<base> * --dock-scale)`, so a single knob grows
|
|
225
|
-
every dock axis in lockstep. The WCAG 2.5.5 44px floor survives as a `max(…,
|
|
226
|
-
44px)` clamp INSIDE the scaled control-size.
|
|
227
|
-
|
|
228
|
-
AX.W51 RECONCILE (D18) — `--dock-scale` is RE-HOMED as a SPECIALIZATION of
|
|
229
|
-
the global `--ui-scale` comfort axis: `calc(var(--ui-scale) *
|
|
230
|
-
var(--dock-local-scale, 1))`. The dock now MULTIPLIES on top of the global
|
|
231
|
-
comfort scalar — its whole existing geometry `calc` chain inherits the global
|
|
232
|
-
axis for FREE (zero edit to the density cascade; the reconcile is at this ONE
|
|
233
|
-
definition line). At the desktop identity (`--ui-scale: 1`,
|
|
234
|
-
`--dock-local-scale: 1`) the dock is byte-identical to HEAD. On coarse-pointer
|
|
235
|
-
the GLOBAL `:root { --ui-scale: var(--ui-coarse-scale, 1.5) }` block grows the
|
|
236
|
-
dock WITH the rest of the library — ONE consistent touch scale, not a parallel
|
|
237
|
-
dock-only 1.5×. `--dock-local-scale` is the dock-local EXTRA multiplier
|
|
238
|
-
(default 1): a consumer who wants the dock LARGER than the global comfort sets
|
|
239
|
-
it, and the coarse block lifts it to `--dock-mobile-scale` (default 1, the
|
|
240
|
-
stack-extra) so the dock can grow an extra notch ON TOP of the global coarse
|
|
241
|
-
default. `--dock-mobile-scale` is the public library-default identity
|
|
242
|
-
(presets-in-consumers: a consumer sets 1.3/1.75 on `:root` or a dock scope). */
|
|
243
|
-
--dock-scale: calc(var(--ui-scale) * var(--dock-local-scale, 1));
|
|
244
|
-
--dock-local-scale: 1;
|
|
245
|
-
--dock-mobile-scale: 1;
|
|
246
|
-
/* Library glyph ownership — `.dock-icon-button > svg` reads this so the dock
|
|
247
|
-
icon glyph scales WITH the box (mirroring `.dark-mode-toggle-button > svg`).
|
|
248
|
-
A consumer-passed explicit lucide size class still WINS (utility layer >
|
|
249
|
-
component layer); this is a DEFAULT, not a ceiling. */
|
|
250
|
-
--dock-icon-glyph: calc(1.25rem * var(--dock-scale));
|
|
251
|
-
|
|
252
|
-
/* AX.W45-TUNE Q1 — the COLLAPSED-pill floor tokens. The collapsed summary
|
|
253
|
-
used to fall to `--dock-layer-height` (the FULL control height, ~2.5rem) for
|
|
254
|
-
its `min-width` with NO block floor, so the shrunken pill read as an
|
|
255
|
-
un-collapsed control row, not a tight proportioned squircle. These two floor
|
|
256
|
-
tokens (referenced by dock.css's `.collapsed .dock-layer--summary` min-size +
|
|
257
|
-
the `--dock-pad-collapsed` morph floor) mint a TIGHT proportioned pill: the
|
|
258
|
-
summary min-size is ≈70% of the full control height (a proportioned dot, not a
|
|
259
|
-
full-row stub — the ratified default), and the collapsed padding is a step
|
|
260
|
-
BELOW the expanded `--dock-padding-block` so the collapsed chrome hugs the
|
|
261
|
-
glyph. The summary carries a SYMMETRIC `min-block-size` (dock.css) keyed to the
|
|
262
|
-
same token so the pill floors on BOTH axes — a squircle, not a stub. Consumers
|
|
263
|
-
retune the pill geometry per-instance via these two handles. */
|
|
264
|
-
/* AY.W-DOCK-NAV B4 — the collapsed pill is a PERFECT CIRCLE (the user's
|
|
265
|
-
"circle, not oval" bar). The diameter is the collapsed-summary min-size on
|
|
266
|
-
BOTH axes; the morph.css `.collapsed .dock-layer--summary` rule LIFTS the
|
|
267
|
-
`.dock-layer` height-lock (`height: var(--dock-layer-height)`) for the
|
|
268
|
-
collapsed summary so the pane is square at this token (the prior oval —
|
|
269
|
-
38×50, aspect 0.76 — was the locked 40px height against a 28px min-width).
|
|
270
|
-
The 0.85× value is a TIGHT proportioned circle a step below the full control
|
|
271
|
-
(so the collapsed dot reads smaller than an expanded control row) while
|
|
272
|
-
staying large enough that the centred glyph is not cramped. A consumer
|
|
273
|
-
retunes the circle diameter via this one handle. */
|
|
274
|
-
--dock-collapsed-summary-min-size: calc(var(--dock-layer-height, 2.5rem) * 0.85);
|
|
275
|
-
/* AX.W61 — the collapsed padding now threads the ONE `--dock-scale` coarse-pointer
|
|
276
|
-
multiplier DIRECTLY (at HEAD it was a flat 0.25rem off the scale, so the
|
|
277
|
-
collapsed pad alone stayed desktop-sized at the 1.5x mobile scale while the
|
|
278
|
-
box/glyph/min-size grew — a desync the morph then interpolated FROM). The
|
|
279
|
-
summary min-size already threads `--dock-scale` transitively through
|
|
280
|
-
`--dock-layer-height` (itself `calc(* --dock-scale)` at every density rung); this
|
|
281
|
-
lands the collapsed pad on the same thread so the whole collapsed pill scales
|
|
282
|
-
coherently on touch. The 0.25rem base stays the ratified tight floor. */
|
|
283
|
-
--dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
|
|
284
|
-
|
|
285
|
-
/* AX.W45-TUNE Q3/C3 + C5 — the dock-control family reads a real GLASS register
|
|
286
|
-
on hover/active, NOT a same-hue `--card` mix at an alpha adjacent to the dock's
|
|
287
|
-
own `--glass-bg-dock` substrate (a sub-1%-ΔL no-op — the loud Q3 tell: "nothing
|
|
288
|
-
on hover, something on click"). Both legs now point at NAMED glass tiers a
|
|
289
|
-
measurable step ABOVE the dock's 42%-opacity substrate:
|
|
290
|
-
• hover → `--glass-bg-resting` (the 65% glass plate) — the control surface
|
|
291
|
-
WAKES as a brighter glass tier on hover, reading the blurred dock
|
|
292
|
-
substrate through it. The +ΔL above `--glass-bg-dock` is perceptible
|
|
293
|
-
BEFORE click; the specular gleam + scale ride alongside (one register).
|
|
294
|
-
• active → `--glass-bg-floating` (the 80% glass plate) — a tier ABOVE hover,
|
|
295
|
-
the keyframes-dock "selected element reads as glass" model the user
|
|
296
|
-
named (`pass-3:13`): the selected tile is a glass tier that shows the
|
|
297
|
-
substrate through it, NOT the flat `--surface-tint-12` ink wash. The
|
|
298
|
-
active ≠ hover register is the glass-tier step, not an alpha nudge.
|
|
299
|
-
This is a REGISTER change (substrate→glass-tier), not a magnitude knob. The
|
|
300
|
-
per-control `--dock-icon-hover-bg` override still wins if a consumer set it. */
|
|
301
|
-
--dock-control-hover-bg: var(--glass-bg-resting);
|
|
302
|
-
--dock-control-active-bg: var(--glass-bg-floating);
|
|
303
|
-
|
|
304
|
-
/* AX.W45-TUNE C4/C5 — the small-tile specular override. The 40px dock-control
|
|
305
|
-
tile is a fraction of a card's plate, so the global `--glass-specular-size`
|
|
306
|
-
(36% of the plate) blooms a disproportionate disc on a hover/active dock tile
|
|
307
|
-
(the I.W6 finding). The dock controls scope a TIGHTER radius (22%) so the gleam
|
|
308
|
-
wakes as a restrained EDGE-catch on the small tile, not a tile-filling bloom —
|
|
309
|
-
the right resolution of I.W6 (sized-down on the small surface), not turning the
|
|
310
|
-
specular off everywhere. Read by the dock-control `::before` recipe (glass.css)
|
|
311
|
-
via the family-scoped override below; the global card/panel size is untouched. */
|
|
312
|
-
--dock-control-specular-size: 22%;
|
|
313
|
-
|
|
314
|
-
/* AX.W45 DK8 — the layer-switcher rail surface ladder. The rail
|
|
315
|
-
(`.dock-layer-rail` inside a `<DockLayerGroup>`) gets its own quiet plate +
|
|
316
|
-
a tunable hover/active affordance, replacing the raw `--primary 15%` /
|
|
317
|
-
`--accent 40%` mixes the indicator/tab used against an absent plate. */
|
|
318
|
-
--dock-layer-rail-bg: var(--surface-tint-8);
|
|
319
|
-
--dock-layer-rail-hover: color-mix(in srgb, var(--accent) 40%, transparent);
|
|
320
|
-
--dock-layer-rail-active: color-mix(in srgb, var(--primary) 15%, transparent);
|
|
321
|
-
/* AY.W-DOCK-NAV B6 — the switcher-rail TAB is a COMPACT square, distinct from
|
|
322
|
-
the 40px dock CONTROL. The prior fallback chain (`var(--dock-control-size,
|
|
323
|
-
1.75rem)`) resolved to the full 40px control, so a 3-tab column rail stood
|
|
324
|
-
~140px tall — a giant pill of dead space. A dedicated tighter tab size
|
|
325
|
-
(1.75rem = 28px, density-scaled) keeps the rail a compact icon column the
|
|
326
|
-
indicator travels cleanly, and the dock grows only as tall as the rail needs.
|
|
327
|
-
Consumers retune the rail-tab size via this one handle. */
|
|
328
|
-
--dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
|
|
329
|
-
|
|
330
|
-
/* Dock active-state ladder (O.W6 Lane B)
|
|
331
|
-
Token-overridable active paint for `.dock-icon-button`. Promoted
|
|
332
|
-
from hardcoded `background: var(--muted); color: var(--foreground)`
|
|
333
|
-
per bbnf-buddy O11/c R1: 7 `:deep()` escapes at `ToolsLayer.vue`
|
|
334
|
-
redefine bg/color/scale/border/shadow on the active variant; the
|
|
335
|
-
ladder absorbs ~3 of 7 at a stroke. Defaults preserve the prior
|
|
336
|
-
visual contract (no transform, no border, no shadow) — overrides
|
|
337
|
-
take effect per-instance via `:root` or a parent scope, e.g.
|
|
338
|
-
`.tools-layer { --dock-active-scale: 1.2; --dock-active-bg: …; }`.
|
|
339
|
-
≥ 2-consumer coverage: bbnf-buddy ToolsLayer (override consumer) +
|
|
340
|
-
speedtest dock (default consumer).
|
|
341
|
-
|
|
342
|
-
AX.W45 DK2 — re-pointed off the opaque `--muted` plate onto the glass-
|
|
343
|
-
correct `--dock-control-active-bg` (a translucent tint a ladder step above
|
|
344
|
-
hover), so the icon-button active no longer stamps a solid cream rectangle
|
|
345
|
-
over the dock glass. The O.W6 active-ladder override consumers still retint
|
|
346
|
-
per-instance; only the DEFAULT moved to glass-correct. */
|
|
347
|
-
--dock-active-bg: var(--dock-control-active-bg);
|
|
348
|
-
--dock-active-color: var(--foreground);
|
|
349
|
-
--dock-active-scale: 1;
|
|
350
|
-
--dock-active-border: none;
|
|
351
|
-
--dock-active-shadow: none;
|
|
352
|
-
|
|
353
|
-
/* Q.W3 Lane G (Q-cos-13) — the O.W6 Lane D `--icon-tooltip-hit-area`
|
|
354
|
-
token retired here. IconTooltip no longer owns a wrap-span; the
|
|
355
|
-
slotted child carries its own WCAG 2.5.5 hit-area (interactive
|
|
356
|
-
children via their four-state contract, bare glyphs via a
|
|
357
|
-
`min-h-11 min-w-11` host). No orphaned token left behind. */
|
|
358
|
-
|
|
359
|
-
/* O.W6 Lane D — Dock touch-target floor. Mirrors the IconTooltip
|
|
360
|
-
hit-area but for the dock-control surface. The base value tracks
|
|
361
|
-
the desktop default (`--size-icon-btn`); the
|
|
362
|
-
`@media (pointer: coarse)` block at `dock.css` lifts it to the
|
|
363
|
-
WCAG 2.5.5 floor on touch devices. */
|
|
364
|
-
--dock-touch-target: 2.75rem; /* 44px */
|
|
365
|
-
|
|
366
|
-
/* AQ.W3 §7 — canonical WCAG 2.5.5 (44px) touch-target floor for the
|
|
367
|
-
NON-dock coarse-pointer surfaces (`Button size="icon"`,
|
|
368
|
-
ExpandableContainer triggers, SegmentedTabs responsive mobile trigger). One
|
|
369
|
-
named rung the `@media (pointer: coarse)` block in utilities.css reads,
|
|
370
|
-
retiring the per-consumer one-liner `min-h-[44px]` patches. Equals
|
|
371
|
-
`--dock-touch-target` numerically; kept as a distinct token so the
|
|
372
|
-
dock floor and the general floor can be retuned independently. */
|
|
373
|
-
--touch-target: 2.75rem; /* 44px */
|
|
374
|
-
|
|
375
|
-
/* MetricBadge — stacked variant geometry. The 2-row stacked layout
|
|
376
|
-
(label / value+unit) wants a taller floor than the inline pill so the
|
|
377
|
-
label has breathing room above the baseline pair. T.W2.T2 +
|
|
378
|
-
audit B-spec §3.2 vertical-rhythm table land 42px (2.625rem) as the
|
|
379
|
-
min-height with 6px (0.375rem) block padding. The inline ladder
|
|
380
|
-
keeps its tight defaults via `--metric-badge-min-height` /
|
|
381
|
-
`--metric-badge-padding-block` (declared inline at the
|
|
382
|
-
`.metric-badge` selector). */
|
|
383
|
-
--metric-badge-min-height-stacked: 2.625rem;
|
|
384
|
-
--metric-badge-padding-block-stacked: 0.375rem;
|
|
385
|
-
|
|
386
|
-
/* Configurator — N.W2 Lane A density axis (4 rungs).
|
|
387
|
-
The `comfortable` rung restates the pre-N.W2 baked recipe exactly
|
|
388
|
-
(`gap-1.5 py-2` = 0.375rem / 0.5rem) so unparameterised consumers
|
|
389
|
-
see no visual change. `mobile` halves the vertical breathing room
|
|
390
|
-
for narrow-viewport studios; `spacious` doubles it for settings-
|
|
391
|
-
page hosts. See `<ConfiguratorRow>` scoped CSS for the attribute-
|
|
392
|
-
selector binding. */
|
|
393
|
-
--configurator-row-gap-mobile: 0.25rem; /* 4px — tight */
|
|
394
|
-
--configurator-row-gap-compact: 0.3125rem; /* 5px — slightly tighter */
|
|
395
|
-
--configurator-row-gap-comfortable: 0.375rem; /* 6px — pre-N.W2 default */
|
|
396
|
-
--configurator-row-gap-spacious: 0.75rem; /* 12px — generous */
|
|
397
|
-
|
|
398
|
-
--configurator-row-py-mobile: 0.25rem; /* 4px — tight */
|
|
399
|
-
--configurator-row-py-compact: 0.375rem; /* 6px — slightly tighter */
|
|
400
|
-
--configurator-row-py-comfortable: 0.5rem; /* 8px — pre-N.W2 default */
|
|
401
|
-
--configurator-row-py-spacious: 0.875rem; /* 14px — generous */
|
|
402
|
-
|
|
403
|
-
/* Component font override (consumers override locally) */
|
|
404
|
-
--select-font: inherit;
|
|
405
|
-
|
|
406
|
-
}
|