@mkbabb/glass-ui 3.11.2 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CardAction-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
- package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
- package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
- package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
- package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
- package/dist/MetricBadge-C9QMz1KT.js +79 -0
- package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
- package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
- package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
- package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +5 -2
- package/dist/api.js +2 -2
- package/dist/aurora.js +69 -69
- package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +8 -8
- package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
- package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
- package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
- package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
- package/dist/coalesceMetric-5qIeZnTx.js +13 -0
- package/dist/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +5 -62
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +61 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
- package/dist/components/custom/constellation/constellationField.d.ts +116 -149
- package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
- package/dist/components/custom/constellation/index.d.ts +5 -2
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/DockRail.vue.d.ts +88 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
- package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/index.d.ts +1 -0
- package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +48 -0
- package/dist/components/custom/dock/index.d.ts +3 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
- package/dist/components/custom/goo-blob/constants.d.ts +52 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
- package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
- package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
- package/dist/components/custom/metric-badge/index.d.ts +1 -0
- package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
- package/dist/components/custom/tabs/constants.d.ts +12 -0
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
- package/dist/components/custom/underline/index.d.ts +2 -0
- package/dist/components/custom/underline/types.d.ts +56 -0
- package/dist/components/ui/card/Card.vue.d.ts +15 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
- package/dist/components/ui/slider/index.d.ts +22 -19
- package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/components/ui/toggle/index.d.ts +1 -1
- package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
- package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
- package/dist/composables/color/index.d.ts +12 -0
- package/dist/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +1 -21
- package/dist/composables/glass/index.d.ts +0 -1
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/motion/core/index.d.ts +1 -1
- package/dist/composables/motion/curves.d.ts +48 -0
- package/dist/composables/motion/index.d.ts +2 -0
- package/dist/composables/motion/springPresets.d.ts +33 -0
- package/dist/composables/motion/suite.d.ts +2 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
- package/dist/composables/motion/useSpringMount.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +336 -222
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +47 -13
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +705 -365
- package/dist/dockContext-BegmJVmx.js +17 -0
- package/dist/dom.js +5 -5
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +39 -80
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +134 -99
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +86 -20
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +222 -212
- package/dist/goo-blob.js +243 -212
- 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 -3
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +28 -18
- package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +25 -21
- package/dist/metric-stack.js +35 -34
- package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
- package/dist/motion-core.js +32 -137
- package/dist/motion-curves.d.ts +1 -0
- package/dist/motion-curves.js +130 -0
- package/dist/motion.js +38 -37
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
- package/dist/progress.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/scrolling-text.js +1 -1
- package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
- package/dist/search.js +9 -9
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
- package/dist/sheet.js +1 -1
- package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets--YdWTHtm.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +29 -114
- package/dist/styles/cards.css +55 -0
- package/dist/styles/components.css +4 -1
- package/dist/styles/configurator.css +42 -0
- package/dist/styles/dock/layer-group.css +83 -25
- package/dist/styles/dock/layers.css +23 -1
- package/dist/styles/dock/morph-bridge.css +123 -0
- package/dist/styles/dock/morph.css +175 -45
- package/dist/styles/dock/overflow.css +51 -1
- package/dist/styles/dock/rail-extend.css +300 -0
- package/dist/styles/dock/shell.css +63 -105
- package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/dist/styles/dock-controls/icon-button.css +133 -0
- package/dist/styles/dock-controls/tab-button.css +202 -0
- package/dist/styles/dock-controls/touch-floor.css +94 -0
- package/dist/styles/dock-controls/triggers.css +128 -0
- package/dist/styles/dock-controls.css +30 -595
- package/dist/styles/dock.css +2 -0
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/floating-panel.css +17 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +337 -0
- package/dist/styles/glass/material.css +238 -0
- package/dist/styles/glass/progress-rail.css +78 -0
- package/dist/styles/glass/squircle.css +66 -0
- package/dist/styles/glass/surfaces.css +306 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +31 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/index.css +28 -14
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/segmented-tabs.css +275 -0
- package/dist/styles/theme/bridges.css +337 -0
- package/dist/styles/theme/dark.css +7 -0
- package/dist/styles/theme/literals.css +94 -0
- package/dist/styles/theme/radius.css +95 -0
- package/dist/styles/theme.css +26 -529
- package/dist/styles/tokens/color-radius.css +260 -0
- package/dist/styles/tokens/dark-arm.css +200 -0
- package/dist/styles/tokens/glass.css +440 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +500 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +366 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +166 -0
- package/dist/styles/tokens.css +22 -2360
- package/dist/styles/typography.css +75 -21
- package/dist/styles/utilities/a11y-overrides.css +140 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +365 -0
- package/dist/styles/utilities/btn.css +401 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1291
- package/dist/styles/view-transition.css +0 -51
- package/dist/switch.js +1 -1
- package/dist/tabs.js +91 -82
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
- package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
- package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
- package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
- package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
- package/dist/useSpecularTracking-Bo5su68i.js +32 -0
- package/dist/useSpringMount-CI2jOstM.js +108 -0
- package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
- package/dist/utils/coalesceMetric.d.ts +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +11 -9
- package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
- package/package.json +78 -58
- package/src/styles/animations.css +29 -114
- package/src/styles/cards.css +53 -0
- package/src/styles/configurator.css +42 -0
- package/src/styles/dock/layer-group.css +83 -25
- package/src/styles/dock/layers.css +23 -1
- package/src/styles/dock/morph-bridge.css +123 -0
- package/src/styles/dock/morph.css +175 -45
- package/src/styles/dock/overflow.css +51 -1
- package/src/styles/dock/rail-extend.css +300 -0
- package/src/styles/dock/shell.css +63 -105
- package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/src/styles/dock-controls/icon-button.css +133 -0
- package/src/styles/dock-controls/tab-button.css +202 -0
- package/src/styles/dock-controls/touch-floor.css +94 -0
- package/src/styles/dock-controls/triggers.css +128 -0
- package/src/styles/dock-controls.css +30 -595
- package/src/styles/dock.css +2 -0
- package/src/styles/floating-panel.css +15 -0
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +337 -0
- package/src/styles/glass/material.css +238 -0
- package/src/styles/glass/progress-rail.css +78 -0
- package/src/styles/glass/squircle.css +66 -0
- package/src/styles/glass/surfaces.css +306 -0
- package/src/styles/glass.css +31 -1188
- package/src/styles/index.css +28 -14
- package/src/styles/paper.css +2 -68
- package/src/styles/segmented-tabs.css +271 -0
- package/src/styles/theme/bridges.css +337 -0
- package/src/styles/theme/dark.css +7 -0
- package/src/styles/theme/literals.css +94 -0
- package/src/styles/theme/radius.css +95 -0
- package/src/styles/theme.css +26 -529
- package/src/styles/tokens/color-radius.css +260 -0
- package/src/styles/tokens/dark-arm.css +200 -0
- package/src/styles/tokens/glass.css +440 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +500 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +366 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +166 -0
- package/src/styles/tokens.css +22 -2360
- package/src/styles/typography.css +75 -21
- package/src/styles/utilities/a11y-overrides.css +140 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +365 -0
- package/src/styles/utilities/btn.css +401 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1291
- package/src/styles/view-transition.css +0 -51
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/MetricBadge-BZVWIxNy.js +0 -80
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
- package/dist/components/custom/deck-progress/index.d.ts +0 -2
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
- package/dist/components/custom/dialog-native/index.d.ts +0 -1
- package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
- package/dist/components/custom/handmark/brush.d.ts +0 -242
- package/dist/components/custom/handmark/freehand.d.ts +0 -69
- package/dist/components/custom/handmark/geometry.d.ts +0 -50
- package/dist/components/custom/handmark/index.d.ts +0 -21
- package/dist/components/custom/handmark/ink.d.ts +0 -11
- package/dist/components/custom/handmark/texture.d.ts +0 -39
- package/dist/components/custom/handmark/types.d.ts +0 -53
- package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
- package/dist/components/custom/instrument-rail/index.d.ts +0 -2
- package/dist/composables/motion/useRouteTransition.d.ts +0 -42
- package/dist/deck-progress.d.ts +0 -1
- package/dist/deck-progress.js +0 -2
- package/dist/dockContext-BKeIMmNk.js +0 -9
- package/dist/handmark.d.ts +0 -1
- package/dist/handmark.js +0 -663
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/styles/instrument-rail.css +0 -127
- package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
- package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
- package/dist/useSpringMount-BJSHcLl3.js +0 -113
- package/dist/useViewTransition-DaN5Zrox.js +0 -21
- package/dist/vReveal-zUIQk-rJ.js +0 -53
- package/src/styles/instrument-rail.css +0 -127
- /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
- /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
- /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
- /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
- /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
- /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
- /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
- /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
- /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
- /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
- /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
- /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
- /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
- /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
- /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
- /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
- /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
- /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
- /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
- /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* dock/morph-bridge.css — the AZ.W-MORPH-SHOWCASE metaball-teardrop bridge (H4 arm a).
|
|
2
|
+
*
|
|
3
|
+
* The net-new CSS SVG-goo filter that hides the V↔H dock topology jump-cut. The
|
|
4
|
+
* fleet's Arch B picks "the existing goo-blob mounted behind the docks OR a net-new
|
|
5
|
+
* CSS SVG-goo filter … the implementation picks per perf/browser." This wave picks the
|
|
6
|
+
* CSS SVG-goo filter — the M5-DETERMINISTIC choice: the bridge has NO free-running
|
|
7
|
+
* `uTime` (the goo-blob's three wall-clock channels would RED the M5 scalar-binding
|
|
8
|
+
* clause), NO WebGL pass at all (so the HG5 frame budget clears trivially — zero shader
|
|
9
|
+
* frames), and its teardrop aspect is a PURE function of `--dock-morph-t`. The classic
|
|
10
|
+
* gooey-CSS trick: blur two plates so their alpha bleeds together, then threshold the
|
|
11
|
+
* blurred alpha back to a sharp edge (feColorMatrix on the A channel) so the merge
|
|
12
|
+
* reads as one amorphous metaball silhouette.
|
|
13
|
+
*
|
|
14
|
+
* The bridge is DECORATIVE only (the contained-creature constraint — it hosts no dock
|
|
15
|
+
* children; the real DOM docks crossfade UNDER it). It paints BEHIND the two docks and
|
|
16
|
+
* fully occludes the reflow at the `t≈0.5` midpoint where both plates are at their
|
|
17
|
+
* dimmest.
|
|
18
|
+
*
|
|
19
|
+
* Determinism (HG4/M5): every animated axis below is `f(var(--dock-morph-t))` (the ONE
|
|
20
|
+
* inheriting scalar the morph spring writes) or `f(var(--stretch))` (the scalar's
|
|
21
|
+
* DERIVATIVE the liquid-flex squish writes) — NEVER a CSS animation/transition with its
|
|
22
|
+
* own clock. A frame captured at a given `--dock-morph-t` is byte-reproducible. */
|
|
23
|
+
|
|
24
|
+
@layer components {
|
|
25
|
+
/* The bridge host — sits absolutely behind the two docks, isolation-safe so the
|
|
26
|
+
goo filter does not leak onto siblings. The two plates inside it are merged by
|
|
27
|
+
the SVG goo filter referenced via `filter: url(#…)`. */
|
|
28
|
+
.dock-morph-bridge {
|
|
29
|
+
position: absolute;
|
|
30
|
+
inset: 0;
|
|
31
|
+
display: grid;
|
|
32
|
+
place-items: center;
|
|
33
|
+
pointer-events: none;
|
|
34
|
+
z-index: 0;
|
|
35
|
+
/* The goo: blur-then-threshold the child plates' alpha. The filter id is
|
|
36
|
+
authored once in the showcase SFC (a hidden <svg><filter>); the consumer
|
|
37
|
+
binds it here. `isolation: isolate` keeps the blur/threshold scoped to the
|
|
38
|
+
plates, not the page behind. */
|
|
39
|
+
isolation: isolate;
|
|
40
|
+
/* Under reduced motion the bridge is hidden — the morph snaps (no teardrop). */
|
|
41
|
+
opacity: var(--dock-bridge-opacity, 1);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* The goo container the filter applies to — only the plates inside it merge.
|
|
45
|
+
SCOPED to a TIGHT centered box just larger than the max plate footprint (NOT
|
|
46
|
+
inset:0 over the whole stage) so the per-frame `feGaussianBlur` repaint covers
|
|
47
|
+
a small region, not the full stage — the morph frame budget (HG5) clears. The
|
|
48
|
+
box is sized off the morph spans (the consumer passes --dock-bridge-h-w /
|
|
49
|
+
--dock-bridge-v-h); `contain: paint` clips the filter work to it. */
|
|
50
|
+
.dock-morph-bridge-goo {
|
|
51
|
+
position: absolute;
|
|
52
|
+
top: 50%;
|
|
53
|
+
left: 50%;
|
|
54
|
+
translate: -50% -50%;
|
|
55
|
+
width: calc(var(--dock-bridge-h-w, 18rem) + 2.5rem);
|
|
56
|
+
height: calc(var(--dock-bridge-v-h, 16rem) + 2.5rem);
|
|
57
|
+
display: grid;
|
|
58
|
+
place-items: center;
|
|
59
|
+
contain: layout paint;
|
|
60
|
+
filter: var(--dock-bridge-goo-filter, none);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* A bridge plate — a warm-glass capsule. TWO plates: one tracks the vertical dock
|
|
64
|
+
footprint (tall capsule), one the horizontal (wide capsule); both shrink toward
|
|
65
|
+
the shared center as the morph crosses the midpoint so the blur fuses them into
|
|
66
|
+
ONE teardrop. The size + corner radius are `f(--dock-morph-t)`; the
|
|
67
|
+
volume-preserving squish reads `--stretch` (the scalar derivative). */
|
|
68
|
+
.dock-morph-bridge-plate {
|
|
69
|
+
position: absolute;
|
|
70
|
+
/* The warm-cream gel body — the metaball-teardrop fill (a soft radial so the
|
|
71
|
+
blur threshold reads a domed droplet, not a flat slab). */
|
|
72
|
+
background: radial-gradient(
|
|
73
|
+
120% 120% at 50% 38%,
|
|
74
|
+
var(--glass-bg-floating, color-mix(in oklab, var(--card), white 8%)) 0%,
|
|
75
|
+
var(--glass-bg-resting, var(--card)) 62%,
|
|
76
|
+
color-mix(in oklab, var(--card), var(--foreground) 6%) 100%
|
|
77
|
+
);
|
|
78
|
+
border-radius: 999px;
|
|
79
|
+
/* The volume-preserving teardrop squish — stretch along the travel axis,
|
|
80
|
+
compress reciprocally. Reads `--stretch` (the liquid-flex derivative). The
|
|
81
|
+
vertical plate squishes on Y, the horizontal on X (set per-plate below). */
|
|
82
|
+
will-change: width, height, transform;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* The VERTICAL plate — a tall capsule (the t=0 silhouette). It collapses its height
|
|
86
|
+
toward the center as t: 0 → 0.5, where it has merged into the teardrop. Width is
|
|
87
|
+
the dock's inline footprint; height interpolates full → a thin neck. */
|
|
88
|
+
.dock-morph-bridge-plate--vertical {
|
|
89
|
+
width: var(--dock-bridge-v-w, 3.25rem);
|
|
90
|
+
/* full height at t=0, necking to ~the width (a circle) by t=0.5, gone by t=1 */
|
|
91
|
+
height: calc(
|
|
92
|
+
var(--dock-bridge-v-h, 16rem) *
|
|
93
|
+
(1 - clamp(0, var(--dock-morph-t, 0), 1)) +
|
|
94
|
+
var(--dock-bridge-v-w, 3.25rem) * clamp(0, var(--dock-morph-t, 0), 1)
|
|
95
|
+
);
|
|
96
|
+
opacity: calc(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1));
|
|
97
|
+
/* squish Y on travel (the tall plate stretches along its collapse axis) */
|
|
98
|
+
scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It grows its width
|
|
102
|
+
from the center as t: 0.5 → 1. Height is the dock's block footprint; width
|
|
103
|
+
interpolates a thin neck → full. */
|
|
104
|
+
.dock-morph-bridge-plate--horizontal {
|
|
105
|
+
height: var(--dock-bridge-h-h, 3.25rem);
|
|
106
|
+
width: calc(
|
|
107
|
+
var(--dock-bridge-h-h, 3.25rem) * (1 - clamp(0, var(--dock-morph-t, 0), 1)) +
|
|
108
|
+
var(--dock-bridge-h-w, 18rem) * clamp(0, var(--dock-morph-t, 0), 1)
|
|
109
|
+
);
|
|
110
|
+
opacity: clamp(0, calc(var(--dock-morph-t, 0) * 2), 1);
|
|
111
|
+
/* squish X on travel (the wide plate stretches along its growth axis) */
|
|
112
|
+
scale: var(--stretch, 1) calc(1 / var(--stretch, 1));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* PRM — the bridge is removed; the morph snaps to the target dock (the spring's
|
|
116
|
+
respectReducedMotion jumps the scalar 0→1 in one frame, the docks land at their
|
|
117
|
+
endpoints, the goo teardrop never paints). */
|
|
118
|
+
@media (prefers-reduced-motion: reduce) {
|
|
119
|
+
.dock-morph-bridge {
|
|
120
|
+
--dock-bridge-opacity: 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -54,18 +54,41 @@
|
|
|
54
54
|
|
|
55
55
|
/* The morphing root chrome — background / border-color interpolate between the
|
|
56
56
|
collapsed and expanded endpoints on the ONE `--dock-expand-t` scalar. Scoped
|
|
57
|
-
to the horizontal
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
to the horizontal dock (`:not(.vertical)`) — the inline-axis aperture morph;
|
|
58
|
+
a vertical dock collapses its BLOCK axis (the summary/full FLIP from the
|
|
59
|
+
orchestrator) and reads its own surface plate (shell.css `.glass-dock.vertical`).
|
|
60
|
+
The two color axes blend in srgb (the house mix the token ladder speaks). The
|
|
61
|
+
`.collapsed` discrete bg/border declarations are RETIRED — this block is the
|
|
62
|
+
single authority, and at rest `--dock-expand-t` resolves to the class endpoint
|
|
63
|
+
(0 collapsed / 1 expanded) so the resting look is exact.
|
|
64
|
+
AZ.W-DOCK-TAXONOMY — the `variant-dock` class is gone; `.glass-dock:not(.vertical)`
|
|
65
|
+
IS the horizontal dock now (no second-way to express orientation). */
|
|
66
|
+
.glass-dock:not(.vertical) {
|
|
67
|
+
/* AY.W-A11Y-PERF O-1 / AZ.W-ADAPTIVE-AUTO Arm 1 — BOTH morph endpoints compose
|
|
68
|
+
the W55 oklab adaptive tint so the self-engage darken (the unconditional
|
|
69
|
+
`:where(.glass-dock)` rule below re-points the element-level
|
|
70
|
+
`--glass-tint-source`/`--glass-tint-strength`) reaches the LIVE
|
|
71
|
+
horizontal dock surface in BOTH the expanded AND the COLLAPSED look (this
|
|
72
|
+
0,3,0 morph interp OVERRIDES the 0,1,0 shell.css bg, so the tint must be
|
|
73
|
+
applied HERE — and the COLLAPSED endpoint `--glass-bg-wash` must carry it too,
|
|
74
|
+
else a collapsed dock over light paints the un-darkened wash and the plate
|
|
75
|
+
vanishes — the C5-2 ΔL≈0.01 collapse, re-surfaced on the collapsed endpoint).
|
|
76
|
+
The srgb transition mix between the two TINTED endpoints is preserved (the
|
|
77
|
+
in-flight morph frames are sub-perceptual); at the `0%` rest default both
|
|
78
|
+
inner oklab mixes are no-ops so this is byte-identical to today. */
|
|
64
79
|
background: color-mix(
|
|
65
80
|
in srgb,
|
|
66
|
-
|
|
81
|
+
color-mix(
|
|
82
|
+
in oklab,
|
|
83
|
+
var(--glass-bg-dock, var(--glass-bg-resting)),
|
|
84
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
85
|
+
)
|
|
67
86
|
calc(var(--dock-expand-t, 1) * 100%),
|
|
68
|
-
|
|
87
|
+
color-mix(
|
|
88
|
+
in oklab,
|
|
89
|
+
var(--glass-bg-wash),
|
|
90
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
91
|
+
)
|
|
69
92
|
);
|
|
70
93
|
border-color: color-mix(
|
|
71
94
|
in srgb,
|
|
@@ -78,18 +101,40 @@
|
|
|
78
101
|
/* The padding morph is split out + scoped `:not(.dock-overflow-wrap)` so the
|
|
79
102
|
wrap variant's own padding rules (W04 territory — `.dock-overflow-wrap` +
|
|
80
103
|
its `@media` snap-back) are NOT clobbered by this higher-specificity longhand.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
|
|
105
|
+
AY.W-DOCK-CHROME §1 — the LAYOUT-ISOLATION fix: the collapse↔expand morph is
|
|
106
|
+
an INLINE-WIDTH aperture by contract ("horizontal docks animate width"), so
|
|
107
|
+
the BLOCK axis MUST be invariant across the morph — otherwise the dock's
|
|
108
|
+
outer height shrinks ~4px on collapse (the collapsed-pad 0.25rem vs the
|
|
109
|
+
expanded pad-block 0.375rem, ×2) and, because a free-floating / inline dock
|
|
110
|
+
sits in normal flow (`display:inline-flex`), that height delta REFLOWS its
|
|
111
|
+
siblings — the page content jumped as the dock animated (the user's 13:27
|
|
112
|
+
audit item 1). The fix holds `padding-block` PINNED at the expanded value in
|
|
113
|
+
BOTH states (no `--dock-expand-t` interpolation on the block axis) so the
|
|
114
|
+
outer block-size is constant; ONLY `padding-inline` morphs to tighten the
|
|
115
|
+
collapsed pill inline. The collapsed circle is unaffected — its diameter is
|
|
116
|
+
owned by the summary pane's own symmetric `block-size` + `aspect-ratio:1`
|
|
117
|
+
(the `.collapsed .dock-layer--summary` rule below), CENTRED on the dock's
|
|
118
|
+
stable-height plate by the root `align-items:center`, not by the root pad. So
|
|
119
|
+
the morph reflows NOTHING vertically: 0px container-height delta. */
|
|
120
|
+
.glass-dock:not(.vertical):not(.dock-overflow-wrap) {
|
|
121
|
+
/* The collapsed inline-pad endpoint is the EXPANDED block pad (max'd with the
|
|
122
|
+
consumer `--dock-collapsed-padding` handle) so the height-pinned collapsed
|
|
123
|
+
pill is SYMMETRIC → a clean circle at the `--radius-dock` 9999px. The block
|
|
124
|
+
axis is pinned to the expanded pad (below), so matching the inline collapsed
|
|
125
|
+
endpoint to it keeps the box square (the B4 "symmetric collapsed padding
|
|
126
|
+
keeps the pill a circle" intent, preserved through the §1 height-pin). The
|
|
127
|
+
`max()` lets a consumer set `--dock-collapsed-padding` LARGER for a looser
|
|
128
|
+
pill but never SMALLER than the block pad (which would re-introduce the
|
|
129
|
+
narrower-than-tall oval the height-pin would otherwise leave). */
|
|
130
|
+
--dock-pad-collapsed: max(
|
|
131
|
+
var(--dock-padding-block, 0.375rem),
|
|
132
|
+
var(--dock-collapsed-padding, 0px)
|
|
92
133
|
);
|
|
134
|
+
/* block padding is INVARIANT — the expanded value, both states (the
|
|
135
|
+
layout-isolation contract above): the inline aperture morphs, the block
|
|
136
|
+
axis is pinned so the outer height never changes → 0px container reflow. */
|
|
137
|
+
padding-block: var(--dock-padding-block, 0.375rem);
|
|
93
138
|
padding-inline: calc(
|
|
94
139
|
var(--dock-pad-collapsed) +
|
|
95
140
|
(var(--dock-padding-inline, 0.5rem) - var(--dock-pad-collapsed)) *
|
|
@@ -110,14 +155,17 @@
|
|
|
110
155
|
box-shadow: var(--shadow-dock-override, var(--shadow-dock-collapsed));
|
|
111
156
|
}
|
|
112
157
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
158
|
+
|
|
159
|
+
/* AY.W-DOCK-NAV B4 — the collapsed summary is a PERFECT CIRCLE. The `.dock-layer`
|
|
160
|
+
base rule (`.glass-dock:not(.vertical) .dock-layer`) locks `height:
|
|
161
|
+
var(--dock-layer-height)` (40px) on EVERY layer including the summary; against
|
|
162
|
+
the 0.85× `--dock-collapsed-summary-min-size` min-width that made the pane
|
|
163
|
+
40h × 30w — an oval (the user's "circle, not oval"). This rule (1) LIFTS the
|
|
164
|
+
height-lock so the summary block-sizes to the SAME token its width floors at,
|
|
165
|
+
and (2) floors both axes to that ONE token, so the collapsed pane is a square
|
|
166
|
+
and the root's symmetric collapsed padding keeps the pill a circle. The glyph
|
|
167
|
+
sits centred on both axes. The `aspect-ratio: 1` belt-and-braces guarantees
|
|
168
|
+
1:1 even if a consumer's collapsed-slot content is wider than the floor. */
|
|
121
169
|
.glass-dock.collapsed .dock-layer--summary {
|
|
122
170
|
min-width: var(
|
|
123
171
|
--dock-collapsed-summary-min-size,
|
|
@@ -127,6 +175,15 @@
|
|
|
127
175
|
--dock-collapsed-summary-min-size,
|
|
128
176
|
var(--dock-layer-height, 2.5rem)
|
|
129
177
|
);
|
|
178
|
+
block-size: var(
|
|
179
|
+
--dock-collapsed-summary-min-size,
|
|
180
|
+
var(--dock-layer-height, 2.5rem)
|
|
181
|
+
);
|
|
182
|
+
height: var(
|
|
183
|
+
--dock-collapsed-summary-min-size,
|
|
184
|
+
var(--dock-layer-height, 2.5rem)
|
|
185
|
+
);
|
|
186
|
+
aspect-ratio: 1;
|
|
130
187
|
justify-content: center;
|
|
131
188
|
}
|
|
132
189
|
|
|
@@ -146,17 +203,62 @@
|
|
|
146
203
|
--dock-expand-t: var(--dock-morph-t);
|
|
147
204
|
}
|
|
148
205
|
|
|
206
|
+
/* AY.W-DOCK-NAV B15 — the EMPTY-collapsed-summary trap. A dock with a
|
|
207
|
+
`#persistent` control but NO `#collapsed` slot (the overview first-section
|
|
208
|
+
dock) still renders a `.dock-layer--summary` pane that floors to the circle
|
|
209
|
+
min-width — so collapsed it read as a WIDE pill: the persistent Home glyph on
|
|
210
|
+
the LEFT + an empty circle of dead space on the RIGHT (the measured 84×50
|
|
211
|
+
oval). Expanding then grew the content INTO that right-side void, so the
|
|
212
|
+
morph read "from the right" not center-out (the user's B15). When the summary
|
|
213
|
+
slot is EMPTY (`:not(:has(*))`), collapse it to zero width + no floor so the
|
|
214
|
+
persistent control stands alone as the collapsed circle, and the morph grows
|
|
215
|
+
symmetrically about the persistent. An empty Vue `#collapsed` slot renders
|
|
216
|
+
ZERO child nodes (no whitespace text node either), so `:empty` matches it
|
|
217
|
+
exactly — and a flat `:empty` avoids the nested-`:has()` form Lightning CSS
|
|
218
|
+
drops. An authored `#collapsed` slot (non-empty summary) keeps its circle
|
|
219
|
+
pill. */
|
|
220
|
+
.glass-dock.collapsed .dock-layer--summary:empty {
|
|
221
|
+
min-width: 0;
|
|
222
|
+
inline-size: 0;
|
|
223
|
+
padding: 0;
|
|
224
|
+
margin: 0;
|
|
225
|
+
border: 0;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/* The persistent control IS the collapsed pill in the empty-summary case — drop
|
|
229
|
+
the inter-region gap so the collapsed circle is exactly the persistent box. */
|
|
230
|
+
.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent
|
|
231
|
+
+ .dock-layers {
|
|
232
|
+
margin-inline-start: 0;
|
|
233
|
+
}
|
|
234
|
+
|
|
149
235
|
/* AW.W3 — the collapsed-hover scale rides the unified dock spring vocabulary.
|
|
150
236
|
The `scale var(--dock-motion-resize)` arm was added to the `.glass-dock`
|
|
151
237
|
root transition above, so this hover scale settles on the SAME spring curve
|
|
152
238
|
the expand morph uses — a collapsed→hover→expand gesture is one continuous
|
|
153
239
|
spring, not a `scale`-ease handed off to the width-spring. The hover scale
|
|
154
240
|
and the press squish (`--scale-press-dock`) are now one register on the dock
|
|
155
|
-
surface.
|
|
241
|
+
surface.
|
|
242
|
+
|
|
243
|
+
AZ.W-DOCK-FLICKER — the `scale` arm is GATED on `:not([data-morphing])` (the
|
|
244
|
+
collapse-onset scale-pop fix, C2-2). `.collapsed` flips on SYNCHRONOUSLY when
|
|
245
|
+
a hovered dock begins collapsing, but the box is still painted at EXPANDED
|
|
246
|
+
width for the morph's leading frames (the `onSwap` pin + 1-rAF measure-defer
|
|
247
|
+
in dockMorphContext.ts). The bare `.collapsed:hover { scale: 1.1 }` multiplied
|
|
248
|
+
that transient ~535px box, painting a ±24-34px right-edge pop (the user's
|
|
249
|
+
"flashing"). Scoping the SCALE to `:not([data-morphing])` makes the +1.1 lift
|
|
250
|
+
apply ONLY at rest (the box is the 54px circle then) — during `[data-morphing]`
|
|
251
|
+
the hover scale is inert, mirroring the shipped `--dock-expand-t`
|
|
252
|
+
`[data-morphing]` precedent above (morph.css:46-53). The surface arms
|
|
253
|
+
(background/border/shadow) stay on the bare `:hover` (they don't multiply
|
|
254
|
+
geometry, so a hovered collapse keeps its hover read without the pop). */
|
|
156
255
|
.glass-dock.collapsed:hover {
|
|
157
256
|
background: var(--glass-bg-wash);
|
|
158
257
|
border-color: var(--glass-border-floating);
|
|
159
258
|
box-shadow: var(--shadow-dock-override, var(--shadow-dock));
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.glass-dock.collapsed:hover:not([data-morphing]) {
|
|
160
262
|
scale: var(--dock-collapsed-hover-scale);
|
|
161
263
|
}
|
|
162
264
|
|
|
@@ -200,22 +302,44 @@
|
|
|
200
302
|
border-color: var(--glass-border-floating, var(--glass-border-resting));
|
|
201
303
|
}
|
|
202
304
|
|
|
203
|
-
/* ── Adaptive legibility: the dock over a light backdrop
|
|
204
|
-
G2 surface; "Glass dock over VERY
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
305
|
+
/* ── Adaptive legibility: SELF-ENGAGE the dock over a light backdrop by default
|
|
306
|
+
(AZ.W-ADAPTIVE-AUTO Arm 1 — the literal G2 surface; "Glass dock over VERY
|
|
307
|
+
LIGHT materials is unreadable, darken DYNAMICALLY like iOS 27") ─────────────
|
|
308
|
+
The dock floats over WHATEVER the consumer painted — frequently a light/near-
|
|
309
|
+
white app surface (the canonical G2 case the user reported). AY.W-A11Y-PERF
|
|
310
|
+
O-1 set `--glass-backdrop: light` on the dock's OWN root (shell.css) intending
|
|
311
|
+
a self-darken, but CSS style queries NEVER self-match (the `@container
|
|
312
|
+
style()` block below reads an ANCESTOR — verified on Chrome 148), so the
|
|
313
|
+
self-declaration was a NO-OP. This `:where(.glass-dock)` rule is the genuine
|
|
314
|
+
UNCONDITIONAL self-engage — mirroring the overlay band's `ladder.css:169` —
|
|
315
|
+
re-pointing the INHERITING tint tokens DIRECTLY on the dock root so the
|
|
316
|
+
shell (`--glass-bg-dock`), chassis-strip, and held/open tiers (which compose
|
|
317
|
+
the oklab tint AT THE ELEMENT — the substitution-vs-inheritance-safe targets)
|
|
318
|
+
darken toward warm-ink in lockstep. `--dock-fg-on-aurora` re-points to the
|
|
319
|
+
warm-ink here too — ONE reconciled path, the foreground twin folded in (it
|
|
320
|
+
reaches the dock CONTROLS' glyph/label color). Over a DARK page the darken is
|
|
321
|
+
sub-perceptual; a dark-substrate consumer opts out via `--glass-tint-strength:
|
|
322
|
+
0%` on the dock root. The morph-root interp (`.glass-dock:not(.vertical)`
|
|
323
|
+
above) stays `color-mix(in srgb …)` for the transition — the adaptive darken
|
|
324
|
+
rides its RESTING endpoint (`--glass-bg-dock`), the in-flight morph frames are
|
|
325
|
+
sub-perceptual (the ratified resting-endpoint-only default). The muted body
|
|
326
|
+
register lifts to the full warm-ink under the engaged plate (the muted L40
|
|
327
|
+
tier cannot clear 4.5:1 on a translucent darkened plate — darkening moves the
|
|
328
|
+
plate TOWARD muted's own luminance; the low-contrast muted register is
|
|
329
|
+
inappropriate over a busy glass plate, so it resolves to the legible dark
|
|
330
|
+
ink, which clears ~10:1). */
|
|
331
|
+
:where(.glass-dock) {
|
|
332
|
+
--glass-tint-source: var(--glass-tint-ink);
|
|
333
|
+
--glass-tint-strength: var(--glass-tint-strength-aa);
|
|
334
|
+
--dock-fg-on-aurora: var(--glass-tint-ink);
|
|
335
|
+
--muted-foreground: var(--foreground);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/* The ancestor-querying `@container` block KEPT — it reaches the DESCENDANT
|
|
339
|
+
nested-glass surfaces inside a dock when a consumer marks `--glass-backdrop:
|
|
340
|
+
light` on the dock's ancestor (the self-engage above re-points only the dock
|
|
341
|
+
root's own inheriting tokens; a consumer's explicit ancestor bucket still
|
|
342
|
+
cascades to nested glass through this block). */
|
|
219
343
|
@container style(--glass-backdrop: light) {
|
|
220
344
|
.glass-dock {
|
|
221
345
|
--glass-tint-source: var(--glass-tint-ink);
|
|
@@ -235,6 +359,12 @@
|
|
|
235
359
|
still-light dock plate), so the anchor is the light surface, matching the rung
|
|
236
360
|
refinement in glass.css. The bucket is the floor; this is the native pick. */
|
|
237
361
|
@supports (color: contrast-color(white)) {
|
|
362
|
+
/* The SELF-ENGAGED dock refinement (the unconditional self-engage above);
|
|
363
|
+
progressive enhancement only — the declarative darken is the AA floor. */
|
|
364
|
+
:where(.glass-dock) {
|
|
365
|
+
--dock-fg-on-aurora: contrast-color(var(--card));
|
|
366
|
+
--muted-foreground: contrast-color(var(--card));
|
|
367
|
+
}
|
|
238
368
|
@container style(--glass-backdrop: light) {
|
|
239
369
|
.glass-dock {
|
|
240
370
|
--dock-fg-on-aurora: contrast-color(var(--card));
|
|
@@ -193,9 +193,59 @@
|
|
|
193
193
|
the floor so the cascade re-resolves at touch scale. */
|
|
194
194
|
@media (pointer: coarse) {
|
|
195
195
|
.glass-dock[data-density] {
|
|
196
|
-
|
|
196
|
+
/* R5-2 — the coarse-register DEFAULT lives in the FALLBACK, NOT a
|
|
197
|
+
hard-pin. The coarse dock painted ~22% too big (the global
|
|
198
|
+
--ui-coarse-scale 1.5 → an ~80px collapsed pill). The dock-layer
|
|
199
|
+
comfort floors at a TIGHTER coarse register than the global --ui-scale
|
|
200
|
+
(the dock is a dense chrome strip, not a body control): --dock-local-scale
|
|
201
|
+
falls back to --dock-coarse-scale (≈0.78; × the 1.5 global = ~1.17
|
|
202
|
+
effective → a ~60px collapsed pill). The consumer knob --dock-mobile-scale
|
|
203
|
+
WINS the fallback when set on ANY ancestor (inherited in, no specificity
|
|
204
|
+
war against this block — the dead-knob trap a hard `--dock-mobile-scale:
|
|
205
|
+
0.78` here would re-create), so a consumer who wants the dock to MATCH
|
|
206
|
+
the global comfort sets --dock-mobile-scale: 1; one who wants it larger
|
|
207
|
+
sets >1. The touch floor stays held by the `max(…, --dock-control-floor)`
|
|
208
|
+
clamp in every scaled control-size (the lift just below). */
|
|
209
|
+
--dock-local-scale: var(--dock-mobile-scale, var(--dock-coarse-scale, 0.78));
|
|
210
|
+
/* R5-1 — RE-DECLARE --dock-scale HERE so the consumer knob reaches the
|
|
211
|
+
geometry cascade. The :root definition (offsets-sizing.css) computes
|
|
212
|
+
`calc(var(--ui-scale) * var(--dock-local-scale, 1))` AT :root, where
|
|
213
|
+
--dock-local-scale is the frozen identity 1 — custom-property
|
|
214
|
+
SUBSTITUTION resolves --dock-scale once at its declaring element, so
|
|
215
|
+
the descendant --dock-local-scale lift on THIS block never re-flowed
|
|
216
|
+
into it (the AX.W55 substitution-vs-inheritance trap, 3rd recurrence).
|
|
217
|
+
Re-declaring --dock-scale on the SAME element that lifts
|
|
218
|
+
--dock-local-scale makes the var() resolve against the lifted value, so
|
|
219
|
+
the --dock-mobile-scale / --dock-coarse-scale knobs reach every
|
|
220
|
+
`calc(<base> * --dock-scale)` geometry leg. Identical to the :root
|
|
221
|
+
formula by construction. */
|
|
222
|
+
--dock-scale: calc(var(--ui-scale) * var(--dock-local-scale, 1));
|
|
197
223
|
--dock-control-floor: var(--dock-touch-target, 2.75rem);
|
|
198
224
|
--size-icon-btn: var(--dock-touch-target, 2.75rem);
|
|
225
|
+
/* R5-1 SWEEP — the OTHER :root tokens that derive from --dock-scale freeze
|
|
226
|
+
it at the :root value (where --dock-local-scale is the identity 1), so the
|
|
227
|
+
R5-2 dock-local 0.78 register never reaches them: the SAME
|
|
228
|
+
substitution-vs-inheritance trap, one level out. With --dock-scale now
|
|
229
|
+
re-declared ABOVE, RE-RESOLVE each derived token on THIS element so it
|
|
230
|
+
reads the dock-local --dock-scale (else --dock-icon-glyph /
|
|
231
|
+
--dock-collapsed-padding / --dock-layer-tab-size paint at the global 1.5×
|
|
232
|
+
while the density box paints at 1.17× — a desync the R5-2 register would
|
|
233
|
+
introduce). The formulas are IDENTICAL to their :root definitions; only
|
|
234
|
+
the resolution element moves so the lifted --dock-scale flows in. */
|
|
235
|
+
--dock-icon-glyph: calc(1.25rem * var(--dock-scale));
|
|
236
|
+
--dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
|
|
237
|
+
--dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
|
|
238
|
+
/* --dock-collapsed-summary-min-size derives from --dock-layer-height (the
|
|
239
|
+
density-resolved control height on .glass-dock[data-density]) — but its
|
|
240
|
+
:root definition reads --dock-layer-height at :root, where density.css
|
|
241
|
+
never sets it, so it froze at the inline 2.5rem fallback × 0.85 = 34px
|
|
242
|
+
(the pre-existing freeze, independent of R5-2). Re-resolving it HERE reads
|
|
243
|
+
the density-painted --dock-layer-height so the collapsed circle FLOOR
|
|
244
|
+
tracks the dock scale (the "perfect circle" the user named scales on touch
|
|
245
|
+
with the box, not a frozen 34px floor). */
|
|
246
|
+
--dock-collapsed-summary-min-size: calc(
|
|
247
|
+
var(--dock-layer-height, 2.5rem) * 0.85
|
|
248
|
+
);
|
|
199
249
|
}
|
|
200
250
|
}
|
|
201
251
|
}
|