@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
|
@@ -105,23 +105,72 @@
|
|
|
105
105
|
registered-`@property` var() nested in an hsl() alpha computes to 0 in
|
|
106
106
|
Chromium — the cross-engine-safe path); the per-stop alphas are literals so
|
|
107
107
|
even the lifted hover/active states read as a lens, not a flash. */
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
/* BB.W-LENSING (scope 3) — the motion-reactive EDGE glint UNIFIED with the
|
|
109
|
+
centered catch-light disc on ONE `::before`. TWO background layers compose:
|
|
110
|
+
(TOP) the angle-keyed EDGE-anchored conic sweep — a warm-cream arc that
|
|
111
|
+
brightens the RIM where the pointer's `--specular-angle` grazes (the
|
|
112
|
+
glass-THICKNESS read iOS-27 fuses with the catch-light); (BOTTOM) the
|
|
113
|
+
existing pointer-position centered disc. BOTH ride the SAME `--specular-
|
|
114
|
+
intensity` cohort (the `opacity` below) + `plus-lighter` blend + warm-cream
|
|
115
|
+
core `hsl(40 35% 92%)` — NEVER a second color/blend fork. The conic is masked
|
|
116
|
+
to the rim band only (the `--glass-edge-glint-band` radial mask, scope 3),
|
|
117
|
+
so the glint is a bounded RIM ring, NOT a whole-plate wash (the AX.W52 D19
|
|
118
|
+
bounded-gleam discipline). The `--specular-angle` floor `0deg` sits the glint
|
|
119
|
+
at the top edge when unwired (static rest — no ambient drift, no blowout). */
|
|
120
|
+
/* BB.W-GLASS-ACCENT — the catch-light CORE COLOR composes the per-instance
|
|
121
|
+
chromatic accent. The warm-cream `hsl(40 35% 92%)` core resolves through
|
|
122
|
+
the ONE `--glass-specular-core` var, OKLab-mixed toward `var(--glass-
|
|
123
|
+
accent)` at `var(--glass-accent-strength)`. This tints the CORE only — it
|
|
124
|
+
is the COLOR axis; W-LENSING owns the GEOMETRY (the conic angle-keyed
|
|
125
|
+
edge-glint + the radial disc + the masks + the `plus-lighter` blend, all
|
|
126
|
+
BELOW, untouched). Tinting the ONE core tints BOTH the centered disc AND
|
|
127
|
+
the rim glint (they share the core), so the data hue reads at the glint
|
|
128
|
+
where the pointer grazes — the data-keyed colored catch-light. At
|
|
129
|
+
`--glass-accent-strength: 0%` + `--glass-accent: transparent` (the
|
|
130
|
+
`@property` defaults) the mix === `hsl(40 35% 92%)` byte-identical (the W2
|
|
131
|
+
warm-cream floor). Each gradient stop reproduces its original alpha via
|
|
132
|
+
`color-mix(in srgb, <core> N%, transparent)` (=== the prior `<core> / 0.NN`),
|
|
133
|
+
so the geometry + falloff is byte-identical at rest. */
|
|
134
|
+
--glass-specular-core: color-mix(
|
|
135
|
+
in oklab,
|
|
136
|
+
hsl(40 35% 92%),
|
|
137
|
+
var(--glass-accent) var(--glass-accent-strength)
|
|
113
138
|
);
|
|
139
|
+
background:
|
|
140
|
+
conic-gradient(
|
|
141
|
+
from var(--specular-angle, 0deg) at 50% 50%,
|
|
142
|
+
transparent 0deg,
|
|
143
|
+
color-mix(in srgb, var(--glass-specular-core) 55%, transparent) 18deg,
|
|
144
|
+
transparent 60deg,
|
|
145
|
+
transparent 360deg
|
|
146
|
+
),
|
|
147
|
+
radial-gradient(
|
|
148
|
+
circle var(--glass-specular-size, 36%) at var(--specular-x, 50%) var(--specular-y, 50%),
|
|
149
|
+
color-mix(in srgb, var(--glass-specular-core) 50%, transparent) 0%,
|
|
150
|
+
transparent 70%,
|
|
151
|
+
transparent 100%
|
|
152
|
+
);
|
|
114
153
|
opacity: var(--specular-intensity, 0);
|
|
115
|
-
/*
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
154
|
+
/* Per-layer masks (the `,`-separated list pairs with the two backgrounds in
|
|
155
|
+
order): the EDGE conic is masked to the RIM BAND ONLY — transparent across
|
|
156
|
+
the interior, opaque in the outer `--glass-edge-glint-band` (default 22%) — so
|
|
157
|
+
the angle-keyed glint reads as a THICKNESS rim, not a center wash; the centered
|
|
158
|
+
disc keeps its own-radius clip (AX.W52 D19). `mask-image` Baseline 2023-12-07;
|
|
159
|
+
a non-supporting engine ignores it and the `inset: 0` + in-paint falloff still
|
|
160
|
+
bound the gleam. */
|
|
161
|
+
mask-image:
|
|
162
|
+
radial-gradient(
|
|
163
|
+
circle closest-side at 50% 50%,
|
|
164
|
+
transparent calc(100% - var(--glass-edge-glint-band, 22%)),
|
|
165
|
+
black calc(100% - calc(var(--glass-edge-glint-band, 22%) * 0.5)),
|
|
166
|
+
black 100%
|
|
167
|
+
),
|
|
168
|
+
radial-gradient(
|
|
169
|
+
circle var(--glass-specular-size, 36%) at var(--specular-x, 50%) var(--specular-y, 50%),
|
|
170
|
+
black 0%,
|
|
171
|
+
black 60%,
|
|
172
|
+
transparent 100%
|
|
173
|
+
);
|
|
125
174
|
/* AX.W52 D19 — `plus-lighter` (additive but HDR-clamped, Safari 16.4+) over
|
|
126
175
|
the prior `screen` (a non-linear lightener that lifted the whole tile
|
|
127
176
|
toward white — the muddy-card defect). A non-supporting engine degrades to
|
|
@@ -235,4 +284,18 @@
|
|
|
235
284
|
--specular-intensity: var(--glass-specular-intensity-active, 0.16);
|
|
236
285
|
}
|
|
237
286
|
|
|
287
|
+
/* BB.W-LENSING (scope 2) — the `:active` LENS-SWELL is RETIRED (DDR-LENS-BAKE,
|
|
288
|
+
glass-refract.css header). The swell drove the displacement `scale` by mutating
|
|
289
|
+
the `--glass-refract` axis on the `--glass-btn-press-t` press drive (28 rest → 44
|
|
290
|
+
pressed). That depended on the var()-spliced head/`scale`/tail filter — which never
|
|
291
|
+
PARSED as a `backdrop-filter` (three tokens: `url("…") <n> url("…")`), so the lens
|
|
292
|
+
rendered `none` and the swell animated a value that reached NO filter. A CSS url()
|
|
293
|
+
string token cannot carry a substituted `var()` (the engine does not re-tokenise
|
|
294
|
+
inside a string), so a dynamic per-instance `scale` is structurally impossible in a
|
|
295
|
+
single self-contained data-URI — and the single token is mandatory for both parse
|
|
296
|
+
validity and bundler url()-rewrite safety. The `scale` is now BAKED at the §10
|
|
297
|
+
default (28); the resting lens read is PRESERVED (and now actually renders), the
|
|
298
|
+
press-depth animation is the deliberate tradeoff. The press squish + gleam lift on
|
|
299
|
+
the SAME `--glass-btn-press-t` drive (material gleam, above) carry the press read. */
|
|
300
|
+
|
|
238
301
|
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/* glass/reveal.css
|
|
2
|
+
BB.W-LIQUID-REVEAL — the `.glass-reveal` LIQUID-ENTER recipe: the spring-clocked,
|
|
3
|
+
coupled-channel top-layer open that REPLACES `popover-animate`'s fixed-bezier
|
|
4
|
+
zoom-95 (clean break, no alias). The zero-JS floor the reka portaled overlays
|
|
5
|
+
compose (they are not native top-layer, so they cannot ride `@starting-style`;
|
|
6
|
+
`.glass-reveal` is the data-state form). The `useLiquidReveal` JS leaf is the
|
|
7
|
+
source-rect REFINEMENT (the dialog-from-button / dock-from-pill bloom); this CSS
|
|
8
|
+
recipe is the everywhere floor.
|
|
9
|
+
@import-ed by glass.css in cascade order, in its own @layer components
|
|
10
|
+
(isomorphic to the monolith). See docs/precepts/design-idioms.md §cohesion-aware
|
|
11
|
+
partials. */
|
|
12
|
+
|
|
13
|
+
/* ── THE LIQUID ENTER (the iOS-27 bloom-from-anchor) ──────────────────────────
|
|
14
|
+
*
|
|
15
|
+
* Three COUPLED channels, the SPATIAL/EFFECTS split (the Material-3 / §6 /
|
|
16
|
+
* W-MOTION-CANON doctrine):
|
|
17
|
+
*
|
|
18
|
+
* (a) SCALE (the bloom — SPATIAL) rides `--spring-snappy` + its OWN settle clock
|
|
19
|
+
* `--spring-snappy-duration` (the W-GLASS-CAL Unit 3 per-spring clock, NOT the
|
|
20
|
+
* generic `--duration-normal` that re-timed every spring to one wall clock).
|
|
21
|
+
* The overshoot interior of the spring `linear()` gives the canonical iOS
|
|
22
|
+
* arrival. `transform-origin` anchors at the popper edge (`--reka-popper-
|
|
23
|
+
* transform-origin`) so the surface blooms FROM its anchor, not center.
|
|
24
|
+
* (b) OPACITY (the fade — EFFECTS) rides `--ease-out` (NO overshoot — a fade must
|
|
25
|
+
* not bounce), coupled so scale+fade read as ONE continuous coalescing layer.
|
|
26
|
+
* (c) BLUR-SETTLE (the iOS "light-bending modulation" decongest — EFFECTS)
|
|
27
|
+
* `filter: blur(--glass-reveal-blur)` → `blur(0)`, on the SAME spring clock as
|
|
28
|
+
* the scale so the surface clarifies AS it blooms. The decongest rides the
|
|
29
|
+
* surface's OWN pixels (`filter`) NOT the backdrop (`backdrop-filter`), so it
|
|
30
|
+
* does NOT clobber the resting `glass-floating` tier plate blur the overlay
|
|
31
|
+
* carries at rest (a `backdrop-filter: blur(0)` open value would erase the
|
|
32
|
+
* glass). A `filter` radius interp is COMPOSITOR-safe (never a layout property
|
|
33
|
+
* — the proof:no-layout-animation floor).
|
|
34
|
+
*
|
|
35
|
+
* Uses the `scale:` / `translate:` LONGHANDS (not `transform:`), so it composes with
|
|
36
|
+
* any identity-base transform and mints no stacking context (the `.glass-top-layer`
|
|
37
|
+
* `scale:` discipline). NEVER animates a layout property (the zoom is `scale`, the
|
|
38
|
+
* side-slide is `translate` — the directional slide-in `popover-animate` +
|
|
39
|
+
* `slide-in-from-side` used to carry, now folded onto the compositor `translate` leg).
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
@layer components {
|
|
43
|
+
.glass-reveal {
|
|
44
|
+
/* The one public start knob (the decongest radius). The spatial/effects
|
|
45
|
+
clocks read the shared spring tokens (read-only — the W-GLASS-CAL fence). */
|
|
46
|
+
--glass-reveal-blur: 4px;
|
|
47
|
+
--glass-reveal-slide: 0.5rem;
|
|
48
|
+
transform-origin: var(--reka-popper-transform-origin, center);
|
|
49
|
+
/* The coupled transition list — the SPATIAL legs (scale/translate) on the
|
|
50
|
+
snappy spring's OWN settle clock, the EFFECTS legs (opacity/filter blur-
|
|
51
|
+
settle) on the no-overshoot ease-out. ONE coherent glide. The blur rides
|
|
52
|
+
`filter` (the surface's own pixels) NOT `backdrop-filter` (which would
|
|
53
|
+
clobber the resting glass-floating plate blur). */
|
|
54
|
+
transition-property: scale, translate, opacity, filter, display, overlay;
|
|
55
|
+
transition-duration: var(--spring-snappy-duration), var(--spring-snappy-duration),
|
|
56
|
+
var(--spring-snappy-duration), var(--spring-snappy-duration),
|
|
57
|
+
var(--spring-snappy-duration), var(--spring-snappy-duration);
|
|
58
|
+
transition-timing-function: var(--spring-snappy), var(--spring-snappy),
|
|
59
|
+
var(--ease-out), var(--ease-out), linear, linear;
|
|
60
|
+
transition-behavior: allow-discrete;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* OPEN — the settled, bloomed-in state (the spring-clocked scale/fade/blur-settle
|
|
64
|
+
interpolates FROM the closed values). `filter: blur(0)` clarifies the surface;
|
|
65
|
+
the resting `glass-floating` backdrop-filter is untouched. The `translate` leg
|
|
66
|
+
is set ONLY by the `data-side` variants below (a side-anchored popover slides
|
|
67
|
+
from its edge) — the BASE never writes `translate`, so a center-anchored Dialog
|
|
68
|
+
keeping its `-translate-x-1/2 -translate-y-1/2` centering is NEVER clobbered. */
|
|
69
|
+
.glass-reveal[data-state="open"] {
|
|
70
|
+
scale: 1;
|
|
71
|
+
opacity: 1;
|
|
72
|
+
filter: blur(0);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* CLOSED — both the resting CLOSED snapshot AND the EXIT leg. The exit reads
|
|
76
|
+
`--ease-out` (a bezier, NO overshoot — a closing surface must never overshoot
|
|
77
|
+
past gone, the §6/W-MOTION-CANON P2 doctrine); NO `--spring-*` token on the
|
|
78
|
+
exit. The exit is faster + un-sprung — the surface recedes cleanly. */
|
|
79
|
+
.glass-reveal[data-state="closed"] {
|
|
80
|
+
scale: var(--glass-reveal-enter-scale, 0.95);
|
|
81
|
+
opacity: 0;
|
|
82
|
+
filter: blur(var(--glass-reveal-blur));
|
|
83
|
+
transition-timing-function: var(--ease-out);
|
|
84
|
+
transition-duration: var(--duration-fast);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* The directional slide-in — the compositor `translate` leg keyed off the
|
|
88
|
+
popper's `data-side` (folds the retired `slide-in-from-side` `@utility`'s
|
|
89
|
+
directional entry onto the compositor channel; the panel enters from outside
|
|
90
|
+
the anchor's edge). On the SAME snappy spring + clock as the scale. ONLY a
|
|
91
|
+
side-anchored popover (with `data-side`) sets `translate`; the open settled
|
|
92
|
+
value is `0 0` (per side, so it slides home from the edge). A center-anchored
|
|
93
|
+
Dialog has no `data-side` and is never reached here. */
|
|
94
|
+
.glass-reveal[data-side="top"][data-state="open"],
|
|
95
|
+
.glass-reveal[data-side="bottom"][data-state="open"],
|
|
96
|
+
.glass-reveal[data-side="left"][data-state="open"],
|
|
97
|
+
.glass-reveal[data-side="right"][data-state="open"] {
|
|
98
|
+
translate: 0 0;
|
|
99
|
+
}
|
|
100
|
+
.glass-reveal[data-state="closed"][data-side="top"] {
|
|
101
|
+
translate: 0 var(--glass-reveal-slide);
|
|
102
|
+
}
|
|
103
|
+
.glass-reveal[data-state="closed"][data-side="bottom"] {
|
|
104
|
+
translate: 0 calc(-1 * var(--glass-reveal-slide));
|
|
105
|
+
}
|
|
106
|
+
.glass-reveal[data-state="closed"][data-side="left"] {
|
|
107
|
+
translate: var(--glass-reveal-slide) 0;
|
|
108
|
+
}
|
|
109
|
+
.glass-reveal[data-state="closed"][data-side="right"] {
|
|
110
|
+
translate: calc(-1 * var(--glass-reveal-slide)) 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* ── REDUCED-MOTION CARVE (the vestibular floor — WCAG 2.3.3) ──────────────────
|
|
115
|
+
* Under `prefers-reduced-motion: reduce` the reveal SNAPS the spatial channels to
|
|
116
|
+
* their endpoints (scale → none, translate → none) and the blur-settle to none —
|
|
117
|
+
* ZERO transform/blur frames. The OPACITY fade SURVIVES (opacity is not a vestibular
|
|
118
|
+
* trigger; the surface fades, never flies, never disappears). The fade rides the
|
|
119
|
+
* short `--duration-fast` clock (the `.glass-top-layer` PRM precedent). */
|
|
120
|
+
@media (prefers-reduced-motion: reduce) {
|
|
121
|
+
.glass-reveal {
|
|
122
|
+
scale: none;
|
|
123
|
+
translate: none;
|
|
124
|
+
/* The decongest snaps to clear (`filter: blur(0)`); the resting
|
|
125
|
+
`glass-floating` backdrop-filter plate blur is UNTOUCHED. */
|
|
126
|
+
filter: blur(0);
|
|
127
|
+
transition-property: opacity, display, overlay;
|
|
128
|
+
transition-duration: var(--duration-fast);
|
|
129
|
+
transition-timing-function: var(--ease-out);
|
|
130
|
+
}
|
|
131
|
+
.glass-reveal[data-state="closed"] {
|
|
132
|
+
scale: none;
|
|
133
|
+
translate: none;
|
|
134
|
+
filter: blur(0);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* glass/rim.css
|
|
2
|
+
The BB.W-GLASS-ACCENT per-INSTANCE chromatic rim/accent group (the rim-ink +
|
|
3
|
+
--glass-material-rim ring + the per-rung --glass-border-accent border, light +
|
|
4
|
+
dark arms).
|
|
5
|
+
Carved from glass/ladder.css at BB.W-CARVE4 to hold the no-god-module bound (the
|
|
6
|
+
five-rung surface ladder + the W55 bright-bucket @container + the calm-tier re-point
|
|
7
|
+
+ the contrast-color ink-flip + the opaque escape + the under-shadow modifier + the
|
|
8
|
+
grain ::after stay in ladder.css). @import-ed by glass.css in cascade order
|
|
9
|
+
IMMEDIATELY AFTER ladder.css — the SAME @layer components; the rim/accent group is
|
|
10
|
+
the SOLE writer of --glass-material-rim/--glass-border-accent (the rungs read those
|
|
11
|
+
+ --glass-rim-ink as custom properties resolved at use-time on the SAME elements, so
|
|
12
|
+
the relocation is cascade-order-invariant), and the W55 bright-bucket is DELIBERATELY
|
|
13
|
+
kept in ladder.css (relocating it past the contrast-color @supports block would invert
|
|
14
|
+
their same-specificity source-order tie on supporting engines — a behaviour change the
|
|
15
|
+
byte-isomorphism bound forbids). The dist is byte-isomorphic. */
|
|
16
|
+
@layer components {
|
|
17
|
+
/* (b) The unified rim — `--glass-edge-light` full-perimeter inset ring on
|
|
18
|
+
EVERY material surface (AW.W22). Previously the rim was wired only into
|
|
19
|
+
the floating/overlay tiers' box-shadow stack; promoting it to the material
|
|
20
|
+
group makes wash/quiet/resting/card/dock-control all carry the same
|
|
21
|
+
silhouette catch-light from ONE token. The rim is its OWN `box-shadow`
|
|
22
|
+
declaration on the material group so it composes uniformly without
|
|
23
|
+
perturbing each tier's elevation recipe (the floating/overlay tiers drop
|
|
24
|
+
their now-redundant inline `--glass-edge-light` layer below). The alpha is
|
|
25
|
+
deliberately low so the rim never eats AA legibility over a busy
|
|
26
|
+
backdrop. */
|
|
27
|
+
/* ── BB.W-GLASS-ACCENT — the per-INSTANCE chromatic-RIM tint ───────────────
|
|
28
|
+
The THIRD disjoint glass axis (LEVEL · TINT · ACCENT). The rim is TWO
|
|
29
|
+
resolved things — the `--glass-material-rim` inset RING (= `--glass-edge-
|
|
30
|
+
light`, an inset box-shadow) and the per-rung `--glass-border-*` BORDER —
|
|
31
|
+
and BOTH must carry the accent hue so the rim reads as ONE accent silhouette,
|
|
32
|
+
not a half-tinted edge.
|
|
33
|
+
|
|
34
|
+
The composition is `color-mix(in oklab, <current rim color>, var(--glass-
|
|
35
|
+
accent) var(--glass-accent-strength))` — the PERCEPTUAL oklab mix the W55
|
|
36
|
+
glass-tint seam + the `<IconChip>` chip already speak (NOT in-srgb — the
|
|
37
|
+
in-srgb fence is the `--surface-tint-*` brand-overlay family, a SEPARATE
|
|
38
|
+
axis this never touches). At the resting `--glass-accent-strength: 0%` (the
|
|
39
|
+
`@property` default) + `--glass-accent: transparent` (the neutral identity)
|
|
40
|
+
the mix resolves byte-identical to today's rim (the W2 no-op floor).
|
|
41
|
+
|
|
42
|
+
The RING: a box-shadow value cannot be `color-mix`-ed whole, so the rim ring
|
|
43
|
+
is REBUILT here as `inset 0 0 0 0.75px <mixed-color>` — the SAME 0.75px inset
|
|
44
|
+
geometry the `--glass-edge-light` token paints (AV.W15 M3), only its COLOR
|
|
45
|
+
stop composing the accent. At 0% strength the color resolves to the
|
|
46
|
+
`--glass-edge-light` base ink (`hsl(0 0% 100% / 0.18)` light / 0.22 dark —
|
|
47
|
+
read via `--glass-rim-ink`) so the ring is byte-identical to
|
|
48
|
+
`var(--glass-edge-light)`. The `.dark` arm re-points `--glass-rim-ink` to the
|
|
49
|
+
dark base so the dark rim composes off `--glass-edge-light-dark`.
|
|
50
|
+
|
|
51
|
+
The BORDER: each rung's `border-color` reads `--glass-border-accent`, which
|
|
52
|
+
composes the accent onto the rung's own `--glass-border-*` ink. The rung
|
|
53
|
+
borders are re-pointed at their declarations (the `border: 1px solid
|
|
54
|
+
var(--glass-border-accent)`) so ONE derived token carries the accent across
|
|
55
|
+
the band; `--glass-border-accent` reads the per-rung `--glass-border-rung`
|
|
56
|
+
the rung sets locally, mixed with the accent.
|
|
57
|
+
|
|
58
|
+
This axis NEVER touches the plate BACKGROUND (the W55 `--glass-tint-source`
|
|
59
|
+
cohort) — the accent is the rim+glint chromatic DECORATION, not the
|
|
60
|
+
whole-plate legibility darken (the distinct-axis-not-fork fence). */
|
|
61
|
+
.glass-material,
|
|
62
|
+
.glass-wash,
|
|
63
|
+
.glass-quiet,
|
|
64
|
+
.glass-resting,
|
|
65
|
+
.glass-floating,
|
|
66
|
+
.glass-overlay,
|
|
67
|
+
.glass-card,
|
|
68
|
+
.glass-specular-track,
|
|
69
|
+
.dock-icon-button {
|
|
70
|
+
/* the resolved rim ring INK (white-α light / lifted-white-α dark — the
|
|
71
|
+
SAME stop the `--glass-edge-light` token carries; the `.dark` arm below
|
|
72
|
+
re-points it). The accent mixes ONTO this ink. */
|
|
73
|
+
--glass-rim-ink: hsl(0 0% 100% / 0.18);
|
|
74
|
+
--glass-material-rim: inset 0 0 0 0.75px
|
|
75
|
+
color-mix(in oklab, var(--glass-rim-ink), var(--glass-accent) var(--glass-accent-strength));
|
|
76
|
+
/* the per-rung border ink, accent-composed. `--glass-border-rung` is set by
|
|
77
|
+
each rung at its own declaration (it reads the rung's `--glass-border-*`
|
|
78
|
+
token); the accent mixes onto it so the BORDER half of the rim carries the
|
|
79
|
+
same hue as the RING. At 0% strength === the un-mixed rung ink. */
|
|
80
|
+
--glass-border-accent: color-mix(
|
|
81
|
+
in oklab,
|
|
82
|
+
var(--glass-border-rung, var(--glass-border)),
|
|
83
|
+
var(--glass-accent) var(--glass-accent-strength)
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
.dark .glass-material,
|
|
87
|
+
.dark .glass-wash,
|
|
88
|
+
.dark .glass-quiet,
|
|
89
|
+
.dark .glass-resting,
|
|
90
|
+
.dark .glass-floating,
|
|
91
|
+
.dark .glass-overlay,
|
|
92
|
+
.dark .glass-card,
|
|
93
|
+
.dark .glass-specular-track,
|
|
94
|
+
.dark .dock-icon-button {
|
|
95
|
+
/* the dark rim ink is the lifted-α base (`--glass-edge-light-dark` stop) so
|
|
96
|
+
the accent composes off the dark silhouette device (W-DARK-MATERIAL). */
|
|
97
|
+
--glass-rim-ink: hsl(0 0% 100% / 0.22);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
}
|
|
@@ -18,7 +18,12 @@
|
|
|
18
18
|
position: relative;
|
|
19
19
|
background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
|
|
20
20
|
backdrop-filter: var(--glass-blur-quiet);
|
|
21
|
-
border
|
|
21
|
+
/* BB.W-GLASS-ACCENT — the card border feeds its focus-elevation ink into the
|
|
22
|
+
accent-composed `--glass-border-accent` (ladder.css rim group); byte-
|
|
23
|
+
identical at 0% strength. The focus rung still re-points `--card-focus-
|
|
24
|
+
border`, which flows through `--glass-border-rung`. */
|
|
25
|
+
--glass-border-rung: var(--card-focus-border);
|
|
26
|
+
border: 1px solid var(--glass-border-accent);
|
|
22
27
|
border-radius: var(--radius-card);
|
|
23
28
|
box-shadow: var(--glass-material-rim), var(--card-focus-shadow);
|
|
24
29
|
/* AY.W-A11Y-PERF O-4 — upgrade `layout style` → include `paint` so the
|
|
@@ -181,6 +186,96 @@
|
|
|
181
186
|
dedup-and-keep-prefixed, which modern Chromium then drops). */
|
|
182
187
|
.btn-glass {
|
|
183
188
|
backdrop-filter: var(--glass-blur-btn);
|
|
189
|
+
|
|
190
|
+
/* BB.W-BUTTON-GLASS (d) — the button-scoped DEPTH stack + the hover-specular
|
|
191
|
+
bump. The glass button was the flattest wash rung (a bare backdrop-filter,
|
|
192
|
+
no rim, no under-shadow) — it read as a tinted rectangle, not a lifted
|
|
193
|
+
glass lozenge. The `--glass-btn-*` knobs compose ALREADY-MINTED tokens (the
|
|
194
|
+
`--glass-edge-light` rim + the `quiet`/`resting`-tier `--glass-under-shadow-*`
|
|
195
|
+
drop) so a consumer retints the whole button depth from ONE override; NO new
|
|
196
|
+
compositing axis. The rim+under-shadow lifts the lozenge; the box-shadow is
|
|
197
|
+
additive over the variant's own focus/press shadow legs (the `.btn-pill`
|
|
198
|
+
transition carries box-shadow on the §6 bezier, so the depth cross-fades
|
|
199
|
+
coherently). */
|
|
200
|
+
--glass-btn-rim: var(--glass-edge-light);
|
|
201
|
+
--glass-btn-under-shadow: var(--glass-under-shadow-quiet);
|
|
202
|
+
--glass-btn-under-shadow-hover: var(--glass-under-shadow-default);
|
|
203
|
+
box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow);
|
|
204
|
+
/* The button-scoped hover gleam bump (0.10 → ~0.14): a hovered glass button
|
|
205
|
+
reads a notch brighter at the grazing edge than the global hover whisper.
|
|
206
|
+
Token-scoped to `.btn-glass` (NOT the global `:root` cohort property-regs.css
|
|
207
|
+
owns) so only the button lifts. The active/rest rungs ride the global cohort
|
|
208
|
+
(the press whisper + the dormant rest). */
|
|
209
|
+
--glass-specular-intensity-hover: var(--glass-specular-btn-hover);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* The depth deepens one rung on hover (the lifted-lozenge read) — additive over
|
|
213
|
+
the variant's own hover surface legs. The variants paint the bg/border on
|
|
214
|
+
hover; this adds the deeper drop. */
|
|
215
|
+
.btn-glass:hover:not(:disabled, [data-disabled]) {
|
|
216
|
+
box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow-hover);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* BB.W-BUTTON-GLASS (a) — the ELEMENT-LEVEL oklab-tinted hover/active fill pair
|
|
220
|
+
(the substitution-vs-inheritance trap fixed on the button register). The glass
|
|
221
|
+
button variants painted `hover:bg-(--glass-bg-resting) active:bg-(--glass-bg-
|
|
222
|
+
floating)` — the RAW `:root` rung tokens, which carry NO `color-mix(in oklab, …,
|
|
223
|
+
--glass-tint-source --glass-tint-strength)` wrapper. So the W55 adaptive darken
|
|
224
|
+
+ the `contrast-color()` ink flip + the content-tier floor (all of which the REST
|
|
225
|
+
bg `.glass-wash` composes via the element-level oklab seam) DROPPED the moment the
|
|
226
|
+
pointer landed — "more glass would cost legibility" exactly inverted from the
|
|
227
|
+
iOS-27 ask. These two tokens wrap the raw rungs in the SAME element-level oklab
|
|
228
|
+
seam `ladder.css` composes for the rest bg + `--glass-bg-dock` for the dock — ZERO
|
|
229
|
+
new compositing axis, the literal darken-over-light recipe reached at the lit
|
|
230
|
+
fill. ZERO-delta at the `--glass-tint-strength: 0%`/floor default (the mix toward
|
|
231
|
+
the source is 0%); under the declared/sampled bright bucket the lit fill darkens
|
|
232
|
+
to AA in lockstep with the rest bg. The `:root` raw `--glass-bg-*` tokens are
|
|
233
|
+
UNTOUCHED (other surfaces compose them at the element correctly — the raw token +
|
|
234
|
+
the element-level oklab wrapper is the correct ladder shape). */
|
|
235
|
+
.btn-glass {
|
|
236
|
+
--glass-bg-resting-tinted: color-mix(
|
|
237
|
+
in oklab,
|
|
238
|
+
var(--glass-bg-resting),
|
|
239
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
240
|
+
);
|
|
241
|
+
--glass-bg-floating-tinted: color-mix(
|
|
242
|
+
in oklab,
|
|
243
|
+
var(--glass-bg-floating),
|
|
244
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* BB.W-BUTTON-GLASS (e) — the optional refraction-edge opt-in. CONSUMES the
|
|
249
|
+
EXISTING refraction axis (glass-refract.css, the `#glass-refract` SVG-filter
|
|
250
|
+
lens, `@supports (backdrop-filter: url(#…))`-gated with the un-gated blur base
|
|
251
|
+
as the off-Chromium floor) — NEVER a button-local lens fork. BB.W-LENSING landed
|
|
252
|
+
the squircle bevel-profile + the typed `--glass-refract` axis + the `.glass-lens`
|
|
253
|
+
opt-in class (renamed off `.glass-refract`, clean break); the button COMPOSES
|
|
254
|
+
`.glass-lens`.
|
|
255
|
+
|
|
256
|
+
A `<Button :liquid>` adds `.glass-lens` to the host; on a supporting engine the
|
|
257
|
+
button reads the edge-bend over its blur base. The base recipe (the
|
|
258
|
+
`@supports`-gated `.glass-lens` rule in glass-refract.css) already paints the
|
|
259
|
+
displacement filter over `--glass-blur-resting`; this block adds NOTHING to the
|
|
260
|
+
filter graph (it would fork the axis) — the button merely COMPOSES `.glass-lens`.
|
|
261
|
+
|
|
262
|
+
The `:active` LENS-SWELL is the CHEAP coupled read, NOT a per-frame displacement-
|
|
263
|
+
map re-rasterize (the §Triumvirate / R2 budget: `feDisplacementMap` is resize-
|
|
264
|
+
expensive — only the `scale` attr animates without rebuilding the map, and even
|
|
265
|
+
that re-rasterizes; the one-refractive-element-per-route budget forbids the per-
|
|
266
|
+
frame cost). The swell is the press SQUISH (Button.vue, the `useLiquidFlex`
|
|
267
|
+
reciprocal X/Y deform) + the coupled `--glass-specular-intensity-active` gleam
|
|
268
|
+
lift on the SAME `--glass-btn-press-t` drive — the glass reads as DEFORMING under
|
|
269
|
+
the press without re-rasterizing the lens map. Off-Chromium the whole arm degrades
|
|
270
|
+
to the un-gated `.btn-glass` blur+tint base (the no-workaround floor). The
|
|
271
|
+
`--glass-btn-press-t` typed drive (property-regs.css) is the ONE press scalar the
|
|
272
|
+
squish + the gleam coupling both read. */
|
|
273
|
+
.btn-glass.glass-lens {
|
|
274
|
+
/* The press drive scalar (0 rest → 1 pressed) Button.vue writes off the spring;
|
|
275
|
+
the resting default is 0 so an unwired refraction button is the static lens.
|
|
276
|
+
The `:active` LENS-SWELL on this drive lives in material.css's `.glass-lens`
|
|
277
|
+
block (`--glass-refract` bumps on press); this block only floors the drive. */
|
|
278
|
+
--glass-btn-press-t: 0;
|
|
184
279
|
}
|
|
185
280
|
|
|
186
281
|
/* ── Pill input ───────────────────────────────── */
|
|
@@ -289,8 +384,11 @@
|
|
|
289
384
|
invalid field shows the destructive ring on focus too. */
|
|
290
385
|
.input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]):focus-visible {
|
|
291
386
|
border-color: var(--destructive);
|
|
292
|
-
|
|
293
|
-
|
|
387
|
+
/* BB.W-INVALID-RING — the shared destructive ring register (the
|
|
388
|
+
--focus-ring-shadow sibling). The byte-identical recipe is now ONE
|
|
389
|
+
token; the `8%` at-rest bg arm above stays `.input-pill`-local (a
|
|
390
|
+
glass-tint substrate the bare-ring surfaces do not carry). */
|
|
391
|
+
box-shadow: var(--invalid-ring);
|
|
294
392
|
}
|
|
295
393
|
|
|
296
394
|
/* AQ.W4 §W4.3 — `field-sizing: content` autosize (opt-in via the Textarea
|