@mkbabb/glass-ui 3.1.1 → 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-CSGcJkqa.js → CardFooter-C390imy7.js} +3 -3
- package/dist/{CollapsibleContent-CVMOcYlV.js → CollapsibleContent-cauTbZEM.js} +1 -1
- package/dist/{CommandShortcut-DWT19a2Y.js → CommandShortcut-BiVyqipe.js} +7 -6
- package/dist/{ContextMenuSubContent-gAFxJ-qi.js → ContextMenuSubContent-DrWkXKQP.js} +4 -4
- package/dist/DataTable-FfkaAg2z.js +465 -0
- package/dist/DialogContent-IQ8_BRrC.js +100 -0
- package/dist/{DialogFooter-ClrNEOVU.js → DialogFooter-Er0wA3K6.js} +2 -2
- package/dist/{DiscoGlyph-C3JfMnRV.js → DiscoGlyph-BaZ8OawK.js} +1 -1
- package/dist/{GlyphFace-BRS8vUb7.js → GlyphFace-B_7vOmYn.js} +1 -1
- package/dist/HoverPopover-DTSYkJtw.js +96 -0
- package/dist/{IconTooltip-BkaA7tZ2.js → IconTooltip-BTyYn4mr.js} +1 -1
- package/dist/Input-CU9CNKmo.js +52 -0
- package/dist/{MetricBadge-DmAihkXd.js → MetricBadge-BlrdbOGN.js} +2 -2
- package/dist/{Notification-OqIpADml.js → Notification-DP_ApJLo.js} +3 -3
- package/dist/{NumberFieldContent-DTH9gb_N.js → NumberFieldContent-iOTQ5rGO.js} +9 -5
- package/dist/{PopoverContent-EiklFrna.js → PopoverContent-B8WtJECb.js} +1 -1
- package/dist/Progress-DjM86vfb.js +254 -0
- package/dist/{ScrollingText-BFd0i2zJ.js → ScrollingText-P9o_DuMn.js} +2 -2
- package/dist/{SelectScrollDownButton-Dth8-wXQ.js → SelectScrollDownButton-BGn3rjs9.js} +12 -11
- package/dist/TabsIndicator-DA0x9gPr.js +97 -0
- package/dist/{Toaster-Bjlunvq4.js → Toaster-DdhMKfus.js} +1 -1
- package/dist/{ToggleGroupItem-OesUouE7.js → ToggleGroupItem-gyXj998A.js} +37 -40
- package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
- package/dist/animated-digit.js +3 -3
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +471 -320
- package/dist/badge.js +1 -1
- package/dist/{button-C0aHmBbt.js → button-Ckn3eDfB.js} +27 -22
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +6 -6
- package/dist/{check-dwgetki8.js → check-CdkxGxXJ.js} +1 -1
- package/dist/{chevron-down-DILQA1t6.js → chevron-down-pBY8sYfV.js} +1 -1
- package/dist/{chevron-right-fS7fal2t.js → chevron-right-BjeKC22V.js} +1 -1
- package/dist/{chevron-up-BtYjYQOS.js → chevron-up-DBeNHUm1.js} +1 -1
- 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 +42 -16
- 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} +3 -6
- 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 +4 -3
- package/dist/components/custom/configurator/Configurator.vue.d.ts +26 -0
- 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/configurator/index.d.ts +1 -1
- package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +15 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
- package/dist/components/custom/dock/GlassDock.vue.d.ts +34 -13
- 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 +1 -3
- package/dist/composables/dom/useClipboard.d.ts +35 -12
- package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
- package/dist/composables/dom/useTextHighlight.d.ts +40 -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 +2 -1
- package/dist/composables/motion/index.d.ts +1 -1
- package/dist/composables/motion/useCountup.d.ts +29 -0
- package/dist/composables/motion/usePrioritizedTask.d.ts +41 -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 -140
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +3 -3
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +5 -5
- 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 +2 -2
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +410 -254
- package/dist/dockContext-spUj_-E5.js +9 -0
- package/dist/dom.js +6 -5
- package/dist/{dropdown-menu-BvRUamNs.js → dropdown-menu-EFjl5iKo.js} +4 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +28 -22
- package/dist/fonts/README.md +21 -0
- package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/dist/forms.js +70 -61
- package/dist/glass-carousel.js +59 -52
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +159 -254
- 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 +3 -3
- 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/keyboard.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/metric-stack.js +1 -1
- package/dist/{minimize-2-LsCJ_eNt.js → minimize-2-BP27-qBY.js} +1 -1
- package/dist/motion-core.js +154 -135
- package/dist/motion.js +63 -15
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-a-D93K1S.js → presets-1OhFpaIC.js} +5 -5
- package/dist/prng-Bz_1Tydc.js +15 -0
- package/dist/progress.js +2 -2
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +38 -32
- package/dist/scrolling-text.js +1 -1
- package/dist/{search-DBAiUABx.js → search-DBG8qaRs.js} +1 -1
- package/dist/search.js +153 -149
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CukNDezz.js → sheet-CQYYrkr9.js} +3 -3
- package/dist/sheet.js +1 -1
- package/dist/{slider-DJvHkTRe.js → slider-BOh8ycfZ.js} +8 -12
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +37 -39
- 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 +45 -0
- package/dist/styles/dock-controls.css +486 -0
- package/dist/styles/dock.css +325 -431
- 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 +25 -2
- package/dist/styles/instrument-chassis.css +11 -4
- package/dist/styles/theme.css +73 -21
- package/dist/styles/tokens.css +282 -140
- package/dist/styles/typography.css +14 -8
- package/dist/styles/utilities.css +92 -8
- package/dist/styles/view-transition.css +10 -4
- package/dist/switch.js +1 -1
- package/dist/tabs.js +148 -106
- package/dist/timeline.js +220 -159
- 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/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-DKQYVB7s.js → useAnimatedNumber-BF6r64lA.js} +1 -1
- package/dist/useClipboard-D8vFyRCa.js +97 -0
- package/dist/useConfiguratorState-DUtC1jxr.js +276 -0
- package/dist/useGlobalDark-CWiaCoEw.js +34 -0
- package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
- package/dist/useSortable-DnyGXKKY.js +246 -0
- package/dist/useTextHighlight-Dmtofpk2.js +72 -0
- package/dist/{useTouchGate-D9Zvrzyc.js → useTouchGate-CS5Csc2h.js} +1 -1
- package/dist/{useViewTransition-DYIK6Gzb.js → useViewTransition-D4ssvnXZ.js} +5 -3
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/platformSupport.d.ts +8 -0
- 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/dist/{x-q7pJa83X.js → x-C4pz9nbD.js} +1 -1
- package/package.json +110 -16
- 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 +325 -431
- 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 +282 -140
- package/src/styles/typography.css +14 -8
- package/src/styles/utilities.css +92 -8
- package/src/styles/view-transition.css +10 -4
- package/dist/DataTable-R8-Zidms.js +0 -460
- package/dist/DialogContent-2fALDSvc.js +0 -93
- package/dist/HoverPopover-CWFCfLx3.js +0 -96
- package/dist/Input-DDpFn568.js +0 -30
- package/dist/Progress-FApA9fm_.js +0 -126
- package/dist/UnderlineTabs-DAWMLmJG.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-D5NZCWJs.js +0 -16
- package/dist/keys-CaTQS-vx.js +0 -11
- package/dist/useConfiguratorState-CtRBE0m_.js +0 -268
- package/dist/useGlobalDark-B0WvLJE3.js +0 -24
- package/dist/useIdleReady-Cmkhm03v.js +0 -162
- package/dist/useIntersectionPause-IY2CwPQb.js +0 -39
- package/dist/useSortable-Cq2Y1JLO.js +0 -175
- /package/dist/{ContextMenuContent-otjFIu8v.js → ContextMenuContent-De01_83g.js} +0 -0
- /package/dist/{HoverCardContent-DaGrgJBO.js → HoverCardContent-ICfIMZX1.js} +0 -0
- /package/dist/{InstrumentChassis-CnHTMxds.js → InstrumentChassis-DaHIZCqy.js} +0 -0
- /package/dist/{InstrumentRail-C6dEbi8E.js → InstrumentRail-B0qqLFN0.js} +0 -0
- /package/dist/{Label-DJty89bp.js → Label-CZk-3nTc.js} +0 -0
- /package/dist/{ModalOverlay-iWiAgbYH.js → ModalOverlay-B_CBtqcE.js} +0 -0
- /package/dist/{PaperBackdrop-CeZ-w0R0.js → PaperBackdrop-D_YZW47j.js} +0 -0
- /package/dist/{SelectGroup-DdR4tdDY.js → SelectGroup-CMdoCjRE.js} +0 -0
- /package/dist/{SelectSeparator-CXm_hlqA.js → SelectSeparator-CaJnPF3_.js} +0 -0
- /package/dist/{Separator-D8AUMhxY.js → Separator-C2XtAXRp.js} +0 -0
- /package/dist/{Switch-Cr1t_F_U.js → Switch-x8n6husW.js} +0 -0
- /package/dist/{TooltipProvider-DE78vbEP.js → TooltipProvider-D-JrSqDu.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-Dq1MygBL.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-x46my_Fo.js → badge-Cl6JZ1B7.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-DwBwnG8N.js → constants-DsCdlK9I.js} +0 -0
- /package/dist/{createLucideIcon-Bn9a1b70.js → createLucideIcon-DuDoe_ra.js} +0 -0
- /package/dist/{menuItemVariants-BsbGNq9C.js → menuItemVariants-C2QlXqT3.js} +0 -0
- /package/dist/{useGlassRenderer-Ds-nmrGz.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
- /package/dist/{useInterval-DVgGUf_y.js → useInterval-CHVYFpXV.js} +0 -0
- /package/dist/{useKeyboardShortcuts-Dpw_RUcB.js → useKeyboardShortcuts-BQfnAHHW.js} +0 -0
- /package/dist/{useResizeObserver-Cg9npuM3.js → useResizeObserver-DX-STszm.js} +0 -0
- /package/dist/{useSpringMount-Cfk1XK1R.js → useSpringMount-CnizvZGm.js} +0 -0
- /package/dist/{useTimer-NAaj9zNq.js → useTimer-DGgoxTXL.js} +0 -0
- /package/dist/{useUserInvalidAria-DVu1eTXG.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
package/src/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;
|
|
@@ -489,33 +616,90 @@
|
|
|
489
616
|
overflow-y: visible;
|
|
490
617
|
}
|
|
491
618
|
|
|
492
|
-
|
|
619
|
+
/* ── Scroll-on-overflow opt-in (GlassDock `overflow="scroll"`) ───────
|
|
620
|
+
The default contract grows-to-fit then overflows visibly past the
|
|
621
|
+
axis cap. `overflow="scroll"` instead makes the dock the scroll port
|
|
622
|
+
on its layout axis, pairing the existing cap with a hidden-scrollbar
|
|
623
|
+
scroll region so over-cap content stays reachable. The rounded pill
|
|
624
|
+
masks the scroll edge; both axes keep their cap. */
|
|
625
|
+
|
|
626
|
+
/* Inline axis (horizontal docks). The active layer becomes the scroll
|
|
627
|
+
port: `min-width: 0` releases the flex item's `min-content` floor so
|
|
628
|
+
it can shrink under the clamped `.dock-layers` track, then `overflow-x:
|
|
629
|
+
auto` scrolls its over-cap content. `.dock-layers` must KEEP clipping
|
|
630
|
+
so the pill's rounded edge masks the scroll boundary — hence the
|
|
631
|
+
grow-mode `overflow-x: visible` (`.dock-layers`, above) is overridden
|
|
632
|
+
back to `hidden` here. */
|
|
633
|
+
.glass-dock.dock-scroll-x.expanded:not(.dock-overflow-wrap) > .dock-layers {
|
|
634
|
+
overflow-x: hidden;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
.glass-dock.dock-scroll-x .dock-layer--full {
|
|
638
|
+
min-width: 0;
|
|
639
|
+
overflow-x: auto;
|
|
640
|
+
scrollbar-width: none;
|
|
641
|
+
/* Trap the inline-scroll momentum at the dock's own boundary so a
|
|
642
|
+
wheel/trackpad gesture that bottoms out the pill does NOT chain into
|
|
643
|
+
scrolling the page behind it (the dock is a self-contained scroll
|
|
644
|
+
port, not a window into the route scroller). */
|
|
645
|
+
overscroll-behavior-x: contain;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
.glass-dock.dock-scroll-x .dock-layer--full::-webkit-scrollbar {
|
|
649
|
+
display: none;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
/* Block axis (vertical rails). The root keeps its `max-block-size` cap
|
|
653
|
+
and scrolls its over-cap children — cap + scroll is the correct
|
|
654
|
+
pairing the grow-mode contract split apart. Ties the
|
|
655
|
+
`.vertical.always-expanded` visible default on specificity and wins on
|
|
656
|
+
source order. */
|
|
657
|
+
.glass-dock.vertical.dock-scroll-y {
|
|
658
|
+
overflow-y: auto;
|
|
659
|
+
scrollbar-width: none;
|
|
660
|
+
/* Same momentum-trap as the inline port — a rail that bottoms out must
|
|
661
|
+
not chain its remaining wheel delta into the page scroller behind it. */
|
|
662
|
+
overscroll-behavior-y: contain;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.glass-dock.vertical.dock-scroll-y::-webkit-scrollbar {
|
|
666
|
+
display: none;
|
|
667
|
+
}
|
|
668
|
+
|
|
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 {
|
|
493
677
|
white-space: normal;
|
|
494
678
|
border-radius: var(--radius-2xl);
|
|
495
679
|
max-width: var(--dock-wrap-max-width);
|
|
496
|
-
padding:
|
|
497
|
-
var(--dock-wrap-padding-block, var(--dock-padding-block, 0.375rem))
|
|
680
|
+
padding: var(--dock-wrap-padding-block, var(--dock-padding-block, 0.375rem))
|
|
498
681
|
var(--dock-wrap-padding-inline, 0.625rem);
|
|
499
682
|
}
|
|
500
683
|
|
|
501
|
-
.glass-dock.dock-wrap .dock-layer--full {
|
|
684
|
+
.glass-dock.dock-overflow-wrap .dock-layer--full {
|
|
502
685
|
flex-wrap: wrap;
|
|
503
686
|
justify-content: center;
|
|
504
687
|
height: auto;
|
|
505
688
|
min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
|
|
506
|
-
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));
|
|
507
691
|
}
|
|
508
692
|
|
|
509
|
-
.glass-dock.dock-wrap .dock-layer--summary {
|
|
693
|
+
.glass-dock.dock-overflow-wrap .dock-layer--summary {
|
|
510
694
|
height: auto;
|
|
511
695
|
min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
|
|
512
696
|
}
|
|
513
697
|
|
|
514
|
-
.glass-dock.dock-wrap .dock-separator {
|
|
698
|
+
.glass-dock.dock-overflow-wrap .dock-separator {
|
|
515
699
|
display: none;
|
|
516
700
|
}
|
|
517
701
|
|
|
518
|
-
.glass-dock.dock-wrap.collapsed {
|
|
702
|
+
.glass-dock.dock-overflow-wrap.collapsed {
|
|
519
703
|
border-radius: var(--radius-pill);
|
|
520
704
|
white-space: nowrap;
|
|
521
705
|
max-width: none;
|
|
@@ -583,7 +767,16 @@
|
|
|
583
767
|
border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
|
|
584
768
|
}
|
|
585
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
|
+
|
|
586
778
|
.dock-layer-rail .dock-layer-tab {
|
|
779
|
+
position: relative;
|
|
587
780
|
display: inline-flex;
|
|
588
781
|
align-items: center;
|
|
589
782
|
justify-content: center;
|
|
@@ -596,6 +789,8 @@
|
|
|
596
789
|
cursor: pointer;
|
|
597
790
|
font: inherit;
|
|
598
791
|
font-size: 0.75rem;
|
|
792
|
+
/* The tab glyph rides above the travelling indicator backplate. */
|
|
793
|
+
z-index: 1;
|
|
599
794
|
transition:
|
|
600
795
|
background var(--dock-motion-fast),
|
|
601
796
|
color var(--dock-motion-fast);
|
|
@@ -606,11 +801,47 @@
|
|
|
606
801
|
color: var(--foreground);
|
|
607
802
|
}
|
|
608
803
|
|
|
609
|
-
|
|
610
|
-
|
|
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"] {
|
|
611
808
|
color: var(--primary);
|
|
612
809
|
}
|
|
613
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
|
+
|
|
614
845
|
.dock-layer-stack {
|
|
615
846
|
position: relative;
|
|
616
847
|
display: grid;
|
|
@@ -656,75 +887,14 @@
|
|
|
656
887
|
height: max-content;
|
|
657
888
|
}
|
|
658
889
|
|
|
659
|
-
.dock-icon-button
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
height: var(--dock-control-size, var(--size-icon-btn));
|
|
668
|
-
padding: var(--dock-icon-padding, 0);
|
|
669
|
-
cursor: pointer;
|
|
670
|
-
border: none;
|
|
671
|
-
background: transparent;
|
|
672
|
-
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
673
|
-
color: color-mix(in srgb, var(--foreground) calc(var(--opacity-icon-muted) * 100%), transparent);
|
|
674
|
-
outline: none;
|
|
675
|
-
transition:
|
|
676
|
-
background-color var(--dock-motion-fast),
|
|
677
|
-
color var(--dock-motion-fast),
|
|
678
|
-
scale var(--dock-motion-fast),
|
|
679
|
-
opacity var(--dock-motion-fast);
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
.dock-icon-button--compact {
|
|
683
|
-
width: var(--dock-compact-control-size, auto);
|
|
684
|
-
height: var(--dock-compact-control-size, auto);
|
|
685
|
-
min-width: var(--dock-compact-control-min-width, 0);
|
|
686
|
-
padding: var(--dock-compact-control-padding, 0.25rem);
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
.dock-icon-button:hover:not(:disabled) {
|
|
690
|
-
background: var(--muted);
|
|
691
|
-
color: var(--btn-hover-color, var(--foreground));
|
|
692
|
-
scale: var(--scale-hover-dock);
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
.dock-icon-button:active:not(:disabled) {
|
|
696
|
-
scale: var(--scale-press-dock);
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
.dock-icon-button:focus:not(:focus-visible) {
|
|
700
|
-
box-shadow: none;
|
|
701
|
-
outline: none;
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
|
705
|
-
group at the top; this rule adds only the box-shadow fade transition. */
|
|
706
|
-
.dock-icon-button:focus-visible {
|
|
707
|
-
transition:
|
|
708
|
-
background-color var(--dock-motion-fast),
|
|
709
|
-
color var(--dock-motion-fast),
|
|
710
|
-
scale var(--dock-motion-fast),
|
|
711
|
-
opacity var(--dock-motion-fast),
|
|
712
|
-
box-shadow var(--dock-motion-fast);
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
/* O.W6 Lane B — token-ladder active paint. Defaults match the prior
|
|
716
|
-
hardcoded recipe (--muted bg + --foreground color, no transform / border
|
|
717
|
-
/ shadow). Consumers override the active variant via the
|
|
718
|
-
`--dock-active-{bg,color,scale,border,shadow}` cohort scoped to a parent
|
|
719
|
-
(e.g. bbnf-buddy `ToolsLayer.vue` audacious active treatment) — no
|
|
720
|
-
`:deep()` escapes required. See tokens.css §10 (dock geometry block). */
|
|
721
|
-
.dock-icon-button:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
|
|
722
|
-
background: var(--dock-active-bg);
|
|
723
|
-
color: var(--dock-active-color);
|
|
724
|
-
scale: var(--dock-active-scale);
|
|
725
|
-
border: var(--dock-active-border);
|
|
726
|
-
box-shadow: var(--dock-active-shadow);
|
|
727
|
-
}
|
|
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). */
|
|
728
898
|
|
|
729
899
|
/* J.W3.B — `.dock-popover` substrate + `pop-up-*` / `pop-down-*`
|
|
730
900
|
Vue Transition keyframes retired. Hover-driven dock popovers
|
|
@@ -733,325 +903,42 @@
|
|
|
733
903
|
`popover-animate` motion vocabulary. Click-anchored popovers
|
|
734
904
|
(no dock-keep semantics) compose `<Popover>` directly. */
|
|
735
905
|
|
|
736
|
-
.
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
.dark-mode-toggle-button > svg {
|
|
752
|
-
width: 100%;
|
|
753
|
-
height: 100%;
|
|
754
|
-
max-width: 100%;
|
|
755
|
-
max-height: 100%;
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
.dark-mode-toggle-button:hover,
|
|
759
|
-
.dark-mode-toggle-button:focus {
|
|
760
|
-
background: var(--surface-tint-10);
|
|
761
|
-
opacity: 1;
|
|
762
|
-
outline: none;
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
.dark-mode-toggle-button:focus-visible {
|
|
766
|
-
box-shadow: var(--focus-ring-shadow);
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
.dark-mode-toggle-button[data-size="sm"] {
|
|
770
|
-
--dark-mode-toggle-size: 1.75rem;
|
|
771
|
-
--dark-mode-toggle-padding: 0.25rem;
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
.dark-mode-toggle-button[data-size="md"] {
|
|
775
|
-
--dark-mode-toggle-size: 2.25rem;
|
|
776
|
-
--dark-mode-toggle-padding: 0.375rem;
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
.dark-mode-toggle-button[data-size="lg"] {
|
|
780
|
-
--dark-mode-toggle-size: 2.75rem;
|
|
781
|
-
--dark-mode-toggle-padding: 0.5rem;
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
.dark-mode-toggle-button[data-size="control"] {
|
|
785
|
-
--dark-mode-toggle-size: var(--control-size, 2.25rem);
|
|
786
|
-
--dark-mode-toggle-padding: var(--control-icon-padding, 0.375rem);
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
.dark-mode-toggle-button[data-size="dock"],
|
|
790
|
-
.glass-dock .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not([data-size="control"]) {
|
|
791
|
-
--dark-mode-toggle-size: var(--dock-control-size, var(--size-icon-btn));
|
|
792
|
-
--dark-mode-toggle-padding: var(--dock-icon-padding, 0);
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
.dock-tab-button {
|
|
796
|
-
display: inline-flex;
|
|
797
|
-
align-items: center;
|
|
798
|
-
flex-shrink: 0;
|
|
799
|
-
/* P.W4 Lane B inline-absorb: the `--dock-tab-h` density-keyed height
|
|
800
|
-
knob (parallel to DockIconButton's --dock-control-size) merged
|
|
801
|
-
here from the prior DockTabButton.vue scoped style block. The
|
|
802
|
-
density rungs that set `--dock-tab-h` per tier live in this same
|
|
803
|
-
file (the `.glass-dock[data-density="…"]` blocks above) — Q.W3
|
|
804
|
-
Lane A consolidated them out of utilities.css, closing the
|
|
805
|
-
cascade-order split-brain. When a parent <GlassDock density="…">
|
|
806
|
-
sets `--dock-tab-h`, the tab-button reserves that row even when
|
|
807
|
-
the glyph + padding sum would ride lower. Falls through to
|
|
808
|
-
`--dock-tab-min-height` (kept for audacious-tier callers) and
|
|
809
|
-
finally to `auto`. R3-spec / audit-E P0-3. */
|
|
810
|
-
min-height: var(--dock-tab-h, var(--dock-tab-min-height, auto));
|
|
811
|
-
padding-inline: var(--dock-tab-padding-inline, 0.75rem);
|
|
812
|
-
padding-block: var(--dock-tab-padding-block, 0.375rem);
|
|
813
|
-
border: none;
|
|
814
|
-
background: transparent;
|
|
815
|
-
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
816
|
-
/* Default font-size carries through to text-only tab content; consumers
|
|
817
|
-
wrapping content in an explicit type utility (e.g. `text-hero`,
|
|
818
|
-
`text-display`) on an inner <span> win because Tailwind v4 ships
|
|
819
|
-
@utility blocks in @layer utilities, which ranks above @layer
|
|
820
|
-
components — so this declaration is a fallback, not a ceiling. */
|
|
821
|
-
font-size: var(--type-small);
|
|
822
|
-
line-height: 1;
|
|
823
|
-
color: var(--muted-foreground);
|
|
824
|
-
text-decoration: none;
|
|
825
|
-
cursor: pointer;
|
|
826
|
-
white-space: nowrap;
|
|
827
|
-
outline: none;
|
|
828
|
-
/* AQ.W3 §W3.2 identity base */
|
|
829
|
-
scale: 1;
|
|
830
|
-
transition:
|
|
831
|
-
background-color var(--dock-motion-fast),
|
|
832
|
-
color var(--dock-motion-fast),
|
|
833
|
-
scale var(--dock-motion-fast);
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
.dock-tab-button:hover:not(:disabled) {
|
|
837
|
-
background: var(--surface-tint-8);
|
|
838
|
-
color: var(--foreground);
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
.dock-tab-button:active:not(:disabled) {
|
|
842
|
-
scale: var(--scale-press-dock);
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
.dock-tab-button:focus:not(:focus-visible) {
|
|
846
|
-
box-shadow: none;
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
|
850
|
-
group at the top. */
|
|
851
|
-
|
|
852
|
-
.dock-tab-button:is(.is-active, .active, [aria-current="page"], [aria-pressed="true"]) {
|
|
853
|
-
background: var(--surface-tint-10);
|
|
854
|
-
color: var(--foreground);
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
/* Tier — primary ────────────────────────────────────────────
|
|
858
|
-
*
|
|
859
|
-
* Per W2.7 §9, §12, §13, §17. The primary tier composes three at-rest
|
|
860
|
-
* marks (top-highlight, bottom under-shadow, baseline glass) with three
|
|
861
|
-
* disco accents on hover (specular swap, sparkle sweep, disco-grain).
|
|
862
|
-
*
|
|
863
|
-
* Reservation: disco fires on hover only. At rest the button reads as
|
|
864
|
-
* a Vignelli-restrained composed glass surface. The `--phase-color`
|
|
865
|
-
* cascade (provided by `<InstrumentChassis>` via `data-phase`) tints
|
|
866
|
-
* the disco-grain radial only on hover; idle is neutral.
|
|
867
|
-
*
|
|
868
|
-
* K.W6 Lane B — the canonical disco-grain + sparkle-sweep + specular
|
|
869
|
-
* recipe lifted to `@utility btn-audacious` (utilities.css). The Vue
|
|
870
|
-
* <DockTabButton> attaches `btn-audacious` automatically when the
|
|
871
|
-
* consumer passes `data-tier="primary"`. The dock-local rules below
|
|
872
|
-
* are STRICTLY the dock extension: structural shell (padding, base
|
|
873
|
-
* surface tint, min-height) + phase-tint extensions (hover radial
|
|
874
|
-
* uses `--phase-color`, plus the `[data-phase]` `::before` halo).
|
|
875
|
-
*/
|
|
876
|
-
.dock-tab-button[data-tier="primary"] {
|
|
877
|
-
--dock-tab-min-height: 4rem;
|
|
878
|
-
padding-inline: 1.5rem;
|
|
879
|
-
background:
|
|
880
|
-
color-mix(in srgb, var(--card) 60%, transparent);
|
|
881
|
-
color: var(--foreground);
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
/* Phase-tint hover override — same disco-grain composition as
|
|
885
|
-
* `btn-audacious`, but the radial uses `--phase-color` (instrument-
|
|
886
|
-
* cluster axis) instead of the canonical `--primary`. The `--paper-
|
|
887
|
-
* clean-texture` overlay and `--glass-specular` shadow stack are
|
|
888
|
-
* inherited from the underlying `btn-audacious` utility. */
|
|
889
|
-
.dock-tab-button[data-tier="primary"]:hover:not(:disabled) {
|
|
890
|
-
--glass-grain-opacity: var(--glass-grain-opacity-disco, 0.08);
|
|
891
|
-
background-image:
|
|
892
|
-
var(--paper-clean-texture),
|
|
893
|
-
radial-gradient(
|
|
894
|
-
ellipse at 30% 30%,
|
|
895
|
-
color-mix(in srgb, var(--phase-color, var(--foreground)) 18%, transparent),
|
|
896
|
-
transparent 70%
|
|
897
|
-
);
|
|
898
|
-
background-blend-mode: overlay, normal;
|
|
899
|
-
background-size: var(--paper-texture-size), auto;
|
|
900
|
-
}
|
|
901
|
-
|
|
902
|
-
/* Q.W3.A.4 — phase-tint backplate halo at the pill wrapper.
|
|
903
|
-
*
|
|
904
|
-
* The inner `<GlyphFace>` halo (`.glyph-face-backplate { inset: -25% }`)
|
|
905
|
-
* gets clipped by the pill's `overflow: hidden`; the halo never escapes
|
|
906
|
-
* the inner glyph wrapper. This `::before` lifts the phase-tint to the
|
|
907
|
-
* pill itself so the glow composes with the whole CTA. Scoped to
|
|
908
|
-
* active phases — at idle / ready the pill stays neutral and inherits
|
|
909
|
-
* the W2.7 reservation ("disco fires on hover only"). */
|
|
910
|
-
.dock-tab-button[data-tier="primary"][data-phase]:not([data-phase="ready"]):not([data-phase="idle"])::before {
|
|
911
|
-
content: "";
|
|
912
|
-
position: absolute;
|
|
913
|
-
inset: 0;
|
|
914
|
-
border-radius: inherit;
|
|
915
|
-
background: radial-gradient(
|
|
916
|
-
ellipse at 30% 30%,
|
|
917
|
-
color-mix(in srgb, var(--phase-color, var(--foreground)) 18%, transparent) 0%,
|
|
918
|
-
transparent 70%
|
|
919
|
-
);
|
|
920
|
-
pointer-events: none;
|
|
921
|
-
z-index: -1;
|
|
922
|
-
opacity: 1;
|
|
923
|
-
transition: opacity var(--duration-fast) var(--ease-standard);
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
/* Tier — secondary ──────────────────────────────────────────
|
|
927
|
-
*
|
|
928
|
-
* Companion to `data-tier="primary"`. Carries the same edge-light +
|
|
929
|
-
* edge-shadow skeu vocabulary at quieter weight: no disco accent, no
|
|
930
|
-
* sparkle, no curvature radial. Composes for icon-button consumers
|
|
931
|
-
* (chassis ActionCluster, SettingsCog) where the surface needs a
|
|
932
|
-
* glass-tier read but not the audacious primary punch. Per P.W1.B
|
|
933
|
-
* audit-C §3 — closes the four bare `<DockIconButton>` consumer sites
|
|
934
|
-
* (cog + back + retake + stop) without redefining the family.
|
|
935
|
-
*/
|
|
936
|
-
.dock-tab-button[data-tier="secondary"],
|
|
937
|
-
.dock-icon-button[data-tier="secondary"] {
|
|
938
|
-
background: color-mix(in srgb, var(--card) 50%, transparent);
|
|
939
|
-
border: 1px solid var(--glass-border-quiet);
|
|
940
|
-
box-shadow:
|
|
941
|
-
var(--border-hairline),
|
|
942
|
-
var(--glass-highlight);
|
|
943
|
-
}
|
|
944
|
-
|
|
945
|
-
.dock-tab-button[data-tier="secondary"]:hover:not(:disabled),
|
|
946
|
-
.dock-icon-button[data-tier="secondary"]:hover:not(:disabled) {
|
|
947
|
-
background: color-mix(in srgb, var(--card) 65%, transparent);
|
|
948
|
-
box-shadow:
|
|
949
|
-
var(--glass-specular),
|
|
950
|
-
0 0.5px 0 0 rgb(0 0 0 / 0.06);
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
.dock-select-trigger,
|
|
954
|
-
.dock-dropdown-trigger {
|
|
955
|
-
display: inline-flex;
|
|
956
|
-
align-items: center;
|
|
957
|
-
justify-content: center;
|
|
958
|
-
flex-shrink: 0;
|
|
959
|
-
/* AQ.W3 §W3.2 identity base */
|
|
960
|
-
scale: 1;
|
|
961
|
-
gap: var(--dock-trigger-gap, 0.25rem);
|
|
962
|
-
min-height: var(--dock-trigger-min-height, auto);
|
|
963
|
-
padding:
|
|
964
|
-
var(--dock-trigger-padding-block, 0.25rem)
|
|
965
|
-
var(--dock-trigger-padding-inline, 0.5rem);
|
|
966
|
-
white-space: nowrap;
|
|
967
|
-
cursor: pointer;
|
|
968
|
-
border: none;
|
|
969
|
-
background: transparent;
|
|
970
|
-
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
971
|
-
color: color-mix(in srgb, var(--foreground) calc(var(--opacity-icon-muted) * 100%), transparent);
|
|
972
|
-
outline: none;
|
|
973
|
-
transition:
|
|
974
|
-
background-color var(--dock-motion-fast),
|
|
975
|
-
color var(--dock-motion-fast),
|
|
976
|
-
scale var(--dock-motion-fast),
|
|
977
|
-
opacity var(--dock-motion-fast);
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
.dock-select-trigger:hover:not(:disabled),
|
|
981
|
-
.dock-dropdown-trigger:hover:not(:disabled) {
|
|
982
|
-
background: var(--muted);
|
|
983
|
-
color: var(--btn-hover-color, var(--foreground));
|
|
984
|
-
}
|
|
985
|
-
|
|
986
|
-
.dock-dropdown-trigger:hover:not(:disabled) {
|
|
987
|
-
scale: var(--scale-hover-dock);
|
|
988
|
-
}
|
|
989
|
-
|
|
990
|
-
.dock-select-trigger:active:not(:disabled),
|
|
991
|
-
.dock-dropdown-trigger:active:not(:disabled) {
|
|
992
|
-
scale: var(--scale-press-dock);
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
.dock-select-trigger:focus:not(:focus-visible),
|
|
996
|
-
.dock-dropdown-trigger:focus:not(:focus-visible) {
|
|
997
|
-
box-shadow: none;
|
|
998
|
-
outline: none;
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
|
1002
|
-
group at the top; this rule adds only the box-shadow fade transition. */
|
|
1003
|
-
.dock-select-trigger:focus-visible,
|
|
1004
|
-
.dock-dropdown-trigger:focus-visible {
|
|
1005
|
-
transition:
|
|
1006
|
-
background-color var(--dock-motion-fast),
|
|
1007
|
-
color var(--dock-motion-fast),
|
|
1008
|
-
scale var(--dock-motion-fast),
|
|
1009
|
-
opacity var(--dock-motion-fast),
|
|
1010
|
-
box-shadow var(--dock-motion-fast);
|
|
1011
|
-
}
|
|
1012
|
-
|
|
1013
|
-
.dock-select-trigger:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]),
|
|
1014
|
-
.dock-dropdown-trigger:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
|
|
1015
|
-
background: var(--muted);
|
|
1016
|
-
color: var(--foreground);
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
.dock-select-trigger__chevron {
|
|
1020
|
-
width: var(--dock-trigger-icon-size, 0.75rem);
|
|
1021
|
-
height: var(--dock-trigger-icon-size, 0.75rem);
|
|
1022
|
-
flex-shrink: 0;
|
|
1023
|
-
opacity: 0.5;
|
|
1024
|
-
/* Individual-transform identity base (AQ.W3 §W3.2) — `rotate:` longhand
|
|
1025
|
-
for family consistency (not a stacking-context hazard: child glyph). */
|
|
1026
|
-
rotate: 0deg;
|
|
1027
|
-
transition: rotate var(--dock-motion-fast);
|
|
1028
|
-
}
|
|
1029
|
-
|
|
1030
|
-
.dock-select-trigger[data-state="open"] .dock-select-trigger__chevron {
|
|
1031
|
-
rotate: 180deg;
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
@media (min-width: 640px) {
|
|
1035
|
-
.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 {
|
|
1036
921
|
white-space: nowrap;
|
|
1037
922
|
border-radius: var(--radius-pill);
|
|
1038
923
|
max-width: none;
|
|
1039
|
-
padding:
|
|
1040
|
-
|
|
924
|
+
padding: var(
|
|
925
|
+
--dock-wrap-desktop-padding-block,
|
|
926
|
+
var(--dock-padding-block, 0.375rem)
|
|
927
|
+
)
|
|
1041
928
|
var(--dock-wrap-desktop-padding-inline, 0.75rem);
|
|
1042
929
|
}
|
|
1043
930
|
|
|
1044
|
-
.glass-dock.dock-wrap .dock-layer--full {
|
|
931
|
+
.glass-dock.dock-overflow-wrap .dock-layer--full {
|
|
1045
932
|
flex-wrap: nowrap;
|
|
1046
933
|
height: var(--dock-layer-height, 2.5rem);
|
|
1047
934
|
gap: var(--dock-wrap-desktop-gap, var(--dock-layer-gap, 0.25rem));
|
|
1048
935
|
}
|
|
1049
936
|
|
|
1050
|
-
.glass-dock.dock-wrap .dock-layer--summary {
|
|
937
|
+
.glass-dock.dock-overflow-wrap .dock-layer--summary {
|
|
1051
938
|
height: var(--dock-layer-height, 2.5rem);
|
|
1052
939
|
}
|
|
1053
940
|
|
|
1054
|
-
.glass-dock.dock-wrap .dock-separator {
|
|
941
|
+
.glass-dock.dock-overflow-wrap .dock-separator {
|
|
1055
942
|
display: block;
|
|
1056
943
|
}
|
|
1057
944
|
}
|
|
@@ -1081,5 +968,12 @@
|
|
|
1081
968
|
--dock-control-size: var(--dock-touch-target, 2.75rem);
|
|
1082
969
|
--size-icon-btn: var(--dock-touch-target, 2.75rem);
|
|
1083
970
|
}
|
|
971
|
+
|
|
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). */
|
|
1084
978
|
}
|
|
1085
979
|
}
|