@mkbabb/glass-ui 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CardFooter-3-VGho1J.js → CardFooter-C390imy7.js} +2 -2
- package/dist/{CollapsibleContent-wlmlDujU.js → CollapsibleContent-cauTbZEM.js} +1 -1
- package/dist/{CommandShortcut-C6lsz3pG.js → CommandShortcut-BiVyqipe.js} +5 -4
- package/dist/DataTable-FfkaAg2z.js +465 -0
- package/dist/DialogContent-IQ8_BRrC.js +100 -0
- package/dist/{DiscoGlyph-B7YooI2-.js → DiscoGlyph-BaZ8OawK.js} +1 -1
- package/dist/{GlyphFace-Bvk6OIas.js → GlyphFace-B_7vOmYn.js} +1 -1
- package/dist/HoverPopover-DTSYkJtw.js +96 -0
- package/dist/{IconTooltip-DXveGjx7.js → IconTooltip-BTyYn4mr.js} +1 -1
- package/dist/Input-CU9CNKmo.js +52 -0
- package/dist/{MetricBadge-J_GBCb8e.js → MetricBadge-BlrdbOGN.js} +1 -1
- package/dist/{NumberFieldContent-B6L6YrQz.js → NumberFieldContent-iOTQ5rGO.js} +8 -4
- package/dist/{PopoverContent-CxEEUL7Y.js → PopoverContent-B8WtJECb.js} +1 -1
- package/dist/Progress-DjM86vfb.js +254 -0
- package/dist/{ScrollingText-1Qjnwz6H.js → ScrollingText-P9o_DuMn.js} +1 -1
- package/dist/{SelectScrollDownButton-BvvvAbuh.js → SelectScrollDownButton-BGn3rjs9.js} +9 -8
- package/dist/TabsIndicator-DA0x9gPr.js +97 -0
- package/dist/{ToggleGroupItem-Cy7xHFEo.js → ToggleGroupItem-gyXj998A.js} +37 -40
- package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +454 -271
- package/dist/{button-DS3ULf5i.js → button-Ckn3eDfB.js} +27 -22
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +2 -2
- package/dist/collapsible.js +1 -1
- package/dist/color-rkK4RMx2.js +33 -0
- package/dist/color.d.ts +1 -0
- package/dist/color.js +2 -0
- package/dist/command.js +1 -1
- package/dist/compile-DVgAxagk.js +106 -0
- package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
- package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
- package/dist/components/custom/aurora/composables/color.d.ts +3 -25
- package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
- package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
- package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
- package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
- package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
- package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
- package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +2 -5
- package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
- package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/index.d.ts +2 -2
- package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
- package/dist/components/custom/configurator/density.d.ts +3 -8
- package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +3 -3
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
- package/dist/components/custom/dock/GlassDock.vue.d.ts +22 -18
- package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
- package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
- package/dist/components/custom/dock/index.d.ts +1 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/glyph-face/keys.d.ts +3 -29
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
- package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
- package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
- package/dist/components/custom/goo-blob/index.d.ts +7 -0
- package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
- package/dist/components/custom/goo-blob/types.d.ts +77 -0
- package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
- package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
- package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
- package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
- package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
- package/dist/components/custom/sortable-list/context.d.ts +2 -3
- package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
- package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
- package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
- package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
- package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
- package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
- package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
- package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
- package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
- package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
- package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
- package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
- package/dist/components/ui/avatar/index.d.ts +1 -1
- package/dist/components/ui/badge/index.d.ts +2 -2
- package/dist/components/ui/button/Button.vue.d.ts +3 -1
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
- package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
- package/dist/components/ui/command/Command.vue.d.ts +3 -3
- package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
- package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
- package/dist/components/ui/input/Input.vue.d.ts +19 -1
- package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
- package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
- package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
- package/dist/components/ui/progress/index.d.ts +5 -2
- package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
- package/dist/components/ui/select/Select.vue.d.ts +2 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/slider/index.d.ts +12 -11
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
- package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
- 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/toggleGroupContext.d.ts +2 -3
- package/dist/composables/color/index.d.ts +49 -0
- package/dist/composables/context/createContext.d.ts +56 -0
- package/dist/composables/context/index.d.ts +1 -0
- package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
- package/dist/composables/dark/index.d.ts +3 -0
- package/dist/composables/dark/useGlobalDark.d.ts +19 -2
- package/dist/composables/dom/index.d.ts +0 -3
- package/dist/composables/dom/useClipboard.d.ts +35 -12
- package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
- package/dist/composables/glass/webgl/compile.d.ts +15 -0
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
- package/dist/composables/motion/core/index.d.ts +1 -1
- package/dist/composables/motion/index.d.ts +1 -1
- package/dist/composables/motion/useCountup.d.ts +29 -0
- package/dist/composables/motion/vReveal.d.ts +2 -0
- package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
- package/dist/composables/sortable/dragController.d.ts +44 -0
- package/dist/composables/sortable/dropResolver.d.ts +34 -0
- package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
- package/dist/composables/sortable/index.d.ts +1 -1
- package/dist/composables/sortable/touchGate.d.ts +26 -0
- package/dist/composables/sortable/transitionTiming.d.ts +50 -0
- package/dist/composables/sortable/types.d.ts +133 -0
- package/dist/composables/sortable/useSortable.d.ts +25 -153
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +1 -1
- package/dist/controls.js +4 -4
- package/dist/createContext-DBMGRlx4.js +25 -0
- package/dist/dark.d.ts +2 -1
- package/dist/dark.js +9 -2
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +1 -1
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +400 -261
- package/dist/dockContext-spUj_-E5.js +9 -0
- package/dist/dom.js +6 -6
- package/dist/{dropdown-menu-naE0skDg.js → dropdown-menu-EFjl5iKo.js} +1 -1
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +26 -20
- package/dist/fonts/README.md +21 -0
- package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/dist/forms.js +68 -59
- package/dist/glass-panel.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +226 -328
- package/dist/glyph-face.js +2 -2
- package/dist/goo-blob.d.ts +1 -0
- package/dist/goo-blob.js +538 -0
- package/dist/header-ribbon.js +2 -2
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/keys-BFoma9vm.js +9 -0
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +57 -39
- package/dist/metric-badge.js +1 -1
- package/dist/motion-core.js +82 -123
- package/dist/motion.js +62 -14
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BpTf63Hp.js → presets-1OhFpaIC.js} +1 -1
- package/dist/prng-Bz_1Tydc.js +15 -0
- package/dist/progress.js +2 -2
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +38 -32
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +8 -8
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-wx8ifVFB.js → slider-BOh8ycfZ.js} +7 -11
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +36 -38
- package/dist/stacked-icons.js +2 -2
- package/dist/styles/animations.css +1 -1
- package/dist/styles/cards.css +1 -1
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock-controls.css +486 -0
- package/dist/styles/dock.css +275 -450
- package/dist/styles/fonts.css +25 -0
- package/dist/styles/glass-specular-track.css +154 -0
- package/dist/styles/glass.css +74 -2
- package/dist/styles/index.css +21 -2
- package/dist/styles/instrument-chassis.css +11 -4
- package/dist/styles/theme.css +73 -21
- package/dist/styles/tokens.css +271 -140
- package/dist/styles/typography.css +14 -8
- package/dist/styles/utilities.css +36 -8
- package/dist/styles/view-transition.css +10 -4
- package/dist/switch.js +1 -1
- package/dist/tabs.js +139 -112
- package/dist/timeline.js +219 -158
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.d.ts +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{useAnimatedNumber-BOxrS3a6.js → useAnimatedNumber-BF6r64lA.js} +1 -1
- package/dist/useClipboard-D8vFyRCa.js +97 -0
- package/dist/{useConfiguratorState-Dq2gNv4A.js → useConfiguratorState-DUtC1jxr.js} +82 -86
- package/dist/useGlobalDark-CWiaCoEw.js +34 -0
- package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
- package/dist/useSortable-DnyGXKKY.js +246 -0
- package/dist/{useTouchGate-XX8gHfay.js → useTouchGate-CS5Csc2h.js} +1 -1
- package/dist/utils/prng.d.ts +4 -0
- package/dist/vReveal-u2wSG2El.js +35 -0
- package/dist/watercolor-dot.d.ts +1 -0
- package/dist/watercolor-dot.js +129 -0
- package/package.json +98 -14
- package/src/fonts/README.md +21 -0
- package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/src/styles/animations.css +1 -1
- package/src/styles/cards.css +1 -1
- package/src/styles/dock-controls.css +486 -0
- package/src/styles/dock.css +275 -450
- package/src/styles/fonts.css +25 -0
- package/src/styles/glass-specular-track.css +154 -0
- package/src/styles/glass.css +74 -2
- package/src/styles/index.css +21 -2
- package/src/styles/instrument-chassis.css +11 -4
- package/src/styles/theme.css +73 -21
- package/src/styles/tokens.css +271 -140
- package/src/styles/typography.css +14 -8
- package/src/styles/utilities.css +36 -8
- package/src/styles/view-transition.css +10 -4
- package/dist/DataTable-BsrDYdoE.js +0 -460
- package/dist/DialogContent-B61rP8lj.js +0 -93
- package/dist/HoverPopover-BlEwqG7S.js +0 -96
- package/dist/Input-IFsIzId2.js +0 -30
- package/dist/Progress-Bs44qWEM.js +0 -126
- package/dist/UnderlineTabs-B4FV2zi_.js +0 -37
- package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
- package/dist/composables/dom/useBreakpoint.d.ts +0 -38
- package/dist/composables/dom/useIdleReady.d.ts +0 -63
- package/dist/composables/dom/useViewportReady.d.ts +0 -87
- package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
- package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
- package/dist/composables/motion/useStagger.d.ts +0 -50
- package/dist/dockContext-DM58L1Jt.js +0 -16
- package/dist/keys-SIKQYNx1.js +0 -11
- package/dist/supportsCssTimeline-IQY3gfKD.js +0 -12
- package/dist/useGlobalDark-BUUTZvkU.js +0 -24
- package/dist/useIdleReady-sLhGo6CL.js +0 -162
- package/dist/useIntersectionPause-CUmANkoc.js +0 -39
- package/dist/useSortable-DLK9kwZp.js +0 -189
- /package/dist/{HoverCardContent-DGUhpRVt.js → HoverCardContent-ICfIMZX1.js} +0 -0
- /package/dist/{InstrumentChassis-CqKPBNqp.js → InstrumentChassis-DaHIZCqy.js} +0 -0
- /package/dist/{InstrumentRail-CCjvKkpB.js → InstrumentRail-B0qqLFN0.js} +0 -0
- /package/dist/{Label-D53EOwLE.js → Label-CZk-3nTc.js} +0 -0
- /package/dist/{PaperBackdrop-Ds-wDsKf.js → PaperBackdrop-D_YZW47j.js} +0 -0
- /package/dist/{SelectGroup-DAgcsfFw.js → SelectGroup-CMdoCjRE.js} +0 -0
- /package/dist/{SelectSeparator-DN1jzLaI.js → SelectSeparator-CaJnPF3_.js} +0 -0
- /package/dist/{Separator-DXxac0j8.js → Separator-C2XtAXRp.js} +0 -0
- /package/dist/{Switch-imA0Hdjs.js → Switch-x8n6husW.js} +0 -0
- /package/dist/{Toaster-Brs6QjBU.js → Toaster-DdhMKfus.js} +0 -0
- /package/dist/{TooltipProvider-MZFRxOvT.js → TooltipProvider-D-JrSqDu.js} +0 -0
- /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
- /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
- /package/dist/{constants-DfWPi8kh.js → constants-DsCdlK9I.js} +0 -0
- /package/dist/{sheet-BnvZRXPq.js → sheet-CQYYrkr9.js} +0 -0
- /package/dist/{useGlassRenderer-C98tZnJ7.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
- /package/dist/{useInterval-B58LmYth.js → useInterval-CHVYFpXV.js} +0 -0
- /package/dist/{useResizeObserver-C_7GjpRn.js → useResizeObserver-DX-STszm.js} +0 -0
- /package/dist/{useTextHighlight-CLST6an0.js → useTextHighlight-Dmtofpk2.js} +0 -0
- /package/dist/{useTimer-6FoosoDY.js → useTimer-DGgoxTXL.js} +0 -0
- /package/dist/{useUserInvalidAria-BW5iyqWR.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
- /package/dist/{useViewTransition-CUJM7fXT.js → useViewTransition-D4ssvnXZ.js} +0 -0
package/dist/styles/dock.css
CHANGED
|
@@ -19,7 +19,11 @@
|
|
|
19
19
|
) {
|
|
20
20
|
--dock-motion-fast: var(--duration-fast) var(--ease-standard);
|
|
21
21
|
--dock-motion-standard: var(--duration-normal) var(--ease-standard);
|
|
22
|
-
|
|
22
|
+
/* AT.W6-dock-c — the FLIP-fallback timing. `--dock-resize-spring` (the
|
|
23
|
+
`--spring-snappy` linear()) is the single source curve the native
|
|
24
|
+
View-Transition path ALSO consumes, so the morph is timing-identical
|
|
25
|
+
across engines. */
|
|
26
|
+
--dock-motion-resize: var(--duration-normal) var(--dock-resize-spring);
|
|
23
27
|
}
|
|
24
28
|
|
|
25
29
|
/* Shared four-state contract — the focus-visible ring + disabled paint are
|
|
@@ -64,6 +68,15 @@
|
|
|
64
68
|
position: relative;
|
|
65
69
|
display: inline-flex;
|
|
66
70
|
align-items: center;
|
|
71
|
+
/* AV.W16 TW3 — the dock establishes an inline-size container named
|
|
72
|
+
`dock` so its descendants (the label glyph, the density rules)
|
|
73
|
+
read the dock's OWN box, not the viewport. This makes the dock
|
|
74
|
+
portable into a 320px sidebar: the label compresses off the
|
|
75
|
+
dock's box width, not `@media`. A consumer that sets the
|
|
76
|
+
`containerName` prop overrides the name via inline style (the
|
|
77
|
+
explicit container-query opt-in); the default `dock` name backs
|
|
78
|
+
the built-in label/density container reads below. */
|
|
79
|
+
container: dock / inline-size;
|
|
67
80
|
border-radius: var(--radius-dock);
|
|
68
81
|
white-space: nowrap;
|
|
69
82
|
max-inline-size: var(--dock-max-inline-size);
|
|
@@ -71,18 +84,19 @@
|
|
|
71
84
|
background: var(--glass-bg-dock, var(--glass-bg-resting));
|
|
72
85
|
backdrop-filter: var(--dock-surface-blur);
|
|
73
86
|
border: 1.5px solid var(--glass-border-dock, var(--glass-border-resting));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
is
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
/* AV.W15 M3 — the full-perimeter `--glass-edge-light` rim rides as the
|
|
88
|
+
leading inset layer of the dock shadow stack (the navigation-band
|
|
89
|
+
silhouette catch-light, distinct from the top-only highlight). */
|
|
90
|
+
box-shadow: var(--glass-edge-light), var(--shadow-dock-override, var(--shadow-dock));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* `overflow: hidden` is the clip shell for every dock. AT.W7-dock-a
|
|
94
|
+
folded out the prior `containerName` clip-lift (the container-query
|
|
95
|
+
opt-in is orthogonal — it no longer silently changes the clip), so the
|
|
96
|
+
clip applies universally and the `.expanded` / `.always-expanded` /
|
|
97
|
+
`.dock-overflow-wrap` states lift it back to `visible` where they need to
|
|
98
|
+
grow. A consumer wanting multi-line content opts into `overflow="wrap"`. */
|
|
99
|
+
.glass-dock {
|
|
86
100
|
overflow: hidden;
|
|
87
101
|
}
|
|
88
102
|
|
|
@@ -92,10 +106,22 @@
|
|
|
92
106
|
--dock-control-size: var(--dock-density-compact-control-size, 2rem);
|
|
93
107
|
--dock-layer-height: var(--dock-density-compact-layer-height, 2rem);
|
|
94
108
|
--dock-layer-gap: var(--dock-density-compact-gap, 0.25rem);
|
|
95
|
-
--dock-trigger-padding-block: var(
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
109
|
+
--dock-trigger-padding-block: var(
|
|
110
|
+
--dock-density-compact-trigger-padding-block,
|
|
111
|
+
0.1875rem
|
|
112
|
+
);
|
|
113
|
+
--dock-trigger-padding-inline: var(
|
|
114
|
+
--dock-density-compact-trigger-padding-inline,
|
|
115
|
+
0.4375rem
|
|
116
|
+
);
|
|
117
|
+
--dock-tab-padding-block: var(
|
|
118
|
+
--dock-density-compact-tab-padding-block,
|
|
119
|
+
0.3125rem
|
|
120
|
+
);
|
|
121
|
+
--dock-tab-padding-inline: var(
|
|
122
|
+
--dock-density-compact-tab-padding-inline,
|
|
123
|
+
0.625rem
|
|
124
|
+
);
|
|
99
125
|
--dock-tab-h: 32px;
|
|
100
126
|
}
|
|
101
127
|
|
|
@@ -107,10 +133,22 @@
|
|
|
107
133
|
--dock-control-size: var(--dock-density-comfortable-control-size, 2.5rem);
|
|
108
134
|
--dock-layer-height: var(--dock-density-comfortable-layer-height, 2.5rem);
|
|
109
135
|
--dock-layer-gap: var(--dock-density-comfortable-gap, 0.375rem);
|
|
110
|
-
--dock-trigger-padding-block: var(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
136
|
+
--dock-trigger-padding-block: var(
|
|
137
|
+
--dock-density-comfortable-trigger-padding-block,
|
|
138
|
+
0.25rem
|
|
139
|
+
);
|
|
140
|
+
--dock-trigger-padding-inline: var(
|
|
141
|
+
--dock-density-comfortable-trigger-padding-inline,
|
|
142
|
+
0.5rem
|
|
143
|
+
);
|
|
144
|
+
--dock-tab-padding-block: var(
|
|
145
|
+
--dock-density-comfortable-tab-padding-block,
|
|
146
|
+
0.4375rem
|
|
147
|
+
);
|
|
148
|
+
--dock-tab-padding-inline: var(
|
|
149
|
+
--dock-density-comfortable-tab-padding-inline,
|
|
150
|
+
0.75rem
|
|
151
|
+
);
|
|
114
152
|
--dock-tab-h: 38px;
|
|
115
153
|
}
|
|
116
154
|
|
|
@@ -120,10 +158,22 @@
|
|
|
120
158
|
--dock-control-size: var(--dock-density-spacious-control-size, 2.75rem);
|
|
121
159
|
--dock-layer-height: var(--dock-density-spacious-layer-height, 2.75rem);
|
|
122
160
|
--dock-layer-gap: var(--dock-density-spacious-gap, 0.5rem);
|
|
123
|
-
--dock-trigger-padding-block: var(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
161
|
+
--dock-trigger-padding-block: var(
|
|
162
|
+
--dock-density-spacious-trigger-padding-block,
|
|
163
|
+
0.375rem
|
|
164
|
+
);
|
|
165
|
+
--dock-trigger-padding-inline: var(
|
|
166
|
+
--dock-density-spacious-trigger-padding-inline,
|
|
167
|
+
0.625rem
|
|
168
|
+
);
|
|
169
|
+
--dock-tab-padding-block: var(
|
|
170
|
+
--dock-density-spacious-tab-padding-block,
|
|
171
|
+
0.5rem
|
|
172
|
+
);
|
|
173
|
+
--dock-tab-padding-inline: var(
|
|
174
|
+
--dock-density-spacious-tab-padding-inline,
|
|
175
|
+
0.875rem
|
|
176
|
+
);
|
|
127
177
|
--dock-tab-h: 44px;
|
|
128
178
|
}
|
|
129
179
|
|
|
@@ -137,25 +187,43 @@
|
|
|
137
187
|
--dock-control-size: var(--dock-density-audacious-control-size, 4rem);
|
|
138
188
|
--dock-layer-height: var(--dock-density-audacious-layer-height, 4rem);
|
|
139
189
|
--dock-layer-gap: var(--dock-density-audacious-gap, 0.875rem);
|
|
140
|
-
--dock-trigger-padding-block: var(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
190
|
+
--dock-trigger-padding-block: var(
|
|
191
|
+
--dock-density-audacious-trigger-padding-block,
|
|
192
|
+
0.625rem
|
|
193
|
+
);
|
|
194
|
+
--dock-trigger-padding-inline: var(
|
|
195
|
+
--dock-density-audacious-trigger-padding-inline,
|
|
196
|
+
1rem
|
|
197
|
+
);
|
|
198
|
+
--dock-tab-padding-block: var(
|
|
199
|
+
--dock-density-audacious-tab-padding-block,
|
|
200
|
+
0.5rem
|
|
201
|
+
);
|
|
202
|
+
--dock-tab-padding-inline: var(
|
|
203
|
+
--dock-density-audacious-tab-padding-inline,
|
|
204
|
+
1.5rem
|
|
205
|
+
);
|
|
144
206
|
--dock-tab-min-height: var(--dock-density-audacious-tab-min-height, 3.5rem);
|
|
145
207
|
--dock-tab-h: var(--dock-density-audacious-tab-min-height, 3.5rem);
|
|
146
208
|
}
|
|
147
209
|
|
|
148
|
-
/* Density-audacious
|
|
149
|
-
label glyphs compress so the chrome
|
|
150
|
-
(≤14px
|
|
151
|
-
`
|
|
152
|
-
|
|
153
|
-
|
|
210
|
+
/* Density-audacious narrow-box carve (AV.W16 TW3) — when the dock's OWN
|
|
211
|
+
box is narrow the audacious-dock label glyphs compress so the chrome
|
|
212
|
+
doesn't overflow its host (≤14px below 30rem, 15px 30–45rem). Keyed off
|
|
213
|
+
the dock's `dock` inline-size container (established on `.glass-dock`
|
|
214
|
+
above) rather than the viewport — so a dock dropped into a 320px
|
|
215
|
+
sidebar compresses its label off ITS box, not the page width. 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 {
|
|
154
222
|
--dock-label-size: 14px;
|
|
155
223
|
}
|
|
156
224
|
}
|
|
157
|
-
@
|
|
158
|
-
.glass-dock[data-density="audacious"] {
|
|
225
|
+
@container dock (min-width: 30rem) and (max-width: 44.9375rem) {
|
|
226
|
+
.glass-dock[data-density="audacious"] .dock-label {
|
|
159
227
|
--dock-label-size: 15px;
|
|
160
228
|
}
|
|
161
229
|
}
|
|
@@ -192,7 +260,7 @@
|
|
|
192
260
|
}
|
|
193
261
|
|
|
194
262
|
/* Vertical rails grow-to-fit + clamp, no scroll: descendants wrap to
|
|
195
|
-
multiple rows (opt-in via `
|
|
263
|
+
multiple rows (opt-in via `overflow="wrap"`) or clamp via
|
|
196
264
|
`--dock-max-block-size`; the cap fails visibly rather than masking
|
|
197
265
|
overflow as a scroll affordance. No edge-fade mask — a rail that never
|
|
198
266
|
scrolls has nothing to feather. */
|
|
@@ -262,7 +330,10 @@
|
|
|
262
330
|
* `.variant-instrument-strip` — chassis-strip carries ONE canonical
|
|
263
331
|
* border-radius (`--radius-card`), per the chassis family. */
|
|
264
332
|
.glass-dock.variant-instrument-strip {
|
|
265
|
-
padding: var(
|
|
333
|
+
padding: var(
|
|
334
|
+
--dock-instrument-strip-padding,
|
|
335
|
+
var(--dock-padding-inline, 0.75rem)
|
|
336
|
+
);
|
|
266
337
|
background: var(--glass-bg-chassis, var(--glass-bg-wash));
|
|
267
338
|
border: 1px solid var(--glass-border-quiet, var(--glass-border-resting));
|
|
268
339
|
border-radius: var(--radius-card);
|
|
@@ -305,7 +376,10 @@
|
|
|
305
376
|
}
|
|
306
377
|
|
|
307
378
|
.glass-dock.collapsed .dock-layer--summary {
|
|
308
|
-
min-width: var(
|
|
379
|
+
min-width: var(
|
|
380
|
+
--dock-collapsed-summary-min-size,
|
|
381
|
+
var(--dock-layer-height, 2.5rem)
|
|
382
|
+
);
|
|
309
383
|
justify-content: center;
|
|
310
384
|
}
|
|
311
385
|
|
|
@@ -383,15 +457,43 @@
|
|
|
383
457
|
transition: width var(--dock-motion-resize);
|
|
384
458
|
}
|
|
385
459
|
|
|
460
|
+
/* AV.W9.0 — the AU.W8b native container-morph arm (the `@supports` block that
|
|
461
|
+
opted the subtree into auto-to-length width interpolation and declared the
|
|
462
|
+
active layer's destination width as intrinsic) is RETIRED. It was never made
|
|
463
|
+
mutually exclusive with the `SpringProgress` FLIP driver in
|
|
464
|
+
`useLayerTransition.ts`: on Chrome 129+ the native arm interpolated
|
|
465
|
+
`.dock-layers` width on the browser's own clock WHILE the spring wrote inline
|
|
466
|
+
`width` per frame — a dual-driver race over the SAME property that cancelled
|
|
467
|
+
the morph and froze the dock at runtime (born-RED under
|
|
468
|
+
`proof:dock-animation-live`). One authority per concern: the size morph now
|
|
469
|
+
has exactly ONE driver on every engine — the `SpringProgress` FLIP path above
|
|
470
|
+
(`:382`), or the orthogonal View-Transitions path inside
|
|
471
|
+
`startViewTransition` (which owns size + crossfade as a single browser-side
|
|
472
|
+
mutation and never touches inline width). Neither coexists with a CSS-native
|
|
473
|
+
intrinsic-width destination, so the race is gone. This re-expresses the
|
|
474
|
+
`e8380d7` "one driver owns the morph" invariant on the modern
|
|
475
|
+
FLIP+spring(+VT) architecture. */
|
|
476
|
+
|
|
386
477
|
/* Horizontal dock content grows visibly when the active layer's natural
|
|
387
478
|
width exceeds the content area (grow-to-fit; consumers needing wrap opt
|
|
388
|
-
into `
|
|
479
|
+
into `overflow="wrap"`). No edge-fade mask — content never clips or scrolls,
|
|
389
480
|
so a feather has nothing to feather and only bleeds a stray ramp onto
|
|
390
481
|
the edge controls. */
|
|
391
|
-
.glass-dock.expanded:not(.dock-wrap) > .dock-layers {
|
|
482
|
+
.glass-dock.expanded:not(.dock-overflow-wrap) > .dock-layers {
|
|
392
483
|
overflow-x: visible;
|
|
393
484
|
}
|
|
394
485
|
|
|
486
|
+
/* AU.W8b-visibility-fork — the 3-state active/inactive/leaving visibility
|
|
487
|
+
contract below is LOAD-BEARING (the a11y-006 bite-anchor). A later refactor
|
|
488
|
+
greps for this marker so the semantics are not collapsed: the inactive layer
|
|
489
|
+
leaves the hit-test tree (`visibility:hidden`), the leaving layer stays
|
|
490
|
+
painted-but-untouchable through its fade (`visibility:visible` +
|
|
491
|
+
`pointer-events:none`), and the active layer shows IMMEDIATELY (`visibility
|
|
492
|
+
0s`, no fade-in delay). The hand-rolled 3-state fork below is now the SOLE
|
|
493
|
+
visibility authority on every engine — AV.W9.1 retired the native
|
|
494
|
+
discrete-visibility arm that used to second-drive it, so one owner governs
|
|
495
|
+
visibility (one owner governs size, one owns opacity). */
|
|
496
|
+
|
|
395
497
|
/* ── Layer crossfade + hit-test contract (shared) ──────────────────
|
|
396
498
|
Two dock-layer surfaces stack on a 1/1 CSS grid and crossfade:
|
|
397
499
|
`.dock-layer` (GlassDock's built-in collapsed↔expanded pair) and
|
|
@@ -409,12 +511,21 @@
|
|
|
409
511
|
flow, so the FLIP width measurement in `useLayerTransition` still
|
|
410
512
|
reads its geometry (`display:none` would zero it). The delayed
|
|
411
513
|
`visibility` transition holds a leaving layer `visible` for the
|
|
412
|
-
length of the opacity crossfade, then flips it `hidden`.
|
|
514
|
+
length of the opacity crossfade, then flips it `hidden`.
|
|
515
|
+
|
|
516
|
+
AU.W2 — the opacity-lockstep fold (slides-F P0, the "not iOS-smooth"
|
|
517
|
+
report). The layer fade rides `--dock-motion-resize` (the SAME duration +
|
|
518
|
+
spring the container morph runs at, `:189`/`:216`/`:385`) — NOT the faster
|
|
519
|
+
`--dock-motion-fast` (0.2s). Before, the host faded in 0.2s while the
|
|
520
|
+
container morphed in 0.3s: a 100ms-apart settle (the items appeared to lag
|
|
521
|
+
the pill). Now the fade and the morph settle in lockstep. The matched
|
|
522
|
+
`visibility` hold extends to `--duration-normal` so the leaving layer stays
|
|
523
|
+
paintable for the FULL (now longer) crossfade. */
|
|
413
524
|
.dock-layer,
|
|
414
525
|
.dock-layer-item-host {
|
|
415
526
|
transition:
|
|
416
|
-
opacity var(--dock-motion-
|
|
417
|
-
visibility 0s linear var(--duration-
|
|
527
|
+
opacity var(--dock-motion-resize),
|
|
528
|
+
visibility 0s linear var(--duration-normal);
|
|
418
529
|
}
|
|
419
530
|
|
|
420
531
|
.dock-layer:not(.layer-active),
|
|
@@ -429,9 +540,12 @@
|
|
|
429
540
|
opacity: 1;
|
|
430
541
|
visibility: visible;
|
|
431
542
|
pointer-events: auto;
|
|
432
|
-
/* The active layer shows immediately — no deferred `visibility`.
|
|
543
|
+
/* The active layer shows immediately — no deferred `visibility`. AU.W2:
|
|
544
|
+
the opacity rides `--dock-motion-resize` (lockstep with the container
|
|
545
|
+
morph), but the `visibility 0s` stays immediate (the `:434` rule
|
|
546
|
+
governs — the active layer must paint at once, no fade-in delay). */
|
|
433
547
|
transition:
|
|
434
|
-
opacity var(--dock-motion-
|
|
548
|
+
opacity var(--dock-motion-resize),
|
|
435
549
|
visibility 0s;
|
|
436
550
|
}
|
|
437
551
|
|
|
@@ -445,6 +559,19 @@
|
|
|
445
559
|
pointer-events: none;
|
|
446
560
|
}
|
|
447
561
|
|
|
562
|
+
/* AV.W9.1 — the AU.W8b native discrete-visibility arm (the second `@supports`
|
|
563
|
+
block that expressed the 3-state contract as one discrete transition over
|
|
564
|
+
opacity + visibility with a `@starting-style` entry anchor) is RETIRED. It
|
|
565
|
+
was a THIRD opacity/visibility authority overlapping the hand-rolled 3-state
|
|
566
|
+
fork above and the spring's settle — three owners for one concern. With the
|
|
567
|
+
native size arm gone (W9.0), opacity now has ONE owner everywhere: the
|
|
568
|
+
`opacity var(--dock-motion-resize)` crossfade on `.dock-layer{,-item-host}`
|
|
569
|
+
(the AU.W2 lockstep token — kept), and visibility has ONE owner: the delayed
|
|
570
|
+
`visibility 0s linear var(--duration-normal)` hold of the
|
|
571
|
+
`AU.W8b-visibility-fork` 3-state fallback above (the a11y-006 bite-anchor,
|
|
572
|
+
LOAD-BEARING). One authority per concern: size = spring/VT, opacity = the
|
|
573
|
+
CSS crossfade, visibility = the delayed-hold fork. */
|
|
574
|
+
|
|
448
575
|
/* ── Base layout — distinct per surface ─────────────────────────── */
|
|
449
576
|
.dock-layer {
|
|
450
577
|
display: flex;
|
|
@@ -503,7 +630,7 @@
|
|
|
503
630
|
so the pill's rounded edge masks the scroll boundary — hence the
|
|
504
631
|
grow-mode `overflow-x: visible` (`.dock-layers`, above) is overridden
|
|
505
632
|
back to `hidden` here. */
|
|
506
|
-
.glass-dock.dock-scroll-x.expanded:not(.dock-wrap) > .dock-layers {
|
|
633
|
+
.glass-dock.dock-scroll-x.expanded:not(.dock-overflow-wrap) > .dock-layers {
|
|
507
634
|
overflow-x: hidden;
|
|
508
635
|
}
|
|
509
636
|
|
|
@@ -539,33 +666,40 @@
|
|
|
539
666
|
display: none;
|
|
540
667
|
}
|
|
541
668
|
|
|
542
|
-
|
|
669
|
+
/* ── `overflow="wrap"` recipe (the `.dock-overflow-wrap` hook) ────────
|
|
670
|
+
Parallel to the `.dock-scroll-{x,y}` hooks the `overflow="scroll"`
|
|
671
|
+
member emits: the `overflow="wrap"` enum member emits this class. (The
|
|
672
|
+
prior `wrap` boolean's hook is retired — clean break, no alias.)
|
|
673
|
+
Expanded content wraps to multiple rows; the pill narrows to the
|
|
674
|
+
viewport gutter and snaps back to a single nowrap row past
|
|
675
|
+
`--dock-overflow-bp` (the `@media` at the tail). */
|
|
676
|
+
.glass-dock.dock-overflow-wrap {
|
|
543
677
|
white-space: normal;
|
|
544
678
|
border-radius: var(--radius-2xl);
|
|
545
679
|
max-width: var(--dock-wrap-max-width);
|
|
546
|
-
padding:
|
|
547
|
-
var(--dock-wrap-padding-block, var(--dock-padding-block, 0.375rem))
|
|
680
|
+
padding: var(--dock-wrap-padding-block, var(--dock-padding-block, 0.375rem))
|
|
548
681
|
var(--dock-wrap-padding-inline, 0.625rem);
|
|
549
682
|
}
|
|
550
683
|
|
|
551
|
-
.glass-dock.dock-wrap .dock-layer--full {
|
|
684
|
+
.glass-dock.dock-overflow-wrap .dock-layer--full {
|
|
552
685
|
flex-wrap: wrap;
|
|
553
686
|
justify-content: center;
|
|
554
687
|
height: auto;
|
|
555
688
|
min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
|
|
556
|
-
gap: var(--dock-wrap-row-gap, 0.25rem)
|
|
689
|
+
gap: var(--dock-wrap-row-gap, 0.25rem)
|
|
690
|
+
var(--dock-wrap-column-gap, var(--dock-layer-gap, 0.375rem));
|
|
557
691
|
}
|
|
558
692
|
|
|
559
|
-
.glass-dock.dock-wrap .dock-layer--summary {
|
|
693
|
+
.glass-dock.dock-overflow-wrap .dock-layer--summary {
|
|
560
694
|
height: auto;
|
|
561
695
|
min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
|
|
562
696
|
}
|
|
563
697
|
|
|
564
|
-
.glass-dock.dock-wrap .dock-separator {
|
|
698
|
+
.glass-dock.dock-overflow-wrap .dock-separator {
|
|
565
699
|
display: none;
|
|
566
700
|
}
|
|
567
701
|
|
|
568
|
-
.glass-dock.dock-wrap.collapsed {
|
|
702
|
+
.glass-dock.dock-overflow-wrap.collapsed {
|
|
569
703
|
border-radius: var(--radius-pill);
|
|
570
704
|
white-space: nowrap;
|
|
571
705
|
max-width: none;
|
|
@@ -633,7 +767,16 @@
|
|
|
633
767
|
border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
|
|
634
768
|
}
|
|
635
769
|
|
|
770
|
+
/* AU.W8.4 — the rail is a reka-ui Tabs contract. The travelling
|
|
771
|
+
`.dock-layer-tab-indicator` (the reka TabsIndicator) now carries the
|
|
772
|
+
active affordance; the rail is `position: relative` so the indicator's
|
|
773
|
+
absolute placement is rail-local. */
|
|
774
|
+
.dock-layer-rail {
|
|
775
|
+
position: relative;
|
|
776
|
+
}
|
|
777
|
+
|
|
636
778
|
.dock-layer-rail .dock-layer-tab {
|
|
779
|
+
position: relative;
|
|
637
780
|
display: inline-flex;
|
|
638
781
|
align-items: center;
|
|
639
782
|
justify-content: center;
|
|
@@ -646,6 +789,8 @@
|
|
|
646
789
|
cursor: pointer;
|
|
647
790
|
font: inherit;
|
|
648
791
|
font-size: 0.75rem;
|
|
792
|
+
/* The tab glyph rides above the travelling indicator backplate. */
|
|
793
|
+
z-index: 1;
|
|
649
794
|
transition:
|
|
650
795
|
background var(--dock-motion-fast),
|
|
651
796
|
color var(--dock-motion-fast);
|
|
@@ -656,11 +801,47 @@
|
|
|
656
801
|
color: var(--foreground);
|
|
657
802
|
}
|
|
658
803
|
|
|
659
|
-
|
|
660
|
-
|
|
804
|
+
/* AU.W8.4 — KEEP the active glyph tint on the selected tab (reka emits
|
|
805
|
+
`data-state="active"` + `aria-selected="true"`); the per-button active
|
|
806
|
+
BACKGROUND is RETIRED — the travelling indicator carries that affordance. */
|
|
807
|
+
.dock-layer-rail .dock-layer-tab[data-state="active"] {
|
|
661
808
|
color: var(--primary);
|
|
662
809
|
}
|
|
663
810
|
|
|
811
|
+
/* AU.W8.4 — the dock control focus-ring contract does not cover
|
|
812
|
+
`.dock-layer-tab` (the rail tab is not in the `.dock-icon-button` family).
|
|
813
|
+
The roving tabindex means only the active tab is in the tab order; a
|
|
814
|
+
focus-visible tab paints the shared dock ring. */
|
|
815
|
+
.dock-layer-rail [role="tab"]:focus-visible {
|
|
816
|
+
box-shadow: var(--focus-ring-shadow);
|
|
817
|
+
outline: none;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
/* AU.W8.4 — the travelling indicator (reka TabsIndicator). reka computes
|
|
821
|
+
`--reka-tabs-indicator-position` + `--reka-tabs-indicator-size` from the
|
|
822
|
+
active tab's geometry; the indicator morphs between tabs riding
|
|
823
|
+
`--dock-motion-resize` (= `--spring-dock` after AU.W8.2) — NOT a hardcoded
|
|
824
|
+
`--spring-snappy`. It paints the active-tab backplate the per-button
|
|
825
|
+
`.is-active` background used to. */
|
|
826
|
+
.dock-layer-rail .dock-layer-tab-indicator {
|
|
827
|
+
position: absolute;
|
|
828
|
+
left: 0;
|
|
829
|
+
top: 0;
|
|
830
|
+
height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
831
|
+
width: var(--reka-tabs-indicator-size);
|
|
832
|
+
transform: translateX(var(--reka-tabs-indicator-position));
|
|
833
|
+
border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
|
|
834
|
+
background: color-mix(in srgb, var(--primary) 15%, transparent);
|
|
835
|
+
transition:
|
|
836
|
+
width var(--dock-motion-resize),
|
|
837
|
+
transform var(--dock-motion-resize);
|
|
838
|
+
pointer-events: none;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/* For a vertical rail the indicator travels along the inline axis still
|
|
842
|
+
(the horizontal-always keyboard decision keeps the indicator inline);
|
|
843
|
+
reka's position var resolves to the active tab offset regardless. */
|
|
844
|
+
|
|
664
845
|
.dock-layer-stack {
|
|
665
846
|
position: relative;
|
|
666
847
|
display: grid;
|
|
@@ -706,79 +887,14 @@
|
|
|
706
887
|
height: max-content;
|
|
707
888
|
}
|
|
708
889
|
|
|
709
|
-
.dock-icon-button
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
height: var(--dock-control-size, var(--size-icon-btn));
|
|
718
|
-
padding: var(--dock-icon-padding, 0);
|
|
719
|
-
cursor: pointer;
|
|
720
|
-
border: none;
|
|
721
|
-
background: transparent;
|
|
722
|
-
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
723
|
-
/* Foreground base routes through `--dock-fg-on-aurora` (defaults to
|
|
724
|
-
`--foreground`, byte-identical to before) so a consumer floating the
|
|
725
|
-
dock over an aurora can lift contrast per-backdrop. The muted icon
|
|
726
|
-
weight mixes that base down with `--opacity-icon-muted`. */
|
|
727
|
-
color: color-mix(in srgb, var(--dock-fg-on-aurora, var(--foreground)) calc(var(--opacity-icon-muted) * 100%), transparent);
|
|
728
|
-
outline: none;
|
|
729
|
-
transition:
|
|
730
|
-
background-color var(--dock-motion-fast),
|
|
731
|
-
color var(--dock-motion-fast),
|
|
732
|
-
scale var(--dock-motion-fast),
|
|
733
|
-
opacity var(--dock-motion-fast);
|
|
734
|
-
}
|
|
735
|
-
|
|
736
|
-
.dock-icon-button--compact {
|
|
737
|
-
width: var(--dock-compact-control-size, auto);
|
|
738
|
-
height: var(--dock-compact-control-size, auto);
|
|
739
|
-
min-width: var(--dock-compact-control-min-width, 0);
|
|
740
|
-
padding: var(--dock-compact-control-padding, 0.25rem);
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
.dock-icon-button:hover:not(:disabled) {
|
|
744
|
-
background: var(--muted);
|
|
745
|
-
color: var(--btn-hover-color, var(--foreground));
|
|
746
|
-
scale: var(--scale-hover-dock);
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
.dock-icon-button:active:not(:disabled) {
|
|
750
|
-
scale: var(--scale-press-dock);
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
.dock-icon-button:focus:not(:focus-visible) {
|
|
754
|
-
box-shadow: none;
|
|
755
|
-
outline: none;
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
|
759
|
-
group at the top; this rule adds only the box-shadow fade transition. */
|
|
760
|
-
.dock-icon-button:focus-visible {
|
|
761
|
-
transition:
|
|
762
|
-
background-color var(--dock-motion-fast),
|
|
763
|
-
color var(--dock-motion-fast),
|
|
764
|
-
scale var(--dock-motion-fast),
|
|
765
|
-
opacity var(--dock-motion-fast),
|
|
766
|
-
box-shadow var(--dock-motion-fast);
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
/* O.W6 Lane B — token-ladder active paint. Defaults match the prior
|
|
770
|
-
hardcoded recipe (--muted bg + --foreground color, no transform / border
|
|
771
|
-
/ shadow). Consumers override the active variant via the
|
|
772
|
-
`--dock-active-{bg,color,scale,border,shadow}` cohort scoped to a parent
|
|
773
|
-
(e.g. bbnf-buddy `ToolsLayer.vue` audacious active treatment) — no
|
|
774
|
-
`:deep()` escapes required. See tokens.css §10 (dock geometry block). */
|
|
775
|
-
.dock-icon-button:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
|
|
776
|
-
background: var(--dock-active-bg);
|
|
777
|
-
color: var(--dock-active-color);
|
|
778
|
-
scale: var(--dock-active-scale);
|
|
779
|
-
border: var(--dock-active-border);
|
|
780
|
-
box-shadow: var(--dock-active-shadow);
|
|
781
|
-
}
|
|
890
|
+
/* AU.W8b.3 — the five dock CONTROL families (.dock-icon-button,
|
|
891
|
+
.dark-mode-toggle-button, .dock-tab-button + tiers, the
|
|
892
|
+
.dock-select-trigger / .dock-dropdown-trigger pair, and the coarse-pointer
|
|
893
|
+
per-button touch floor) carved out to dock-controls.css (imported directly
|
|
894
|
+
after this file in index.css, same @layer components). dock.css keeps the
|
|
895
|
+
shell / density / grain / layer-crossfade contract + the shared
|
|
896
|
+
cross-control four-state comma-groups (the :focus-visible / :disabled groups
|
|
897
|
+
+ the motion-token :where() group above). */
|
|
782
898
|
|
|
783
899
|
/* J.W3.B — `.dock-popover` substrate + `pop-up-*` / `pop-down-*`
|
|
784
900
|
Vue Transition keyframes retired. Hover-driven dock popovers
|
|
@@ -787,326 +903,42 @@
|
|
|
787
903
|
`popover-animate` motion vocabulary. Click-anchored popovers
|
|
788
904
|
(no dock-keep semantics) compose `<Popover>` directly. */
|
|
789
905
|
|
|
790
|
-
.
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
.dark-mode-toggle-button > svg {
|
|
806
|
-
width: 100%;
|
|
807
|
-
height: 100%;
|
|
808
|
-
max-width: 100%;
|
|
809
|
-
max-height: 100%;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
.dark-mode-toggle-button:hover,
|
|
813
|
-
.dark-mode-toggle-button:focus {
|
|
814
|
-
background: var(--surface-tint-10);
|
|
815
|
-
opacity: 1;
|
|
816
|
-
outline: none;
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
.dark-mode-toggle-button:focus-visible {
|
|
820
|
-
box-shadow: var(--focus-ring-shadow);
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
.dark-mode-toggle-button[data-size="sm"] {
|
|
824
|
-
--dark-mode-toggle-size: 1.75rem;
|
|
825
|
-
--dark-mode-toggle-padding: 0.25rem;
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
.dark-mode-toggle-button[data-size="md"] {
|
|
829
|
-
--dark-mode-toggle-size: 2.25rem;
|
|
830
|
-
--dark-mode-toggle-padding: 0.375rem;
|
|
831
|
-
}
|
|
832
|
-
|
|
833
|
-
.dark-mode-toggle-button[data-size="lg"] {
|
|
834
|
-
--dark-mode-toggle-size: 2.75rem;
|
|
835
|
-
--dark-mode-toggle-padding: 0.5rem;
|
|
836
|
-
}
|
|
837
|
-
|
|
838
|
-
.dark-mode-toggle-button[data-size="control"] {
|
|
839
|
-
--dark-mode-toggle-size: var(--control-size, 2.25rem);
|
|
840
|
-
--dark-mode-toggle-padding: var(--control-icon-padding, 0.375rem);
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
.dark-mode-toggle-button[data-size="dock"],
|
|
844
|
-
.glass-dock .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not([data-size="control"]) {
|
|
845
|
-
--dark-mode-toggle-size: var(--dock-control-size, var(--size-icon-btn));
|
|
846
|
-
--dark-mode-toggle-padding: var(--dock-icon-padding, 0);
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
.dock-tab-button {
|
|
850
|
-
display: inline-flex;
|
|
851
|
-
align-items: center;
|
|
852
|
-
flex-shrink: 0;
|
|
853
|
-
/* P.W4 Lane B inline-absorb: the `--dock-tab-h` density-keyed height
|
|
854
|
-
knob (parallel to DockIconButton's --dock-control-size) merged
|
|
855
|
-
here from the prior DockTabButton.vue scoped style block. The
|
|
856
|
-
density rungs that set `--dock-tab-h` per tier live in this same
|
|
857
|
-
file (the `.glass-dock[data-density="…"]` blocks above) — Q.W3
|
|
858
|
-
Lane A consolidated them out of utilities.css, closing the
|
|
859
|
-
cascade-order split-brain. When a parent <GlassDock density="…">
|
|
860
|
-
sets `--dock-tab-h`, the tab-button reserves that row even when
|
|
861
|
-
the glyph + padding sum would ride lower. Falls through to
|
|
862
|
-
`--dock-tab-min-height` (kept for audacious-tier callers) and
|
|
863
|
-
finally to `auto`. R3-spec / audit-E P0-3. */
|
|
864
|
-
min-height: var(--dock-tab-h, var(--dock-tab-min-height, auto));
|
|
865
|
-
padding-inline: var(--dock-tab-padding-inline, 0.75rem);
|
|
866
|
-
padding-block: var(--dock-tab-padding-block, 0.375rem);
|
|
867
|
-
border: none;
|
|
868
|
-
background: transparent;
|
|
869
|
-
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
870
|
-
/* Default font-size carries through to text-only tab content; consumers
|
|
871
|
-
wrapping content in an explicit type utility (e.g. `text-hero`,
|
|
872
|
-
`text-display`) on an inner <span> win because Tailwind v4 ships
|
|
873
|
-
@utility blocks in @layer utilities, which ranks above @layer
|
|
874
|
-
components — so this declaration is a fallback, not a ceiling. */
|
|
875
|
-
font-size: var(--type-small);
|
|
876
|
-
line-height: 1;
|
|
877
|
-
color: var(--muted-foreground);
|
|
878
|
-
text-decoration: none;
|
|
879
|
-
cursor: pointer;
|
|
880
|
-
white-space: nowrap;
|
|
881
|
-
outline: none;
|
|
882
|
-
/* AQ.W3 §W3.2 identity base */
|
|
883
|
-
scale: 1;
|
|
884
|
-
transition:
|
|
885
|
-
background-color var(--dock-motion-fast),
|
|
886
|
-
color var(--dock-motion-fast),
|
|
887
|
-
scale var(--dock-motion-fast);
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
.dock-tab-button:hover:not(:disabled) {
|
|
891
|
-
background: var(--surface-tint-8);
|
|
892
|
-
color: var(--foreground);
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
.dock-tab-button:active:not(:disabled) {
|
|
896
|
-
scale: var(--scale-press-dock);
|
|
897
|
-
}
|
|
898
|
-
|
|
899
|
-
.dock-tab-button:focus:not(:focus-visible) {
|
|
900
|
-
box-shadow: none;
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
|
904
|
-
group at the top. */
|
|
905
|
-
|
|
906
|
-
.dock-tab-button:is(.is-active, .active, [aria-current="page"], [aria-pressed="true"]) {
|
|
907
|
-
background: var(--surface-tint-10);
|
|
908
|
-
color: var(--foreground);
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
/* Tier — primary ────────────────────────────────────────────
|
|
912
|
-
*
|
|
913
|
-
* Per W2.7 §9, §12, §13, §17. The primary tier composes three at-rest
|
|
914
|
-
* marks (top-highlight, bottom under-shadow, baseline glass) with three
|
|
915
|
-
* disco accents on hover (specular swap, sparkle sweep, disco-grain).
|
|
916
|
-
*
|
|
917
|
-
* Reservation: disco fires on hover only. At rest the button reads as
|
|
918
|
-
* a Vignelli-restrained composed glass surface. The `--phase-color`
|
|
919
|
-
* cascade (provided by `<InstrumentChassis>` via `data-phase`) tints
|
|
920
|
-
* the disco-grain radial only on hover; idle is neutral.
|
|
921
|
-
*
|
|
922
|
-
* K.W6 Lane B — the canonical disco-grain + sparkle-sweep + specular
|
|
923
|
-
* recipe lifted to `@utility btn-audacious` (utilities.css). The Vue
|
|
924
|
-
* <DockTabButton> attaches `btn-audacious` automatically when the
|
|
925
|
-
* consumer passes `data-tier="primary"`. The dock-local rules below
|
|
926
|
-
* are STRICTLY the dock extension: structural shell (padding, base
|
|
927
|
-
* surface tint, min-height) + phase-tint extensions (hover radial
|
|
928
|
-
* uses `--phase-color`, plus the `[data-phase]` `::before` halo).
|
|
929
|
-
*/
|
|
930
|
-
.dock-tab-button[data-tier="primary"] {
|
|
931
|
-
--dock-tab-min-height: 4rem;
|
|
932
|
-
padding-inline: 1.5rem;
|
|
933
|
-
background:
|
|
934
|
-
color-mix(in srgb, var(--card) 60%, transparent);
|
|
935
|
-
color: var(--foreground);
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
/* Phase-tint hover override — same disco-grain composition as
|
|
939
|
-
* `btn-audacious`, but the radial uses `--phase-color` (instrument-
|
|
940
|
-
* cluster axis) instead of the canonical `--primary`. The `--paper-
|
|
941
|
-
* clean-texture` overlay and `--glass-specular` shadow stack are
|
|
942
|
-
* inherited from the underlying `btn-audacious` utility. */
|
|
943
|
-
.dock-tab-button[data-tier="primary"]:hover:not(:disabled) {
|
|
944
|
-
--glass-grain-opacity: var(--glass-grain-opacity-disco, 0.08);
|
|
945
|
-
background-image:
|
|
946
|
-
var(--paper-clean-texture),
|
|
947
|
-
radial-gradient(
|
|
948
|
-
ellipse at 30% 30%,
|
|
949
|
-
color-mix(in srgb, var(--phase-color, var(--foreground)) 18%, transparent),
|
|
950
|
-
transparent 70%
|
|
951
|
-
);
|
|
952
|
-
background-blend-mode: overlay, normal;
|
|
953
|
-
background-size: var(--paper-texture-size), auto;
|
|
954
|
-
}
|
|
955
|
-
|
|
956
|
-
/* Q.W3.A.4 — phase-tint backplate halo at the pill wrapper.
|
|
957
|
-
*
|
|
958
|
-
* The inner `<GlyphFace>` halo (`.glyph-face-backplate { inset: -25% }`)
|
|
959
|
-
* gets clipped by the pill's `overflow: hidden`; the halo never escapes
|
|
960
|
-
* the inner glyph wrapper. This `::before` lifts the phase-tint to the
|
|
961
|
-
* pill itself so the glow composes with the whole CTA. Scoped to
|
|
962
|
-
* active phases — at idle / ready the pill stays neutral and inherits
|
|
963
|
-
* the W2.7 reservation ("disco fires on hover only"). */
|
|
964
|
-
.dock-tab-button[data-tier="primary"][data-phase]:not([data-phase="ready"]):not([data-phase="idle"])::before {
|
|
965
|
-
content: "";
|
|
966
|
-
position: absolute;
|
|
967
|
-
inset: 0;
|
|
968
|
-
border-radius: inherit;
|
|
969
|
-
background: radial-gradient(
|
|
970
|
-
ellipse at 30% 30%,
|
|
971
|
-
color-mix(in srgb, var(--phase-color, var(--foreground)) 18%, transparent) 0%,
|
|
972
|
-
transparent 70%
|
|
973
|
-
);
|
|
974
|
-
pointer-events: none;
|
|
975
|
-
z-index: -1;
|
|
976
|
-
opacity: 1;
|
|
977
|
-
transition: opacity var(--duration-fast) var(--ease-standard);
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
/* Tier — secondary ──────────────────────────────────────────
|
|
981
|
-
*
|
|
982
|
-
* Companion to `data-tier="primary"`. Carries the same edge-light +
|
|
983
|
-
* edge-shadow skeu vocabulary at quieter weight: no disco accent, no
|
|
984
|
-
* sparkle, no curvature radial. Composes for icon-button consumers
|
|
985
|
-
* (chassis ActionCluster, SettingsCog) where the surface needs a
|
|
986
|
-
* glass-tier read but not the audacious primary punch. Per P.W1.B
|
|
987
|
-
* audit-C §3 — closes the four bare `<DockIconButton>` consumer sites
|
|
988
|
-
* (cog + back + retake + stop) without redefining the family.
|
|
989
|
-
*/
|
|
990
|
-
.dock-tab-button[data-tier="secondary"],
|
|
991
|
-
.dock-icon-button[data-tier="secondary"] {
|
|
992
|
-
background: color-mix(in srgb, var(--card) 50%, transparent);
|
|
993
|
-
border: 1px solid var(--glass-border-quiet);
|
|
994
|
-
box-shadow:
|
|
995
|
-
var(--border-hairline),
|
|
996
|
-
var(--glass-highlight);
|
|
997
|
-
}
|
|
998
|
-
|
|
999
|
-
.dock-tab-button[data-tier="secondary"]:hover:not(:disabled),
|
|
1000
|
-
.dock-icon-button[data-tier="secondary"]:hover:not(:disabled) {
|
|
1001
|
-
background: color-mix(in srgb, var(--card) 65%, transparent);
|
|
1002
|
-
box-shadow:
|
|
1003
|
-
var(--glass-specular),
|
|
1004
|
-
0 0.5px 0 0 rgb(0 0 0 / 0.06);
|
|
1005
|
-
}
|
|
1006
|
-
|
|
1007
|
-
.dock-select-trigger,
|
|
1008
|
-
.dock-dropdown-trigger {
|
|
1009
|
-
display: inline-flex;
|
|
1010
|
-
align-items: center;
|
|
1011
|
-
justify-content: center;
|
|
1012
|
-
flex-shrink: 0;
|
|
1013
|
-
/* AQ.W3 §W3.2 identity base */
|
|
1014
|
-
scale: 1;
|
|
1015
|
-
gap: var(--dock-trigger-gap, 0.25rem);
|
|
1016
|
-
min-height: var(--dock-trigger-min-height, auto);
|
|
1017
|
-
padding:
|
|
1018
|
-
var(--dock-trigger-padding-block, 0.25rem)
|
|
1019
|
-
var(--dock-trigger-padding-inline, 0.5rem);
|
|
1020
|
-
white-space: nowrap;
|
|
1021
|
-
cursor: pointer;
|
|
1022
|
-
border: none;
|
|
1023
|
-
background: transparent;
|
|
1024
|
-
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
1025
|
-
/* Shares the dock-icon-button legibility base (`--dock-fg-on-aurora`). */
|
|
1026
|
-
color: color-mix(in srgb, var(--dock-fg-on-aurora, var(--foreground)) calc(var(--opacity-icon-muted) * 100%), transparent);
|
|
1027
|
-
outline: none;
|
|
1028
|
-
transition:
|
|
1029
|
-
background-color var(--dock-motion-fast),
|
|
1030
|
-
color var(--dock-motion-fast),
|
|
1031
|
-
scale var(--dock-motion-fast),
|
|
1032
|
-
opacity var(--dock-motion-fast);
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
.dock-select-trigger:hover:not(:disabled),
|
|
1036
|
-
.dock-dropdown-trigger:hover:not(:disabled) {
|
|
1037
|
-
background: var(--muted);
|
|
1038
|
-
color: var(--btn-hover-color, var(--foreground));
|
|
1039
|
-
}
|
|
1040
|
-
|
|
1041
|
-
.dock-dropdown-trigger:hover:not(:disabled) {
|
|
1042
|
-
scale: var(--scale-hover-dock);
|
|
1043
|
-
}
|
|
1044
|
-
|
|
1045
|
-
.dock-select-trigger:active:not(:disabled),
|
|
1046
|
-
.dock-dropdown-trigger:active:not(:disabled) {
|
|
1047
|
-
scale: var(--scale-press-dock);
|
|
1048
|
-
}
|
|
1049
|
-
|
|
1050
|
-
.dock-select-trigger:focus:not(:focus-visible),
|
|
1051
|
-
.dock-dropdown-trigger:focus:not(:focus-visible) {
|
|
1052
|
-
box-shadow: none;
|
|
1053
|
-
outline: none;
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
|
1057
|
-
group at the top; this rule adds only the box-shadow fade transition. */
|
|
1058
|
-
.dock-select-trigger:focus-visible,
|
|
1059
|
-
.dock-dropdown-trigger:focus-visible {
|
|
1060
|
-
transition:
|
|
1061
|
-
background-color var(--dock-motion-fast),
|
|
1062
|
-
color var(--dock-motion-fast),
|
|
1063
|
-
scale var(--dock-motion-fast),
|
|
1064
|
-
opacity var(--dock-motion-fast),
|
|
1065
|
-
box-shadow var(--dock-motion-fast);
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
|
-
.dock-select-trigger:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]),
|
|
1069
|
-
.dock-dropdown-trigger:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
|
|
1070
|
-
background: var(--muted);
|
|
1071
|
-
color: var(--foreground);
|
|
1072
|
-
}
|
|
1073
|
-
|
|
1074
|
-
.dock-select-trigger__chevron {
|
|
1075
|
-
width: var(--dock-trigger-icon-size, 0.75rem);
|
|
1076
|
-
height: var(--dock-trigger-icon-size, 0.75rem);
|
|
1077
|
-
flex-shrink: 0;
|
|
1078
|
-
opacity: 0.5;
|
|
1079
|
-
/* Individual-transform identity base (AQ.W3 §W3.2) — `rotate:` longhand
|
|
1080
|
-
for family consistency (not a stacking-context hazard: child glyph). */
|
|
1081
|
-
rotate: 0deg;
|
|
1082
|
-
transition: rotate var(--dock-motion-fast);
|
|
1083
|
-
}
|
|
1084
|
-
|
|
1085
|
-
.dock-select-trigger[data-state="open"] .dock-select-trigger__chevron {
|
|
1086
|
-
rotate: 180deg;
|
|
1087
|
-
}
|
|
1088
|
-
|
|
1089
|
-
@media (min-width: 640px) {
|
|
1090
|
-
.glass-dock.dock-wrap {
|
|
906
|
+
/* The `overflow="wrap"` desktop snap-back. Past the overflow breakpoint a
|
|
907
|
+
wrap-mode dock reverts from the narrow multi-row pill to a single nowrap
|
|
908
|
+
row. The breakpoint is the named token `--dock-overflow-bp` (tokens.css §9
|
|
909
|
+
Layout) — its single source-of-record. A `var()` cannot drive a
|
|
910
|
+
media-query feature in Baseline CSS, so this one `@media` realizes the
|
|
911
|
+
token's value; there is no longer a bare unexplained magic number — the
|
|
912
|
+
threshold lives under one name and is documented at its mint.
|
|
913
|
+
AV.W16 TW3 — KEPT as `@media` (not converted to `@container`): the wrap
|
|
914
|
+
dock is `max-width: calc(100vw - gutter)` — it spans the VIEWPORT by
|
|
915
|
+
contract, so the snap-back is genuinely viewport-semantic. The dock
|
|
916
|
+
establishes its own `dock` container and cannot self-query that
|
|
917
|
+
container for a rule on the dock root; the descendant-readable
|
|
918
|
+
label/density rules above are the container-query candidates. */
|
|
919
|
+
@media (min-width: 640px /* = var(--dock-overflow-bp) */) {
|
|
920
|
+
.glass-dock.dock-overflow-wrap {
|
|
1091
921
|
white-space: nowrap;
|
|
1092
922
|
border-radius: var(--radius-pill);
|
|
1093
923
|
max-width: none;
|
|
1094
|
-
padding:
|
|
1095
|
-
|
|
924
|
+
padding: var(
|
|
925
|
+
--dock-wrap-desktop-padding-block,
|
|
926
|
+
var(--dock-padding-block, 0.375rem)
|
|
927
|
+
)
|
|
1096
928
|
var(--dock-wrap-desktop-padding-inline, 0.75rem);
|
|
1097
929
|
}
|
|
1098
930
|
|
|
1099
|
-
.glass-dock.dock-wrap .dock-layer--full {
|
|
931
|
+
.glass-dock.dock-overflow-wrap .dock-layer--full {
|
|
1100
932
|
flex-wrap: nowrap;
|
|
1101
933
|
height: var(--dock-layer-height, 2.5rem);
|
|
1102
934
|
gap: var(--dock-wrap-desktop-gap, var(--dock-layer-gap, 0.25rem));
|
|
1103
935
|
}
|
|
1104
936
|
|
|
1105
|
-
.glass-dock.dock-wrap .dock-layer--summary {
|
|
937
|
+
.glass-dock.dock-overflow-wrap .dock-layer--summary {
|
|
1106
938
|
height: var(--dock-layer-height, 2.5rem);
|
|
1107
939
|
}
|
|
1108
940
|
|
|
1109
|
-
.glass-dock.dock-wrap .dock-separator {
|
|
941
|
+
.glass-dock.dock-overflow-wrap .dock-separator {
|
|
1110
942
|
display: block;
|
|
1111
943
|
}
|
|
1112
944
|
}
|
|
@@ -1137,18 +969,11 @@
|
|
|
1137
969
|
--size-icon-btn: var(--dock-touch-target, 2.75rem);
|
|
1138
970
|
}
|
|
1139
971
|
|
|
1140
|
-
/* S-2 — the in-dock floor above lifts the control-SIZE token
|
|
1141
|
-
only reaches a DockIconButton that has a
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
and it also reserves the slot in the dock's width-math). Compact
|
|
1147
|
-
buttons opt out — they are auto-sized affordances, not primary
|
|
1148
|
-
targets. */
|
|
1149
|
-
.dock-icon-button:not(.dock-icon-button--compact) {
|
|
1150
|
-
min-block-size: var(--dock-touch-target, 2.75rem);
|
|
1151
|
-
min-inline-size: var(--dock-touch-target, 2.75rem);
|
|
1152
|
-
}
|
|
972
|
+
/* S-2 — the in-dock floor above lifts the control-SIZE token (shell /
|
|
973
|
+
width-math), which only reaches a DockIconButton that has a
|
|
974
|
+
`.glass-dock` ancestor. The companion button-level floor (the
|
|
975
|
+
`.dock-icon-button:not(--compact)` `min-{block,inline}-size` that
|
|
976
|
+
reaches a STANDALONE DockIconButton with no dock wrapper) moved to
|
|
977
|
+
dock-controls.css with the rest of the control family (AU.W8b.3). */
|
|
1153
978
|
}
|
|
1154
979
|
}
|