@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
package/src/styles/paper.css
CHANGED
|
@@ -1,29 +1,68 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* paper.css — Paper-texture primitives
|
|
2
|
+
* paper.css — Paper-texture primitives (BD.W-PAPER-MORPHISM, the texture+blend
|
|
3
|
+
* redesign — the grain/grit must be PLAINLY VISIBLE; if you squint, it FAILS).
|
|
3
4
|
*
|
|
4
5
|
* Two composable Tailwind `@utility` declarations:
|
|
5
|
-
* - paper-underpaint: fixed, app-root, fullscreen
|
|
6
|
-
* - paper-grain-overlay: ::after overlay for individual surfaces
|
|
6
|
+
* - paper-underpaint: fixed, app-root, fullscreen tooth texture at z-index -1
|
|
7
|
+
* - paper-grain-overlay: ::after tooth overlay for individual surfaces
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* THE FIX (the headline): the prior `feTurbulence bf=0.65 4-oct` + `feBlend
|
|
10
|
+
* multiply in2=SourceGraphic` cloud was a self-cancelling no-op — a fine cloud
|
|
11
|
+
* averaged to grey on hiDPI, and `overlay`/`soft-light` collapse to IDENTITY
|
|
12
|
+
* against a near-white cream wash (L≈0.98) / near-black ink wash (the blends only
|
|
13
|
+
* bite mid-grey backdrops; the paper register lives on the poles). Measured std
|
|
14
|
+
* 0.02–0.86 — invisible by math.
|
|
15
|
+
*
|
|
16
|
+
* THE TEXTURE — `--paper-grain-tooth`: a COARSE anisotropic grey-RGB speckle
|
|
17
|
+
* (`baseFrequency='0.04 0.09'` = grain direction, 2 octaves), KEEP the RGB
|
|
18
|
+
* (`feColorMatrix saturate=0` → grey, never zero it), per-channel
|
|
19
|
+
* `feComponentTransfer` slope-1.8/intercept-(-0.4) CONTRAST-STRETCH (the
|
|
20
|
+
* letterpress bite) + `feFuncA slope=0 intercept=1` (FULL OPAQUE alpha — the
|
|
21
|
+
* grey speckle is painted straight, the blend carries the darken/lighten; NOT the
|
|
22
|
+
* lens-A luminance→alpha matrix that gives a near-empty texture). `<filter
|
|
23
|
+
* color-interpolation-filters='sRGB'>` pins sRGB (identical Chrome↔Safari,
|
|
24
|
+
* deterministic seed). NO `feBlend` mud op. Tile 140px (coarse tooth reads as
|
|
25
|
+
* STRUCTURE, survives hiDPI, divides cleanly DPR 1/2/3).
|
|
26
|
+
*
|
|
27
|
+
* THE BLEND LAW (the decisive, physically-true move): `multiply` (light — ink
|
|
28
|
+
* sinks into the paper's pits → darken) / `screen` (dark — fiber catches light →
|
|
29
|
+
* lighten). Baseline, sRGB-safe, identical both engines. Plain per-mode arms.
|
|
30
|
+
*
|
|
31
|
+
* THE ALPHA: `--paper-grain-opacity` re-calibrated to the JND floor (light 0.22 /
|
|
32
|
+
* dark 0.16 — glass-fx.css / dark-arm.css; the inversion the measurements force:
|
|
33
|
+
* multiply on cream is gentle → MORE, screen on ink bites hard → LESS).
|
|
34
|
+
*
|
|
35
|
+
* The LIBRARY FENCE: `--glass-grain-opacity` (0.025/0.045) is BYTE-UNTOUCHED — the
|
|
36
|
+
* calm glass identity stands; paper is loud, glass is a whisper. That separation
|
|
37
|
+
* IS the design.
|
|
10
38
|
*/
|
|
11
39
|
|
|
40
|
+
/* The ONE coarse-tooth texture — DRY single source, both utilities resolve it.
|
|
41
|
+
Painted onto a rect at full alpha (`feFuncA slope=0 intercept=1`); the
|
|
42
|
+
mix-blend-mode carries the visibility. sRGB-pinned, deterministic seed. */
|
|
43
|
+
:root {
|
|
44
|
+
--paper-grain-tooth: url("data:image/svg+xml,%3Csvg width='140' height='140' viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='t' x='0' y='0' width='100%25' height='100%25' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.04 0.09' numOctaves='2' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncR type='linear' slope='1.8' intercept='-0.4'/%3E%3CfeFuncG type='linear' slope='1.8' intercept='-0.4'/%3E%3CfeFuncB type='linear' slope='1.8' intercept='-0.4'/%3E%3CfeFuncA type='linear' slope='0' intercept='1'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23t)'/%3E%3C/svg%3E");
|
|
45
|
+
--paper-grain-tile: 140px;
|
|
46
|
+
}
|
|
47
|
+
|
|
12
48
|
@utility paper-underpaint {
|
|
13
49
|
position: fixed;
|
|
14
50
|
inset: 0;
|
|
15
51
|
z-index: -1;
|
|
16
52
|
pointer-events: none;
|
|
17
|
-
background-image:
|
|
53
|
+
background-image: var(--paper-grain-tooth);
|
|
18
54
|
background-repeat: repeat;
|
|
19
|
-
background-size:
|
|
20
|
-
opacity: var(--glass-grain-opacity);
|
|
55
|
+
background-size: var(--paper-grain-tile) var(--paper-grain-tile);
|
|
56
|
+
opacity: var(--paper-grain-opacity, var(--glass-grain-opacity));
|
|
57
|
+
/* LIGHT: ink sinks into the cream → multiply darkens the valleys. */
|
|
21
58
|
mix-blend-mode: multiply;
|
|
22
59
|
}
|
|
23
60
|
|
|
24
61
|
:where(.dark) .paper-underpaint,
|
|
25
62
|
.dark .paper-underpaint {
|
|
26
|
-
|
|
63
|
+
/* DARK: fiber catches light off the ink → screen lifts (NOT soft-light, which
|
|
64
|
+
collapses to identity on the near-black pole — the self-cancelling defect). */
|
|
65
|
+
mix-blend-mode: screen;
|
|
27
66
|
}
|
|
28
67
|
|
|
29
68
|
@utility paper-grain-overlay {
|
|
@@ -36,23 +75,200 @@
|
|
|
36
75
|
inset: 0;
|
|
37
76
|
border-radius: inherit;
|
|
38
77
|
pointer-events: none;
|
|
39
|
-
background-image:
|
|
78
|
+
background-image: var(--paper-grain-tooth);
|
|
40
79
|
background-repeat: repeat;
|
|
41
|
-
background-size:
|
|
42
|
-
opacity: var(--glass-grain-opacity);
|
|
43
|
-
|
|
80
|
+
background-size: var(--paper-grain-tile) var(--paper-grain-tile);
|
|
81
|
+
opacity: var(--paper-grain-opacity, var(--glass-grain-opacity));
|
|
82
|
+
/* LIGHT tooth: multiply — the physically-true ink-into-pits darken (NOT
|
|
83
|
+
overlay, which is identity on the L≈0.98 cream pole). */
|
|
84
|
+
mix-blend-mode: multiply;
|
|
44
85
|
}
|
|
45
86
|
}
|
|
46
87
|
|
|
47
88
|
:where(.dark) .paper-grain-overlay::after,
|
|
48
89
|
.dark .paper-grain-overlay::after {
|
|
49
|
-
|
|
90
|
+
/* DARK tooth: screen — fiber catches light off the ink (NOT soft-light). */
|
|
91
|
+
mix-blend-mode: screen;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* ═══════════════════════════════════════════════════════════════════════
|
|
95
|
+
BD.W-PAGE-FIELD / BD.W-GLASS-FIELD — the WARM COLORFUL FIELD register
|
|
96
|
+
───────────────────────────────────────────────────────────────────────
|
|
97
|
+
The single highest-leverage piece: it turns the gray storybook WARM. A
|
|
98
|
+
per-route four-layer technicolor CEL (amber key → terracotta mid → sand
|
|
99
|
+
bounce + a warm over-glaze toward the --glass-key corner) PLUS a wide
|
|
100
|
+
low-chroma BASE WASH that raises the floor everywhere, painted at FIELD
|
|
101
|
+
lightness (L 0.90-0.93 light / 0.28-0.34 dark — where the gamut admits
|
|
102
|
+
REAL chroma, NOT the gamut-bound L0.98 plate) OVER the decoupled
|
|
103
|
+
--neutral-0 floor (KEEP-NEUTRAL, untouched, never deleted).
|
|
104
|
+
|
|
105
|
+
ONE primitive, TWO acceptance floors (glass-floor ~0.012 composite-behind-
|
|
106
|
+
glass + field-floor 0.045 ground). The library glass material is BYTE-
|
|
107
|
+
UNTOUCHED — it finally has a backdrop worthy of it.
|
|
108
|
+
|
|
109
|
+
THE WARM-BOUND IS A PAINT INVARIANT: --field-h clamps the route's
|
|
110
|
+
--field-h-raw to [25,95] IN THE CSS calc, so an inline raw:210 CANNOT
|
|
111
|
+
paint teal/navy. The teal/navy purge is enforced at the paint layer.
|
|
112
|
+
|
|
113
|
+
OPT-IN: the warm stops only render under `[data-paper-field]` (the demo
|
|
114
|
+
chassis sets it per glass route) — the calm neutral underpaint stays the
|
|
115
|
+
default for solid-chrome routes; --neutral-0 stays decoupled + calm.
|
|
116
|
+
|
|
117
|
+
CROSS-ENGINE: pure compositor CSS — radial/conic-gradient + oklch() +
|
|
118
|
+
transform only. NO backdrop-filter:url, NO SVG goo, NO trig. oklch ≥ Safari
|
|
119
|
+
15.4, @property ≥ 16.4, gradients/transform forever. The WebKit premultiply-
|
|
120
|
+
toward-black desaturation hole is dodged: every warm 0-alpha stop is an
|
|
121
|
+
explicit `oklch(L C H / 0)` warm color, NEVER bare `transparent`.
|
|
122
|
+
═══════════════════════════════════════════════════════════════════════ */
|
|
123
|
+
|
|
124
|
+
/* The warm-bound: clamp the route's raw hue request to [25,95]. A DISTINCT
|
|
125
|
+
var (NOT self-referential `--field-h: max(var(--field-h),…)` which is a
|
|
126
|
+
no-op) — the route writes --field-h-raw, the field resolves --field-h.
|
|
127
|
+
Set on the field element itself so the clamp resolves even when the chassis
|
|
128
|
+
writes --field-h-raw on an ancestor. */
|
|
129
|
+
.paper-field {
|
|
130
|
+
--field-h: clamp(25, var(--field-h-raw, 62), 95);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* The warm-cel GROUND — a dedicated fixed plane the chassis mounts UNDER the
|
|
134
|
+
grain (the grain `.paper-underpaint` rides on top at its 0.22 multiply
|
|
135
|
+
opacity; the field paints true at full opacity / normal blend, so the grain
|
|
136
|
+
does NOT crush the pigment). ONE <PaperBackdrop field> component emits both,
|
|
137
|
+
stacked — one backdrop mount, grain on top, warm field below. */
|
|
138
|
+
.paper-field {
|
|
139
|
+
position: fixed;
|
|
140
|
+
inset: 0;
|
|
141
|
+
/* one step BELOW the grain underpaint (the chassis mounts the grain at
|
|
142
|
+
-z-10) so the grain rides ON TOP of the warm field — one backdrop, two
|
|
143
|
+
stacked planes. Still above the page floor (content is z 0+). */
|
|
144
|
+
z-index: -11;
|
|
145
|
+
pointer-events: none;
|
|
146
|
+
/* L4 warm over-glaze — a faint cel sheen brightest toward the upper-right
|
|
147
|
+
--glass-key corner (cel coherence: field + glass rim/cast share ONE key).
|
|
148
|
+
--glass-key is a KEYWORD (upper-right), so the glaze is positioned by a
|
|
149
|
+
fixed `at`/`from` matching it — NEVER a `-58deg`/keyword-as-angle bug. */
|
|
150
|
+
background:
|
|
151
|
+
conic-gradient(
|
|
152
|
+
from -45deg at 78% 22%,
|
|
153
|
+
oklch(0.96 0.05 calc(var(--field-h) + 6) / calc(0.30 * var(--field-intensity))),
|
|
154
|
+
oklch(0.96 0.05 calc(var(--field-h) + 6) / 0) 28%,
|
|
155
|
+
oklch(0.96 0.05 calc(var(--field-h) + 6) / 0) 72%,
|
|
156
|
+
oklch(0.96 0.05 calc(var(--field-h) + 6) / calc(0.18 * var(--field-intensity)))
|
|
157
|
+
),
|
|
158
|
+
/* the wide warm BASE WASH — raises the floor EVERYWHERE (no flat gap). */
|
|
159
|
+
radial-gradient(
|
|
160
|
+
120% 100% at 50% 50%,
|
|
161
|
+
oklch(0.91 0.075 calc(var(--field-h) + 8) / calc(0.50 * var(--field-intensity))),
|
|
162
|
+
oklch(0.91 0.075 calc(var(--field-h) + 8) / 0) 100%
|
|
163
|
+
),
|
|
164
|
+
/* L3 sand fill-light bounce (bottom-right). */
|
|
165
|
+
radial-gradient(
|
|
166
|
+
95% 80% at 80% 88%,
|
|
167
|
+
oklch(0.88 0.115 calc(var(--field-h) + 30) / calc(0.90 * var(--field-intensity))),
|
|
168
|
+
oklch(0.88 0.115 calc(var(--field-h) + 30) / 0) 70%
|
|
169
|
+
),
|
|
170
|
+
/* L2 terracotta saturated mid (right band, where the cards sit). */
|
|
171
|
+
radial-gradient(
|
|
172
|
+
95% 78% at 78% 30%,
|
|
173
|
+
oklch(0.85 0.145 calc(var(--field-h) - 24) / calc(0.90 * var(--field-intensity))),
|
|
174
|
+
oklch(0.85 0.145 calc(var(--field-h) - 24) / 0) 72%
|
|
175
|
+
),
|
|
176
|
+
/* L1 amber key mass (densest pigment, top-left toward the key-light). */
|
|
177
|
+
radial-gradient(
|
|
178
|
+
100% 84% at 24% 20%,
|
|
179
|
+
oklch(0.87 0.155 calc(var(--field-h)) / calc(0.95 * var(--field-intensity))),
|
|
180
|
+
oklch(0.87 0.155 calc(var(--field-h)) / 0) 75%
|
|
181
|
+
),
|
|
182
|
+
var(--neutral-0); /* L0 the KEEP-NEUTRAL solid floor — decoupled. */
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* DARK: warm-LUMINOUS — lower L, KEEP chroma; NEVER gray-charcoal. Plain
|
|
186
|
+
ancestor `.dark .x` (a scoped :global(.dark) silently drops; this is a
|
|
187
|
+
non-scoped global stylesheet so a plain `.dark` ancestor is correct). */
|
|
188
|
+
.dark .paper-field {
|
|
189
|
+
background:
|
|
190
|
+
conic-gradient(
|
|
191
|
+
from -45deg at 78% 22%,
|
|
192
|
+
oklch(0.42 0.05 calc(var(--field-h) + 6) / calc(0.30 * var(--field-intensity))),
|
|
193
|
+
oklch(0.42 0.05 calc(var(--field-h) + 6) / 0) 28%,
|
|
194
|
+
oklch(0.42 0.05 calc(var(--field-h) + 6) / 0) 72%,
|
|
195
|
+
oklch(0.42 0.05 calc(var(--field-h) + 6) / calc(0.18 * var(--field-intensity)))
|
|
196
|
+
),
|
|
197
|
+
radial-gradient(
|
|
198
|
+
120% 100% at 50% 50%,
|
|
199
|
+
oklch(0.30 0.055 calc(var(--field-h) + 8) / calc(0.50 * var(--field-intensity))),
|
|
200
|
+
oklch(0.30 0.055 calc(var(--field-h) + 8) / 0) 100%
|
|
201
|
+
),
|
|
202
|
+
radial-gradient(
|
|
203
|
+
95% 80% at 80% 88%,
|
|
204
|
+
oklch(0.34 0.085 calc(var(--field-h) + 30) / calc(0.90 * var(--field-intensity))),
|
|
205
|
+
oklch(0.34 0.085 calc(var(--field-h) + 30) / 0) 70%
|
|
206
|
+
),
|
|
207
|
+
radial-gradient(
|
|
208
|
+
95% 78% at 78% 30%,
|
|
209
|
+
oklch(0.33 0.10 calc(var(--field-h) - 24) / calc(0.90 * var(--field-intensity))),
|
|
210
|
+
oklch(0.33 0.10 calc(var(--field-h) - 24) / 0) 72%
|
|
211
|
+
),
|
|
212
|
+
radial-gradient(
|
|
213
|
+
100% 84% at 24% 20%,
|
|
214
|
+
oklch(0.36 0.11 calc(var(--field-h)) / calc(0.95 * var(--field-intensity))),
|
|
215
|
+
oklch(0.36 0.11 calc(var(--field-h)) / 0) 75%
|
|
216
|
+
),
|
|
217
|
+
var(--neutral-0);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* The CARTOON DRIFT — liquid-weight on the ground: anticipation (pull-back) →
|
|
221
|
+
arc sweep (translate + rotate on ONE curve) → follow-through overshoot, baked
|
|
222
|
+
by --ease-cartoon-punch (DEPEND on BD.W-CARTOON-PUNCH, no literal-cubic dup).
|
|
223
|
+
Rides a `::before` copy of the bg (the field plane has a FREE ::before, no
|
|
224
|
+
collision with the grain). The warm stops survive PRM; only the drift
|
|
225
|
+
freezes. */
|
|
226
|
+
.paper-field::before {
|
|
227
|
+
content: "";
|
|
228
|
+
position: absolute;
|
|
229
|
+
inset: -28%;
|
|
230
|
+
background: inherit;
|
|
231
|
+
opacity: 0.72;
|
|
232
|
+
pointer-events: none;
|
|
233
|
+
animation: field-cel-drift 42s
|
|
234
|
+
var(--ease-cartoon-punch, cubic-bezier(0.5, -0.2, 0.4, 1.2)) infinite
|
|
235
|
+
alternate;
|
|
236
|
+
will-change: transform;
|
|
237
|
+
content-visibility: auto;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@keyframes field-cel-drift {
|
|
241
|
+
/* independent translate:/scale:/rotate: LONGHANDS — a `transform: scale()`
|
|
242
|
+
shorthand would clobber the translate centering (build-trap e). */
|
|
243
|
+
from {
|
|
244
|
+
translate: -1.5% 1%;
|
|
245
|
+
scale: 1;
|
|
246
|
+
rotate: -1.2deg;
|
|
247
|
+
}
|
|
248
|
+
to {
|
|
249
|
+
translate: 2.5% -2.5%;
|
|
250
|
+
scale: 1.07;
|
|
251
|
+
rotate: 2.4deg;
|
|
252
|
+
}
|
|
50
253
|
}
|
|
51
254
|
|
|
52
255
|
/* ═══════════════════════════════════════════════
|
|
53
256
|
A11y — respect user motion + transparency preferences
|
|
54
257
|
═══════════════════════════════════════════════ */
|
|
258
|
+
@media (prefers-reduced-motion: reduce) {
|
|
259
|
+
/* the drift freezes — the warm field STAYS (it is content, not motion). */
|
|
260
|
+
.paper-field::before {
|
|
261
|
+
animation: none;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
55
265
|
@media (prefers-reduced-transparency: reduce) {
|
|
266
|
+
/* the warm stops drop to 0-alpha; the decoupled --neutral-0 floor shows
|
|
267
|
+
(the calm opaque legibility floor). The field is a transmissive
|
|
268
|
+
enhancement, NEVER a legibility dependency. */
|
|
269
|
+
.paper-field {
|
|
270
|
+
--field-intensity: 0;
|
|
271
|
+
}
|
|
56
272
|
.paper-underpaint,
|
|
57
273
|
.paper-grain-overlay::after {
|
|
58
274
|
opacity: 0;
|
|
@@ -19,9 +19,11 @@
|
|
|
19
19
|
* the implicit stagger [NO setTimeout], the spring-clocked
|
|
20
20
|
* coupled transform+opacity build).
|
|
21
21
|
* .scroll-pin — the fixed-stage-advances-time scroll-pinned register
|
|
22
|
-
* (position: sticky stage
|
|
23
|
-
*
|
|
24
|
-
* scroll
|
|
22
|
+
* (position: sticky stage; the stage's internal phases advance
|
|
23
|
+
* against a spring-damped `--pin-t` the keyframes.js scroll spine
|
|
24
|
+
* `useScrollPin` writes per scroll tick — EVERY engine, no
|
|
25
|
+
* `animation-timeline`. The dead `--gl-pin` named scroll-timeline
|
|
26
|
+
* is EXCISED — BD.W-SCROLL-LIQUID-ENGINE).
|
|
25
27
|
* .smooth-scroll — the native scroll-behavior: smooth opt-in (PRM-gated,
|
|
26
28
|
* zero runtime — a smooth-scroll under reduce is a vestibular
|
|
27
29
|
* concern, so the smooth interpolation is dropped under PRM).
|
|
@@ -31,9 +33,10 @@
|
|
|
31
33
|
* so under PRM no scroll/build animation attaches at all and content renders in
|
|
32
34
|
* its terminal state (the `from` keyframe never applies because the animation
|
|
33
35
|
* never binds; the .scroll-pin stage shows its terminal phase, no sweep). The
|
|
34
|
-
*
|
|
35
|
-
* gate so a non-supporting engine gets the STATIC layout
|
|
36
|
-
*
|
|
36
|
+
* `view()`-cascade recipe sits under a second `@supports (animation-timeline: …)`
|
|
37
|
+
* gate so a non-supporting engine gets the STATIC cascade layout. The .scroll-pin
|
|
38
|
+
* register needs NO `@supports` gate — its `--pin-t` is JS-written by `useScrollPin`
|
|
39
|
+
* on every engine; under PRM the composable zeroes the scrub (1:1, no drift).
|
|
37
40
|
*
|
|
38
41
|
* COMPOSITOR-ONLY (the proof:no-layout-animation floor BB.W-CARD-COMPOSITE): every
|
|
39
42
|
* @keyframes step + transition animates ONLY transform/translate/scale/opacity/
|
|
@@ -45,6 +48,39 @@
|
|
|
45
48
|
* register THREADS them, it never re-tunes a spring value or a duration).
|
|
46
49
|
*/
|
|
47
50
|
|
|
51
|
+
/* ─────────────────────────────────────────────────────────────────────────────
|
|
52
|
+
* BD.W-SCROLL-LIQUID-ENGINE — the liquid-weight scroll tokens.
|
|
53
|
+
*
|
|
54
|
+
* The `--ease-scroll-spring` is the compositor spring-scrub the cascade rides
|
|
55
|
+
* (ZERO JS). The pin-phase fractions are the calc-friendly window bounds the
|
|
56
|
+
* `--pin-t` recipes read (a NUMBER, not the `%` the dead `animation-range` used).
|
|
57
|
+
* All golden-proportioned (1/φ family). The liquid-weight scrub itself is a JS-side
|
|
58
|
+
* param of `useScrollScene`/`useScrollPin` (the φ-derived defaults live in the
|
|
59
|
+
* composables, PRM → 0 inside them). The cartoon-punch deps
|
|
60
|
+
* (`--motion-weight`/`--ease-cartoon-punch`/`--shadow-cartoon-md`) SHIP today and are
|
|
61
|
+
* consumed via `var(…, fallback)` so the recipes stay GREEN. */
|
|
62
|
+
:root {
|
|
63
|
+
/* The spring-shaped compositor cascade ease — the `--spring-gentle` twin
|
|
64
|
+
(ζ ≈ 0.85, a `springLinearStops` `linear()` stop-set). Degrades to the
|
|
65
|
+
no-overshoot `--ease-out` where `linear()` is unsupported (Safari < 17.2 —
|
|
66
|
+
the house precedent). `--spring-gentle` SHIPS (scheme-motion.css). */
|
|
67
|
+
--ease-scroll-spring: var(--spring-gentle, var(--ease-out, ease-out));
|
|
68
|
+
/* The pin reveal/expand windows as 0..1 fractions (the `--pin-t` recipes read
|
|
69
|
+
a NUMBER for the calc, not the `%` the dead timeline used). 1/φ² + 0.9. */
|
|
70
|
+
--scroll-pin-phase-reveal-end-frac: 0.382;
|
|
71
|
+
--scroll-pin-phase-expand-end-frac: 0.9;
|
|
72
|
+
/* The volume-preserving squash depth — 1 − 1/φ⁴. */
|
|
73
|
+
--scroll-pin-squash-floor: 0.944;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@supports not (animation-timing-function: linear(0, 1)) {
|
|
77
|
+
:root {
|
|
78
|
+
/* Where `linear()` is unsupported the spring twin cannot resolve — fall to
|
|
79
|
+
the no-overshoot settle bezier (a scrubbed spring without the stop-set). */
|
|
80
|
+
--ease-scroll-spring: var(--ease-out, ease-out);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
48
84
|
/* ─────────────────────────────────────────────────────────────────────────────
|
|
49
85
|
* .scroll-build — the route-enter page-build.
|
|
50
86
|
*
|
|
@@ -160,8 +196,15 @@
|
|
|
160
196
|
progress map (the spring shaping lives in the section's own settle
|
|
161
197
|
where the build is mount-driven; a scroll-bound timeline reads
|
|
162
198
|
1:1 with scroll position — a spring on a scrubbed timeline reads as
|
|
163
|
-
a scrubbed spring, which is correct here as the linear progress map).
|
|
164
|
-
|
|
199
|
+
a scrubbed spring, which is correct here as the linear progress map).
|
|
200
|
+
|
|
201
|
+
BD.W-SCROLL-LIQUID-ENGINE: the easing is the spring-shaped
|
|
202
|
+
`--ease-scroll-spring` (a `springLinearStops` `linear()` twin of
|
|
203
|
+
`--spring-gentle`, ζ ≈ 0.85) — each card's scroll-scrubbed entrance
|
|
204
|
+
reads with spring WEIGHT (a hair of overshoot at the end of its
|
|
205
|
+
range), ZERO JS (the platform carries it on the compositor). The
|
|
206
|
+
Safari-degrade-to-cel-slam arm lives in the entrance-reveal scope. */
|
|
207
|
+
animation: gl-cascade-build auto var(--ease-scroll-spring, linear) both;
|
|
165
208
|
animation-timeline: view(block);
|
|
166
209
|
animation-range: entry 0% entry var(--scroll-cascade-range-end, 45%);
|
|
167
210
|
}
|
|
@@ -202,83 +245,97 @@
|
|
|
202
245
|
}
|
|
203
246
|
|
|
204
247
|
/* ─────────────────────────────────────────────────────────────────────────────
|
|
205
|
-
* .scroll-pin — the fixed-stage-advances-time scroll-pinned register
|
|
248
|
+
* .scroll-pin — the fixed-stage-advances-time scroll-pinned register, RE-INVENTED
|
|
249
|
+
* on a JS-written `--pin-t` (BD.W-SCROLL-LIQUID-ENGINE).
|
|
250
|
+
*
|
|
251
|
+
* THE DEFECT (excised, no alias): the prior register bound the phase reveals to a
|
|
252
|
+
* named `scroll-timeline: --gl-pin` declared on `.scroll-pin` + `timeline-scope:
|
|
253
|
+
* --gl-pin`. A named scroll-timeline measures the DECLARING element's OWN scroll
|
|
254
|
+
* progress — but `.scroll-pin` is `overflow: visible` with zero internal scroll
|
|
255
|
+
* extent, so it is NOT a scroll port: `--gl-pin`'s `currentTime` was permanently
|
|
256
|
+
* `null` and the bound `gl-pin-reveal` animation parked at its `from` keyframe
|
|
257
|
+
* forever (dead on EVERY engine, including those that fully support the native
|
|
258
|
+
* feature — structural deadness, not a Safari degrade).
|
|
206
259
|
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
* `animation-range` phase windows — the Codrops phased sequence: a reveal phase
|
|
215
|
-
* 0..45%, an expand phase 45..90%, a settle phase 90..100%).
|
|
260
|
+
* THE FIX (every engine, no `animation-timeline`, no `@supports` gate): the stage
|
|
261
|
+
* is plain `position: sticky` + `contain: layout paint` (bounded recalc); the
|
|
262
|
+
* phases read a SPRING-DAMPED `--pin-t ∈ [0, 1]` that `useScrollPin` (the
|
|
263
|
+
* keyframes.js scroll spine — `SpringProgress` over the ONE `createScrollReader`)
|
|
264
|
+
* writes off the REAL scroll port per coalesced tick. The reveal arrives with
|
|
265
|
+
* inertia, overshoots (ζ ≈ 0.85), then settles — the cartoon-slam felt register.
|
|
266
|
+
* Works on Safari 15+ with no timeline primitive.
|
|
216
267
|
*
|
|
217
|
-
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* `timeline-scope` ships alongside `scroll()`/`view()` (the universal-support
|
|
222
|
-
* convergence), so the CSS-only register is the ship; the JS fallback leaf (mirror
|
|
223
|
-
* useScrollProgress's dual-path single-writer) is BOOKED only on a material
|
|
224
|
-
* engine-gap reveal (the §Triumvirate support-matrix trigger) — never a JS scroll
|
|
225
|
-
* lib (the no-net-dep fence is binding either way).
|
|
268
|
+
* Liquid weight is the DEFAULT here (the §L4 no-stiff-snap law): `useScrollPin`'s
|
|
269
|
+
* `SpringProgress` keeps converging AFTER the finger lifts. PRM zeroes the scrub
|
|
270
|
+
* (the pin scrub → 0 under reduce inside the composable) so `--pin-t` tracks
|
|
271
|
+
* scroll 1:1 with no interpolated drift — the vestibular floor.
|
|
226
272
|
* ─────────────────────────────────────────────────────────────────────────── */
|
|
227
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
228
|
-
@supports (animation-timeline: scroll()) and (timeline-scope: --gl-pin) {
|
|
229
|
-
@keyframes gl-pin-reveal {
|
|
230
|
-
from {
|
|
231
|
-
opacity: 0;
|
|
232
|
-
transform: translateY(var(--scroll-pin-lift, 2.5rem)) scale(0.96);
|
|
233
|
-
}
|
|
234
|
-
to {
|
|
235
|
-
opacity: 1;
|
|
236
|
-
transform: translateY(0) scale(1);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
@keyframes gl-pin-settle {
|
|
240
|
-
from {
|
|
241
|
-
transform: scale(1);
|
|
242
|
-
opacity: 1;
|
|
243
|
-
}
|
|
244
|
-
to {
|
|
245
|
-
/* The settle phase — a gentle compositor drift, never a layout move. */
|
|
246
|
-
transform: scale(1.02) translateY(calc(-1 * var(--scroll-pin-lift, 2.5rem)));
|
|
247
|
-
opacity: 1;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
273
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
274
|
+
/* The typed pin progress register — `inherits: true` so the sticky stage + the
|
|
275
|
+
phase children read the `--pin-t` written on the `.scroll-pin` container; a typed
|
|
276
|
+
`@property` makes the calc cheaper + lets an optional native cosmetic-parallax leg
|
|
277
|
+
composite it. Registered OUTSIDE the PRM gate (a custom property is inert — it only
|
|
278
|
+
drives motion through the recipes below, which ARE PRM-gated). */
|
|
279
|
+
@property --pin-t {
|
|
280
|
+
syntax: "<number>";
|
|
281
|
+
inherits: true;
|
|
282
|
+
initial-value: 0;
|
|
283
|
+
}
|
|
260
284
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
inset-block-start: 0;
|
|
266
|
-
}
|
|
285
|
+
.scroll-pin {
|
|
286
|
+
position: relative;
|
|
287
|
+
block-size: var(--scroll-pin-stage-height, 320vh);
|
|
288
|
+
}
|
|
267
289
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
290
|
+
.scroll-pin-stage {
|
|
291
|
+
position: sticky;
|
|
292
|
+
inset-block-start: 0;
|
|
293
|
+
/* Bounded main-thread recalc — the `--pin-t` write is a style recalc on this
|
|
294
|
+
isolated subtree, NOT a reflow (translate/scale/opacity don't reflow). */
|
|
295
|
+
contain: layout paint;
|
|
296
|
+
}
|
|
274
297
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
298
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
299
|
+
/* Phase 1 — the reveal. Reads `--pin-t` mapped across the reveal window
|
|
300
|
+
(0 .. --scroll-pin-phase-reveal-end-frac). The lift + squash ride the
|
|
301
|
+
compositor longhands (`translate`/`scale` — NEVER the `transform` shorthand,
|
|
302
|
+
which would fold a centering translate; the longhands stack independently).
|
|
303
|
+
The squash floor is volume-preserving (a hair of squash on entry). */
|
|
304
|
+
.scroll-pin-stage .scroll-pin-phase-reveal {
|
|
305
|
+
--t: clamp(
|
|
306
|
+
0,
|
|
307
|
+
calc(var(--pin-t, 0) / var(--scroll-pin-phase-reveal-end-frac, 0.382)),
|
|
308
|
+
1
|
|
309
|
+
);
|
|
310
|
+
opacity: var(--t);
|
|
311
|
+
translate: 0 calc((1 - var(--t)) * var(--scroll-pin-lift, 2.5rem));
|
|
312
|
+
scale: calc(
|
|
313
|
+
var(--scroll-pin-squash-floor, 0.944) +
|
|
314
|
+
(1 - var(--scroll-pin-squash-floor, 0.944)) * var(--t)
|
|
315
|
+
);
|
|
316
|
+
/* will-change scoped to the active phase — added while the pin is in range,
|
|
317
|
+
never the full 320vh lifetime (the audit's transient-promotion rule). */
|
|
318
|
+
will-change: transform, opacity;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/* Phase 2 — the settle/drift. Reads the reveal-end..expand-end window of
|
|
322
|
+
`--pin-t`; a gentle compositor drift as the reader continues past, never a
|
|
323
|
+
layout move. */
|
|
324
|
+
.scroll-pin-stage .scroll-pin-phase-settle {
|
|
325
|
+
--t: clamp(
|
|
326
|
+
0,
|
|
327
|
+
calc(
|
|
328
|
+
(var(--pin-t, 0) - var(--scroll-pin-phase-reveal-end-frac, 0.382)) /
|
|
329
|
+
(
|
|
330
|
+
var(--scroll-pin-phase-expand-end-frac, 0.9) -
|
|
331
|
+
var(--scroll-pin-phase-reveal-end-frac, 0.382)
|
|
332
|
+
)
|
|
333
|
+
),
|
|
334
|
+
1
|
|
335
|
+
);
|
|
336
|
+
opacity: 1;
|
|
337
|
+
translate: 0 calc(var(--t) * -1 * var(--scroll-pin-lift, 2.5rem));
|
|
338
|
+
scale: calc(1 + 0.02 * var(--t));
|
|
282
339
|
}
|
|
283
340
|
}
|
|
284
341
|
|