@mkbabb/glass-ui 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CardAction-8whJrLWt.js → CardAction-DlVP2evz.js} +58 -54
- package/dist/{CommandShortcut-D3yxgHNn.js → CommandShortcut-By-VQcLO.js} +3 -3
- package/dist/{ConfiguratorRow-CaP7U3ZA.js → ConfiguratorRow-YMXdINHx.js} +3 -3
- package/dist/{ContextMenuContent-B3ZsheLV.js → ContextMenuContent-CMWn6huB.js} +1 -1
- package/dist/{ContextMenuSubContent-DDRID3qC.js → ContextMenuSubContent-DvwWCUc0.js} +1 -1
- package/dist/{DataTable-Bc9kUtu_.js → DataTable-C4tG3eIJ.js} +4 -4
- package/dist/DialogContent-D8U9ZfWS.js +121 -0
- package/dist/{DialogScrollContent-TTuovQst.js → DialogScrollContent-BMekN7gq.js} +1 -1
- package/dist/{FadingScroll-DLRbH5Xr.js → FadingScroll-P8B30rAD.js} +1 -1
- package/dist/{HoverCardContent-Bel1gdLZ.js → HoverCardContent-DAmGYglo.js} +1 -1
- package/dist/{HoverPopover-BcIxvyqZ.js → HoverPopover-DYpBOzzF.js} +1 -1
- package/dist/{IconChip-DhbdGdFQ.js → IconChip-CQa7XZYc.js} +7 -5
- package/dist/{IconTooltip-B0zimd2H.js → IconTooltip-_df8M3xm.js} +1 -1
- package/dist/{Input-Cg9DF62r.js → Input-CyU4_hIC.js} +2 -2
- package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
- package/dist/{Notification-CphK7AAm.js → Notification-BlSPJhtZ.js} +1 -1
- package/dist/{NumberFieldContent-D8cXeyO4.js → NumberFieldContent-Z3VxGu_6.js} +3 -3
- package/dist/PagerDots-CYlqVFd4.js +196 -0
- package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
- package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
- package/dist/{Progress-CnqB7gLm.js → Progress-C9SsdwIZ.js} +1 -1
- package/dist/{ScrollingText-CTZbA_cG.js → ScrollingText-DY3W1Jfh.js} +2 -2
- package/dist/{SelectScrollDownButton-DAKCBEdW.js → SelectScrollDownButton-3mFHX_R-.js} +15 -12
- package/dist/{Switch-B8RscmRu.js → Switch-uf-UKPA2.js} +1 -1
- package/dist/{Toaster-D9qIHjBI.js → Toaster-ozrsR4mP.js} +1 -1
- package/dist/{ToggleGroupItem-BLtr3TJq.js → ToggleGroupItem-BpzaVzNm.js} +4 -4
- package/dist/{TooltipProvider-BJ_Y5EGX.js → TooltipProvider-QQVM_80r.js} +1 -1
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +1 -0
- package/dist/api/types-extra.d.ts +3 -1
- package/dist/api.js +2 -2
- package/dist/aurora.js +163 -131
- package/dist/badge-Bt14yURi.js +72 -0
- package/dist/badge.js +1 -1
- package/dist/border-progress.js +1 -1
- package/dist/button-D1W9PrzI.js +130 -0
- package/dist/button.js +1 -1
- package/dist/canvas.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +227 -98
- package/dist/chipVariants-BJQ0I2kB.js +18 -0
- package/dist/collapsible.js +1 -1
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +1 -1
- package/dist/components/custom/aurora/constants/presets.d.ts +29 -0
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +8 -3
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +8 -4
- package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -4
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
- package/dist/components/custom/concentric/constants.d.ts +62 -41
- package/dist/components/custom/concentric/index.d.ts +2 -2
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
- package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
- package/dist/components/custom/configurator/index.d.ts +1 -1
- package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +10 -0
- package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
- package/dist/components/custom/dock/DockStack.vue.d.ts +35 -22
- package/dist/components/custom/dock/GlassDock.vue.d.ts +19 -3
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +76 -145
- package/dist/components/custom/dock/composables/index.d.ts +1 -0
- package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
- package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
- package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
- package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +38 -0
- package/dist/components/custom/dock/constants.d.ts +14 -3
- package/dist/components/custom/dock/index.d.ts +3 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +21 -0
- package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
- package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
- package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
- package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +28 -2
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -17
- package/dist/components/custom/dot-flow-field/constants.d.ts +51 -0
- package/dist/components/custom/dot-flow-field/index.d.ts +1 -1
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +29 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
- package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +10 -1
- package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +7 -0
- package/dist/components/custom/dot-matrix/constants.d.ts +14 -0
- package/dist/components/custom/dot-matrix/index.d.ts +1 -1
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +2 -2
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -1
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +4 -0
- package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +9 -0
- package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +11 -0
- package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +16 -1
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +22 -1
- package/dist/components/custom/fourier-field/constants.d.ts +53 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +1 -1
- package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
- package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
- package/dist/components/custom/goo-blob/constants.d.ts +26 -1
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/types.d.ts +50 -1
- package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +32 -3
- package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +14 -4
- package/dist/components/custom/goo-dot-matrix/constants.d.ts +55 -16
- package/dist/components/custom/goo-dot-matrix/index.d.ts +1 -1
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +2 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
- package/dist/components/custom/goo-filter/index.d.ts +1 -0
- package/dist/components/custom/handmark/brush.d.ts +17 -17
- package/dist/components/custom/handmark/constants.d.ts +28 -8
- package/dist/components/custom/handmark/geometry.d.ts +34 -1
- package/dist/components/custom/handmark/index.d.ts +1 -1
- package/dist/components/custom/icon-chip/types.d.ts +10 -0
- package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
- package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +44 -29
- package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +2 -0
- package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +3 -1
- package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +2 -2
- package/dist/components/custom/paper-grid/constants.d.ts +44 -6
- package/dist/components/custom/paper-grid/index.d.ts +2 -2
- package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +1 -1
- package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -1
- package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
- package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +12 -20
- package/dist/components/custom/tabs/constants.d.ts +16 -8
- package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
- package/dist/components/custom/timeline/geometry.d.ts +0 -8
- package/dist/components/custom/toggle-chip/index.d.ts +15 -4
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +12 -10
- package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
- package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
- package/dist/components/ui/badge/index.d.ts +1 -0
- package/dist/components/ui/button/Button.vue.d.ts +1 -0
- package/dist/components/ui/card/Card.vue.d.ts +1 -1
- package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
- package/dist/components/ui/drawer/constants.d.ts +8 -6
- package/dist/components/ui/drawer/index.d.ts +12 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +9 -0
- package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
- package/dist/composables/dom/index.d.ts +1 -0
- package/dist/composables/dom/useDragVelocity.d.ts +46 -0
- package/dist/composables/glass/wave/index.d.ts +4 -0
- package/dist/composables/glass/wave/waveField.d.ts +115 -0
- package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
- package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +95 -2
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
- package/dist/composables/glass/webgpu/index.d.ts +1 -0
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +37 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +49 -2
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +1 -1
- package/dist/composables/motion/core/index.d.ts +4 -0
- package/dist/composables/motion/core/useHaptic.d.ts +48 -0
- package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
- package/dist/composables/motion/index.d.ts +2 -0
- package/dist/composables/motion/springPresets.d.ts +16 -17
- package/dist/composables/motion/suite.d.ts +2 -2
- package/dist/composables/motion/useBloomUp.d.ts +97 -0
- package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +10 -28
- package/dist/composables/motion/useGooMorph.d.ts +72 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
- package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
- package/dist/composables/motion/useLiquidPress.d.ts +12 -0
- package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
- package/dist/composables/motion/useMorphField.d.ts +157 -0
- package/dist/composables/motion/useScrollPin.d.ts +49 -0
- package/dist/composables/motion/useScrollScene.d.ts +67 -0
- package/dist/concentric.js +532 -563
- package/dist/configurator.js +2 -2
- package/dist/confirm-dialog.js +3 -3
- package/dist/constellation.js +4 -4
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +2 -2
- package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck.js +1 -1
- package/dist/dialog.js +3 -3
- package/dist/dock.js +1163 -618
- package/dist/dockContext-gFVS2gMg.js +18 -0
- package/dist/dom.js +7 -6
- package/dist/dot-flow-field.js +1114 -523
- package/dist/dot-matrix.js +348 -204
- package/dist/drawer.js +106 -96
- package/dist/{dropdown-menu-aJmV5SqE.js → dropdown-menu-CCfcCQ68.js} +3 -3
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.js +3 -3
- package/dist/expandable-container.js +2 -2
- package/dist/fading-scroll.js +1 -1
- package/dist/forms.js +6 -6
- package/dist/fourier-field.js +441 -197
- 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 +139 -135
- package/dist/goo-blob.js +11 -9
- package/dist/goo-dot-matrix.js +418 -198
- package/dist/handmark.js +137 -94
- 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 +3 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +7 -7
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +42 -39
- package/dist/motion-curves.js +20 -14
- package/dist/motion.js +226 -26
- 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/paper-grid.js +315 -342
- package/dist/paperGrid-CXCSMbZ1.js +191 -0
- package/dist/popover.js +1 -1
- package/dist/{presets-CvOUqtdY.js → presets-QvYgnFIZ.js} +13 -12
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/{resolveCanvasColor-yPyIpJt9.js → resolveCanvasColor-DsSJk06I.js} +5 -5
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +7 -7
- package/dist/select.js +3 -3
- package/dist/selectable-chip.js +18 -35
- package/dist/separator.js +1 -1
- package/dist/{sheet-B2flBfLH.js → sheet-DUCIoOe0.js} +3 -3
- package/dist/sheet.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/slider-CcICPe3u.js +149 -0
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/{spectrum-walk-BVzA7Biz.js → spectrum-walk-cBNSx_zm.js} +1 -1
- package/dist/springPresets-DfoQ6XRY.js +64 -0
- package/dist/stacked-icons.js +54 -39
- package/dist/styles/cards.css +202 -2
- package/dist/styles/components.css +1 -3
- package/dist/styles/configurator.css +172 -7
- package/dist/styles/critical-partition.mjs +35 -2
- package/dist/styles/deferred.css +2 -0
- package/dist/styles/dock/adaptive-legibility.css +119 -0
- package/dist/styles/dock/density.css +18 -10
- package/dist/styles/dock/fission-bridge.css +552 -0
- package/dist/styles/dock/layers.css +88 -124
- package/dist/styles/dock/morph-bridge.css +15 -2
- package/dist/styles/dock/morph.css +45 -114
- package/dist/styles/dock/shape.css +137 -11
- package/dist/styles/dock/shell.css +1 -3
- package/dist/styles/dock/stack-rail.css +95 -7
- package/dist/styles/dock-controls/icon-button.css +34 -2
- package/dist/styles/dock-controls/triggers.css +23 -1
- package/dist/styles/dock-controls.css +18 -0
- package/dist/styles/dock.css +16 -1
- package/dist/styles/drawer.css +166 -0
- package/dist/styles/glass/glass-atom.css +244 -0
- package/dist/styles/glass/glass-capsule.css +143 -0
- package/dist/styles/glass/glass-chip.css +215 -0
- package/dist/styles/glass/liquid-enter.css +252 -0
- package/dist/styles/glass/liquid-morph.css +850 -0
- package/dist/styles/glass/material.css +70 -1
- package/dist/styles/glass/reveal.css +22 -2
- package/dist/styles/glass/rim.css +13 -1
- package/dist/styles/glass/surfaces.css +18 -8
- package/dist/styles/glass.css +11 -0
- package/dist/styles/icon-chip.css +45 -0
- package/dist/styles/index.css +11 -0
- package/dist/styles/jubilance.css +65 -0
- package/dist/styles/motion/morph-field.css +229 -0
- package/dist/styles/paper.css +230 -14
- package/dist/styles/scroll-choreography.css +135 -78
- package/dist/styles/segmented-tabs.css +85 -51
- package/dist/styles/select.css +151 -0
- package/dist/styles/tokens/color-radius.css +1 -1
- package/dist/styles/tokens/dark-arm.css +57 -8
- package/dist/styles/tokens/glass-deep.css +8 -4
- package/dist/styles/tokens/glass-fx.css +80 -2
- package/dist/styles/tokens/glass.css +140 -8
- package/dist/styles/tokens/light-dark.css +2 -2
- package/dist/styles/tokens/property-regs.css +144 -0
- package/dist/styles/tokens/scale-paper.css +20 -8
- package/dist/styles/tokens/scheme-motion.css +92 -157
- package/dist/styles/tokens/scheme-spring.css +239 -0
- package/dist/styles/tokens/scroll-tokens.css +15 -15
- package/dist/styles/tokens/shadow.css +73 -13
- package/dist/styles/tokens.css +9 -2
- package/dist/styles/utilities/btn.css +70 -0
- package/dist/switch.js +1 -1
- package/dist/tabs.js +198 -181
- package/dist/timeline.js +241 -206
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +14 -41
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{uniformBridgeWGPU-CtAKl45L.js → uniformBridgeWGPU-BCse1SHU.js} +191 -127
- package/dist/{useAnimatedNumber-CLrxicG9.js → useAnimatedNumber-BntskVdQ.js} +1 -1
- package/dist/{useConfiguratorState-4xblKfwd.js → useConfiguratorState-22BcULzF.js} +37 -35
- package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
- package/dist/{useDragMorph-BUgAC-zK.js → useDragMorph-DGLSewwB.js} +2 -2
- package/dist/useDragVelocity-CjcfX3dA.js +57 -0
- package/dist/useGooMorph-Cs13NgYL.js +104 -0
- package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
- package/dist/{useViewTransition-CUI1nAgn.js → useHaptic-CPz5BT9I.js} +40 -1
- package/dist/{useLiquidFlex-UmA6LMZu.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
- package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
- package/dist/useMorphField-ogBM7ubT.js +141 -0
- package/dist/{useScrollChrome-D66AVP7C.js → useScrollChrome-JuImi1DM.js} +2 -2
- package/dist/{useSpringMount-BWDnKIwh.js → useSpringMount-DFxtzmkR.js} +1 -1
- package/dist/{useSpringPress-B1-Czp-V.js → useSpringPress-VM9RgVq3.js} +1 -1
- package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
- package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
- package/dist/virtual.js +1 -1
- package/dist/watercolor-dot.js +16 -26
- package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
- package/package.json +14 -3
- package/src/styles/cards.css +202 -2
- package/src/styles/configurator.css +172 -7
- package/src/styles/critical-partition.mjs +35 -2
- package/src/styles/dock/adaptive-legibility.css +119 -0
- package/src/styles/dock/density.css +18 -10
- package/src/styles/dock/fission-bridge.css +552 -0
- package/src/styles/dock/layers.css +88 -124
- package/src/styles/dock/morph-bridge.css +15 -2
- package/src/styles/dock/morph.css +45 -114
- package/src/styles/dock/shape.css +137 -11
- package/src/styles/dock/shell.css +1 -3
- package/src/styles/dock/stack-rail.css +95 -7
- package/src/styles/dock-controls/icon-button.css +34 -2
- package/src/styles/dock-controls/triggers.css +23 -1
- package/src/styles/dock-controls.css +18 -0
- package/src/styles/dock.css +16 -1
- package/src/styles/drawer.css +164 -0
- package/src/styles/glass/glass-atom.css +244 -0
- package/src/styles/glass/glass-capsule.css +143 -0
- package/src/styles/glass/glass-chip.css +215 -0
- package/src/styles/glass/liquid-enter.css +252 -0
- package/src/styles/glass/liquid-morph.css +850 -0
- package/src/styles/glass/material.css +70 -1
- package/src/styles/glass/reveal.css +22 -2
- package/src/styles/glass/rim.css +13 -1
- package/src/styles/glass/surfaces.css +18 -8
- package/src/styles/glass.css +11 -0
- package/src/styles/icon-chip.css +45 -0
- package/src/styles/index.css +11 -0
- package/src/styles/jubilance.css +65 -0
- package/src/styles/motion/morph-field.css +229 -0
- package/src/styles/paper.css +230 -14
- package/src/styles/scroll-choreography.css +135 -78
- package/src/styles/segmented-tabs.css +85 -47
- package/src/styles/select.css +151 -0
- package/src/styles/tokens/color-radius.css +1 -1
- package/src/styles/tokens/dark-arm.css +57 -8
- package/src/styles/tokens/glass-deep.css +8 -4
- package/src/styles/tokens/glass-fx.css +80 -2
- package/src/styles/tokens/glass.css +140 -8
- package/src/styles/tokens/light-dark.css +2 -2
- package/src/styles/tokens/property-regs.css +144 -0
- package/src/styles/tokens/scale-paper.css +20 -8
- package/src/styles/tokens/scheme-motion.css +92 -157
- package/src/styles/tokens/scheme-spring.css +239 -0
- package/src/styles/tokens/scroll-tokens.css +15 -15
- package/src/styles/tokens/shadow.css +73 -13
- package/src/styles/tokens.css +9 -2
- package/src/styles/utilities/btn.css +70 -0
- package/dist/DialogContent-6JtTB5x2.js +0 -106
- package/dist/PagerDots-Cjx96la-.js +0 -98
- package/dist/PaperBackdrop-CqwjnfLv.js +0 -31
- package/dist/badge-D9XWW4GT.js +0 -53
- package/dist/button-5dY1Dvhd.js +0 -125
- package/dist/components/custom/concentric/composables/ringField.d.ts +0 -85
- package/dist/createCanvasLifecycle-Gh45Ce-p.js +0 -93
- package/dist/dockContext-BNfyPLe9.js +0 -17
- package/dist/slider-2A0rPn79.js +0 -142
- package/dist/springPresets-Ce7OYCm9.js +0 -46
- package/dist/useDockCtaReceive-DfFkmgL1.js +0 -82
- package/dist/useGpuSubstrate-4pTcp6mX.js +0 -294
- package/dist/useLiquidPress-BooG97RY.js +0 -39
- /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
- /package/dist/{DialogFooter-9phqcRIS.js → DialogFooter-DoLy0ewI.js} +0 -0
- /package/dist/{InstrumentChassis-CxsHSyMj.js → InstrumentChassis-UUJX0-mW.js} +0 -0
- /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
- /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
- /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
- /package/dist/{SelectSeparator-C2UGOkXF.js → SelectSeparator-CNRGG7Ew.js} +0 -0
- /package/dist/{Separator-DQcwC2TR.js → Separator-Cf9-JFgi.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
- /package/dist/{color-Cs0-oxYL.js → color-B9jZdhJX.js} +0 -0
- /package/dist/{compile-nZ1xVYTp.js → compile-INR_tPk_.js} +0 -0
- /package/dist/{constants--C2DkLW8.js → constants-BWj7DkMn.js} +0 -0
- /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
- /package/dist/{dotMatrixField-D_x9_1qq.js → dotMatrixField-CRO0ZFk4.js} +0 -0
- /package/dist/{flow.glsl-B2P7e0MT.js → flow.glsl-DqEGRpl4.js} +0 -0
- /package/dist/{math-Eb0w3LqU.js → math-5RcIgCB4.js} +0 -0
- /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
- /package/dist/{prng-B-d9eYX8.js → prng-B5tIXTtj.js} +0 -0
- /package/dist/{procedural-color.wgsl-m7Zgv35j.js → procedural-color.wgsl-C1Y5PkM6.js} +0 -0
- /package/dist/{scrollReader-DI1NWxUw.js → scrollReader-rc3Ns_NM.js} +0 -0
- /package/dist/{useControlSize-SH1UmJCi.js → useControlSize-DAZ062x7.js} +0 -0
- /package/dist/{useFuzzySearch-DIhcYtcw.js → useFuzzySearch-0fTYOhS4.js} +0 -0
- /package/dist/{useGlobalDark-CmjB9E32.js → useGlobalDark-B4HO9LXG.js} +0 -0
- /package/dist/{useIntersectionPause-Dbozzjgm.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
- /package/dist/{useInterval-CNdua40W.js → useInterval-BVUI-sez.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BPRp33Im.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
- /package/dist/{usePointerVelocityField-QLsy3_kv.js → usePointerVelocityField-BrkqZFhj.js} +0 -0
- /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
- /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
- /package/dist/{useScrollProgress-c3yxmH6a.js → useScrollProgress-A0M6qRl7.js} +0 -0
- /package/dist/{useSortable-BVqlJRBR.js → useSortable-DQV_UNDw.js} +0 -0
- /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-Bma3UlKA.js} +0 -0
- /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
- /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
- /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
- /package/dist/{vReveal-D9k0jADx.js → vReveal-CT1KtwZA.js} +0 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/* ════════════════════════════════════════════════════════════════════════
|
|
2
|
+
.glass-chip — BD.W-CHIP-CONGRUENT-GLASS: the ONE warm-glass toggle register
|
|
3
|
+
the chip family (ToggleChip · SelectableChip + the toggle-group children)
|
|
4
|
+
composes. A stadium-pill warm-glass LENS that PUNCHES when you pick it: the
|
|
5
|
+
tonal band floods through the translucent lens on `--ease-cartoon-punch` with
|
|
6
|
+
anticipation → overshoot → settle, a one-shot accent-bloom trailing the
|
|
7
|
+
spatial leg.
|
|
8
|
+
|
|
9
|
+
CONSUME-ONLY — declares ZERO own glass tokens (the no-fork fence, Fence C3c).
|
|
10
|
+
It COMPOSES:
|
|
11
|
+
· `.glass-capsule` — the warm-transmissive lozenge BODY (warm floor +
|
|
12
|
+
rim + lift + blur), on `--radius-pill`. The chip
|
|
13
|
+
is the ≥4th `.glass-capsule` consumer (after the
|
|
14
|
+
tab indicator + the button sites). NEVER inlines
|
|
15
|
+
`backdrop-filter` / `--glass-bg-*` / a rim.
|
|
16
|
+
· `.glass-capsule-hover` — the SHARED specular-lift + press-snap step.
|
|
17
|
+
· `.accent-tone` — the contrast-floored tonal channels (idle fill /
|
|
18
|
+
active band / active edge / contrast-safe ink).
|
|
19
|
+
· `--glass-fill-tint` / `--glass-fill-strength` (BE.W-TINTED-CHIP, glass.css)
|
|
20
|
+
— the per-instance plate-fill data hue the body
|
|
21
|
+
tints toward. The chip is its ≥3rd consumer; it
|
|
22
|
+
APPLIES the axis, never re-mints a tint.
|
|
23
|
+
· `--motion-weight` × `--ease-cartoon-punch` (BD.W-MOTION-WEIGHT /
|
|
24
|
+
-CARTOON-PUNCH) — the cartoon press/flood punch +
|
|
25
|
+
the PRM dial (`--motion-weight: 0`).
|
|
26
|
+
|
|
27
|
+
DISTINCT-not-fork of `.glass-atom` (the small-atom register: Badge/+N/slider):
|
|
28
|
+
both COMPOSE `.glass-capsule`. `.glass-atom` is the quiet always-on identity
|
|
29
|
+
chip; `.glass-chip` is the TOGGLE face whose state flip is the de-frauded
|
|
30
|
+
colour-flood punch. They never write each other's channels.
|
|
31
|
+
|
|
32
|
+
@layer components, @import-ed by index.css AFTER glass.css (so `.glass-capsule`
|
|
33
|
+
+ `.accent-tone` + the `--glass-*` axes resolve) and BEFORE/AROUND the chip
|
|
34
|
+
recipes. Every channel is compositor-only + Safari-native (no
|
|
35
|
+
`backdrop-filter: url()`, no goo — Fence 8). The warm 0-alpha sources are
|
|
36
|
+
explicit `oklch(L C H / 0)` (NEVER bare `transparent` — the WebKit
|
|
37
|
+
black-premultiply hole, build-trap-(d)). Per-mode `.dark` arms (no
|
|
38
|
+
`light-dark()` fragment).
|
|
39
|
+
════════════════════════════════════════════════════════════════════════ */
|
|
40
|
+
|
|
41
|
+
/* The COMMIT-flood scalar — the ON-flip envelope. `inherits: TRUE` is the
|
|
42
|
+
load-bearing de-fraud (challenge R1): an `inherits:false` reg resolves to its
|
|
43
|
+
`initial-value` on the `::after` PSEUDO (a separate box from the element that
|
|
44
|
+
sets it), so the flood reads `0` forever. `inherits:true` lets the element's
|
|
45
|
+
`[data-state="on"]{--chip-flood-t:1}` reach the pseudo. Typed so the opacity
|
|
46
|
+
interpolates a NUMBER, not the textual representation. On a pre-Baseline engine
|
|
47
|
+
that drops the typed reg the scalar collapses to the initial 0 — the chip still
|
|
48
|
+
selects (the COLOUR event below is plain `data-state`, never tied to the
|
|
49
|
+
scalar; challenge R5). */
|
|
50
|
+
@property --chip-flood-t {
|
|
51
|
+
syntax: "<number>";
|
|
52
|
+
inherits: true;
|
|
53
|
+
initial-value: 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@layer components {
|
|
57
|
+
/* ── .glass-chip — the warm-glass toggle lens ──
|
|
58
|
+
The chip wears `.glass-chip .glass-capsule .glass-capsule-hover .accent-tone`
|
|
59
|
+
(the component CVA composes all four). This rule owns only the chip-specific
|
|
60
|
+
layer: the warm idle floor (the #2 dormant-tint cure), the per-instance fill
|
|
61
|
+
tint over the capsule's warm body, the ONE `scale` write (hover/press/punch
|
|
62
|
+
folded), and the `::after` flood. The capsule owns the body/rim/blur. */
|
|
63
|
+
.glass-chip {
|
|
64
|
+
position: relative;
|
|
65
|
+
/* The flood `::after` sits ABOVE the translucent fill (challenge R2): a
|
|
66
|
+
new stacking context so `plus-lighter` blends over the lens body, never
|
|
67
|
+
occluded under an opaque layer. The capsule body is α<1, so the bloom
|
|
68
|
+
reads through. */
|
|
69
|
+
isolation: isolate;
|
|
70
|
+
|
|
71
|
+
/* ── The WARM IDLE FLOOR (root #2 cure) ──
|
|
72
|
+
The chip carries chroma at rest over warm-cream even with no vibrant
|
|
73
|
+
field behind. The floor RAISES the `.accent-tone` idle strength the chip
|
|
74
|
+
reads — a NON-self-referential floor (build-trap-(b): a property reading
|
|
75
|
+
ITSELF in its own `max()` is guaranteed-invalid and drops). A SEPARATE
|
|
76
|
+
input var is the source: the `.accent-tone` recipe's default idle
|
|
77
|
+
strength is 8%; the chip floors the resolved strength to
|
|
78
|
+
`--chip-tint-floor` so the idle AND the default-tone active band both
|
|
79
|
+
clear the 0.02 warm floor (the live finding: BOTH are gray over
|
|
80
|
+
`--primary`). PLAIN per-mode pair (12% light / 15% dark), NEVER
|
|
81
|
+
`light-dark()` (the inset-shadow trap). */
|
|
82
|
+
--chip-tint-floor: 12%;
|
|
83
|
+
--accent-fill-strength: max(8%, var(--chip-tint-floor));
|
|
84
|
+
/* Lift the DEFAULT-tone active band too (the §1b finding: the default
|
|
85
|
+
band reads C 0.013 — a darken, not a chroma lift). The band floors to a
|
|
86
|
+
bolder warm-clearing stop so a selected default chip is tonal, not gray. */
|
|
87
|
+
--accent-band-strength: max(18%, calc(var(--chip-tint-floor) + 10%));
|
|
88
|
+
|
|
89
|
+
/* ── The per-instance fill tint (BE.W-TINTED-CHIP CONSUME) ──
|
|
90
|
+
The translucent capsule body tints toward the consumer data hue ON TOP
|
|
91
|
+
of the W55 legibility composite. At the `@property` defaults
|
|
92
|
+
(`--glass-fill-tint: transparent` / strength 0%) this is the byte-
|
|
93
|
+
identical no-op (`color-mix(in oklab, X, transparent 0%)` ≡ X — the warm
|
|
94
|
+
floor above keeps the idle body warm even at a transparent tint). The
|
|
95
|
+
mix is `in oklab` (the perceptual glass-tint family). The 0-alpha stop is
|
|
96
|
+
warm `oklch(… / 0)`, never bare `transparent` (the WebKit black-
|
|
97
|
+
premultiply hole). */
|
|
98
|
+
--glass-chip-tinted: color-mix(
|
|
99
|
+
in oklab,
|
|
100
|
+
var(--glass-fill-tint, oklch(0.9 0.05 75 / 0))
|
|
101
|
+
var(--glass-fill-strength, 0%),
|
|
102
|
+
oklch(0.9 0.05 75 / 0)
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
/* ── The ONE scale write (hover/press/punch, single source of truth) ──
|
|
106
|
+
Folds the on-flood overshoot into ONE `scale` so it never collides with
|
|
107
|
+
the capsule-hover scale step (the CVA's `hover:scale-*` is retired in the
|
|
108
|
+
chip variants — this is the sole scale writer on the chip box). Volume-
|
|
109
|
+
preserving, center-pinned. The coefficient (0.12) is raised vs the
|
|
110
|
+
segmented-indicator's 0.06 so the dip/overshoot clear the gate's OWN
|
|
111
|
+
thresholds (≤0.996 dip / ≥1.04 overshoot at weight 1.0): the punch curve
|
|
112
|
+
peaks at 1.22 → 1 + 0.12·1.22·1.0 ≈ 1.026 over rest is too soft, so the
|
|
113
|
+
overshoot READ is carried by the curve's pre-dip (−0.04) + the COLOUR
|
|
114
|
+
event; the spatial leg adds the perceptible breathe without taffy. */
|
|
115
|
+
scale: calc(1 + 0.12 * var(--chip-flood-t, 0) * var(--motion-weight, 0.618));
|
|
116
|
+
transform-origin: center;
|
|
117
|
+
|
|
118
|
+
/* The SPATIAL legs (scale) settle on the punch clock; the EFFECTS legs
|
|
119
|
+
(background/border/color) stay on the bezier (motion-canon P1). */
|
|
120
|
+
transition:
|
|
121
|
+
scale var(--duration-normal) var(--ease-cartoon-punch),
|
|
122
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
123
|
+
border-color var(--duration-fast) var(--ease-standard),
|
|
124
|
+
color var(--duration-fast) var(--ease-standard);
|
|
125
|
+
|
|
126
|
+
/* ── The per-instance fill tint application ──
|
|
127
|
+
The capsule body (the `.glass-capsule` `background:` shorthand) is the
|
|
128
|
+
warm transmissive plate; the chip LAYERS the data-hue tint on top via
|
|
129
|
+
`background-image` (a later layer over the capsule's shorthand — the
|
|
130
|
+
proven `.paper-grid`/`.glass-atom` coexistence seam: paints OVER the
|
|
131
|
+
translucent fill, UNDER content). When `--glass-fill-tint` is unset the
|
|
132
|
+
tinted layer is the warm 0-alpha no-op (invisible) and the capsule's warm
|
|
133
|
+
body reads. */
|
|
134
|
+
background-image: linear-gradient(
|
|
135
|
+
var(--glass-chip-tinted),
|
|
136
|
+
var(--glass-chip-tinted)
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
.dark .glass-chip {
|
|
140
|
+
--chip-tint-floor: 15%;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* ── The on-flip COLOUR event (the perceptible primary read) ──
|
|
144
|
+
OFF→ON floods the active band through the lens + lights the active rim + the
|
|
145
|
+
contrast-safe ink. Driven by PLAIN `data-state` (the reka Toggle contract),
|
|
146
|
+
NEVER tied to `--chip-flood-t` — so selection is legible even on a pre-
|
|
147
|
+
Baseline engine that drops the typed scalar (challenge R5). The `.accent-tone`
|
|
148
|
+
channels supply the colour; this rule only SWAPS which channel paints. */
|
|
149
|
+
.glass-chip[data-state="on"] {
|
|
150
|
+
background-color: var(--accent-band);
|
|
151
|
+
border-color: var(--accent-edge);
|
|
152
|
+
color: var(--accent-ink);
|
|
153
|
+
/* arm the spatial+bloom envelope */
|
|
154
|
+
--chip-flood-t: 1;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* ── The COMMIT flood `::after` (the trailing accent bloom) ──
|
|
158
|
+
An additive radial bloom INSIDE the lens (`inset:0`, `border-radius:inherit`,
|
|
159
|
+
`plus-lighter`) ABOVE the translucent fill (inside `isolation:isolate`,
|
|
160
|
+
challenge R2). Its opacity reads `--chip-flood-t` (inherited from the element,
|
|
161
|
+
challenge R1) so it fires on ON and clears on OFF. The transition DELAY trails
|
|
162
|
+
the spatial leg (EFFECTS-trails-SPATIAL, the v3 f006→f007 ordering). The bloom
|
|
163
|
+
hue is the active band; default tone neutral → a provable near-no-op until a
|
|
164
|
+
consumer sets a vibrant `:tone`. */
|
|
165
|
+
.glass-chip::after {
|
|
166
|
+
content: "";
|
|
167
|
+
position: absolute;
|
|
168
|
+
inset: 0;
|
|
169
|
+
border-radius: inherit;
|
|
170
|
+
pointer-events: none;
|
|
171
|
+
background: radial-gradient(
|
|
172
|
+
120% 140% at 50% 50%,
|
|
173
|
+
color-mix(in oklab, var(--accent-band) 60%, oklch(0.9 0.05 75 / 0)),
|
|
174
|
+
oklch(0.9 0.05 75 / 0) 72%
|
|
175
|
+
);
|
|
176
|
+
mix-blend-mode: plus-lighter;
|
|
177
|
+
opacity: var(--chip-flood-t, 0);
|
|
178
|
+
transition: opacity var(--duration-normal) var(--ease-out) 60ms;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* ── The CELL exception — a 72px icon+label TILE is a CARD, not a pill ──
|
|
182
|
+
The DELIBERATE 2-silhouette family (named honestly): the inline rungs are
|
|
183
|
+
stadium pills (the capsule's `--radius-pill`); the cell re-points to the
|
|
184
|
+
squircle card radius. It composes the SAME `.glass-chip` material + motion;
|
|
185
|
+
only the silhouette differs. The `::after` flood inherits the card radius. */
|
|
186
|
+
.glass-chip--cell {
|
|
187
|
+
border-radius: var(--radius-card);
|
|
188
|
+
}
|
|
189
|
+
.glass-chip--cell.glass-capsule {
|
|
190
|
+
border-radius: var(--radius-card);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* ── PRM carve ──
|
|
194
|
+
Under reduced-motion `--motion-weight: 0` zeroes the spatial overshoot (the
|
|
195
|
+
`scale` calc collapses to 1) in ONE assignment; the bloom's MOTION rides the
|
|
196
|
+
same dial via the punch clock. The COLOUR cross-fade + the static lens lift
|
|
197
|
+
(the `.glass-capsule` rim/shadow) + the `--accent-band` swap REMAIN —
|
|
198
|
+
selection is always legible (challenge R7: zeroes the MOTION, not the bloom).
|
|
199
|
+
Vestibular-safe. */
|
|
200
|
+
@media (prefers-reduced-motion: reduce) {
|
|
201
|
+
.glass-chip {
|
|
202
|
+
--motion-weight: 0;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* ── prefers-contrast: more — the active rim α floors UP ──
|
|
207
|
+
The active `--accent-edge` rim is the legibility CONTRACT; under more-contrast
|
|
208
|
+
floor the border ink so the selected lit edge clears ≥3:1 over the lens body.
|
|
209
|
+
The `--accent-ink` is already value.js contrast-safe (useAccentTone). */
|
|
210
|
+
@media (prefers-contrast: more) {
|
|
211
|
+
.glass-chip[data-state="on"] {
|
|
212
|
+
border-color: color-mix(in srgb, var(--foreground) 28%, transparent);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/* glass/liquid-enter.css
|
|
2
|
+
BD.W-LIQUID-ENTRANCE-GENERAL — the UNIVERSAL LIQUID-ENTER mount recipe.
|
|
3
|
+
|
|
4
|
+
`.glass-reveal`'s four coupled channels (SPATIAL bloom + SQUISH + fade + decongest),
|
|
5
|
+
promoted from an overlay-only `data-state` TRANSITION to a mount `@keyframes` so a
|
|
6
|
+
`v-if`-born-at-open surface ANIMATES (a CSS transition needs a state-change a
|
|
7
|
+
born-at-open element lacks; an `@keyframes` does not). This is the everywhere
|
|
8
|
+
entrance EVERY mount surface opts into — cards, rows, controls, dock-modules, demo
|
|
9
|
+
sub-sections — on the `--i` 1/φ time-clock stagger. The flat fade dies.
|
|
10
|
+
|
|
11
|
+
THREE registers share ONE grammar (NOT three engines):
|
|
12
|
+
• MOUNT — this file (`.liquid-enter`), plain @keyframes-on-mount, the Safari-15
|
|
13
|
+
floor, the DEFAULT. Zero JS.
|
|
14
|
+
• SCROLL — `.scroll-build`/`.scroll-cascade` (scroll-choreography.css), AUGMENTED
|
|
15
|
+
in place; this file does NOT touch them (Bug B: a 2nd `animation:`
|
|
16
|
+
shorthand on `.scroll-build > *` clobbers `gl-page-build`).
|
|
17
|
+
• TRIGGER— `useLiquidReveal`/`useBloomUp` (the JS source-rect bloom).
|
|
18
|
+
|
|
19
|
+
THE FOUR CHANNELS (the iOS-27 read, design.md §SPATIAL/EFFECTS split):
|
|
20
|
+
1. SPATIAL bloom — `translate:` rise (the LONGHAND, composes with a centering
|
|
21
|
+
transform) on the snappy spring.
|
|
22
|
+
2. SQUISH volume — the reciprocal `scale:` LONGHAND, born wide+flat (vol-preserving
|
|
23
|
+
sx·sy ≈ 1), settles square. NEVER a `transform: scale()` shorthand (Bug A: it
|
|
24
|
+
REPLACES a base centering `transform: translate(-50%,-50%)` → a centered dialog
|
|
25
|
+
snaps to the corner; AND it composes with a `scale:` longhand → double-scale,
|
|
26
|
+
born at 78% area). The bloom-from-small GRACE is the coupled rise + blur + fade,
|
|
27
|
+
NOT an isotropic shrink (a 0.88 multiplier re-introduces the 0.776-area shrink).
|
|
28
|
+
When a JS clock is present, `--stretch` (useLiquidFlex — the ONE squish engine)
|
|
29
|
+
is written live and paired reciprocally on THIS longhand.
|
|
30
|
+
3. EFFECTS fade — `opacity 0→1` (coupled so scale+fade read as ONE coalescing layer).
|
|
31
|
+
4. EFFECTS decongest — `filter: blur(b)→blur(0)` on the surface's OWN pixels
|
|
32
|
+
(`filter`, NEVER `backdrop-filter` — the resting glass plate is untouched + the
|
|
33
|
+
WebKit per-frame-reblur hole is avoided), on the SAME spring clock.
|
|
34
|
+
|
|
35
|
+
The four channels are governed by ONE number — `--motion-weight` (rest 1/φ ≈ 0.618,
|
|
36
|
+
the shipped Band-0 token): weight 0 ⇒ no visible punch (PRM), weight 1 ⇒ the full
|
|
37
|
+
celebration slam. Co-scaled, never four unrelated tics.
|
|
38
|
+
|
|
39
|
+
@import-ed by glass.css in cascade order, in its own @layer components. */
|
|
40
|
+
|
|
41
|
+
@layer components {
|
|
42
|
+
/* The channel substrate — the public start knobs, shared with `.glass-reveal`
|
|
43
|
+
(which keys the same `--lq-enter-*` names so the MOUNT recipe + the reka
|
|
44
|
+
closed→open TRANSITION speak ONE grammar, no fork). */
|
|
45
|
+
.liquid-enter {
|
|
46
|
+
--lq-enter-rise: 0.5rem; /* the SPATIAL rise (the translate: longhand leg) */
|
|
47
|
+
--lq-enter-blur: 4px; /* the decongest start radius (the filter leg) */
|
|
48
|
+
--lq-enter-origin: center; /* the bloom anchor (a popper edge overrides) */
|
|
49
|
+
/* The born squish — wide+flat, vol-preserving (product ≈ 1.002). The settle is
|
|
50
|
+
1 1. A consumer driving useLiquidFlex writes --lq-stretch-x/-y live. */
|
|
51
|
+
--lq-stretch-x: 1.06;
|
|
52
|
+
--lq-stretch-y: 0.945;
|
|
53
|
+
/* The register's OWN clock — the 1/φ overlap stagger keys off THIS so the
|
|
54
|
+
"launch beat N+1 as beat N hits 62%" holds on the cel/bouncy clock too
|
|
55
|
+
(DELTA-ASSAY §3 — not hardcoded to the snappy duration). */
|
|
56
|
+
--lq-enter-duration: var(--spring-snappy-duration);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ── BASE register (the graceful floor, GREEN on the bouncy/snappy spring) ──
|
|
60
|
+
A 2-stop squish-grow: the spring's `linear()` overshoot interior supplies the
|
|
61
|
+
calibrated iOS bounce. ONE `scale:` longhand (the squish), ONE `translate:`
|
|
62
|
+
longhand (the rise) — NO `transform:` shorthand (Bug A). */
|
|
63
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
64
|
+
.liquid-enter {
|
|
65
|
+
animation: gl-liquid-enter var(--lq-enter-duration) var(--spring-snappy)
|
|
66
|
+
both;
|
|
67
|
+
/* The 1/φ overlap — the per-beat delay is the spring settle × 1/φ ≈ 0.618,
|
|
68
|
+
so beat N+1 launches as beat N reaches ~62% (Disney follow-through /
|
|
69
|
+
overlap; the golden proportion). Keyed off THIS register's own clock. */
|
|
70
|
+
animation-delay: calc(
|
|
71
|
+
var(
|
|
72
|
+
--lq-enter-step,
|
|
73
|
+
calc(var(--lq-enter-duration) * 0.618)
|
|
74
|
+
) * var(--i, 0)
|
|
75
|
+
);
|
|
76
|
+
transform-origin: var(--lq-enter-origin);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* DISPLAY type arrives with GRAVITY, no bounce (a heading must not overshoot —
|
|
80
|
+
the W-HIERARCHY arrival law). The fade/decongest still ride the recipe. */
|
|
81
|
+
.liquid-enter.is-display {
|
|
82
|
+
animation-timing-function: var(--ease-out);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@keyframes gl-liquid-enter {
|
|
86
|
+
0% {
|
|
87
|
+
opacity: 0;
|
|
88
|
+
/* SQUISH on the scale: LONGHAND — born wide+flat (vol-preserving), the
|
|
89
|
+
short axis pinches, the long swells. NO transform: shorthand here. */
|
|
90
|
+
scale: var(--lq-stretch-x, 1.06) var(--lq-stretch-y, 0.945);
|
|
91
|
+
/* SPATIAL rise on the translate: LONGHAND (composes with a base
|
|
92
|
+
centering transform — never clobbers it). */
|
|
93
|
+
translate: 0 var(--lq-enter-rise, 0.5rem);
|
|
94
|
+
/* DECONGEST — the surface's OWN pixels (filter, not backdrop-filter). */
|
|
95
|
+
filter: blur(var(--lq-enter-blur, 4px));
|
|
96
|
+
}
|
|
97
|
+
100% {
|
|
98
|
+
opacity: 1;
|
|
99
|
+
scale: 1 1;
|
|
100
|
+
translate: 0 0;
|
|
101
|
+
filter: blur(0);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* ── CEL register (`.is-cel`, the audacious cartoon-technicolor upgrade) ──
|
|
107
|
+
LIVE-PROVEN FINDING (GOLDEN §7e): the cel-slam PUNCH cannot come from
|
|
108
|
+
ease-overshoot across the narrow `scale: 0.88→1` span (a 0.12 span × a 1.22
|
|
109
|
+
ease-peak yields only ~2% absolute punch). The punch MUST live in EXPLICIT
|
|
110
|
+
keyframe STOPS (a 3-stop arc); `--ease-cartoon-punch` (the shipped loud
|
|
111
|
+
`linear()`) adds the anticipation dip + extra overshoot ON TOP. Same
|
|
112
|
+
`scale:`/`translate:` LONGHAND discipline — NO `transform:` shorthand.
|
|
113
|
+
|
|
114
|
+
The arc: ANTICIPATION (sink + squish DOWN) → PUNCH (lift + stretch UP) →
|
|
115
|
+
FOLLOW-THROUGH settle. Every magnitude rides `--motion-weight` so PRM
|
|
116
|
+
(weight 0) flattens the whole arc to the fade in ONE assignment. */
|
|
117
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
118
|
+
.liquid-enter.is-cel {
|
|
119
|
+
animation: gl-cel-slam var(--lq-enter-duration)
|
|
120
|
+
var(--ease-cartoon-punch, var(--spring-bouncy)) both;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@keyframes gl-cel-slam {
|
|
124
|
+
0% {
|
|
125
|
+
opacity: 0;
|
|
126
|
+
/* ── ANTICIPATION — sink + squish DOWN (born flat, tall; vol-preserve) ── */
|
|
127
|
+
translate: 0
|
|
128
|
+
calc(14px * var(--motion-weight, 0.618));
|
|
129
|
+
scale: calc(1 - 0.12 * var(--motion-weight, 0.618))
|
|
130
|
+
calc(1 + 0.06 * var(--motion-weight, 0.618));
|
|
131
|
+
filter: blur(var(--lq-enter-blur, 4px));
|
|
132
|
+
}
|
|
133
|
+
62% {
|
|
134
|
+
opacity: 1;
|
|
135
|
+
/* ── PUNCH — lift + stretch UP (sx↑, sy↓; vol-preserve) ── */
|
|
136
|
+
translate: 0
|
|
137
|
+
calc(-3px * var(--motion-weight, 0.618));
|
|
138
|
+
scale: calc(1 + 0.1 * var(--motion-weight, 0.618))
|
|
139
|
+
calc(1 - 0.05 * var(--motion-weight, 0.618));
|
|
140
|
+
filter: blur(0);
|
|
141
|
+
}
|
|
142
|
+
100% {
|
|
143
|
+
opacity: 1;
|
|
144
|
+
/* ── FOLLOW-THROUGH settle ── */
|
|
145
|
+
translate: 0 0;
|
|
146
|
+
scale: 1 1;
|
|
147
|
+
filter: blur(0);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* ── The lagging cartoon CAST (`.is-cel`, opt-in) — a CHILD layer, never
|
|
153
|
+
::after{box-shadow} ──
|
|
154
|
+
A box-shadow cannot LAG a transform (both repaint on the same element in
|
|
155
|
+
lockstep), and an animated box-shadow is a WebKit paint hole. So the cast is a
|
|
156
|
+
child caster layer carrying the STATIC layered `--shadow-cartoon-md` (the proper
|
|
157
|
+
1940s-technicolor punch, 3-layer ink — NOT the bare single-stamp whisper),
|
|
158
|
+
animated on its OWN transform clock +`6ms·--motion-weight` later: the object
|
|
159
|
+
slams in, its bold shadow catches up a beat behind (overlapping action). The
|
|
160
|
+
cast's TRANSFORM moves (compositor); the box-shadow is static-painted, never
|
|
161
|
+
animated. Capped to HERO/headline surfaces (perf — never a global .is-cel). */
|
|
162
|
+
.liquid-enter.is-cel > .cartoon-cast {
|
|
163
|
+
position: absolute;
|
|
164
|
+
inset: 0;
|
|
165
|
+
z-index: -1;
|
|
166
|
+
border-radius: inherit;
|
|
167
|
+
/* STATIC layered stamp; re-tints per mode via the --cartoon-ink-* cohort
|
|
168
|
+
(shadow.css / dark-arm.css). NEVER animated. */
|
|
169
|
+
box-shadow: var(--shadow-cartoon-md);
|
|
170
|
+
pointer-events: none;
|
|
171
|
+
}
|
|
172
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
173
|
+
.liquid-enter.is-cel > .cartoon-cast {
|
|
174
|
+
animation: gl-cast-lag var(--lq-enter-duration)
|
|
175
|
+
var(--ease-cartoon-punch, var(--spring-snappy)) both;
|
|
176
|
+
/* the LATE arrival — the shadow trails the cel a beat behind */
|
|
177
|
+
animation-delay: calc(0.006s + 0.06s * var(--motion-weight, 0.618));
|
|
178
|
+
}
|
|
179
|
+
@keyframes gl-cast-lag {
|
|
180
|
+
0% {
|
|
181
|
+
opacity: 0;
|
|
182
|
+
translate: 0 calc(10px * var(--motion-weight, 0.618)) 0;
|
|
183
|
+
scale: 0.92;
|
|
184
|
+
}
|
|
185
|
+
100% {
|
|
186
|
+
opacity: 1;
|
|
187
|
+
translate: 0 0 0;
|
|
188
|
+
scale: 1;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/* Under prefers-contrast: more the inked edge is a LEGIBILITY asset — floor it on. */
|
|
193
|
+
@media (prefers-contrast: more) {
|
|
194
|
+
.liquid-enter.is-cel > .cartoon-cast {
|
|
195
|
+
opacity: 1;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* ── The Safari < 17.2 `linear()` floor (DELTA-ASSAY §3) ──
|
|
201
|
+
`linear()` spring/punch curves UNPARSE before Safari 17.2 → the `animation`
|
|
202
|
+
timing falls to the UA default, killing the overshoot. Supply a cubic-bezier
|
|
203
|
+
floor so the entrance still reads bouncy (not a dead linear ramp) on legacy
|
|
204
|
+
WebKit. Plain @keyframes + scale/translate/opacity/filter longhands are
|
|
205
|
+
themselves Safari-15-safe; only the spring CURVE needs the floor. */
|
|
206
|
+
@supports not (animation-timing-function: linear(0, 1)) {
|
|
207
|
+
@layer components {
|
|
208
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
209
|
+
.liquid-enter {
|
|
210
|
+
animation-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
211
|
+
}
|
|
212
|
+
.liquid-enter.is-cel,
|
|
213
|
+
.liquid-enter.is-cel > .cartoon-cast {
|
|
214
|
+
animation-timing-function: cubic-bezier(0.5, -0.2, 0.4, 1.4);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* ── REDUCED-MOTION CARVE (the vestibular floor — WCAG 2.3.3 · design.md P6) ──
|
|
221
|
+
Under `prefers-reduced-motion: reduce` the entrance keeps the FADE and drops the
|
|
222
|
+
transform + squish + bounce + blur + stagger + cast in ONE arm (opacity is not a
|
|
223
|
+
vestibular trigger). One calm paint on the short clock, delay → 0. This mirrors the
|
|
224
|
+
`.glass-reveal` + `.scroll-build` PRM precedent. The shipped `--ease-cartoon-punch`
|
|
225
|
+
already re-aliases to `--ease-standard` under reduce (scheme-motion.css) and
|
|
226
|
+
`--motion-weight → 0` zeroes the arc — this carve is the belt-and-suspenders floor
|
|
227
|
+
that also drops the keyframe channels outright. */
|
|
228
|
+
@layer components {
|
|
229
|
+
@media (prefers-reduced-motion: reduce) {
|
|
230
|
+
.liquid-enter,
|
|
231
|
+
.liquid-enter.is-cel {
|
|
232
|
+
animation: gl-liquid-enter-reduced var(--duration-fast) var(--ease-out)
|
|
233
|
+
both;
|
|
234
|
+
animation-delay: 0s;
|
|
235
|
+
}
|
|
236
|
+
.liquid-enter.is-cel > .cartoon-cast {
|
|
237
|
+
/* the cast still appears (its ink is a legibility asset) but does not fly */
|
|
238
|
+
animation: none;
|
|
239
|
+
opacity: 1;
|
|
240
|
+
translate: 0;
|
|
241
|
+
scale: 1;
|
|
242
|
+
}
|
|
243
|
+
@keyframes gl-liquid-enter-reduced {
|
|
244
|
+
from {
|
|
245
|
+
opacity: 0;
|
|
246
|
+
}
|
|
247
|
+
to {
|
|
248
|
+
opacity: 1;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|