@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
|
@@ -10,9 +10,12 @@
|
|
|
10
10
|
* `.dock-layer-item-host` pane.
|
|
11
11
|
*
|
|
12
12
|
* NOTE: this `.dock-layer-rail` is the LAYER-SWITCHER rail inside a
|
|
13
|
-
* `<DockLayerGroup>` —
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* `<DockLayerGroup>` — the in-dock switcher tab strip. AZ.W-DOCK-TAXONOMY
|
|
14
|
+
* de-overloaded the "rail" noun: the `GlassDock variant="rail"` vertical-nav
|
|
15
|
+
* variant is GONE (a vertical nav column is now `orientation="vertical"`), and
|
|
16
|
+
* `<InstrumentRail>` retired at AY W-IC1. `.dock-layer-rail` is the ONLY surviving
|
|
17
|
+
* "rail" in the dock band; the noun is otherwise free (reserved for the
|
|
18
|
+
* W-RAIL-EXTEND beyond-dock facility).
|
|
16
19
|
*
|
|
17
20
|
* @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
|
|
18
21
|
* carve is isomorphic (same layer, same source order → ZERO visual delta). */
|
|
@@ -87,38 +90,59 @@
|
|
|
87
90
|
flex-direction: column-reverse;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
|
-
/*
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
/* AZ.W-DOCK-RAIL — the rail is a HAIRLINE register, not a fused plate. The
|
|
94
|
+
AX.W45 `--surface-tint-8` filled plate + `--radius-md` rounded background
|
|
95
|
+
(the "heavy dark blob column" R3-1) are RETIRED: the rail box paints NO fill
|
|
96
|
+
(`--dock-layer-rail-bg` defaults transparent at §sizing) and carries no
|
|
97
|
+
rounded plate background. The single `border-right` hairline — re-keyed to
|
|
98
|
+
the tunable `--dock-layer-rail-divider` token — is the only visible rail
|
|
99
|
+
edge: a thin rule between the switcher column and the dock body. The
|
|
100
|
+
hover/active affordance reads the `--dock-layer-rail-{hover,active}` glass
|
|
101
|
+
tints, so the whole rail ladder is tunable from §sizing. */
|
|
97
102
|
.dock-layer-rail {
|
|
98
103
|
display: flex;
|
|
99
104
|
flex-direction: column;
|
|
100
105
|
flex-shrink: 0;
|
|
106
|
+
/* AY.W-DOCK-NAV B6 — `align-self: start` (not the group's `stretch`
|
|
107
|
+
default) so the column rail reports its OWN intrinsic content height
|
|
108
|
+
(the stacked tabs) to the group's cross-axis sizing rather than being
|
|
109
|
+
stretched to the group's content-row height. Under `stretch` the rail's
|
|
110
|
+
height resolved to the group height, which was the single content-row
|
|
111
|
+
height — circular: the rail's 3 tall tabs overflowed a 40px rail and the
|
|
112
|
+
lower tabs + the indicator fell below the dock floor (the B6 break). With
|
|
113
|
+
`align-self: start` the rail demands its natural column height, the group
|
|
114
|
+
grows to it, and the dock grows to contain the whole rail. The
|
|
115
|
+
`min-height: max-content` belt makes the demand explicit — a row-flex
|
|
116
|
+
child's cross-size can otherwise resolve to the (smaller) container row
|
|
117
|
+
height even under `align-self: start`; `max-content` floors the rail at
|
|
118
|
+
its stacked-tab content height so the chain (group → pane → dock) grows
|
|
119
|
+
to fit. */
|
|
120
|
+
align-self: start;
|
|
121
|
+
min-height: max-content;
|
|
101
122
|
gap: var(--dock-layer-rail-gap, 0.125rem);
|
|
102
123
|
padding: var(--dock-layer-rail-padding, 0.125rem);
|
|
103
|
-
background: var(--dock-layer-rail-bg,
|
|
104
|
-
border-
|
|
105
|
-
|
|
124
|
+
background: var(--dock-layer-rail-bg, transparent);
|
|
125
|
+
border-right: 1px solid
|
|
126
|
+
var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
|
|
106
127
|
}
|
|
107
128
|
|
|
108
129
|
.dock-layer-group.vertical .dock-layer-rail {
|
|
109
130
|
flex-direction: row;
|
|
110
131
|
border-right: none;
|
|
111
|
-
border-bottom: 1px solid
|
|
132
|
+
border-bottom: 1px solid
|
|
133
|
+
var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
|
|
112
134
|
}
|
|
113
135
|
|
|
114
136
|
.dock-layer-group.horizontal.rail-end .dock-layer-rail {
|
|
115
137
|
border-right: none;
|
|
116
|
-
border-left: 1px solid
|
|
138
|
+
border-left: 1px solid
|
|
139
|
+
var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
|
|
117
140
|
}
|
|
118
141
|
|
|
119
142
|
.dock-layer-group.vertical.rail-end .dock-layer-rail {
|
|
120
143
|
border-bottom: none;
|
|
121
|
-
border-top: 1px solid
|
|
144
|
+
border-top: 1px solid
|
|
145
|
+
var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
|
|
122
146
|
}
|
|
123
147
|
|
|
124
148
|
/* AU.W8.4 — the rail is a reka-ui Tabs contract. The travelling
|
|
@@ -134,12 +158,27 @@
|
|
|
134
158
|
display: inline-flex;
|
|
135
159
|
align-items: center;
|
|
136
160
|
justify-content: center;
|
|
161
|
+
/* AY.W-DOCK-NAV B6 — `flex-shrink: 0` so the stacked tabs in the column rail
|
|
162
|
+
hold their full size and the rail demands its natural content height (no
|
|
163
|
+
tab squish). With the rail's `align-self: start` this makes the rail report
|
|
164
|
+
its true column height to the group's cross-axis sizing, growing the dock
|
|
165
|
+
to contain all the tabs + the travelling indicator (the B6 un-clip). */
|
|
166
|
+
flex-shrink: 0;
|
|
137
167
|
width: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
138
168
|
height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
|
|
139
169
|
border: 0;
|
|
140
170
|
border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
|
|
141
171
|
background: transparent;
|
|
142
|
-
|
|
172
|
+
/* AZ.W-DOCK-RAIL — the rest glyph lifts OFF the low-contrast
|
|
173
|
+
`--muted-foreground` (which read sub-AA over the now-hairline transparent
|
|
174
|
+
backdrop) to the nav-glyph contrast register: a strong warm-ink tint of
|
|
175
|
+
the dock foreground (`--dock-fg-on-aurora` → `--foreground`), tempered to
|
|
176
|
+
~78% for the unselected read while staying ≥4.5:1 over the dock substrate.
|
|
177
|
+
The selected tab flips to the full register below. */
|
|
178
|
+
color: var(
|
|
179
|
+
--dock-layer-rail-glyph,
|
|
180
|
+
color-mix(in srgb, var(--dock-fg-on-aurora, var(--foreground)) 78%, transparent)
|
|
181
|
+
);
|
|
143
182
|
cursor: pointer;
|
|
144
183
|
font: inherit;
|
|
145
184
|
font-size: 0.75rem;
|
|
@@ -150,19 +189,34 @@
|
|
|
150
189
|
color var(--dock-motion-fast);
|
|
151
190
|
}
|
|
152
191
|
|
|
192
|
+
/* AZ.W-DOCK-RAIL — floor the rail glyph. The `size-4` (16px) icon class on the
|
|
193
|
+
lucide component does not survive the column inline-flex: with no concrete
|
|
194
|
+
`width`/`flex-shrink`, the un-floored SVG collapsed to a 4px sliver
|
|
195
|
+
(F2-R3-1). This rule floors BOTH axes to 1rem (16px) and pins
|
|
196
|
+
`flex-shrink: 0` so the glyph never re-squishes inside the flex tab. */
|
|
197
|
+
.dock-layer-rail .dock-layer-tab svg {
|
|
198
|
+
width: 1rem;
|
|
199
|
+
height: 1rem;
|
|
200
|
+
flex-shrink: 0;
|
|
201
|
+
}
|
|
202
|
+
|
|
153
203
|
.dock-layer-rail .dock-layer-tab:hover {
|
|
154
204
|
background: var(
|
|
155
205
|
--dock-layer-rail-hover,
|
|
156
|
-
color-mix(in srgb, var(--accent)
|
|
206
|
+
color-mix(in srgb, var(--accent) 30%, transparent)
|
|
157
207
|
);
|
|
158
|
-
color: var(--foreground);
|
|
208
|
+
color: var(--dock-fg-on-aurora, var(--foreground));
|
|
159
209
|
}
|
|
160
210
|
|
|
161
211
|
/* AU.W8.4 — KEEP the active glyph tint on the selected tab (reka emits
|
|
162
212
|
`data-state="active"` + `aria-selected="true"`); the per-button active
|
|
163
|
-
BACKGROUND is RETIRED — the travelling indicator carries that affordance.
|
|
213
|
+
BACKGROUND is RETIRED — the travelling indicator carries that affordance.
|
|
214
|
+
AZ.W-DOCK-RAIL — the selected glyph reads the full warm-ink register (the
|
|
215
|
+
nav-glyph contrast canon), deferring the exact accent to W-REGISTER-IOS's
|
|
216
|
+
root via `--dock-rail-active-accent` (defaults to the dock foreground, NOT
|
|
217
|
+
a saturated brand `--primary`). */
|
|
164
218
|
.dock-layer-rail .dock-layer-tab[data-state="active"] {
|
|
165
|
-
color: var(--
|
|
219
|
+
color: var(--dock-rail-active-accent, var(--dock-fg-on-aurora, var(--foreground)));
|
|
166
220
|
}
|
|
167
221
|
|
|
168
222
|
/* AU.W8.4 — the dock control focus-ring contract does not cover
|
|
@@ -204,10 +258,14 @@
|
|
|
204
258
|
height: var(--reka-tabs-indicator-size);
|
|
205
259
|
transform: translateY(var(--reka-tabs-indicator-position));
|
|
206
260
|
border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
261
|
+
/* AZ.W-DOCK-RAIL — the travelling indicator paints the glass-register
|
|
262
|
+
`--dock-layer-rail-active` (defaults to `--glass-bg-floating`, the
|
|
263
|
+
"selected reads as glass" register). The inline fallback is the SAME
|
|
264
|
+
glass tier — NOT the saturated `--primary 15%` warm-red mix the prior
|
|
265
|
+
register baked. The baked-plate utilities the reka `<TabsIndicator>`
|
|
266
|
+
wrapper used to render are suppressed via `:surface="false"` in
|
|
267
|
+
DockLayerGroup.vue, so THIS token rule is the sole paint. */
|
|
268
|
+
background: var(--dock-layer-rail-active, var(--glass-bg-floating));
|
|
211
269
|
transition:
|
|
212
270
|
width var(--duration-fast) var(--spring-snappy),
|
|
213
271
|
height var(--duration-fast) var(--spring-snappy),
|
|
@@ -60,6 +60,18 @@
|
|
|
60
60
|
inline-size: var(--dock-morph-size);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
/* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
|
|
64
|
+
BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
|
|
65
|
+
measures/writes the same `--dock-morph-from/to` span on the block axis
|
|
66
|
+
(`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
|
|
67
|
+
vertical→`block-size`), so the CSS lands the scalar on `block-size` and lets the
|
|
68
|
+
inline axis stay intrinsic. This is the wiring that gives a collapsible vertical
|
|
69
|
+
dock the height-morph the mandate names. */
|
|
70
|
+
.glass-dock.vertical[data-morphing] .dock-layers {
|
|
71
|
+
inline-size: auto;
|
|
72
|
+
block-size: var(--dock-morph-size);
|
|
73
|
+
}
|
|
74
|
+
|
|
63
75
|
/* A vertical inner group morphs the BLOCK axis — the same span lands on
|
|
64
76
|
block-size, and the inline axis stays intrinsic. */
|
|
65
77
|
.glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
|
|
@@ -196,9 +208,19 @@
|
|
|
196
208
|
block-axis morph reveals a column) is NOT forced onto one nowrap row — the
|
|
197
209
|
vertical group's active host block-sizes to `height: max-content` below
|
|
198
210
|
(the AP.W3 column treatment, KEPT). */
|
|
211
|
+
/* AY.W-DOCK-NAV B6 — the height is a FLOOR (`min-height`), not a fixed lock. A
|
|
212
|
+
single-row content pane's intrinsic height already equals
|
|
213
|
+
`--dock-layer-height` (the controls + line-height sum to it), so `min-height`
|
|
214
|
+
is byte-identical for the common case. But a horizontal dock hosting a COLUMN
|
|
215
|
+
switcher-rail (`<DockLayerGroup>` with `show-rail`) lays the rail out as a
|
|
216
|
+
stack of tabs taller than one row — the prior fixed `height` clipped the
|
|
217
|
+
rail's lower tabs + the active indicator BELOW the dock floor (the B6 "no rail
|
|
218
|
+
line / broken" read, measured: 2 of 3 tabs clipped). The floor lets the pane
|
|
219
|
+
block-size to the rail's natural column height so the dock grows to contain
|
|
220
|
+
the whole rail. The cross axis keeps `nowrap`. */
|
|
199
221
|
.glass-dock:not(.vertical) .dock-layer {
|
|
200
222
|
white-space: nowrap;
|
|
201
|
-
height: var(--dock-layer-height, 2.5rem);
|
|
223
|
+
min-height: var(--dock-layer-height, 2.5rem);
|
|
202
224
|
}
|
|
203
225
|
|
|
204
226
|
.dock-layer.is-active {
|
|
@@ -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));
|