@mkbabb/glass-ui 3.13.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/CardAction-CW7a0m8M.js +253 -0
- package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
- package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
- package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
- package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
- package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
- package/dist/DialogContent-DcKK8k9i.js +103 -0
- package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
- package/dist/FadingScroll-DI6hQhT9.js +76 -0
- package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
- package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
- package/dist/IconChip-BTD-nay5.js +55 -0
- package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
- package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
- package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-VUwexFUf.js +43 -0
- package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
- package/dist/PopoverContent-DL7E6vJP.js +127 -0
- package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
- package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
- package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
- package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
- package/dist/Toaster-Bw4xR8xV.js +274 -0
- package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
- package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +16 -8
- package/dist/api/types-extra.d.ts +6 -0
- package/dist/api.js +2 -2
- package/dist/aurora.js +888 -230
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +106 -0
- package/dist/button-DYCUa-tH.js +126 -0
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +2 -2
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +90 -151
- package/dist/collapsible.js +1 -1
- package/dist/color-swatch.d.ts +1 -0
- package/dist/color-swatch.js +47 -0
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/compile-CQEFRTmx.js +19 -0
- package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
- package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
- package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
- package/dist/components/custom/aurora/index.d.ts +3 -2
- package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
- package/dist/components/custom/border-progress/constants.d.ts +59 -0
- package/dist/components/custom/border-progress/index.d.ts +4 -0
- package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
- package/dist/components/custom/color-swatch/index.d.ts +1 -0
- package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
- package/dist/components/custom/concentric/constants.d.ts +43 -0
- package/dist/components/custom/concentric/index.d.ts +5 -0
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
- package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
- package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
- package/dist/components/custom/constellation/constellationField.d.ts +2 -369
- package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
- package/dist/components/custom/constellation/index.d.ts +1 -1
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
- package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
- package/dist/components/custom/dock/constants.d.ts +35 -0
- package/dist/components/custom/dock/index.d.ts +2 -0
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
- package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
- package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
- package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
- package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
- package/dist/components/custom/easing/constants.d.ts +28 -0
- package/dist/components/custom/easing/index.d.ts +3 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
- package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
- package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
- package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
- package/dist/components/custom/fading-scroll/index.d.ts +2 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
- package/dist/components/custom/fourier-field/constants.d.ts +7 -0
- 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/glass-panel/GlassPanel.vue.d.ts +9 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
- package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/constants.d.ts +6 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +269 -0
- package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
- package/dist/components/custom/handmark/constants.d.ts +39 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +52 -0
- package/dist/components/custom/handmark/index.d.ts +27 -0
- package/dist/components/custom/handmark/ink.d.ts +11 -0
- package/dist/components/custom/handmark/texture.d.ts +39 -0
- package/dist/components/custom/handmark/types.d.ts +62 -0
- package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
- package/dist/components/custom/icon-chip/index.d.ts +2 -0
- package/dist/components/custom/icon-chip/types.d.ts +82 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -0
- package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
- package/dist/components/custom/spa-view/index.d.ts +2 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +29 -24
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
- package/dist/components/custom/tabs/constants.d.ts +9 -3
- package/dist/components/custom/tabs/index.d.ts +1 -1
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
- package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
- package/dist/components/ui/badge/index.d.ts +1 -1
- package/dist/components/ui/button/Button.vue.d.ts +5 -2
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/card/Card.vue.d.ts +34 -4
- package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
- package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
- package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
- package/dist/components/ui/card/index.d.ts +2 -0
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
- package/dist/components/ui/carousel/index.d.ts +0 -1
- package/dist/components/ui/command/Command.vue.d.ts +4 -1
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -8
- package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
- package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
- package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
- package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
- package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
- package/dist/components/ui/drawer/constants.d.ts +45 -0
- package/dist/components/ui/drawer/index.d.ts +23 -15
- package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
- package/dist/components/ui/focus-scope/index.d.ts +2 -0
- package/dist/components/ui/index.d.ts +1 -1
- package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
- package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
- package/dist/components/ui/toast/use-toast.d.ts +14 -0
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +23 -1
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
- package/dist/composables/glass/index.d.ts +5 -2
- package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
- package/dist/composables/glass/vSpecular.d.ts +2 -0
- package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
- package/dist/composables/glass/webgpu/index.d.ts +2 -0
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +4 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
- package/dist/composables/motion/useDragMorph.d.ts +77 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
- package/dist/composables/motion/useLiquidPress.d.ts +71 -0
- package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
- package/dist/composables/motion/useNumericTransition.d.ts +3 -3
- package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
- package/dist/composables/motion/useViewTransition.d.ts +36 -1
- package/dist/concentric.d.ts +1 -0
- package/dist/concentric.js +562 -0
- package/dist/configurator.js +3 -2
- package/dist/confirm-dialog.js +22 -24
- package/dist/constellation.js +93 -95
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +10 -4
- package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
- 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 +738 -442
- package/dist/{dockContext-BegmJVmx.js → dockContext-BNfyPLe9.js} +1 -1
- package/dist/dom.js +5 -5
- package/dist/dot-flow-field.d.ts +1 -0
- package/dist/dot-flow-field.js +604 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +380 -0
- package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.d.ts +1 -0
- package/dist/easing.js +463 -0
- package/dist/expandable-container.js +45 -38
- package/dist/fading-scroll.d.ts +1 -0
- package/dist/fading-scroll.js +2 -0
- package/dist/focus-scope.d.ts +1 -0
- package/dist/focus-scope.js +23 -0
- package/dist/forms.js +7 -7
- package/dist/fourier-field.js +135 -122
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +39 -36
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +154 -362
- package/dist/goo-blob.js +838 -227
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +707 -0
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-chip.d.ts +1 -0
- package/dist/icon-chip.js +2 -0
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -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 +6 -6
- package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
- package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +25 -22
- package/dist/metric-stack.js +4 -8
- package/dist/motion-core.js +36 -35
- package/dist/motion-curves.js +1 -1
- package/dist/motion.js +157 -55
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.d.ts +1 -0
- package/dist/pager-dots.js +91 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
- package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
- package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +10 -12
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet-tZMg0E0w.js +218 -0
- package/dist/sheet.js +1 -1
- package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/spa-view.d.ts +1 -0
- package/dist/spa-view.js +46 -0
- package/dist/styles/animations.css +40 -31
- package/dist/styles/border-progress.css +109 -0
- package/dist/styles/cards.css +76 -0
- package/dist/styles/components.css +1 -1
- package/dist/styles/configurator.css +35 -0
- package/dist/styles/critical-partition.mjs +140 -0
- package/dist/styles/critical.css +12 -0
- package/dist/styles/deferred.css +31 -0
- package/dist/styles/dock/density.css +64 -0
- package/dist/styles/dock/layers.css +54 -30
- package/dist/styles/dock/morph.css +124 -7
- package/dist/styles/dock/overflow.css +31 -2
- package/dist/styles/dock/rail-extend.css +168 -71
- package/dist/styles/dock/section.css +59 -0
- package/dist/styles/dock/shell.css +83 -16
- package/dist/styles/dock-controls/icon-button.css +11 -1
- package/dist/styles/dock-controls/tab-button.css +24 -83
- package/dist/styles/dock-controls/triggers.css +7 -0
- package/dist/styles/dock.css +38 -3
- package/dist/styles/drawer.css +127 -35
- package/dist/styles/feedback-tone.css +104 -0
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +154 -52
- package/dist/styles/glass/material.css +78 -15
- package/dist/styles/glass/reveal.css +136 -0
- package/dist/styles/glass/rim.css +100 -0
- package/dist/styles/glass/surface-axis.css +113 -0
- package/dist/styles/glass/surfaces.css +189 -15
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +8 -2
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +211 -0
- package/dist/styles/index.css +78 -4
- package/dist/styles/instrument-chassis.css +107 -2
- package/dist/styles/menu.css +127 -0
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/segmented-tabs.css +188 -86
- package/dist/styles/select.css +50 -0
- package/dist/styles/theme/bridges.css +22 -1
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +6 -1
- package/dist/styles/tokens/color-radius.css +40 -13
- package/dist/styles/tokens/dark-arm.css +200 -20
- package/dist/styles/tokens/glass-deep.css +75 -0
- package/dist/styles/tokens/glass-fx.css +333 -0
- package/dist/styles/tokens/glass.css +95 -315
- package/dist/styles/tokens/light-dark.css +64 -22
- package/dist/styles/tokens/offsets.css +116 -0
- package/dist/styles/tokens/on-glass-fg.css +39 -0
- package/dist/styles/tokens/property-regs.css +130 -10
- package/dist/styles/tokens/scale-paper.css +155 -84
- package/dist/styles/tokens/scheme-motion.css +102 -46
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
- package/dist/styles/tokens.css +9 -3
- package/dist/styles/transitions.css +7 -7
- package/dist/styles/typography/scale.css +153 -0
- package/dist/styles/typography/semantic.css +220 -0
- package/dist/styles/typography/utilities.css +174 -0
- package/dist/styles/typography.css +23 -507
- package/dist/styles/utilities/a11y-overrides.css +33 -4
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +255 -0
- package/dist/styles/utilities/base.css +100 -138
- package/dist/styles/utilities/btn.css +21 -202
- package/dist/styles/utilities/metal.css +189 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/styles/view-transition.css +4 -1
- package/dist/switch.js +1 -1
- package/dist/tabs.js +275 -191
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +3 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
- package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
- package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
- package/dist/useDragMorph-DgxnsVJz.js +102 -0
- package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
- package/dist/useLiquidPress-kfb4KX79.js +39 -0
- package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
- package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-q1amq1SJ.js +71 -0
- package/dist/useSpringPress-BsqPr7FJ.js +34 -0
- package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
- package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/vReveal-Czsb7zQC.js +10 -0
- package/dist/vSpecular-CQFmLNzA.js +68 -0
- package/dist/vendor-CKmzio-i.js +226 -0
- package/dist/watercolor-dot.js +12 -5
- package/package.json +193 -25
- package/src/styles/animations.css +40 -31
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +76 -0
- package/src/styles/configurator.css +35 -0
- package/src/styles/critical-partition.mjs +140 -0
- package/src/styles/dock/density.css +64 -0
- package/src/styles/dock/layers.css +54 -30
- package/src/styles/dock/morph.css +124 -7
- package/src/styles/dock/overflow.css +31 -2
- package/src/styles/dock/rail-extend.css +168 -71
- package/src/styles/dock/section.css +59 -0
- package/src/styles/dock/shell.css +83 -16
- package/src/styles/dock-controls/icon-button.css +11 -1
- package/src/styles/dock-controls/tab-button.css +24 -83
- package/src/styles/dock-controls/triggers.css +7 -0
- package/src/styles/dock.css +38 -3
- package/src/styles/drawer.css +123 -35
- package/src/styles/feedback-tone.css +104 -0
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +154 -52
- package/src/styles/glass/material.css +78 -15
- package/src/styles/glass/reveal.css +136 -0
- package/src/styles/glass/rim.css +100 -0
- package/src/styles/glass/surface-axis.css +113 -0
- package/src/styles/glass/surfaces.css +189 -15
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +8 -2
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +211 -0
- package/src/styles/index.css +78 -4
- package/src/styles/instrument-chassis.css +107 -2
- package/src/styles/menu.css +127 -0
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/segmented-tabs.css +184 -84
- package/src/styles/select.css +50 -0
- package/src/styles/theme/bridges.css +22 -1
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +6 -1
- package/src/styles/tokens/color-radius.css +40 -13
- package/src/styles/tokens/dark-arm.css +200 -20
- package/src/styles/tokens/glass-deep.css +75 -0
- package/src/styles/tokens/glass-fx.css +333 -0
- package/src/styles/tokens/glass.css +95 -315
- package/src/styles/tokens/light-dark.css +64 -22
- package/src/styles/tokens/offsets.css +116 -0
- package/src/styles/tokens/on-glass-fg.css +39 -0
- package/src/styles/tokens/property-regs.css +130 -10
- package/src/styles/tokens/scale-paper.css +155 -84
- package/src/styles/tokens/scheme-motion.css +102 -46
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
- package/src/styles/tokens.css +9 -3
- package/src/styles/transitions.css +7 -7
- package/src/styles/typography/scale.css +153 -0
- package/src/styles/typography/semantic.css +220 -0
- package/src/styles/typography/utilities.css +174 -0
- package/src/styles/typography.css +23 -507
- package/src/styles/utilities/a11y-overrides.css +33 -4
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +255 -0
- package/src/styles/utilities/base.css +100 -138
- package/src/styles/utilities/btn.css +21 -202
- package/src/styles/utilities/metal.css +189 -0
- package/src/styles/utilities.css +14 -7
- package/src/styles/view-transition.css +4 -1
- package/dist/CardAction-Cj2eycQ2.js +0 -157
- package/dist/DialogContent-Dl9WkAoS.js +0 -100
- package/dist/Notification-DdwNxIrI.js +0 -100
- package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
- package/dist/PopoverContent-BYwt2-4x.js +0 -121
- package/dist/TabsList-Dttss653.js +0 -105
- package/dist/Toaster-D6q4HtXu.js +0 -263
- package/dist/button-ChXMfsud.js +0 -81
- package/dist/check-njhk-vfu.js +0 -7
- package/dist/chevron-down-DKkxb4VV.js +0 -7
- package/dist/chevron-right-CPXbqQQz.js +0 -7
- package/dist/chevron-up-n_24SqI-.js +0 -7
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
- package/dist/components/custom/underline/index.d.ts +0 -2
- package/dist/components/custom/underline/types.d.ts +0 -56
- package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
- package/dist/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/sheet-1fChZjtw.js +0 -214
- package/dist/underline.d.ts +0 -1
- package/dist/underline.js +0 -85
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-DAoeHVue.js +0 -287
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CI2jOstM.js +0 -108
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/dist/x-BUwTKe50.js +0 -10
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
- /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
- /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
- /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
- /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
- /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
- /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
- /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
- /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
- /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
- /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
- /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
- /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
- /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
- /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
- /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
|
@@ -80,7 +80,39 @@
|
|
|
80
80
|
backdrop-filter sample does not escape the dock box (the standard nested-
|
|
81
81
|
backdrop-cost mitigation; the Button-in-glass-in-dock stack re-samples the
|
|
82
82
|
already-blurred buffer at each level without it). */
|
|
83
|
-
contain:
|
|
83
|
+
/* BA.W-DOCK-GEOMETRY contain:paint AUDIT verdict (a) — the control-plate
|
|
84
|
+
clearance fix (the `--dock-control-safe-inset` painted-plate inset, scope
|
|
85
|
+
1) + the scroll-port cross-axis un-clip (scope 2) keep the maximal
|
|
86
|
+
hover/active control plate INSIDE the dock padding box: the inset plate is
|
|
87
|
+
centered in its cell (≥1px slack/side at hover), the cell sits flush at the
|
|
88
|
+
dock content edge, and the `--dock-padding-block` (≈6px) padding holds the
|
|
89
|
+
plate ≥7px clear of the `contain: paint` border-box edge on the block axis.
|
|
90
|
+
So the `paint` clip axis is the NON-proximate second clip box (the lane's
|
|
91
|
+
`probe-bottomdock-nocontain.png` forced-root probe proved the inner
|
|
92
|
+
scroll-port box was proximate, not this) and the `paint` axis is RETAINED
|
|
93
|
+
here — the inset + freed cross axis suffice, no containment LIFT on the
|
|
94
|
+
control-plate band. (BB.W-PERF-PRODUCER A′-4 widens the value to
|
|
95
|
+
`contain: layout style paint` — the restyle-scope axes ALONGSIDE the paint
|
|
96
|
+
clip box, see below — but never lifts `paint`.) The π readback
|
|
97
|
+
(W-DOCK-GEOMETRY-DELTA.md) records the live plate-inside-padding margin
|
|
98
|
+
number that binds this verdict. */
|
|
99
|
+
/* BB.W-PERF-PRODUCER A′-4 — the `--dock-morph-t` restyle-scope narrowing.
|
|
100
|
+
The per-frame morph scalar write recomputes the inheriting `calc()` group
|
|
101
|
+
across the dock subtree (dock.css's 10-selector `:where()` consumers); add
|
|
102
|
+
the `layout` + `style` containment axes so a scalar write recomputes
|
|
103
|
+
layout/style WITHIN the dock subtree, not up the document (the value.js A′-4
|
|
104
|
+
~13fps restyle-cost trace). RECONCILED with the existing axes: `paint`
|
|
105
|
+
(above, the BA.W-DOCK-GEOMETRY clip box) composes — `contain: layout style
|
|
106
|
+
paint` is the union, NEVER `size` (which `container-type: inline-size` carries
|
|
107
|
+
as `inline-size` ONLY on the OPT-IN `containerName` host below; the default
|
|
108
|
+
free-floating dock must stay shrink-to-fit, so `size`/`inline-size` is
|
|
109
|
+
DELIBERATELY excluded here — adding it would re-introduce the 3.3.0 sliver
|
|
110
|
+
regression the §99 comment documents). The morph-axis `overflow: clip`
|
|
111
|
+
(the reveal aperture) + the `.glass-dock-frame` rail-escape are UNAFFECTED:
|
|
112
|
+
`layout`/`style` containment scopes RECALC, it does not establish a paint
|
|
113
|
+
clip beyond the already-present `paint` axis. The `DOCK_SPRING` clock is
|
|
114
|
+
byte-fenced (the value.js letter) — this is restyle COST, not a re-tune. */
|
|
115
|
+
contain: layout style paint;
|
|
84
116
|
display: inline-flex;
|
|
85
117
|
align-items: center;
|
|
86
118
|
/* AW.W1 — the dock does NOT establish a default inline-size container.
|
|
@@ -184,17 +216,33 @@
|
|
|
184
216
|
scrolls — the scroll port only engages on real over-cap content. The
|
|
185
217
|
block-axis morph clip stays `data-morphing`-gated above; this is the
|
|
186
218
|
AT-REST port only. Consumers set `--dock-max-block-size` per-instance to
|
|
187
|
-
anchor the column to the viewport without re-deriving the scroll plumbing.
|
|
188
|
-
|
|
189
|
-
|
|
219
|
+
anchor the column to the viewport without re-deriving the scroll plumbing.
|
|
220
|
+
|
|
221
|
+
BA.W-DOCK-GEOMETRY (DC-1) — the port is now GATED behind the `dock-scroll-y`
|
|
222
|
+
opt-in (`overflow="scroll"`), NOT unconditional on every `.vertical.
|
|
223
|
+
always-expanded`. THE ROOT: `overflow-y: auto` is a scroll value, and CSS
|
|
224
|
+
Overflow §3 FORCES the sibling `overflow-x: visible` to COMPUTE to `auto` —
|
|
225
|
+
so the F6 pin never survived, and EVERY at-rest vertical dock (even a
|
|
226
|
+
fit-content shell that never scrolls) paid the cross-axis inline clip,
|
|
227
|
+
slicing a control's inset plate left/right (the live π readback measured
|
|
228
|
+
`overflow-x: auto` on the grow-to-fit SidebarDock). A vertical dock that
|
|
229
|
+
genuinely needs the cap+scroll opts IN via `overflow="scroll"` (the
|
|
230
|
+
`.dock-scroll-y` port in overflow.css, the SAME plumbing the F6 comment names);
|
|
231
|
+
a grow-to-fit vertical shell stays `overflow: visible` (line 186) on BOTH axes
|
|
232
|
+
so its inset control plate paints past the track. The fit-content shell pays
|
|
233
|
+
NO cross-axis clip for zero scroll benefit — the goal criterion's "the
|
|
234
|
+
scroll-port cross-axis clip no longer fires on a fit-content shell that never
|
|
235
|
+
scrolls", honored at the geometry root. */
|
|
236
|
+
.glass-dock.vertical.dock-scroll-y.always-expanded:not([data-morphing]),
|
|
237
|
+
.glass-dock.vertical.dock-scroll-y.expanded:not([data-morphing]) {
|
|
190
238
|
overflow-x: visible;
|
|
191
239
|
overflow-y: auto;
|
|
192
240
|
scrollbar-width: none;
|
|
193
241
|
overscroll-behavior-y: contain;
|
|
194
242
|
}
|
|
195
243
|
|
|
196
|
-
.glass-dock.vertical.always-expanded:not([data-morphing])::-webkit-scrollbar,
|
|
197
|
-
.glass-dock.vertical.expanded:not([data-morphing])::-webkit-scrollbar {
|
|
244
|
+
.glass-dock.vertical.dock-scroll-y.always-expanded:not([data-morphing])::-webkit-scrollbar,
|
|
245
|
+
.glass-dock.vertical.dock-scroll-y.expanded:not([data-morphing])::-webkit-scrollbar {
|
|
198
246
|
display: none;
|
|
199
247
|
}
|
|
200
248
|
|
|
@@ -244,16 +292,19 @@
|
|
|
244
292
|
shell above; the cross axis stays visible there. */
|
|
245
293
|
padding: var(--dock-padding-block, 0.375rem);
|
|
246
294
|
border-radius: var(--radius-dock);
|
|
247
|
-
/*
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
295
|
+
/* BB.W-DOCK-MORPH-FAMILY (f) — the stale "a vertical rail is ALWAYS-EXPANDED
|
|
296
|
+
(no collapse↔expand morph)" assumption is RETIRED (it was false since
|
|
297
|
+
vertical-collapse shipped: `alwaysExpanded` defaults FALSE, so a vertical
|
|
298
|
+
dock genuinely collapses its `block-size`). The vertical plate's
|
|
299
|
+
bg/border/padding/radius now MORPH on the SAME `--dock-expand-t` scalar
|
|
300
|
+
the horizontal chrome rides (the morph.css `.glass-dock.vertical` interp +
|
|
301
|
+
padding axis-inverse + the radius arm below) — the chrome follows the
|
|
302
|
+
box-size morph, no discrete snap. NO root CSS-transition on the morph-
|
|
303
|
+
chrome props is re-added (a `transition: padding/background/border-color`
|
|
304
|
+
arm is the second-clock smell the single-scalar rebuild forbids — the
|
|
305
|
+
`--dock-expand-t` interp is the single authority). KEPT: the DECORATIVE
|
|
306
|
+
hover-scale + press-squish (the individual `scale`/`transform`) and the
|
|
307
|
+
box-shadow fade — interaction polish on the rail, NOT the morph chrome. */
|
|
257
308
|
transition:
|
|
258
309
|
box-shadow var(--dock-motion-standard),
|
|
259
310
|
transform var(--dock-motion-resize),
|
|
@@ -289,6 +340,22 @@
|
|
|
289
340
|
border-radius: var(--radius-xl);
|
|
290
341
|
}
|
|
291
342
|
|
|
343
|
+
/* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL big-dock CARD radius MORPHS on the
|
|
344
|
+
SAME `--dock-expand-t` scalar the horizontal `.shape-card` rides (the radius
|
|
345
|
+
arm of the vertical chrome un-gate; it lives in shell.css beside the horizontal
|
|
346
|
+
arm, not morph.css). `--radius-pill` at expand-t 0 (collapsed), the finite
|
|
347
|
+
`--dock-card-radius` at expand-t 1 (expanded) — the radius follows the box-size
|
|
348
|
+
block morph, no discrete snap. The static `.shape-pill`/`.shape-rounded` rest
|
|
349
|
+
radii above are the rest endpoints for those shapes; this is the card shape's
|
|
350
|
+
interpolated radius (mirroring the horizontal `:not(.vertical).shape-card`). */
|
|
351
|
+
.glass-dock.vertical.shape-card {
|
|
352
|
+
border-radius: calc(
|
|
353
|
+
var(--radius-pill) +
|
|
354
|
+
(var(--dock-card-radius) - var(--radius-pill)) *
|
|
355
|
+
var(--dock-expand-t, 1)
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
|
|
292
359
|
/* AW.W3b — horizontal-root shape rules. The `shape-*` class once bound ONLY under
|
|
293
360
|
the vertical surface; on a horizontal dock the prop silently no-op'd (the root
|
|
294
361
|
hardwired `--radius-dock` = `--radius-pill`). These rules close that
|
|
@@ -20,10 +20,20 @@
|
|
|
20
20
|
scale: 1;
|
|
21
21
|
width: var(--dock-control-size, var(--size-icon-btn));
|
|
22
22
|
height: var(--dock-control-size, var(--size-icon-btn));
|
|
23
|
-
|
|
23
|
+
/* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The HIT
|
|
24
|
+
BOX stays the full `--dock-control-size` (the WCAG 2.5.5 touch floor on
|
|
25
|
+
the CELL), while the inset padding + `background-clip: content-box`
|
|
26
|
+
insets the PAINTED plate within it: the hover/active fill paints only the
|
|
27
|
+
content box (the cell minus the inset on every side), so the maximal
|
|
28
|
+
hover (×1.1) / active circle clears the cross-axis clip edge with ≥1px
|
|
29
|
+
margin — the lozenge dies at the plate diameter, not at the clip box. The
|
|
30
|
+
inset falls back to the prior `--dock-icon-padding` (0) when no dock
|
|
31
|
+
ancestor sets `--dock-control-safe-inset` (a standalone icon button). */
|
|
32
|
+
padding: var(--dock-icon-padding, var(--dock-control-safe-inset, 0));
|
|
24
33
|
cursor: pointer;
|
|
25
34
|
border: none;
|
|
26
35
|
background: transparent;
|
|
36
|
+
background-clip: content-box;
|
|
27
37
|
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
28
38
|
/* Foreground base routes through `--dock-fg-on-aurora` (defaults to
|
|
29
39
|
`--foreground`, byte-identical to before) so a consumer floating the
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
(AZ.W-CARVE partial 3 of 5; carved out of dock-controls.css).
|
|
3
3
|
|
|
4
4
|
The base rule (density-keyed height knob, padding, glass hover/active/press
|
|
5
|
-
cohort), the PRIMARY tier (the
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
edge-light/edge-shadow cross-control comma-group over tab + icon button).
|
|
5
|
+
cohort), the PRIMARY tier (the structural shell — taller min-height + wider
|
|
6
|
+
padding + a stronger base tint; the disco grain/halo RETIRED at BA.W-GLASS-CAL,
|
|
7
|
+
it now inherits the base glass hover register), and the SECONDARY tier (the
|
|
8
|
+
quieter edge-light/edge-shadow cross-control comma-group over tab + icon button).
|
|
9
9
|
Opens its OWN `@layer components`; @import-ed after dark-mode-toggle.css. */
|
|
10
10
|
|
|
11
11
|
@layer components {
|
|
@@ -29,6 +29,14 @@
|
|
|
29
29
|
padding-block: var(--dock-tab-padding-block, 0.375rem);
|
|
30
30
|
border: none;
|
|
31
31
|
background: transparent;
|
|
32
|
+
/* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The tab's
|
|
33
|
+
OWN padding already insets a content box within the row-locked border box;
|
|
34
|
+
`background-clip: content-box` realizes that as a PAINTED-plate inset, so
|
|
35
|
+
the hover (×1.1) / active pill clears the cross-axis clip edge with margin
|
|
36
|
+
— the same plate-inset-within-cell principle the icon-button consumes via
|
|
37
|
+
`--dock-control-safe-inset`. The text + min-height keep the box at the row;
|
|
38
|
+
only the painted fill insets (no box growth, no glyph reflow). */
|
|
39
|
+
background-clip: content-box;
|
|
32
40
|
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
33
41
|
/* Default font-size carries through to text-only tab content; consumers
|
|
34
42
|
wrapping content in an explicit type utility (e.g. `text-hero`,
|
|
@@ -86,91 +94,24 @@
|
|
|
86
94
|
|
|
87
95
|
/* Tier — primary ────────────────────────────────────────────
|
|
88
96
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* <DockTabButton>
|
|
101
|
-
* consumer passes `data-tier="primary"`. The dock-local rules below
|
|
102
|
-
* are STRICTLY the dock extension: structural shell (padding, base
|
|
103
|
-
* surface tint, min-height) + phase-tint extensions (hover radial
|
|
104
|
-
* uses `--phase-color`, plus the `[data-phase]` `::before` halo).
|
|
97
|
+
* BA.W-GLASS-CAL (H2a) — the disco COLLAPSED. The primary tier was a SECOND
|
|
98
|
+
* disco surface: it composed `@utility btn-audacious` (auto-attached by
|
|
99
|
+
* <DockTabButton> on `data-tier="primary"`) PLUS a dock-local phase-grain
|
|
100
|
+
* (the `--glass-grain-opacity-disco` + `--paper-clean-texture`/`--phase-color`
|
|
101
|
+
* radial hover) PLUS a `[data-phase]` `::before` rest-halo. With the disco
|
|
102
|
+
* retired, the primary tier keeps ONLY its STRUCTURAL shell (taller min-height,
|
|
103
|
+
* wider padding, the slightly-stronger base tint that distinguishes it from the
|
|
104
|
+
* secondary tier) and inherits the plain de-red'd dock-control glass hover
|
|
105
|
+
* register from the base `.dock-tab-button` rule above (bg → `--dock-control-
|
|
106
|
+
* hover-bg`, scale → `--scale-hover-dock`, the specular gleam — the SAME register
|
|
107
|
+
* `.dock-icon-button` speaks). No grain, no phase-radial, no rest-halo. The
|
|
108
|
+
* <DockTabButton> auto-attach of `btn-audacious` is removed (the utility is gone).
|
|
105
109
|
*/
|
|
106
110
|
.dock-tab-button[data-tier="primary"] {
|
|
107
111
|
--dock-tab-min-height: 4rem;
|
|
108
112
|
padding-inline: 1.5rem;
|
|
109
113
|
background: color-mix(in srgb, var(--card) 60%, transparent);
|
|
110
114
|
color: var(--foreground);
|
|
111
|
-
|
|
112
|
-
/* Phase-tint hover override — same disco-grain composition as
|
|
113
|
-
* `btn-audacious`, but the radial uses `--phase-color` (instrument-
|
|
114
|
-
* cluster axis) instead of the canonical `--primary`. The `--paper-
|
|
115
|
-
* clean-texture` overlay and `--glass-specular` shadow stack are
|
|
116
|
-
* inherited from the underlying `btn-audacious` utility. */
|
|
117
|
-
/* AX.W52 D19 — the phase-tint hover radial DEMOTED: the prior
|
|
118
|
-
* `ellipse at 30% 30%` at 18% was a loud top-LEFT corner hotspot. Toned to
|
|
119
|
-
* 8% and the anchor shifted off the hard corner toward a softer top-biased
|
|
120
|
-
* ellipse (`40% 25%`) with a tighter `transparent 55%` falloff, so it reads
|
|
121
|
-
* as a surface lift rather than a corner glow — the disco hover identity
|
|
122
|
-
* survives, the egregious corner bloom does not. */
|
|
123
|
-
&:hover:not(:disabled) {
|
|
124
|
-
--glass-grain-opacity: var(--glass-grain-opacity-disco, 0.08);
|
|
125
|
-
background-image:
|
|
126
|
-
var(--paper-clean-texture),
|
|
127
|
-
radial-gradient(
|
|
128
|
-
ellipse at 40% 25%,
|
|
129
|
-
color-mix(
|
|
130
|
-
in srgb,
|
|
131
|
-
var(--phase-color, var(--foreground)) 8%,
|
|
132
|
-
transparent
|
|
133
|
-
),
|
|
134
|
-
transparent 55%
|
|
135
|
-
);
|
|
136
|
-
background-blend-mode: overlay, normal;
|
|
137
|
-
background-size: var(--paper-texture-size), auto;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/* Q.W3.A.4 — phase-tint backplate halo at the pill wrapper.
|
|
141
|
-
*
|
|
142
|
-
* An inner glyph wrapper's own halo would be clipped by the pill's
|
|
143
|
-
* `overflow: hidden` and never escape the glyph box. This `::before`
|
|
144
|
-
* lifts the phase-tint to the pill itself so the glow composes with the
|
|
145
|
-
* whole CTA. Scoped to active phases — at idle / ready the pill stays
|
|
146
|
-
* neutral and inherits the W2.7 reservation ("disco fires on hover
|
|
147
|
-
* only"). */
|
|
148
|
-
/* AX.W52 D19 — the REST phase-halo `::before` (fires during a speedtest run
|
|
149
|
-
* on the most prominent dock control) DEMOTED on the same axis as the hover
|
|
150
|
-
* radial: 18%→8%, the hard `30% 30%` corner shifted to a softer `40% 25%`
|
|
151
|
-
* top-biased ellipse with a tighter `transparent 55%` falloff, and the
|
|
152
|
-
* `opacity: 1` dropped to 0.5 so the persistent run-time halo is a subtle
|
|
153
|
-
* surface lift, not a corner bloom that washes the pill for the whole run. */
|
|
154
|
-
&[data-phase]:not([data-phase="ready"]):not([data-phase="idle"])::before {
|
|
155
|
-
content: "";
|
|
156
|
-
position: absolute;
|
|
157
|
-
inset: 0;
|
|
158
|
-
border-radius: inherit;
|
|
159
|
-
background: radial-gradient(
|
|
160
|
-
ellipse at 40% 25%,
|
|
161
|
-
color-mix(
|
|
162
|
-
in srgb,
|
|
163
|
-
var(--phase-color, var(--foreground)) 8%,
|
|
164
|
-
transparent
|
|
165
|
-
)
|
|
166
|
-
0%,
|
|
167
|
-
transparent 55%
|
|
168
|
-
);
|
|
169
|
-
pointer-events: none;
|
|
170
|
-
z-index: -1;
|
|
171
|
-
opacity: 0.5;
|
|
172
|
-
transition: opacity var(--duration-fast) var(--ease-standard);
|
|
173
|
-
}
|
|
174
115
|
}
|
|
175
116
|
|
|
176
117
|
/* Tier — secondary ──────────────────────────────────────────
|
|
@@ -26,6 +26,13 @@
|
|
|
26
26
|
cursor: pointer;
|
|
27
27
|
border: none;
|
|
28
28
|
background: transparent;
|
|
29
|
+
/* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). As on the
|
|
30
|
+
tab button: the trigger's OWN padding insets a content box within the
|
|
31
|
+
row-locked border box, and `background-clip: content-box` realizes that
|
|
32
|
+
as a PAINTED-plate inset so the hover (×1.1) / open pill clears the
|
|
33
|
+
cross-axis clip edge — the same plate-inset-within-cell principle the
|
|
34
|
+
icon-button consumes via `--dock-control-safe-inset`. No box growth. */
|
|
35
|
+
background-clip: content-box;
|
|
29
36
|
border-radius: var(--dock-control-radius, var(--radius-pill));
|
|
30
37
|
/* Shares the dock-icon-button legibility base (`--dock-fg-on-aurora`). */
|
|
31
38
|
color: color-mix(
|
package/src/styles/dock.css
CHANGED
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
@import "./dock/layer-group.css";
|
|
42
42
|
@import "./dock/overflow.css";
|
|
43
43
|
@import "./dock/rail-extend.css";
|
|
44
|
+
@import "./dock/section.css";
|
|
44
45
|
@import "./dock/morph-bridge.css";
|
|
45
46
|
|
|
46
47
|
/* AX.W01 — the SINGLE morph scalar. `useLayerTransition` writes it once per frame
|
|
@@ -66,6 +67,38 @@
|
|
|
66
67
|
initial-value: 0;
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
/* BB.W-DOCK-MORPH-FAMILY (e) — the `@property`-registered dock-scale axis. The
|
|
71
|
+
dock-scale cascade is `--dock-scale: calc(var(--ui-scale) * var(--dock-local-scale,
|
|
72
|
+
1))` (tokens/sizing.css). UNregistered, that `calc()` substitutes ONCE at `:root`
|
|
73
|
+
against the `:root` identity `--dock-local-scale: 1`, so a consumer-scope
|
|
74
|
+
`--dock-local-scale` override is INHERITED but never RE-EVALUATED — the dock keeps
|
|
75
|
+
`--dock-scale: calc(1 * 1)` and stays at the unscaled base (the 3rd recurrence of
|
|
76
|
+
the AX.W55 substitution-vs-inheritance trap; the documented-but-broken `:root`
|
|
77
|
+
preset). Registering `--dock-local-scale` as an INHERITING `@property <number>`
|
|
78
|
+
makes a registered inheriting custom property re-substitute PER-ELEMENT, so a
|
|
79
|
+
`--dock-local-scale` override on ANY dock scope re-evaluates the `calc()` at that
|
|
80
|
+
scope and threads the whole geometry cascade (box·pad·gap·tab·tile·glyph) down in
|
|
81
|
+
lockstep — the `:root` preset made real (the `@property --dock-morph-t` house
|
|
82
|
+
idiom above is the precedent). `--dock-scale` itself is ALSO registered (the
|
|
83
|
+
derived axis) so its `calc()` re-resolves per-element when `--dock-local-scale`
|
|
84
|
+
shifts. ADDITIVE ONLY: `initial-value: 1` is the identity, so at the default
|
|
85
|
+
`--dock-local-scale: 1` the resolved `--dock-scale` is byte-IDENTICAL to HEAD (no
|
|
86
|
+
rung re-tune); the `@media (pointer: coarse)` re-declare (overflow.css) STAYS the
|
|
87
|
+
`:root`-equivalent re-resolve, and this registration is the complementary
|
|
88
|
+
non-`:root`-scope thread. DOCK_SPRING is untouched (this is a token registration,
|
|
89
|
+
not a clock). */
|
|
90
|
+
@property --dock-local-scale {
|
|
91
|
+
syntax: "<number>";
|
|
92
|
+
inherits: true;
|
|
93
|
+
initial-value: 1;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@property --dock-scale {
|
|
97
|
+
syntax: "<number>";
|
|
98
|
+
inherits: true;
|
|
99
|
+
initial-value: 1;
|
|
100
|
+
}
|
|
101
|
+
|
|
69
102
|
@layer components {
|
|
70
103
|
:where(
|
|
71
104
|
.glass-dock,
|
|
@@ -81,10 +114,12 @@
|
|
|
81
114
|
--dock-motion-fast: var(--duration-fast) var(--ease-standard);
|
|
82
115
|
--dock-motion-standard: var(--duration-normal) var(--ease-standard);
|
|
83
116
|
/* AT.W6-dock-c — the FLIP-fallback timing. `--dock-resize-spring` (the
|
|
84
|
-
`--spring-
|
|
117
|
+
`--spring-dock` linear()) is the single source curve the native
|
|
85
118
|
View-Transition path ALSO consumes, so the morph is timing-identical
|
|
86
|
-
across engines.
|
|
87
|
-
|
|
119
|
+
across engines. BA.W-GLASS-CAL Unit 3 — the duration leg re-times off
|
|
120
|
+
the generic `--duration-normal` (0.3s) onto `--spring-dock-duration`
|
|
121
|
+
(0.28s, the dock spring's OWN 2%-band envelope settle). */
|
|
122
|
+
--dock-motion-resize: var(--spring-dock-duration) var(--dock-resize-spring);
|
|
88
123
|
}
|
|
89
124
|
|
|
90
125
|
/* Shared four-state contract — the focus-visible ring + disabled paint are
|
package/src/styles/drawer.css
CHANGED
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* drawer.css — Detented bottom-sheet grammar (AN.W3).
|
|
2
|
+
* drawer.css — Detented bottom-sheet grammar (AN.W3; BB.W-DRAWER-ABROGATE).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* THE HOUSE owns the snap math end-to-end now (vaul-vue ABROGATED). The Drawer
|
|
5
|
+
* family composes the reka `DialogRoot`/`DialogPortal`/`DialogContent` headless
|
|
6
|
+
* substrate (the SAME vueuse-free substrate every other compound wrapper binds),
|
|
7
|
+
* and the snap settle is driven by ONE house `SpringProgress` on the `DRAWER_SNAP`
|
|
8
|
+
* register (`useDrawerSnap.ts`, the §6 dock-morph `linear()` clock — NOT a bespoke
|
|
9
|
+
* `cubic-bezier(.32,.72,0,1)` transition; that was vaul's). The engine writes the
|
|
10
|
+
* `--glass-drawer-t` snap-fraction scalar (0 = closed/offscreen, 1 = the fullest
|
|
11
|
+
* detent) the content root reads as its translate; this file owns the LOOK: the
|
|
12
|
+
* glass sheet surface, the rounded peek handle, the snap-stop indicator rules, and
|
|
13
|
+
* the detent-fill geometry. This file is the substrate so a consumer mounting
|
|
14
|
+
* `<Drawer mode="live-behind">` does not re-author the three detents from scratch.
|
|
10
15
|
*
|
|
11
16
|
* Token-first — every visual axis reads a custom property. Consumers retune
|
|
12
17
|
* the sheet by overriding the rungs below, never by editing this file.
|
|
13
18
|
*/
|
|
14
19
|
|
|
20
|
+
/* The snap-fraction scalar the house `useDrawerSnap` engine writes per frame. The
|
|
21
|
+
* content root's inline `transform` reads it (DrawerContent.vue) — typed so the
|
|
22
|
+
* default (1 = fully open) keeps a no-snap content-sized sheet seated open. */
|
|
23
|
+
@property --glass-drawer-t {
|
|
24
|
+
syntax: "<number>";
|
|
25
|
+
inherits: false;
|
|
26
|
+
initial-value: 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
15
29
|
:root {
|
|
16
30
|
/* Detent grammar knobs — overridable per-consumer */
|
|
17
31
|
--drawer-handle-w: 2.25rem;
|
|
18
|
-
--drawer-handle-h: 0.3125rem; /* 5px —
|
|
32
|
+
--drawer-handle-h: 0.3125rem; /* 5px — the iOS grip hit-target rhythm */
|
|
19
33
|
--drawer-handle-color: var(--muted-foreground);
|
|
20
34
|
--drawer-handle-opacity: 0.45;
|
|
21
35
|
--drawer-handle-opacity-active: 0.85;
|
|
@@ -23,14 +37,15 @@
|
|
|
23
37
|
}
|
|
24
38
|
|
|
25
39
|
/*
|
|
26
|
-
* The sheet surface.
|
|
27
|
-
* DrawerContent.vue so the glass tier + the snap transform feel live in one
|
|
40
|
+
* The sheet surface. The glass tier + the snap-translate feel live in one
|
|
28
41
|
* token-driven place. The fixed/inset/z-index layout stays here too.
|
|
29
42
|
*
|
|
30
|
-
* NOTE:
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
43
|
+
* NOTE: the snap motion is the house `useDrawerSnap` `SpringProgress` writing
|
|
44
|
+
* `--glass-drawer-t`, which the content root's inline `transform` reads (the §6
|
|
45
|
+
* doctrine — ONE motion vocabulary, no `transition: transform` curve injected on
|
|
46
|
+
* `[data-glass-drawer]`). `touch-action: none` on the handle keeps the drag gesture
|
|
47
|
+
* from scrolling the page. We layer border-radius + glass surface on top of the
|
|
48
|
+
* spring-driven translate.
|
|
34
49
|
*/
|
|
35
50
|
.glass-drawer {
|
|
36
51
|
position: fixed;
|
|
@@ -59,24 +74,68 @@
|
|
|
59
74
|
}
|
|
60
75
|
|
|
61
76
|
/*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* `
|
|
77
|
+
* BA.W-SURFACE-AXIS — the shared {glass·veil·opaque} surface decoration ON TOP of
|
|
78
|
+
* the `.glass-drawer` recipe. `.glass-drawer` is UNLAYERED (this file), so the
|
|
79
|
+
* `@layer components` `[data-surface]` seam in glass/surface-axis.css would LOSE
|
|
80
|
+
* to it (an unlayered rule always beats a layered one — the AZ.W-DOCK-RAIL
|
|
81
|
+
* cascade-win trap). The fix is the SAME-LAYER carve: these `.glass-drawer[data-
|
|
82
|
+
* surface=…]` rules sit unlayered alongside `.glass-drawer` and win by specificity
|
|
83
|
+
* (attr+class > class), composing the SAME veil/opaque deltas the shared seam
|
|
84
|
+
* declares — NO `glass-drawer`-local recipe fork (they read the same `--veil-*` /
|
|
85
|
+
* `--glass-level` machinery). The `glass` rung is the identity (no rule).
|
|
86
|
+
*/
|
|
87
|
+
.glass-drawer[data-surface="veil"] {
|
|
88
|
+
--veil-bg: color-mix(
|
|
89
|
+
in oklab,
|
|
90
|
+
var(--glass-bg-quiet),
|
|
91
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
92
|
+
);
|
|
93
|
+
--veil-blur: var(--glass-blur-quiet);
|
|
94
|
+
background: var(--veil-bg);
|
|
95
|
+
backdrop-filter: var(--veil-blur);
|
|
96
|
+
-webkit-backdrop-filter: var(--veil-blur);
|
|
97
|
+
border: none;
|
|
98
|
+
box-shadow: none;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.glass-drawer[data-surface="opaque"] {
|
|
102
|
+
/* The solid-card escape. The `.glass-drawer` background reads the `:root`-baked
|
|
103
|
+
`--glass-bg-overlay` token (which substitutes `--glass-level` at :root), so a
|
|
104
|
+
per-element `--glass-level: 0` cannot re-resolve it — the substitution-vs-
|
|
105
|
+
inheritance trap (mirrors surface-axis.css). Set the SOLID plate AT THE
|
|
106
|
+
ELEMENT; still flip the level/tint knobs for a nested glass descendant. */
|
|
107
|
+
--glass-level: 0;
|
|
108
|
+
--glass-tint-strength: 0%;
|
|
109
|
+
/* The SOLID --card plate via the house color-mix idiom (solid --card, expressed
|
|
110
|
+
as the cohesion-sanctioned mix the token ladder speaks — NOT the bare
|
|
111
|
+
`var(--card)` the cohesion D1 check forbids for the always-on drawer plate;
|
|
112
|
+
this is the EXPLICIT opt-out behind `surface="opaque"`, not the default). */
|
|
113
|
+
background: color-mix(in srgb, var(--card), transparent 0%);
|
|
114
|
+
backdrop-filter: none;
|
|
115
|
+
-webkit-backdrop-filter: none;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/*
|
|
119
|
+
* Detented (snap-point) sheets fill the viewport height. The house engine positions
|
|
120
|
+
* the sheet by translating it along its drag axis by `(1 - --glass-drawer-t) * 100%`
|
|
121
|
+
* (DrawerContent.vue's inline transform) — so for a snap fraction to read as that
|
|
122
|
+
* fraction OF THE VIEWPORT, the sheet's top must sit at the viewport top when fully
|
|
123
|
+
* open (translate 0). A `height: auto` content sheet would instead translate
|
|
124
|
+
* off-screen. The content root tags the multi-detent case via
|
|
125
|
+
* `[data-glass-drawer-snap-points=true]`; we fill height there and let the content
|
|
68
126
|
* scroll inside.
|
|
69
127
|
*/
|
|
70
|
-
.glass-drawer[data-
|
|
128
|
+
.glass-drawer[data-glass-drawer-snap-points="true"] {
|
|
71
129
|
height: 100%;
|
|
72
130
|
max-height: 100%;
|
|
73
131
|
margin-top: 0;
|
|
74
132
|
}
|
|
75
133
|
|
|
76
|
-
/*
|
|
77
|
-
Bottom is the default
|
|
78
|
-
so a top/side
|
|
79
|
-
|
|
134
|
+
/* Direction variants — the content root tags itself with the drag axis
|
|
135
|
+
(`data-glass-drawer-direction`). Bottom is the default; the others ride the same
|
|
136
|
+
surface so a top/side sheet inherits the grammar. The side-lens (left/right) is
|
|
137
|
+
the BB-2 full-slide axis — it pins to its edge + fills the cross axis. */
|
|
138
|
+
.glass-drawer[data-glass-drawer-direction="top"] {
|
|
80
139
|
bottom: auto;
|
|
81
140
|
top: 0;
|
|
82
141
|
margin-top: 0;
|
|
@@ -86,11 +145,35 @@
|
|
|
86
145
|
border-radius: 0 0 var(--radius-panel) var(--radius-panel);
|
|
87
146
|
}
|
|
88
147
|
|
|
148
|
+
.glass-drawer[data-glass-drawer-direction="left"],
|
|
149
|
+
.glass-drawer[data-glass-drawer-direction="right"] {
|
|
150
|
+
inset-inline: auto;
|
|
151
|
+
inset-block: 0;
|
|
152
|
+
height: 100%;
|
|
153
|
+
max-height: 100%;
|
|
154
|
+
width: min(24rem, 92vw);
|
|
155
|
+
margin: 0;
|
|
156
|
+
border: 1px solid var(--glass-border-overlay);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.glass-drawer[data-glass-drawer-direction="left"] {
|
|
160
|
+
left: 0;
|
|
161
|
+
border-left: 0;
|
|
162
|
+
border-radius: 0 var(--radius-panel) var(--radius-panel) 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.glass-drawer[data-glass-drawer-direction="right"] {
|
|
166
|
+
right: 0;
|
|
167
|
+
border-right: 0;
|
|
168
|
+
border-radius: var(--radius-panel) 0 0 var(--radius-panel);
|
|
169
|
+
}
|
|
170
|
+
|
|
89
171
|
/*
|
|
90
172
|
* Peek handle — the rounded grip at the top of the sheet. It is the visual
|
|
91
|
-
* affordance the user drags to cycle peek → half → full.
|
|
92
|
-
* the
|
|
93
|
-
*
|
|
173
|
+
* affordance the user drags to cycle peek → half → full. The house snap engine
|
|
174
|
+
* (`useDrawerSnap`) binds the pointer-drag gesture directly on this handle (the
|
|
175
|
+
* `[data-glass-drawer-handle]` element) and flags it `[data-dragging]` while a drag
|
|
176
|
+
* is in flight, so the grip intensifies "live" during the gesture.
|
|
94
177
|
*/
|
|
95
178
|
.glass-drawer-handle {
|
|
96
179
|
flex-shrink: 0;
|
|
@@ -112,10 +195,11 @@
|
|
|
112
195
|
width var(--duration-fast) var(--ease-out);
|
|
113
196
|
}
|
|
114
197
|
|
|
115
|
-
/* While the sheet is being dragged
|
|
116
|
-
so the affordance reads as "live".
|
|
117
|
-
|
|
118
|
-
|
|
198
|
+
/* While the sheet is being dragged the house engine flags the handle
|
|
199
|
+
`[data-dragging]`; intensify the grip so the affordance reads as "live".
|
|
200
|
+
`:active` covers the pointer-held case + `[data-dragging]` covers the captured
|
|
201
|
+
drag; the hover lift is the rest affordance. */
|
|
202
|
+
.glass-drawer-handle[data-dragging] .glass-drawer-grip,
|
|
119
203
|
.glass-drawer-handle:active .glass-drawer-grip,
|
|
120
204
|
.glass-drawer:hover .glass-drawer-grip {
|
|
121
205
|
opacity: var(--drawer-handle-opacity-active);
|
|
@@ -128,7 +212,8 @@
|
|
|
128
212
|
* `.glass-drawer-snap-rule` to a separator element inside the sheet; it reads as
|
|
129
213
|
* the detent boundary line without competing with the content. This is the
|
|
130
214
|
* "snap-stop visual indicator" the spec asks for, expressed as an opt-in class
|
|
131
|
-
* (the detents themselves are positional, owned by
|
|
215
|
+
* (the detents themselves are positional, owned by the house snap engine; the
|
|
216
|
+
* RULE is the look).
|
|
132
217
|
*/
|
|
133
218
|
.glass-drawer-snap-rule {
|
|
134
219
|
height: 1px;
|
|
@@ -137,8 +222,11 @@
|
|
|
137
222
|
background-color: var(--drawer-snap-rule-color);
|
|
138
223
|
}
|
|
139
224
|
|
|
140
|
-
/* Reduced-motion —
|
|
141
|
-
|
|
225
|
+
/* Reduced-motion — the house `SpringProgress` snaps the detent deterministically
|
|
226
|
+
under `prefers-reduced-motion: reduce` (its `respectReducedMotion` jumps the
|
|
227
|
+
`--glass-drawer-t` scalar to target in one frame, zero motion frames); here we
|
|
228
|
+
only suppress the grip's affordance animation so the handle does not pulse for
|
|
229
|
+
PRM users. */
|
|
142
230
|
@media (prefers-reduced-motion: reduce) {
|
|
143
231
|
.glass-drawer-grip {
|
|
144
232
|
transition: none;
|