@mkbabb/glass-ui 4.0.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-DdtWXxOK.js → CommandShortcut-DvZNQ_HF.js} +4 -4
- package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
- package/dist/{ContextMenuContent-ON3x7cuk.js → ContextMenuContent-uWnVxDab.js} +1 -1
- package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
- package/dist/{DataTable-C464Zbqd.js → DataTable-CuKwF7wr.js} +4 -4
- package/dist/{DialogContent-DDE6pQBU.js → DialogContent-DcKK8k9i.js} +5 -5
- package/dist/{DialogFooter-8eZbdmPc.js → DialogFooter-BZNX5aVr.js} +3 -3
- package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DI6hQhT9.js} +1 -1
- package/dist/{HoverCardContent-DkMaQzH5.js → HoverCardContent-b2uaAMRR.js} +1 -1
- package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-CbqbNwgU.js} +2 -2
- package/dist/{IconChip-BDw1j5mu.js → IconChip-BTD-nay5.js} +3 -2
- package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-Bl8gFZ8d.js} +1 -1
- package/dist/{Input-DVG_J0ne.js → Input-h9v5LeXf.js} +1 -1
- package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-VUwexFUf.js +43 -0
- package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
- package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
- package/dist/{Progress-hAT4gqGH.js → Progress-DctG61iZ.js} +4 -4
- package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-yOpBzFYq.js} +2 -2
- package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-CrA8F0iV.js} +18 -19
- package/dist/Toaster-Bw4xR8xV.js +274 -0
- package/dist/{ToggleGroupItem-Dzk9hWsF.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 +8 -3
- package/dist/api/types-extra.d.ts +6 -0
- package/dist/aurora.js +885 -242
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +106 -0
- package/dist/{button-BNDWhAZb.js → button-DYCUa-tH.js} +71 -26
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +2 -2
- package/dist/carousel.js +93 -110
- package/dist/collapsible.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 +2 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -12
- 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 +2 -1
- 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/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/dock/DockIconButton.vue.d.ts +13 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- 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/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/fourier-field/FourierField.vue.d.ts +12 -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/glass-panel/GlassPanel.vue.d.ts +1 -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 +18 -11
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
- package/dist/components/custom/icon-chip/types.d.ts +11 -1
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- 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 +10 -0
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +1 -1
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- 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/command/Command.vue.d.ts +1 -1
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -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 -0
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/sheet/index.d.ts +1 -1
- 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/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/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 +11 -11
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +1 -1
- package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +564 -457
- package/dist/{dockContext-Bu1Avy-a.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-BJ7E9js_.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 +7 -4
- package/dist/fading-scroll.js +1 -1
- 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 +128 -116
- package/dist/fourier-math.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +149 -341
- package/dist/goo-blob.js +830 -224
- package/dist/handmark.js +2 -2
- 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.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/instrument-chassis.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +6 -6
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +4 -8
- package/dist/motion-core.js +36 -36
- 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.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{compile-EXXzEr1q.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 +9 -11
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CquRYOAw.js → sheet-tZMg0E0w.js} +5 -5
- package/dist/sheet.js +1 -1
- package/dist/{slider-DQ95MET2.js → slider-DVb4HXU-.js} +3 -3
- 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 +33 -9
- 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/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 +45 -0
- package/dist/styles/dock/layers.css +54 -30
- package/dist/styles/dock/morph.css +124 -7
- package/dist/styles/dock/overflow.css +16 -2
- package/dist/styles/dock/shell.css +54 -16
- package/dist/styles/dock.css +32 -0
- package/dist/styles/drawer.css +81 -35
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +87 -31
- 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/surfaces.css +101 -3
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +3 -0
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +77 -15
- package/dist/styles/index.css +21 -9
- package/dist/styles/instrument-chassis.css +66 -3
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/segmented-tabs.css +31 -0
- package/dist/styles/theme/bridges.css +11 -0
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +6 -1
- package/dist/styles/tokens/dark-arm.css +98 -26
- package/dist/styles/tokens/glass-deep.css +75 -0
- package/dist/styles/tokens/glass-fx.css +333 -0
- package/dist/styles/tokens/glass.css +39 -319
- package/dist/styles/tokens/light-dark.css +15 -2
- 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 +127 -0
- package/dist/styles/tokens/scale-paper.css +117 -89
- package/dist/styles/tokens/scheme-motion.css +70 -32
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
- package/dist/styles/tokens.css +9 -3
- package/dist/styles/typography/semantic.css +8 -8
- package/dist/styles/typography/utilities.css +22 -7
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +255 -0
- package/dist/styles/utilities/base.css +47 -261
- package/dist/styles/utilities/btn.css +3 -1
- package/dist/styles/utilities/metal.css +189 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/switch.js +1 -1
- package/dist/tabs.js +220 -107
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.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/useLiquidPress-kfb4KX79.js +39 -0
- package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-q1amq1SJ.js +71 -0
- package/dist/useSpringPress-BsqPr7FJ.js +34 -0
- package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/vSpecular-CQFmLNzA.js +68 -0
- package/dist/vendor-CKmzio-i.js +226 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +126 -22
- package/src/styles/animations.css +33 -9
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +76 -0
- package/src/styles/critical-partition.mjs +140 -0
- package/src/styles/dock/density.css +45 -0
- package/src/styles/dock/layers.css +54 -30
- package/src/styles/dock/morph.css +124 -7
- package/src/styles/dock/overflow.css +16 -2
- package/src/styles/dock/shell.css +54 -16
- package/src/styles/dock.css +32 -0
- package/src/styles/drawer.css +81 -35
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +87 -31
- 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/surfaces.css +101 -3
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +3 -0
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +77 -15
- package/src/styles/index.css +12 -0
- package/src/styles/instrument-chassis.css +66 -3
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/segmented-tabs.css +31 -0
- package/src/styles/theme/bridges.css +11 -0
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +6 -1
- package/src/styles/tokens/dark-arm.css +98 -26
- package/src/styles/tokens/glass-deep.css +75 -0
- package/src/styles/tokens/glass-fx.css +333 -0
- package/src/styles/tokens/glass.css +39 -319
- package/src/styles/tokens/light-dark.css +15 -2
- 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 +127 -0
- package/src/styles/tokens/scale-paper.css +117 -89
- package/src/styles/tokens/scheme-motion.css +70 -32
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
- package/src/styles/tokens.css +9 -3
- package/src/styles/typography/semantic.css +8 -8
- package/src/styles/typography/utilities.css +22 -7
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +255 -0
- package/src/styles/utilities/base.css +47 -261
- package/src/styles/utilities/btn.css +3 -1
- package/src/styles/utilities/metal.css +189 -0
- package/src/styles/utilities.css +14 -7
- package/dist/CardAction-XH4YBVEK.js +0 -158
- package/dist/Notification-DKjKsQq8.js +0 -100
- package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
- package/dist/Toaster-Bm_HQSpc.js +0 -263
- 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/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-kiIlun8I.js +0 -303
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CvopqiFr.js +0 -108
- package/dist/useViewTransition-COsPjQVZ.js +0 -47
- package/dist/x-BUwTKe50.js +0 -10
- /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
- /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
- /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-DwwjicPY.js} +0 -0
- /package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-DXswVdRz.js} +0 -0
- /package/dist/{Separator-BArl4OaB.js → Separator-pKF0oA4M.js} +0 -0
- /package/dist/{Switch-Dr--uLGH.js → Switch-CwYNf8bo.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{math-DeuJwLFx.js → math-BINYmg5z.js} +0 -0
- /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
- /package/dist/{prng-Cg22zv8g.js → prng-Za0Rmgag.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
- /package/dist/{springPresets-WXaLbu8u.js → springPresets-CFQGQfdl.js} +0 -0
- /package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-BfUq2bUM.js} +0 -0
- /package/dist/{useInterval-CNdua40W.js → useInterval-CvK1mL92.js} +0 -0
- /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-mZPMiNXh.js} +0 -0
- /package/dist/{useRAFLoop-CdwJ7284.js → useRAFLoop-UYa4zoiN.js} +0 -0
- /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useSortable-BVqlJRBR.js → useSortable-DHjtZSEd.js} +0 -0
- /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
- /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-CWEi25hf.js} +0 -0
- /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
- /package/dist/{vReveal-D9k0jADx.js → vReveal-Czsb7zQC.js} +0 -0
|
@@ -87,13 +87,32 @@
|
|
|
87
87
|
centered in its cell (≥1px slack/side at hover), the cell sits flush at the
|
|
88
88
|
dock content edge, and the `--dock-padding-block` (≈6px) padding holds the
|
|
89
89
|
plate ≥7px clear of the `contain: paint` border-box edge on the block axis.
|
|
90
|
-
So `
|
|
90
|
+
So the `paint` clip axis is the NON-proximate second clip box (the lane's
|
|
91
91
|
`probe-bottomdock-nocontain.png` forced-root probe proved the inner
|
|
92
|
-
scroll-port box was proximate, not this) and
|
|
93
|
-
inset + freed cross axis suffice, no containment
|
|
94
|
-
band.
|
|
95
|
-
|
|
96
|
-
|
|
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;
|
|
97
116
|
display: inline-flex;
|
|
98
117
|
align-items: center;
|
|
99
118
|
/* AW.W1 — the dock does NOT establish a default inline-size container.
|
|
@@ -273,16 +292,19 @@
|
|
|
273
292
|
shell above; the cross axis stays visible there. */
|
|
274
293
|
padding: var(--dock-padding-block, 0.375rem);
|
|
275
294
|
border-radius: var(--radius-dock);
|
|
276
|
-
/*
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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. */
|
|
286
308
|
transition:
|
|
287
309
|
box-shadow var(--dock-motion-standard),
|
|
288
310
|
transform var(--dock-motion-resize),
|
|
@@ -318,6 +340,22 @@
|
|
|
318
340
|
border-radius: var(--radius-xl);
|
|
319
341
|
}
|
|
320
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
|
+
|
|
321
359
|
/* AW.W3b — horizontal-root shape rules. The `shape-*` class once bound ONLY under
|
|
322
360
|
the vertical surface; on a horizontal dock the prop silently no-op'd (the root
|
|
323
361
|
hardwired `--radius-dock` = `--radius-pill`). These rules close that
|
package/dist/styles/dock.css
CHANGED
|
@@ -67,6 +67,38 @@
|
|
|
67
67
|
initial-value: 0;
|
|
68
68
|
}
|
|
69
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
|
+
|
|
70
102
|
@layer components {
|
|
71
103
|
:where(
|
|
72
104
|
.glass-dock,
|
package/dist/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;
|
|
@@ -107,24 +122,26 @@
|
|
|
107
122
|
}
|
|
108
123
|
|
|
109
124
|
/*
|
|
110
|
-
* Detented (snap-point) sheets fill the viewport height.
|
|
111
|
-
* sheet by translating it
|
|
112
|
-
* so for a snap fraction to read as that
|
|
113
|
-
* top must sit at the viewport top when fully
|
|
114
|
-
*
|
|
115
|
-
*
|
|
125
|
+
* Detented (snap-point) sheets fill the viewport height. The house engine positions
|
|
126
|
+
* the sheet by translating it along its drag axis by `(1 - --glass-drawer-t) * 100%`
|
|
127
|
+
* (DrawerContent.vue's inline transform) — so for a snap fraction to read as that
|
|
128
|
+
* fraction OF THE VIEWPORT, the sheet's top must sit at the viewport top when fully
|
|
129
|
+
* open (translate 0). A `height: auto` content sheet would instead translate
|
|
130
|
+
* off-screen. The content root tags the multi-detent case via
|
|
131
|
+
* `[data-glass-drawer-snap-points=true]`; we fill height there and let the content
|
|
116
132
|
* scroll inside.
|
|
117
133
|
*/
|
|
118
|
-
.glass-drawer[data-
|
|
134
|
+
.glass-drawer[data-glass-drawer-snap-points="true"] {
|
|
119
135
|
height: 100%;
|
|
120
136
|
max-height: 100%;
|
|
121
137
|
margin-top: 0;
|
|
122
138
|
}
|
|
123
139
|
|
|
124
|
-
/*
|
|
125
|
-
Bottom is the default
|
|
126
|
-
so a top/side
|
|
127
|
-
|
|
140
|
+
/* Direction variants — the content root tags itself with the drag axis
|
|
141
|
+
(`data-glass-drawer-direction`). Bottom is the default; the others ride the same
|
|
142
|
+
surface so a top/side sheet inherits the grammar. The side-lens (left/right) is
|
|
143
|
+
the BB-2 full-slide axis — it pins to its edge + fills the cross axis. */
|
|
144
|
+
.glass-drawer[data-glass-drawer-direction="top"] {
|
|
128
145
|
bottom: auto;
|
|
129
146
|
top: 0;
|
|
130
147
|
margin-top: 0;
|
|
@@ -134,11 +151,35 @@
|
|
|
134
151
|
border-radius: 0 0 var(--radius-panel) var(--radius-panel);
|
|
135
152
|
}
|
|
136
153
|
|
|
154
|
+
.glass-drawer[data-glass-drawer-direction="left"],
|
|
155
|
+
.glass-drawer[data-glass-drawer-direction="right"] {
|
|
156
|
+
inset-inline: auto;
|
|
157
|
+
inset-block: 0;
|
|
158
|
+
height: 100%;
|
|
159
|
+
max-height: 100%;
|
|
160
|
+
width: min(24rem, 92vw);
|
|
161
|
+
margin: 0;
|
|
162
|
+
border: 1px solid var(--glass-border-overlay);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.glass-drawer[data-glass-drawer-direction="left"] {
|
|
166
|
+
left: 0;
|
|
167
|
+
border-left: 0;
|
|
168
|
+
border-radius: 0 var(--radius-panel) var(--radius-panel) 0;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.glass-drawer[data-glass-drawer-direction="right"] {
|
|
172
|
+
right: 0;
|
|
173
|
+
border-right: 0;
|
|
174
|
+
border-radius: var(--radius-panel) 0 0 var(--radius-panel);
|
|
175
|
+
}
|
|
176
|
+
|
|
137
177
|
/*
|
|
138
178
|
* Peek handle — the rounded grip at the top of the sheet. It is the visual
|
|
139
|
-
* affordance the user drags to cycle peek → half → full.
|
|
140
|
-
* the
|
|
141
|
-
*
|
|
179
|
+
* affordance the user drags to cycle peek → half → full. The house snap engine
|
|
180
|
+
* (`useDrawerSnap`) binds the pointer-drag gesture directly on this handle (the
|
|
181
|
+
* `[data-glass-drawer-handle]` element) and flags it `[data-dragging]` while a drag
|
|
182
|
+
* is in flight, so the grip intensifies "live" during the gesture.
|
|
142
183
|
*/
|
|
143
184
|
.glass-drawer-handle {
|
|
144
185
|
flex-shrink: 0;
|
|
@@ -160,10 +201,11 @@
|
|
|
160
201
|
width var(--duration-fast) var(--ease-out);
|
|
161
202
|
}
|
|
162
203
|
|
|
163
|
-
/* While the sheet is being dragged
|
|
164
|
-
so the affordance reads as "live".
|
|
165
|
-
|
|
166
|
-
|
|
204
|
+
/* While the sheet is being dragged the house engine flags the handle
|
|
205
|
+
`[data-dragging]`; intensify the grip so the affordance reads as "live".
|
|
206
|
+
`:active` covers the pointer-held case + `[data-dragging]` covers the captured
|
|
207
|
+
drag; the hover lift is the rest affordance. */
|
|
208
|
+
.glass-drawer-handle[data-dragging] .glass-drawer-grip,
|
|
167
209
|
.glass-drawer-handle:active .glass-drawer-grip,
|
|
168
210
|
.glass-drawer:hover .glass-drawer-grip {
|
|
169
211
|
opacity: var(--drawer-handle-opacity-active);
|
|
@@ -176,7 +218,8 @@
|
|
|
176
218
|
* `.glass-drawer-snap-rule` to a separator element inside the sheet; it reads as
|
|
177
219
|
* the detent boundary line without competing with the content. This is the
|
|
178
220
|
* "snap-stop visual indicator" the spec asks for, expressed as an opt-in class
|
|
179
|
-
* (the detents themselves are positional, owned by
|
|
221
|
+
* (the detents themselves are positional, owned by the house snap engine; the
|
|
222
|
+
* RULE is the look).
|
|
180
223
|
*/
|
|
181
224
|
.glass-drawer-snap-rule {
|
|
182
225
|
height: 1px;
|
|
@@ -185,8 +228,11 @@
|
|
|
185
228
|
background-color: var(--drawer-snap-rule-color);
|
|
186
229
|
}
|
|
187
230
|
|
|
188
|
-
/* Reduced-motion —
|
|
189
|
-
|
|
231
|
+
/* Reduced-motion — the house `SpringProgress` snaps the detent deterministically
|
|
232
|
+
under `prefers-reduced-motion: reduce` (its `respectReducedMotion` jumps the
|
|
233
|
+
`--glass-drawer-t` scalar to target in one frame, zero motion frames); here we
|
|
234
|
+
only suppress the grip's affordance animation so the handle does not pulse for
|
|
235
|
+
PRM users. */
|
|
190
236
|
@media (prefers-reduced-motion: reduce) {
|
|
191
237
|
.glass-drawer-grip {
|
|
192
238
|
transition: none;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* glass/deep.css — BB.W-DEEP-GLASS — the OPT-IN `.glass-deep` decoration.
|
|
2
|
+
*
|
|
3
|
+
* The deep-glass register: the maximal iOS-27 Liquid-Glass tier ABOVE the
|
|
4
|
+
* W-GLASS-CAL calm default (the Apple `saturate(1.8) blur(20px)` family, landed
|
|
5
|
+
* at the budget-clearing 16px / saturate 1.5; tokens/glass-deep.css). `.glass-deep`
|
|
6
|
+
* is the OPT-IN surface — a consumer adds it to a glass surface that wants the
|
|
7
|
+
* thick refractive liquid read (the hero glass, the dock, the CTA); the bare
|
|
8
|
+
* content default is UNCHANGED (the calm default is the user's call).
|
|
9
|
+
*
|
|
10
|
+
* ── The token-substitution model (the `.glass-opaque` precedent) ───────────
|
|
11
|
+
* `.glass-deep` is a DECORATION ON a base `.glass-*` rung, NOT a parallel solid/
|
|
12
|
+
* blur recipe. It mirrors `.glass-opaque` (ladder.css §opaque-escape — which only
|
|
13
|
+
* sets `--glass-level: 0`, a token re-point, never a competing `backdrop-filter`):
|
|
14
|
+
* `.glass-deep` re-points the floating-rung blur token to the deep family
|
|
15
|
+
* (`--glass-blur-floating: var(--glass-blur-deep)`), so the base `.glass-floating`
|
|
16
|
+
* rule's `backdrop-filter: var(--glass-blur-floating)` resolves to the DEEP blur —
|
|
17
|
+
* NO cascade fight, NO base-rule edit, the glass edge/rim/under-shadow + the W55
|
|
18
|
+
* tint axis + the a11y brackets all compose unchanged. The deep tier rides a base
|
|
19
|
+
* rung exactly as `.glass-opaque` does (the CardTier map is `deep →
|
|
20
|
+
* 'glass-floating glass-deep'`).
|
|
21
|
+
*
|
|
22
|
+
* Because the deep blur (glass-deep.css) COMPOSES `var(--glass-level)`, the a11y
|
|
23
|
+
* brackets (`prefers-reduced-transparency: reduce` / `prefers-contrast: more` set
|
|
24
|
+
* `--glass-level: 0` / 0.3 at :root, a11y-fallback.css) reach the deep plate for
|
|
25
|
+
* FREE — the deep blur collapses to blur(0) under reduced-transparency through the
|
|
26
|
+
* SAME level path (the opaque escape). The W55 bright-bucket darken reaches the
|
|
27
|
+
* deep surface by construction too: `.glass-deep` is composed WITH `.glass-floating`,
|
|
28
|
+
* which is already in the W55 `@container style(--glass-backdrop: light)` material
|
|
29
|
+
* group (ladder.css) AND self-engages the overlay-band darken — the deep tier
|
|
30
|
+
* inherits the legibility tint with no selector-list edit.
|
|
31
|
+
*
|
|
32
|
+
* @import-ed in glass.css AFTER ladder.css/surfaces.css (the same @layer components,
|
|
33
|
+
* source-order-after so the token re-point lands beside the rung it rides) and
|
|
34
|
+
* BEFORE the a11y @media brackets (which still win by the :root level re-point).
|
|
35
|
+
*/
|
|
36
|
+
@layer components {
|
|
37
|
+
/* The deep decoration: re-point the floating rung's blur token to the deep
|
|
38
|
+
family. The base `.glass-floating` rule (`backdrop-filter:
|
|
39
|
+
var(--glass-blur-floating)`) then paints the deep `blur(16px) saturate(1.5)`
|
|
40
|
+
at `--glass-depth: 1` — the Apple-deep register, opt-in. */
|
|
41
|
+
.glass-deep {
|
|
42
|
+
--glass-blur-floating: var(--glass-blur-deep);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -31,13 +31,21 @@
|
|
|
31
31
|
strength))`). With the default `--glass-tint-strength: 0%` the mix is a
|
|
32
32
|
no-op = byte-identical to the un-tinted rung; a consumer biases the surface
|
|
33
33
|
toward a sampled backdrop hue by setting `--glass-tint-source` + a
|
|
34
|
-
strength ≤30%. oklab is the mwg-preferred tint space
|
|
35
|
-
`oklch(from …)` lightness-shift
|
|
34
|
+
strength ≤30%. oklab is the mwg-preferred tint space for the TINT mix here
|
|
35
|
+
(NEVER an `oklch(from …)` lightness-shift in the GLASS-TINT mix). The
|
|
36
|
+
`oklch(from var(--foreground) …)` relative-color recipe DID land its first
|
|
37
|
+
live consumer at BB.W-DARK-INK-WARM — the dark `--surface-tint-*` arm
|
|
38
|
+
(`tokens/dark-arm.css`), where the tolerant α-mix absorbs the small high-L
|
|
39
|
+
chroma (the gamut-map caveat documented + pinned under the gamut edge there).
|
|
40
|
+
That is the INK derivation, separate from THIS glass-tint mix space. */
|
|
36
41
|
.glass-wash {
|
|
37
42
|
position: relative;
|
|
38
43
|
background: color-mix(in oklab, var(--glass-bg-wash), var(--glass-tint-source) var(--glass-tint-strength));
|
|
39
44
|
backdrop-filter: var(--glass-blur-wash);
|
|
40
|
-
border
|
|
45
|
+
/* BB.W-GLASS-ACCENT — the rung border ink feeds the accent-composed
|
|
46
|
+
`--glass-border-accent` (rim group above); byte-identical at 0%. */
|
|
47
|
+
--glass-border-rung: var(--glass-border-wash);
|
|
48
|
+
border: 1px solid var(--glass-border-accent);
|
|
41
49
|
box-shadow: var(--glass-material-rim), var(--glass-shadow-wash);
|
|
42
50
|
}
|
|
43
51
|
|
|
@@ -57,7 +65,8 @@
|
|
|
57
65
|
position: relative;
|
|
58
66
|
background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
|
|
59
67
|
backdrop-filter: var(--glass-blur-quiet);
|
|
60
|
-
border:
|
|
68
|
+
--glass-border-rung: var(--glass-border-quiet);
|
|
69
|
+
border: 1px solid var(--glass-border-accent);
|
|
61
70
|
box-shadow:
|
|
62
71
|
var(--glass-material-rim),
|
|
63
72
|
var(--glass-under-shadow-quiet),
|
|
@@ -68,7 +77,8 @@
|
|
|
68
77
|
position: relative;
|
|
69
78
|
background: color-mix(in oklab, var(--glass-bg-resting), var(--glass-tint-source) var(--glass-tint-strength));
|
|
70
79
|
backdrop-filter: var(--glass-blur-resting);
|
|
71
|
-
border:
|
|
80
|
+
--glass-border-rung: var(--glass-border-resting);
|
|
81
|
+
border: 1px solid var(--glass-border-accent);
|
|
72
82
|
box-shadow:
|
|
73
83
|
var(--glass-material-rim),
|
|
74
84
|
var(--glass-under-shadow-default),
|
|
@@ -94,7 +104,8 @@
|
|
|
94
104
|
position: relative;
|
|
95
105
|
background: color-mix(in oklab, var(--glass-bg-floating), var(--glass-tint-source) var(--glass-tint-strength));
|
|
96
106
|
backdrop-filter: var(--glass-blur-floating);
|
|
97
|
-
border:
|
|
107
|
+
--glass-border-rung: var(--glass-border-floating);
|
|
108
|
+
border: 1px solid var(--glass-border-accent);
|
|
98
109
|
box-shadow:
|
|
99
110
|
var(--glass-material-rim),
|
|
100
111
|
var(--glass-under-shadow-vivid),
|
|
@@ -108,7 +119,8 @@
|
|
|
108
119
|
position: relative;
|
|
109
120
|
background: color-mix(in oklab, var(--glass-bg-overlay), var(--glass-tint-source) var(--glass-tint-strength));
|
|
110
121
|
backdrop-filter: var(--glass-blur-overlay);
|
|
111
|
-
border:
|
|
122
|
+
--glass-border-rung: var(--glass-border-overlay);
|
|
123
|
+
border: 1px solid var(--glass-border-accent);
|
|
112
124
|
box-shadow: var(--glass-material-rim), var(--glass-shadow-overlay);
|
|
113
125
|
}
|
|
114
126
|
|
|
@@ -199,7 +211,13 @@
|
|
|
199
211
|
`--glass-tint-strength: 0%`. */
|
|
200
212
|
:where(.glass-floating, .glass-overlay) {
|
|
201
213
|
--glass-tint-source: var(--glass-tint-ink);
|
|
202
|
-
|
|
214
|
+
/* BC.W-AUDIT — the scope-7 completion: the overlay band JOINS the content-tier
|
|
215
|
+
sub-perceptual FLOOR by default (translucent warm glass), and the FULL AA
|
|
216
|
+
darken engages ONLY under the bright bucket (the @container --glass-backdrop:
|
|
217
|
+
light above). The prior unconditional AA (20% ink-ward) collapsed every
|
|
218
|
+
floating surface to grey over the common calm-light backdrop. The full glass
|
|
219
|
+
rebuild + the per-band muted/contrast reconciliation is BC. */
|
|
220
|
+
--glass-tint-strength: var(--glass-tint-strength-floor);
|
|
203
221
|
--muted-foreground: var(--foreground);
|
|
204
222
|
}
|
|
205
223
|
|
|
@@ -212,10 +230,31 @@
|
|
|
212
230
|
under the declared/sampled BRIGHT signal (the @container --glass-backdrop:light bucket
|
|
213
231
|
above — where the muted lift also lives now). NO unconditional --muted-foreground lift
|
|
214
232
|
here: on the calm-light floor the caption keeps the muted register (the slides read).
|
|
215
|
-
A consumer opts a light-page card out via `--glass-tint-strength: 0%` on an ancestor.
|
|
233
|
+
A consumer opts a light-page card out via `--glass-tint-strength: 0%` on an ancestor.
|
|
234
|
+
|
|
235
|
+
BB.W-ON-GLASS-FG (N13) — the THIRD-STATE on-glass FOREGROUND re-point lands HERE,
|
|
236
|
+
BESIDE the BA seam (the SAME cascade context, the SAME content-tier set, NOT a new
|
|
237
|
+
competing layer). The calm-light floor keeps the page-muted --neutral-5 at HEAD —
|
|
238
|
+
but the muted ink is calibrated against the CANVAS, and on a TRANSLUCENT content
|
|
239
|
+
plate (the glass-first common case) it composites toward the lifted backdrop and
|
|
240
|
+
its contrast COLLAPSES (1.15-3.29:1 measured in dark). The re-point targets the
|
|
241
|
+
muted register at the COMPOSITED glass fill: --muted-foreground → --on-glass-muted
|
|
242
|
+
(+ the -strong twin), a register BETWEEN the page-muted and the bright-bucket full
|
|
243
|
+
ink (legible-AND-subordinate; the caption stays quieter than body --foreground).
|
|
244
|
+
This is NOT a fork of --glass-tint-* — it READS the seam context and expresses the
|
|
245
|
+
third state; it NEVER re-declares --glass-tint-ink/-strength-* (W-DARK-MATERIAL's
|
|
246
|
+
frozen bound). The BA bright-bucket lift (@container --glass-backdrop:light above,
|
|
247
|
+
--muted-foreground → --foreground) STILL WINS where the plate darkens — the
|
|
248
|
+
@container conditional overrides this unconditional :where() when it engages, so a
|
|
249
|
+
darkened plate goes full ink; this calm re-point is the calm-plate case ONLY. The
|
|
250
|
+
overlay band (:where(.glass-floating, .glass-overlay) above) is a DISJOINT selector
|
|
251
|
+
set (it keeps the full-ink lift), so neither path collides. The values auto-flip per
|
|
252
|
+
mode (the on-glass rungs carry their own light/dark per-mode arms in tokens). */
|
|
216
253
|
:where(.glass-card, .glass-resting, .glass-quiet, .glass-wash) {
|
|
217
254
|
--glass-tint-source: var(--glass-tint-ink);
|
|
218
255
|
--glass-tint-strength: var(--glass-tint-strength-floor);
|
|
256
|
+
--muted-foreground: var(--on-glass-muted);
|
|
257
|
+
--muted-foreground-strong: var(--on-glass-muted-strong);
|
|
219
258
|
}
|
|
220
259
|
|
|
221
260
|
/* AX.W55 — the `contrast-color()` foreground-ink flip (Chrome 147+/Safari 26+).
|
|
@@ -332,7 +371,16 @@
|
|
|
332
371
|
var(--glass-shadow-floating);
|
|
333
372
|
}
|
|
334
373
|
|
|
335
|
-
/* Grain noise overlay — reuses paper texture SVG, no extra assets
|
|
374
|
+
/* Grain noise overlay — reuses paper texture SVG, no extra assets.
|
|
375
|
+
BB.W-LIQUIDHOVER — the disco-grain pop (T8-F6) killed at the COMPOSITION CLASS:
|
|
376
|
+
the `background-image` is ALWAYS PRESENT (decoded once at rest, NEVER toggled to
|
|
377
|
+
`none`), and any STATE-driven grain engagement cross-fades the `opacity` ONLY on
|
|
378
|
+
the thin `--glass-grain-engage-duration` (~120ms linear) clock. A `background-
|
|
379
|
+
image: none → var(--paper-clean-texture)` engage decodes-and-appears in one frame
|
|
380
|
+
(the pop); the opacity cross-fade is a compositor-cheap interpolation with the
|
|
381
|
+
image constant — the only sanctioned grain engage. The `transition` lives HERE so
|
|
382
|
+
a hover/active grain lift (wherever a glass surface raises grain on interaction)
|
|
383
|
+
reads as a smooth fade by construction, not a discrete swap. */
|
|
336
384
|
.glass-wash::after,
|
|
337
385
|
.glass-quiet::after,
|
|
338
386
|
.glass-resting::after,
|
|
@@ -342,36 +390,44 @@
|
|
|
342
390
|
position: absolute;
|
|
343
391
|
inset: 0;
|
|
344
392
|
border-radius: inherit;
|
|
345
|
-
background
|
|
393
|
+
/* The grain texture is the `background-image` longhand (NOT the `background`
|
|
394
|
+
shorthand) so the image stays a STABLE always-present layer the engage
|
|
395
|
+
never re-declares — the structural anti-pop: opacity is the only animated
|
|
396
|
+
channel, the image is never `none → image`. */
|
|
397
|
+
background-image: var(--paper-clean-texture);
|
|
346
398
|
background-repeat: repeat;
|
|
347
399
|
background-size: var(--paper-texture-size);
|
|
348
400
|
opacity: var(--glass-grain-opacity);
|
|
401
|
+
/* The opacity cross-fade engage — plain ~120ms linear direct-write (no spring,
|
|
402
|
+
no overshoot — instant-but-smooth per the ask). Under the PRM / reduced-
|
|
403
|
+
transparency brackets the clock collapses to 0ms (the a11y bracket below). */
|
|
404
|
+
transition: opacity var(--glass-grain-engage-duration, 120ms) linear;
|
|
349
405
|
pointer-events: none;
|
|
350
406
|
mix-blend-mode: overlay;
|
|
351
407
|
}
|
|
352
408
|
|
|
353
|
-
/*
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
.glass-floating,
|
|
368
|
-
.glass-overlay,
|
|
369
|
-
.glass-card,
|
|
370
|
-
.glass-specular-track,
|
|
371
|
-
.dock-icon-button {
|
|
372
|
-
--glass-material-rim: var(--glass-edge-light);
|
|
409
|
+
/* BB.W-LIQUIDHOVER — the grain engage collapses to INSTANT under reduced motion (a
|
|
410
|
+
grain that cross-fades on hover under reduce is still motion; accessibility is
|
|
411
|
+
absolute). The reduced-transparency / forced-colors brackets already zero
|
|
412
|
+
`--glass-grain-opacity` (a11y-fallback.css), so the grain is inert there; this
|
|
413
|
+
bracket covers the reduced-MOTION case where the grain still paints but must not
|
|
414
|
+
animate. */
|
|
415
|
+
@media (prefers-reduced-motion: reduce) {
|
|
416
|
+
.glass-wash::after,
|
|
417
|
+
.glass-quiet::after,
|
|
418
|
+
.glass-resting::after,
|
|
419
|
+
.glass-floating::after,
|
|
420
|
+
.glass-overlay::after {
|
|
421
|
+
transition: none;
|
|
422
|
+
}
|
|
373
423
|
}
|
|
374
424
|
|
|
425
|
+
/* The unified rim (AW.W22) + the BB.W-GLASS-ACCENT per-INSTANCE chromatic-RIM
|
|
426
|
+
tint group (the rim-ink + --glass-material-rim ring + the per-rung
|
|
427
|
+
--glass-border-accent border, light + dark arms) lives in glass/rim.css
|
|
428
|
+
(carved at BB.W-CARVE4 — the next adjacent @layer components block, the SOLE
|
|
429
|
+
writer of --glass-material-rim/--glass-border-accent). */
|
|
430
|
+
|
|
375
431
|
.dark .glass-wash::after,
|
|
376
432
|
.dark .glass-quiet::after,
|
|
377
433
|
.dark .glass-resting::after,
|