@mkbabb/glass-ui 3.8.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -6
- package/dist/{CardAction-q2qHCJFG.js → CardAction-DuArVky-.js} +4 -4
- package/dist/{CommandShortcut-SzWRhROC.js → CommandShortcut-CefCj5mt.js} +7 -7
- package/dist/{ContextMenuSubContent-Do977Cbf.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
- package/dist/{DataTable-CvlWXz65.js → DataTable-CUHMukiQ.js} +1 -1
- package/dist/{DialogContent-DjZWT3lK.js → DialogContent-BRkT1cjP.js} +1 -1
- package/dist/{MetricBadge-lTc002u2.js → MetricBadge-BZVWIxNy.js} +6 -4
- package/dist/{Notification-BxK8LZMw.js → Notification-DLMhblXR.js} +2 -2
- package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
- package/dist/{SelectScrollDownButton-C7TRe-ep.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
- package/dist/{SelectSeparator-L8pPEn4L.js → SelectSeparator-C4Ql0gzV.js} +1 -1
- package/dist/{Switch-LDKLmmgx.js → Switch-Ch-k3Rv-.js} +1 -1
- package/dist/{TabsList-qyHZ2lKY.js → TabsList-B8CVOQPC.js} +2 -2
- package/dist/{Toaster-CabYEEF_.js → Toaster-1rYWrmAm.js} +1 -1
- package/dist/{ToggleGroupItem-CkXUcBlt.js → ToggleGroupItem-Cev4pOVK.js} +4 -4
- package/dist/animated-digit.js +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api.js +1 -1
- package/dist/aurora.js +236 -545
- package/dist/{badge-DHQrc_GQ.js → badge-CaoFJzRb.js} +5 -5
- package/dist/badge.js +1 -1
- package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +1 -1
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/{compile-BBTRjvQS.js → compile-BOXjLUxu.js} +24 -24
- package/dist/components/custom/aurora/composables/atoms.d.ts +21 -4
- package/dist/components/custom/aurora/composables/runtime.d.ts +0 -9
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -11
- package/dist/components/custom/aurora/constants/renderMode.d.ts +0 -32
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
- package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
- package/dist/components/custom/constellation/Constellation.vue.d.ts +73 -1
- package/dist/components/custom/constellation/constellationField.d.ts +255 -3
- package/dist/components/custom/constellation/index.d.ts +2 -2
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +4 -3
- package/dist/components/custom/dock/GlassDock.vue.d.ts +45 -63
- package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
- package/dist/components/custom/dock/index.d.ts +2 -1
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +29 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +6 -0
- package/dist/components/custom/fourier-field/index.d.ts +25 -1
- package/dist/components/custom/fourier-field/math.d.ts +3 -8
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +8 -10
- package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +19 -5
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +6 -14
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/types.d.ts +59 -25
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +219 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +32 -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 +66 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
- package/dist/components/custom/tabs/index.d.ts +2 -5
- package/dist/components/ui/button/index.d.ts +1 -1
- package/dist/components/ui/card/Card.vue.d.ts +5 -3
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
- package/dist/components/ui/slider/index.d.ts +22 -11
- package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
- package/dist/composables/color/index.d.ts +12 -7
- package/dist/composables/context/createContext.d.ts +1 -1
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +1 -6
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/useRouteTransition.d.ts +42 -0
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +1 -1
- package/dist/constellation.js +212 -72
- package/dist/context-menu.js +1 -1
- package/dist/controls.js +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck-progress.js +1 -1
- package/dist/dialog.js +1 -1
- package/dist/dock.js +257 -243
- package/dist/{dropdown-menu-B_4bWyyG.js → dropdown-menu-D77jX6Df.js} +3 -3
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +61 -38
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +89 -97
- package/dist/fourier-math.d.ts +1 -0
- package/dist/fourier-math.js +2 -0
- package/dist/glass-panel.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +107 -109
- package/dist/goo-blob.js +316 -297
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +609 -0
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/math-DTpRVC0e.js +27 -0
- package/dist/{menuItemVariants-DKM85SNE.js → menuItemVariants-CCoBNkU5.js} +1 -1
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +70 -69
- package/dist/motion.js +2 -2
- package/dist/notification.js +1 -1
- package/dist/number-field.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 +4 -4
- package/dist/select.js +2 -2
- package/dist/{slider-D9puf-Ko.js → slider-CyzcxBoh.js} +6 -6
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +1 -1
- package/dist/status-dot.js +17 -16
- package/dist/styles/animations.css +80 -20
- package/dist/styles/cards.css +2 -2
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/density.css +230 -0
- package/dist/styles/dock/layer-group.css +275 -0
- package/dist/styles/dock/layers.css +355 -0
- package/dist/styles/dock/morph.css +244 -0
- package/dist/styles/dock/overflow.css +201 -0
- package/dist/styles/dock/shell.css +457 -0
- package/dist/styles/dock-controls.css +205 -55
- package/dist/styles/dock.css +42 -1349
- package/dist/styles/drawer.css +12 -4
- package/dist/styles/glass.css +535 -78
- package/dist/styles/index.css +12 -11
- package/dist/styles/paper.css +68 -2
- package/dist/styles/theme.css +58 -0
- package/dist/styles/tokens.css +601 -69
- package/dist/styles/transitions.css +20 -2
- package/dist/styles/utilities.css +218 -78
- package/dist/styles/view-transition.css +51 -0
- package/dist/switch.js +1 -1
- package/dist/tabs.js +182 -151
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
- package/dist/{useConfiguratorState-CMff4GzH.js → useConfiguratorState-DxAqksK6.js} +21 -10
- package/dist/{useGlassRenderer-5I0YkI4t.js → useGlassRenderer-D7YGOYiM.js} +1 -1
- package/dist/useViewTransition-DaN5Zrox.js +21 -0
- package/dist/vReveal-zUIQk-rJ.js +53 -0
- package/dist/watercolor-dot.js +1 -1
- package/package.json +80 -39
- package/src/styles/animations.css +80 -20
- package/src/styles/cards.css +2 -2
- package/src/styles/dock/density.css +230 -0
- package/src/styles/dock/layer-group.css +275 -0
- package/src/styles/dock/layers.css +355 -0
- package/src/styles/dock/morph.css +244 -0
- package/src/styles/dock/overflow.css +201 -0
- package/src/styles/dock/shell.css +457 -0
- package/src/styles/dock-controls.css +205 -55
- package/src/styles/dock.css +42 -1349
- package/src/styles/drawer.css +12 -4
- package/src/styles/glass.css +535 -78
- package/src/styles/index.css +12 -11
- package/src/styles/paper.css +68 -2
- package/src/styles/theme.css +58 -0
- package/src/styles/tokens.css +601 -69
- package/src/styles/transitions.css +20 -2
- package/src/styles/utilities.css +218 -78
- package/src/styles/view-transition.css +51 -0
- package/dist/DiscoGlyph-CG0F410s.js +0 -132
- package/dist/GlyphFace-DRjDkB0s.js +0 -51
- package/dist/UnderlineTabs-Uxn-R3MT.js +0 -39
- package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +0 -16
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -7
- package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
- package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
- package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
- package/dist/components/custom/disco-glyph/index.d.ts +0 -1
- package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
- package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
- package/dist/components/custom/glass-carousel/index.d.ts +0 -4
- package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
- package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
- package/dist/components/custom/glyph-face/index.d.ts +0 -2
- package/dist/components/custom/glyph-face/keys.d.ts +0 -9
- package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
- package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
- package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
- package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
- package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
- package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
- package/dist/composables/glass/createGPUCanvas.d.ts +0 -40
- package/dist/disco-glyph.d.ts +0 -1
- package/dist/disco-glyph.js +0 -2
- package/dist/glass-carousel.d.ts +0 -1
- package/dist/glass-carousel.js +0 -219
- package/dist/glyph-face.d.ts +0 -1
- package/dist/glyph-face.js +0 -3
- package/dist/keys-BsYjEFOW.js +0 -9
- package/dist/responsive-tabs.d.ts +0 -1
- package/dist/responsive-tabs.js +0 -95
- package/dist/styles/disco-glyph.css +0 -26
- package/dist/styles/glyph-face.css +0 -92
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/src/styles/disco-glyph.css +0 -26
- package/src/styles/glyph-face.css +0 -92
- /package/dist/{DeckProgress-AVgbIULY.js → DeckProgress-Dmk4_AKN.js} +0 -0
- /package/dist/{HoverPopover-D56O6Ylp.js → HoverPopover-2LOIW34a.js} +0 -0
- /package/dist/{IconTooltip-D2T5nYOM.js → IconTooltip-Cus0fvK0.js} +0 -0
- /package/dist/{Input-DVG_J0ne.js → Input-xuDwALQR.js} +0 -0
- /package/dist/{ScrollingText-CVyqxvfv.js → ScrollingText-BPP84wKo.js} +0 -0
- /package/dist/{color-DMLTunJK.js → color-C5ls_QF7.js} +0 -0
- /package/dist/{constants-BPOqYJAm.js → constants-yKeKnE84.js} +0 -0
- /package/dist/{presets-D1XPuTj-.js → presets-Dkdv55Gt.js} +0 -0
- /package/dist/{prng-COGhh02-.js → prng-D27-B3tK.js} +0 -0
- /package/dist/{useGlobalDark-D3EBWzXK.js → useGlobalDark-d6waty-X.js} +0 -0
- /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
- /package/dist/{useInterval-CcLfq2WU.js → useInterval-Dsmqwi03.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
- /package/dist/{useScrollProgress-C9ysDic5.js → useScrollProgress-CffFGLa5.js} +0 -0
- /package/dist/{useSortable-MGAbCGVJ.js → useSortable-C8ReQ50P.js} +0 -0
- /package/dist/{useTextHighlight-9nMW23Qb.js → useTextHighlight-CWEi25hf.js} +0 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/* dock/density.css — the density × `--dock-scale` cascade (AX.W06 carve).
|
|
2
|
+
*
|
|
3
|
+
* Carved from the dock.css god-module (slice 25). This partial owns the W45
|
|
4
|
+
* density cascade: every per-density geometry axis (padding / control-size /
|
|
5
|
+
* layer-height / gap / tile-min / trigger+tab padding) is `calc(<base> *
|
|
6
|
+
* var(--dock-scale))` so the ONE `--dock-scale` multiplier grows box+pad+gap+
|
|
7
|
+
* tab+tile in lockstep on touch, with the inner `max(…, --dock-control-floor)`
|
|
8
|
+
* WCAG 2.5.5 clamp. The four rungs (compact · comfortable · spacious · audacious)
|
|
9
|
+
* + the audacious narrow-box `@container` label compression.
|
|
10
|
+
*
|
|
11
|
+
* @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
|
|
12
|
+
* carve is isomorphic (same layer, same source order → ZERO visual delta). */
|
|
13
|
+
|
|
14
|
+
@layer components {
|
|
15
|
+
/* AX.W45 — the density cascade is threaded by the ONE `--dock-scale`
|
|
16
|
+
multiplier (default 1, lifted to `--dock-mobile-scale` on coarse pointers).
|
|
17
|
+
EVERY per-density geometry axis is `calc(<base> * var(--dock-scale))` so a
|
|
18
|
+
single knob grows box+pad+gap+tab+tile-min in lockstep on touch — the desktop
|
|
19
|
+
proportion preserved, never a 44px box around a desktop glyph. The
|
|
20
|
+
control-size carries an INNER `max(…, 44px)` WCAG 2.5.5 clamp (the coarse
|
|
21
|
+
block sets `--dock-control-floor: var(--dock-touch-target)`) so a consumer
|
|
22
|
+
dialing `--dock-mobile-scale` below 1.0 cannot drop the touch target under the
|
|
23
|
+
floor — the floor survives as a CLAMP, not a parallel `@media` rule. `--dock-
|
|
24
|
+
tile-min` is now IN the cascade (DK4-b) so the grid tile scales with the
|
|
25
|
+
control + glyph; it is a proportional `calc(control-size + tile-pad)` so the
|
|
26
|
+
icon-to-tile margin is ONE knob, not a per-density literal. */
|
|
27
|
+
.glass-dock[data-density="compact"] {
|
|
28
|
+
--dock-padding-block: calc(
|
|
29
|
+
var(--dock-density-compact-padding-block, 0.25rem) * var(--dock-scale)
|
|
30
|
+
);
|
|
31
|
+
--dock-padding-inline: calc(
|
|
32
|
+
var(--dock-density-compact-padding-inline, 0.375rem) * var(--dock-scale)
|
|
33
|
+
);
|
|
34
|
+
--dock-control-size: max(
|
|
35
|
+
calc(var(--dock-density-compact-control-size, 2rem) * var(--dock-scale)),
|
|
36
|
+
var(--dock-control-floor, 0px)
|
|
37
|
+
);
|
|
38
|
+
--dock-layer-height: max(
|
|
39
|
+
calc(var(--dock-density-compact-layer-height, 2rem) * var(--dock-scale)),
|
|
40
|
+
var(--dock-control-floor, 0px)
|
|
41
|
+
);
|
|
42
|
+
--dock-layer-gap: calc(
|
|
43
|
+
var(--dock-density-compact-gap, 0.25rem) * var(--dock-scale)
|
|
44
|
+
);
|
|
45
|
+
--dock-tile-min: calc(
|
|
46
|
+
var(--dock-control-size) + var(--dock-tile-pad, 1rem) * var(--dock-scale)
|
|
47
|
+
);
|
|
48
|
+
--dock-trigger-padding-block: calc(
|
|
49
|
+
var(--dock-density-compact-trigger-padding-block, 0.1875rem) *
|
|
50
|
+
var(--dock-scale)
|
|
51
|
+
);
|
|
52
|
+
--dock-trigger-padding-inline: calc(
|
|
53
|
+
var(--dock-density-compact-trigger-padding-inline, 0.4375rem) *
|
|
54
|
+
var(--dock-scale)
|
|
55
|
+
);
|
|
56
|
+
--dock-tab-padding-block: calc(
|
|
57
|
+
var(--dock-density-compact-tab-padding-block, 0.3125rem) *
|
|
58
|
+
var(--dock-scale)
|
|
59
|
+
);
|
|
60
|
+
--dock-tab-padding-inline: calc(
|
|
61
|
+
var(--dock-density-compact-tab-padding-inline, 0.625rem) *
|
|
62
|
+
var(--dock-scale)
|
|
63
|
+
);
|
|
64
|
+
--dock-tab-h: calc(32px * var(--dock-scale));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Comfortable density — the GlassDock default. Sits between compact
|
|
68
|
+
and spacious. */
|
|
69
|
+
.glass-dock[data-density="comfortable"] {
|
|
70
|
+
--dock-padding-block: calc(
|
|
71
|
+
var(--dock-density-comfortable-padding-block, 0.375rem) * var(--dock-scale)
|
|
72
|
+
);
|
|
73
|
+
--dock-padding-inline: calc(
|
|
74
|
+
var(--dock-density-comfortable-padding-inline, 0.5rem) * var(--dock-scale)
|
|
75
|
+
);
|
|
76
|
+
--dock-control-size: max(
|
|
77
|
+
calc(
|
|
78
|
+
var(--dock-density-comfortable-control-size, 2.5rem) *
|
|
79
|
+
var(--dock-scale)
|
|
80
|
+
),
|
|
81
|
+
var(--dock-control-floor, 0px)
|
|
82
|
+
);
|
|
83
|
+
--dock-layer-height: max(
|
|
84
|
+
calc(
|
|
85
|
+
var(--dock-density-comfortable-layer-height, 2.5rem) *
|
|
86
|
+
var(--dock-scale)
|
|
87
|
+
),
|
|
88
|
+
var(--dock-control-floor, 0px)
|
|
89
|
+
);
|
|
90
|
+
--dock-layer-gap: calc(
|
|
91
|
+
var(--dock-density-comfortable-gap, 0.375rem) * var(--dock-scale)
|
|
92
|
+
);
|
|
93
|
+
--dock-tile-min: calc(
|
|
94
|
+
var(--dock-control-size) + var(--dock-tile-pad, 2rem) * var(--dock-scale)
|
|
95
|
+
);
|
|
96
|
+
--dock-trigger-padding-block: calc(
|
|
97
|
+
var(--dock-density-comfortable-trigger-padding-block, 0.25rem) *
|
|
98
|
+
var(--dock-scale)
|
|
99
|
+
);
|
|
100
|
+
--dock-trigger-padding-inline: calc(
|
|
101
|
+
var(--dock-density-comfortable-trigger-padding-inline, 0.5rem) *
|
|
102
|
+
var(--dock-scale)
|
|
103
|
+
);
|
|
104
|
+
--dock-tab-padding-block: calc(
|
|
105
|
+
var(--dock-density-comfortable-tab-padding-block, 0.4375rem) *
|
|
106
|
+
var(--dock-scale)
|
|
107
|
+
);
|
|
108
|
+
--dock-tab-padding-inline: calc(
|
|
109
|
+
var(--dock-density-comfortable-tab-padding-inline, 0.75rem) *
|
|
110
|
+
var(--dock-scale)
|
|
111
|
+
);
|
|
112
|
+
--dock-tab-h: calc(38px * var(--dock-scale));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.glass-dock[data-density="spacious"] {
|
|
116
|
+
--dock-padding-block: calc(
|
|
117
|
+
var(--dock-density-spacious-padding-block, 0.5rem) * var(--dock-scale)
|
|
118
|
+
);
|
|
119
|
+
--dock-padding-inline: calc(
|
|
120
|
+
var(--dock-density-spacious-padding-inline, 0.75rem) * var(--dock-scale)
|
|
121
|
+
);
|
|
122
|
+
--dock-control-size: max(
|
|
123
|
+
calc(
|
|
124
|
+
var(--dock-density-spacious-control-size, 2.75rem) * var(--dock-scale)
|
|
125
|
+
),
|
|
126
|
+
var(--dock-control-floor, 0px)
|
|
127
|
+
);
|
|
128
|
+
--dock-layer-height: max(
|
|
129
|
+
calc(
|
|
130
|
+
var(--dock-density-spacious-layer-height, 2.75rem) * var(--dock-scale)
|
|
131
|
+
),
|
|
132
|
+
var(--dock-control-floor, 0px)
|
|
133
|
+
);
|
|
134
|
+
--dock-layer-gap: calc(
|
|
135
|
+
var(--dock-density-spacious-gap, 0.5rem) * var(--dock-scale)
|
|
136
|
+
);
|
|
137
|
+
--dock-tile-min: calc(
|
|
138
|
+
var(--dock-control-size) + var(--dock-tile-pad, 2.75rem) * var(--dock-scale)
|
|
139
|
+
);
|
|
140
|
+
--dock-trigger-padding-block: calc(
|
|
141
|
+
var(--dock-density-spacious-trigger-padding-block, 0.375rem) *
|
|
142
|
+
var(--dock-scale)
|
|
143
|
+
);
|
|
144
|
+
--dock-trigger-padding-inline: calc(
|
|
145
|
+
var(--dock-density-spacious-trigger-padding-inline, 0.625rem) *
|
|
146
|
+
var(--dock-scale)
|
|
147
|
+
);
|
|
148
|
+
--dock-tab-padding-block: calc(
|
|
149
|
+
var(--dock-density-spacious-tab-padding-block, 0.5rem) * var(--dock-scale)
|
|
150
|
+
);
|
|
151
|
+
--dock-tab-padding-inline: calc(
|
|
152
|
+
var(--dock-density-spacious-tab-padding-inline, 0.875rem) *
|
|
153
|
+
var(--dock-scale)
|
|
154
|
+
);
|
|
155
|
+
--dock-tab-h: calc(44px * var(--dock-scale));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Audacious density — typography-forward chrome where the dock reads as
|
|
159
|
+
a primary surface, not a tray. Tab buttons set their own min-height so
|
|
160
|
+
consumer-bumped fonts no longer drift the button height — the
|
|
161
|
+
`--dock-tab-min-height` token reserves the row regardless of glyph rise. */
|
|
162
|
+
.glass-dock[data-density="audacious"] {
|
|
163
|
+
--dock-padding-block: calc(
|
|
164
|
+
var(--dock-density-audacious-padding-block, 0.5rem) * var(--dock-scale)
|
|
165
|
+
);
|
|
166
|
+
--dock-padding-inline: calc(
|
|
167
|
+
var(--dock-density-audacious-padding-inline, 0.875rem) * var(--dock-scale)
|
|
168
|
+
);
|
|
169
|
+
--dock-control-size: max(
|
|
170
|
+
calc(var(--dock-density-audacious-control-size, 4rem) * var(--dock-scale)),
|
|
171
|
+
var(--dock-control-floor, 0px)
|
|
172
|
+
);
|
|
173
|
+
--dock-layer-height: max(
|
|
174
|
+
calc(var(--dock-density-audacious-layer-height, 4rem) * var(--dock-scale)),
|
|
175
|
+
var(--dock-control-floor, 0px)
|
|
176
|
+
);
|
|
177
|
+
--dock-layer-gap: calc(
|
|
178
|
+
var(--dock-density-audacious-gap, 0.875rem) * var(--dock-scale)
|
|
179
|
+
);
|
|
180
|
+
--dock-tile-min: calc(
|
|
181
|
+
var(--dock-control-size) + var(--dock-tile-pad, 2.75rem) * var(--dock-scale)
|
|
182
|
+
);
|
|
183
|
+
--dock-trigger-padding-block: calc(
|
|
184
|
+
var(--dock-density-audacious-trigger-padding-block, 0.625rem) *
|
|
185
|
+
var(--dock-scale)
|
|
186
|
+
);
|
|
187
|
+
--dock-trigger-padding-inline: calc(
|
|
188
|
+
var(--dock-density-audacious-trigger-padding-inline, 1rem) *
|
|
189
|
+
var(--dock-scale)
|
|
190
|
+
);
|
|
191
|
+
--dock-tab-padding-block: calc(
|
|
192
|
+
var(--dock-density-audacious-tab-padding-block, 0.5rem) * var(--dock-scale)
|
|
193
|
+
);
|
|
194
|
+
--dock-tab-padding-inline: calc(
|
|
195
|
+
var(--dock-density-audacious-tab-padding-inline, 1.5rem) *
|
|
196
|
+
var(--dock-scale)
|
|
197
|
+
);
|
|
198
|
+
--dock-tab-min-height: calc(
|
|
199
|
+
var(--dock-density-audacious-tab-min-height, 3.5rem) * var(--dock-scale)
|
|
200
|
+
);
|
|
201
|
+
--dock-tab-h: calc(
|
|
202
|
+
var(--dock-density-audacious-tab-min-height, 3.5rem) * var(--dock-scale)
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* Density-audacious narrow-box carve (AV.W16 TW3) — when the dock's OWN
|
|
207
|
+
box is narrow the audacious-dock label glyphs compress so the chrome
|
|
208
|
+
doesn't overflow its host (≤14px below 30rem, 15px 30–45rem). Keyed off
|
|
209
|
+
the dock's `dock` inline-size container — now OPT-IN via the
|
|
210
|
+
`containerName="dock"` prop (AW.W1 removed the always-on default that
|
|
211
|
+
broke shrink-to-fit), so it fires only for a dock the consumer has
|
|
212
|
+
width-CONSTRAINED into a host (the 320px sidebar case) where the
|
|
213
|
+
compression is meaningful and the containment does not collapse the box.
|
|
214
|
+
A free-floating dock shrink-wraps (box == content) so there is nothing to
|
|
215
|
+
compress. The var
|
|
216
|
+
is set on the `.dock-label` descendant (which reads it via
|
|
217
|
+
`font-size: var(--dock-label-size)`, typography.css). Thresholds keep
|
|
218
|
+
the prior 479/719px viewport cadence as box widths (30rem ≈ 480px,
|
|
219
|
+
45rem ≈ 720px at the 16px root). */
|
|
220
|
+
@container dock (max-width: 29.9375rem) {
|
|
221
|
+
.glass-dock[data-density="audacious"] .dock-label {
|
|
222
|
+
--dock-label-size: 14px;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
@container dock (min-width: 30rem) and (max-width: 44.9375rem) {
|
|
226
|
+
.glass-dock[data-density="audacious"] .dock-label {
|
|
227
|
+
--dock-label-size: 15px;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/* dock/layer-group.css — `.dock-layer-group` / layer-switcher rail / stack
|
|
2
|
+
* (AX.W06 carve).
|
|
3
|
+
*
|
|
4
|
+
* Carved from the dock.css god-module (slice 25). This partial owns the
|
|
5
|
+
* `<DockLayerGroup>` family: the `<DockSeparator>` orientation+layout-aware
|
|
6
|
+
* paint (vertical hairline · horizontal rule · grid section-break), the
|
|
7
|
+
* `.dock-spacer`, the `.dock-layer-group` flex axes, the `.dock-layer-rail`
|
|
8
|
+
* layer-switcher rail (the W45 DK8 rail-bg plate + the axis-aware travelling
|
|
9
|
+
* `.dock-layer-tab-indicator`), the `.dock-layer-stack`, and the axis-aware
|
|
10
|
+
* `.dock-layer-item-host` pane.
|
|
11
|
+
*
|
|
12
|
+
* NOTE: this `.dock-layer-rail` is the LAYER-SWITCHER rail inside a
|
|
13
|
+
* `<DockLayerGroup>` — distinct from the `GlassDock variant="rail"` navigation
|
|
14
|
+
* column (dock/shell.css + dock-controls.css) and the `<InstrumentRail>` cockpit
|
|
15
|
+
* chassis (instrument-rail). The three share the noun, not the architecture.
|
|
16
|
+
*
|
|
17
|
+
* @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
|
|
18
|
+
* carve is isomorphic (same layer, same source order → ZERO visual delta). */
|
|
19
|
+
|
|
20
|
+
@layer components {
|
|
21
|
+
/* AX.W45 D13-c / DK5 — the `<DockSeparator>` paint source. The separator is now
|
|
22
|
+
a first-class orientation+layout-aware primitive (DockSeparator.vue) that
|
|
23
|
+
carries the orientation contract the bare class could not. It demarcates dock
|
|
24
|
+
item GROUPS (transport | navigation | settings) for affordance hierarchy. The
|
|
25
|
+
paint is PERPENDICULAR to the layout axis:
|
|
26
|
+
- row dock (horizontal, the default) → a VERTICAL 1px hairline
|
|
27
|
+
- column dock (vertical / rail) → a HORIZONTAL 1px rule, cross-extent
|
|
28
|
+
- grid dock (`layout="grid"`) → a full-row SECTION BREAK
|
|
29
|
+
The component sets `data-orientation` from `useOptionalDockContext`; the
|
|
30
|
+
dock-root ancestor class (`.glass-dock.vertical` / `.layout-grid`) drives the
|
|
31
|
+
perpendicular paint so the same primitive reads correctly at every layout. */
|
|
32
|
+
.dock-separator {
|
|
33
|
+
@apply flex-shrink-0;
|
|
34
|
+
width: 1px;
|
|
35
|
+
height: var(--dock-separator-height);
|
|
36
|
+
margin: 0 0.375rem;
|
|
37
|
+
background: var(--surface-tint-15);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Column (vertical) dock — a HORIZONTAL hairline across the column's cross
|
|
41
|
+
extent (a 1px-WIDE vertical sliver does not divide a stack). */
|
|
42
|
+
.glass-dock.vertical .dock-separator,
|
|
43
|
+
.dock-layer-group.vertical .dock-separator,
|
|
44
|
+
.dock-separator[data-orientation="vertical"] {
|
|
45
|
+
width: var(--dock-separator-height);
|
|
46
|
+
height: 1px;
|
|
47
|
+
align-self: center;
|
|
48
|
+
margin: 0.375rem 0;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Grid (big-dock) — a full-row SECTION BREAK spanning every column, the
|
|
52
|
+
Launchpad-style group demarcation (a 1px sliver in one cell is useless). */
|
|
53
|
+
.glass-dock.layout-grid .dock-separator {
|
|
54
|
+
grid-column: 1 / -1;
|
|
55
|
+
width: 100%;
|
|
56
|
+
height: 1px;
|
|
57
|
+
margin: var(--dock-layer-gap, 0.375rem) 0;
|
|
58
|
+
align-self: center;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.dock-spacer {
|
|
62
|
+
@apply flex-1;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.dock-layer-group {
|
|
66
|
+
display: flex;
|
|
67
|
+
gap: var(--dock-layer-group-gap, var(--dock-layer-gap, 0.25rem));
|
|
68
|
+
min-width: 0;
|
|
69
|
+
min-height: 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.dock-layer-group.horizontal {
|
|
73
|
+
flex-direction: row;
|
|
74
|
+
align-items: stretch;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.dock-layer-group.horizontal.rail-end {
|
|
78
|
+
flex-direction: row-reverse;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.dock-layer-group.vertical {
|
|
82
|
+
flex-direction: column;
|
|
83
|
+
align-items: stretch;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.dock-layer-group.vertical.rail-end {
|
|
87
|
+
flex-direction: column-reverse;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* AX.W45 DK8 — the rail gets its OWN surface plate. Previously the rail was a
|
|
91
|
+
bare bordered gutter (a hairline `border-right`, no background), so its
|
|
92
|
+
`--primary 15%` indicator + `--accent 40%` hover were tuned against an absent
|
|
93
|
+
plate (the "bg's not right"). The `--dock-layer-rail-bg` rung (a quiet
|
|
94
|
+
`--surface-tint-8` default, consumer-overridable) gives the rail a finished
|
|
95
|
+
glass-quiet surface; the hover/active affordance reads the `--dock-layer-rail-
|
|
96
|
+
{hover,active}` tokens, so the whole rail ladder is tunable from §10. */
|
|
97
|
+
.dock-layer-rail {
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-direction: column;
|
|
100
|
+
flex-shrink: 0;
|
|
101
|
+
gap: var(--dock-layer-rail-gap, 0.125rem);
|
|
102
|
+
padding: var(--dock-layer-rail-padding, 0.125rem);
|
|
103
|
+
background: var(--dock-layer-rail-bg, var(--surface-tint-8));
|
|
104
|
+
border-radius: var(--dock-layer-rail-radius, var(--radius-md));
|
|
105
|
+
border-right: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.dock-layer-group.vertical .dock-layer-rail {
|
|
109
|
+
flex-direction: row;
|
|
110
|
+
border-right: none;
|
|
111
|
+
border-bottom: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.dock-layer-group.horizontal.rail-end .dock-layer-rail {
|
|
115
|
+
border-right: none;
|
|
116
|
+
border-left: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.dock-layer-group.vertical.rail-end .dock-layer-rail {
|
|
120
|
+
border-bottom: none;
|
|
121
|
+
border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* AU.W8.4 — the rail is a reka-ui Tabs contract. The travelling
|
|
125
|
+
`.dock-layer-tab-indicator` (the reka TabsIndicator) now carries the
|
|
126
|
+
active affordance; the rail is `position: relative` so the indicator's
|
|
127
|
+
absolute placement is rail-local. */
|
|
128
|
+
.dock-layer-rail {
|
|
129
|
+
position: relative;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.dock-layer-rail .dock-layer-tab {
|
|
133
|
+
position: relative;
|
|
134
|
+
display: inline-flex;
|
|
135
|
+
align-items: center;
|
|
136
|
+
justify-content: center;
|
|
137
|
+
width: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
138
|
+
height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
139
|
+
border: 0;
|
|
140
|
+
border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
|
|
141
|
+
background: transparent;
|
|
142
|
+
color: var(--muted-foreground);
|
|
143
|
+
cursor: pointer;
|
|
144
|
+
font: inherit;
|
|
145
|
+
font-size: 0.75rem;
|
|
146
|
+
/* The tab glyph rides above the travelling indicator backplate. */
|
|
147
|
+
z-index: 1;
|
|
148
|
+
transition:
|
|
149
|
+
background var(--dock-motion-fast),
|
|
150
|
+
color var(--dock-motion-fast);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.dock-layer-rail .dock-layer-tab:hover {
|
|
154
|
+
background: var(
|
|
155
|
+
--dock-layer-rail-hover,
|
|
156
|
+
color-mix(in srgb, var(--accent) 40%, transparent)
|
|
157
|
+
);
|
|
158
|
+
color: var(--foreground);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* AU.W8.4 — KEEP the active glyph tint on the selected tab (reka emits
|
|
162
|
+
`data-state="active"` + `aria-selected="true"`); the per-button active
|
|
163
|
+
BACKGROUND is RETIRED — the travelling indicator carries that affordance. */
|
|
164
|
+
.dock-layer-rail .dock-layer-tab[data-state="active"] {
|
|
165
|
+
color: var(--primary);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* AU.W8.4 — the dock control focus-ring contract does not cover
|
|
169
|
+
`.dock-layer-tab` (the rail tab is not in the `.dock-icon-button` family).
|
|
170
|
+
The roving tabindex means only the active tab is in the tab order; a
|
|
171
|
+
focus-visible tab paints the shared dock ring. */
|
|
172
|
+
.dock-layer-rail [role="tab"]:focus-visible {
|
|
173
|
+
box-shadow: var(--focus-ring-shadow);
|
|
174
|
+
outline: none;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* AX.W45 DK8 — the travelling indicator is now AXIS-AWARE. reka computes
|
|
178
|
+
`--reka-tabs-indicator-position`/`-size` for the axis the `<Tabs orientation>`
|
|
179
|
+
names; DockLayerGroup threads the group axis into it (`orientation="vertical"`
|
|
180
|
+
for the DEFAULT column rail, `"horizontal"` for the `.vertical` group's row
|
|
181
|
+
rail). The DEFAULT (horizontal-group) rail is a COLUMN of stacked tabs, so the
|
|
182
|
+
indicator travels the BLOCK (Y) axis — the prior `translateX` + `top:0` pinned
|
|
183
|
+
it at the top tab and it NEVER reached the active tab below (the mis-alignment
|
|
184
|
+
the user screenshotted). The default rule below travels Y; the `.vertical`
|
|
185
|
+
group's ROW rail overrides back to X. The active-tab plate reads the tunable
|
|
186
|
+
`--dock-layer-rail-active` rung.
|
|
187
|
+
|
|
188
|
+
AY.W-DOCK2 (D5 one-clock) — the rail indicator travel moves OFF the fixed-
|
|
189
|
+
linear `--dock-motion-resize` SECOND clock (DK7 killed exactly this pattern
|
|
190
|
+
for the leaving-pane opacity but left it alive on the rail; H-dock §D7 L2) onto
|
|
191
|
+
the `--spring-snappy` register. DECISION: a rail tab switch is a DISCRETE
|
|
192
|
+
selection (the user picks a pane), NOT the box collapse↔expand morph — so it
|
|
193
|
+
does NOT fold onto `--dock-morph-t` (the morph scalar). It uses the iOS
|
|
194
|
+
segmented-control register (`--spring-snappy`, the SAME curve `SegmentedTabs`'
|
|
195
|
+
indicator rides — the confirmed discrete-selection register), so the rail
|
|
196
|
+
indicator glides between tabs on the house spring, never a fixed-linear timer.
|
|
197
|
+
The binding outcome: NO `--dock-motion-resize` survives on the rail (recorded
|
|
198
|
+
in W-DOCK2-DELTA.md). */
|
|
199
|
+
.dock-layer-rail .dock-layer-tab-indicator {
|
|
200
|
+
position: absolute;
|
|
201
|
+
left: 0;
|
|
202
|
+
top: 0;
|
|
203
|
+
width: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
204
|
+
height: var(--reka-tabs-indicator-size);
|
|
205
|
+
transform: translateY(var(--reka-tabs-indicator-position));
|
|
206
|
+
border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
|
|
207
|
+
background: var(
|
|
208
|
+
--dock-layer-rail-active,
|
|
209
|
+
color-mix(in srgb, var(--primary) 15%, transparent)
|
|
210
|
+
);
|
|
211
|
+
transition:
|
|
212
|
+
width var(--duration-fast) var(--spring-snappy),
|
|
213
|
+
height var(--duration-fast) var(--spring-snappy),
|
|
214
|
+
transform var(--duration-fast) var(--spring-snappy);
|
|
215
|
+
pointer-events: none;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* The `.vertical` group's rail is a ROW of tabs (flex-direction: row), so the
|
|
219
|
+
indicator travels the INLINE (X) axis — the row layout, reka
|
|
220
|
+
`orientation="horizontal"`. */
|
|
221
|
+
.dock-layer-group.vertical .dock-layer-rail .dock-layer-tab-indicator {
|
|
222
|
+
height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
223
|
+
width: var(--reka-tabs-indicator-size);
|
|
224
|
+
transform: translateX(var(--reka-tabs-indicator-position));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.dock-layer-stack {
|
|
228
|
+
position: relative;
|
|
229
|
+
display: grid;
|
|
230
|
+
/* AW.W2 — the morph axis (width for a horizontal group, height for a
|
|
231
|
+
vertical one) is driven by the `useLayerTransition` SpringProgress in
|
|
232
|
+
pixel space (FLIP path) or the View-Transition (native path); a CSS
|
|
233
|
+
`width`/`height` transition here would be a SECOND driver on the same
|
|
234
|
+
axis (the AV.W9.0 dual-driver race that froze the dock). The cross axis
|
|
235
|
+
is intrinsic-sized and never morphs. So NO size transition on the stack
|
|
236
|
+
— one owner per axis. */
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Base layout — the crossfade + hit-test contract is shared with
|
|
240
|
+
`.dock-layer` above (see "Layer crossfade + hit-test contract"). The
|
|
241
|
+
default state is inactive: absolute + inset:0. */
|
|
242
|
+
.dock-layer-item-host {
|
|
243
|
+
grid-area: 1 / 1;
|
|
244
|
+
display: flex;
|
|
245
|
+
align-items: center;
|
|
246
|
+
white-space: nowrap;
|
|
247
|
+
gap: var(--dock-layer-gap, 0.375rem);
|
|
248
|
+
position: absolute;
|
|
249
|
+
inset: 0;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.dock-layer-item-host.is-active {
|
|
253
|
+
position: relative;
|
|
254
|
+
inset: auto;
|
|
255
|
+
width: max-content;
|
|
256
|
+
min-width: 0;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* AP.W3 — axis-aware layer pane. The stack + `useLayerTransition` are
|
|
260
|
+
axis-aware, but the pane was hardcoded to a no-wrap ROW with
|
|
261
|
+
`width: max-content` — forcing a `vertical` group's content onto one
|
|
262
|
+
horizontal line that could not grow down (the vertical-overflow fight).
|
|
263
|
+
A vertical group stacks in a column, stretches, wraps, and block-sizes
|
|
264
|
+
to the height the stack animates. Horizontal byte-identical. */
|
|
265
|
+
.dock-layer-group.vertical .dock-layer-item-host {
|
|
266
|
+
flex-direction: column;
|
|
267
|
+
align-items: stretch;
|
|
268
|
+
white-space: normal;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.dock-layer-group.vertical .dock-layer-item-host.is-active {
|
|
272
|
+
width: auto;
|
|
273
|
+
height: max-content;
|
|
274
|
+
}
|
|
275
|
+
}
|