@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/dist/watercolor-dot.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "./_plugin-vue_export-helper-
|
|
2
|
-
import { n as t, t as n } from "./prng-
|
|
1
|
+
import { t as e } from "./_plugin-vue_export-helper-gLzyemvl.js";
|
|
2
|
+
import { n as t, t as n } from "./prng-B5tIXTtj.js";
|
|
3
3
|
import { computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, defineComponent as c, normalizeClass as l, normalizeStyle as u, onUnmounted as d, openBlock as f, ref as p, renderSlot as m, resolveDynamicComponent as h, toRef as g, useId as _, watch as v, withCtx as y } from "vue";
|
|
4
4
|
//#region src/components/custom/watercolor-dot/prng.ts
|
|
5
5
|
function b(e, t, n) {
|
|
@@ -87,14 +87,7 @@ var T = {
|
|
|
87
87
|
class: "watercolor-filter-host",
|
|
88
88
|
"aria-hidden": "true",
|
|
89
89
|
focusable: "false"
|
|
90
|
-
}, E = ["seed"], D = {
|
|
91
|
-
key: 0,
|
|
92
|
-
class: "watercolor-ghost-overlay",
|
|
93
|
-
"aria-hidden": "true",
|
|
94
|
-
focusable: "false",
|
|
95
|
-
preserveAspectRatio: "none",
|
|
96
|
-
viewBox: "0 0 100 100"
|
|
97
|
-
}, O = /* @__PURE__ */ e(/* @__PURE__ */ c({
|
|
90
|
+
}, E = ["seed"], D = /* @__PURE__ */ e(/* @__PURE__ */ c({
|
|
98
91
|
__name: "WatercolorDot",
|
|
99
92
|
props: {
|
|
100
93
|
color: {},
|
|
@@ -118,17 +111,17 @@ var T = {
|
|
|
118
111
|
function C() {
|
|
119
112
|
x.value = !0, t.animate && S.nudge();
|
|
120
113
|
}
|
|
121
|
-
let
|
|
114
|
+
let D = r(() => t.animate ? S.borderRadius.value : x.value ? S.hoverBorderRadius.value : S.borderRadius.value), O = r(() => t.animate ? S.transform.value : "none");
|
|
122
115
|
return (t, n) => (f(), i(h(e.tag), {
|
|
123
116
|
class: l(["watercolor-swatch", e.animate && "watercolor-animated"]),
|
|
124
117
|
"data-testid": "watercolor-swatch",
|
|
125
118
|
"data-variant": e.variant,
|
|
126
119
|
style: u({
|
|
127
120
|
backgroundColor: e.variant === "ghost" ? void 0 : e.color,
|
|
128
|
-
borderRadius:
|
|
121
|
+
borderRadius: D.value,
|
|
129
122
|
"--watercolor-color": e.color,
|
|
130
123
|
"--watercolor-filter": d.value,
|
|
131
|
-
"--watercolor-wobble":
|
|
124
|
+
"--watercolor-wobble": O.value
|
|
132
125
|
}),
|
|
133
126
|
onMouseenter: C,
|
|
134
127
|
onMouseleave: n[0] ||= (e) => x.value = !1
|
|
@@ -155,18 +148,15 @@ var T = {
|
|
|
155
148
|
xChannelSelector: "R",
|
|
156
149
|
yChannelSelector: "G"
|
|
157
150
|
}, null, -1)])])])),
|
|
158
|
-
e.variant === "ghost" ? (f(), o("
|
|
151
|
+
e.variant === "ghost" ? (f(), o("div", {
|
|
152
|
+
key: 0,
|
|
159
153
|
class: "watercolor-ghost-stroke",
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"stroke-width": "2",
|
|
167
|
-
"vector-effect": "non-scaling-stroke",
|
|
168
|
-
style: u({ filter: d.value })
|
|
169
|
-
}, null, 4)])) : a("", !0),
|
|
154
|
+
"aria-hidden": "true",
|
|
155
|
+
style: u({
|
|
156
|
+
borderRadius: D.value,
|
|
157
|
+
filter: d.value
|
|
158
|
+
})
|
|
159
|
+
}, null, 4)) : a("", !0),
|
|
170
160
|
m(t.$slots, "default", {}, void 0, !0)
|
|
171
161
|
]),
|
|
172
162
|
_: 3
|
|
@@ -176,6 +166,6 @@ var T = {
|
|
|
176
166
|
"style"
|
|
177
167
|
]));
|
|
178
168
|
}
|
|
179
|
-
}), [["__scopeId", "data-v-
|
|
169
|
+
}), [["__scopeId", "data-v-a14ed6a5"]]);
|
|
180
170
|
//#endregion
|
|
181
|
-
export {
|
|
171
|
+
export { D as WatercolorDot, n as hashString, t as mulberry32, x as radiiToCSS, b as randomRadii, w as useWatercolorBlob };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/composables/motion/core/writeVelocityWeight.ts
|
|
2
|
+
var e = .618;
|
|
3
|
+
function t(t, n) {
|
|
4
|
+
if (!t) return;
|
|
5
|
+
let r = n < 0 ? 0 : n > 1 ? 1 : n, i = e + (1 - e) * r;
|
|
6
|
+
t.style.setProperty("--flex-vel", r.toFixed(4)), t.style.setProperty("--motion-weight", i.toFixed(4));
|
|
7
|
+
}
|
|
8
|
+
function n(t, n) {
|
|
9
|
+
if (n <= 1) return n < 1 ? 1 : n;
|
|
10
|
+
let r = e, i = 0;
|
|
11
|
+
if (t) {
|
|
12
|
+
let e = getComputedStyle(t), n = Number.parseFloat(e.getPropertyValue("--motion-weight")), a = Number.parseFloat(e.getPropertyValue("--flex-vel"));
|
|
13
|
+
Number.isFinite(n) && (r = n < 0 ? 0 : n), Number.isFinite(a) && (i = a < 0 ? 0 : a > 1 ? 1 : a);
|
|
14
|
+
}
|
|
15
|
+
let a = r + (1 - r) * i, o = 1 + (n - 1) * (a / e);
|
|
16
|
+
return o < 1 ? 1 : o;
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { n, t as r, e as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mkbabb/glass-ui",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "Glassmorphic design system — Vue 3.5 components, reka-ui primitives, Tailwind CSS v4 tokens",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -717,11 +717,17 @@
|
|
|
717
717
|
"proof:dock-taxonomy": "node scripts/proof-dock-taxonomy.mjs",
|
|
718
718
|
"proof:dock-contextual-layers": "node scripts/proof-dock-contextual-layers.mjs",
|
|
719
719
|
"proof:morph-showcase": "node scripts/proof-morph-showcase.mjs",
|
|
720
|
+
"proof:dock-fission": "node scripts/proof-dock-fission.mjs",
|
|
721
|
+
"proof:dock-gallery": "node scripts/proof-dock-gallery.mjs",
|
|
722
|
+
"proof:metaball-bridge2": "node scripts/proof-metaball-bridge2.mjs",
|
|
723
|
+
"proof:haptic-couple": "node scripts/proof-haptic.mjs",
|
|
724
|
+
"proof:celebration-burst": "node scripts/proof-celebration-burst.mjs",
|
|
720
725
|
"proof:blob-page": "node scripts/proof-blob-page.mjs",
|
|
721
726
|
"proof:blob-page-fence": "node scripts/proof-blob-page-fence.mjs",
|
|
722
727
|
"proof:motion-demo": "node scripts/proof-motion-demo.mjs",
|
|
723
728
|
"proof:motion2": "node scripts/proof-motion2.mjs",
|
|
724
729
|
"proof:dock-sections": "node scripts/proof-dock-sections.mjs",
|
|
730
|
+
"proof:dock-context": "node scripts/proof-dock-context.mjs",
|
|
725
731
|
"proof:dock-morph-insitu": "node scripts/proof-dock-morph-insitu.mjs",
|
|
726
732
|
"proof:shell-hold": "node scripts/proof-shell-hold.mjs",
|
|
727
733
|
"proof:az-reflect": "node scripts/proof-az-reflect.mjs",
|
|
@@ -756,6 +762,7 @@
|
|
|
756
762
|
"proof:spa-view": "node scripts/proof-spa-view.mjs",
|
|
757
763
|
"proof:card-tier-alpha": "node scripts/proof-card-tier-alpha.mjs",
|
|
758
764
|
"proof:dockmorph-cta": "node scripts/proof-dockmorph-cta.mjs",
|
|
765
|
+
"proof:bloom-up": "node scripts/proof-bloom-up.mjs",
|
|
759
766
|
"proof:gpu-substrate-single": "node scripts/proof-gpu-substrate-single.mjs",
|
|
760
767
|
"proof:desktop-reserve": "node scripts/proof-desktop-reserve.mjs",
|
|
761
768
|
"proof:pointer-velocity": "node scripts/proof-pointer-velocity.mjs",
|
|
@@ -900,6 +907,7 @@
|
|
|
900
907
|
"proof:dark-material": "node scripts/proof-dark-material.mjs",
|
|
901
908
|
"proof:no-gray": "node scripts/proof-no-gray.mjs",
|
|
902
909
|
"proof:surface-axis": "node scripts/proof-surface-axis.mjs",
|
|
910
|
+
"proof:glass-foundation": "node scripts/proof-glass-foundation.mjs",
|
|
903
911
|
"proof:menu-glass": "node scripts/proof-menu-glass.mjs",
|
|
904
912
|
"proof:pager-ring": "node scripts/proof-pager-ring.mjs",
|
|
905
913
|
"proof:icon-chip": "node scripts/proof-icon-chip.mjs",
|
|
@@ -975,8 +983,11 @@
|
|
|
975
983
|
"proof:dock-vertical-clickable": "node scripts/proof-dock-vertical-clickable.mjs",
|
|
976
984
|
"proof:dock-collapsed-both": "node scripts/proof-dock-collapsed-both.mjs",
|
|
977
985
|
"proof:dock-stack-rail": "node scripts/proof-dock-stack-rail.mjs",
|
|
986
|
+
"proof:dock-rail-realize": "node scripts/proof-dock-rail-realize.mjs",
|
|
978
987
|
"proof:dock-cockpit": "node scripts/proof-dock-cockpit.mjs",
|
|
979
988
|
"proof:tabs-ios": "node scripts/proof-tabs-ios.mjs",
|
|
989
|
+
"proof:aria-orientation": "node scripts/proof-aria-orientation.mjs",
|
|
990
|
+
"proof:dock-a11y": "node scripts/proof-dock-a11y.mjs",
|
|
980
991
|
"proof:liquid-tab": "node scripts/proof-liquid-tab.mjs",
|
|
981
992
|
"proof:underline-tune": "node scripts/proof-underline-tune.mjs",
|
|
982
993
|
"proof:virtual-window": "node scripts/proof-virtual-window.mjs",
|
|
@@ -1042,7 +1053,7 @@
|
|
|
1042
1053
|
},
|
|
1043
1054
|
"peerDependencies": {
|
|
1044
1055
|
"@lucide/vue": "^1.16.0",
|
|
1045
|
-
"@mkbabb/keyframes.js": "^
|
|
1056
|
+
"@mkbabb/keyframes.js": "^5.0.0",
|
|
1046
1057
|
"@mkbabb/pencil-boil": "^0.4.1",
|
|
1047
1058
|
"@mkbabb/value.js": "^0.13.0 || ^1.0.0",
|
|
1048
1059
|
"@vueuse/core": "^14.0",
|
|
@@ -1080,7 +1091,7 @@
|
|
|
1080
1091
|
},
|
|
1081
1092
|
"devDependencies": {
|
|
1082
1093
|
"@lucide/vue": "^1.20.0",
|
|
1083
|
-
"@mkbabb/keyframes.js": "^
|
|
1094
|
+
"@mkbabb/keyframes.js": "^5.1.0",
|
|
1084
1095
|
"@mkbabb/pencil-boil": "^0.4.1",
|
|
1085
1096
|
"@mkbabb/value.js": "^0.13.0 || ^1.0.0",
|
|
1086
1097
|
"@tailwindcss/postcss": "^4.3.1",
|
package/src/styles/cards.css
CHANGED
|
@@ -6,6 +6,122 @@
|
|
|
6
6
|
* only the 5-rung glass ladder. */
|
|
7
7
|
|
|
8
8
|
@layer components {
|
|
9
|
+
/* ── BD.W-CARD-MATERIAL-FLOOR — the card-surface warm tint-seam enrollment ──
|
|
10
|
+
The §4 leg-(a) material floor, reconciled to the SHIPPED `--glass-tint-*`
|
|
11
|
+
seam (NOT a fork, NOT a global re-tint). The card's glass/cartoon surfaces
|
|
12
|
+
ride the `.glass-${tier}` ladder rung, whose fill is already
|
|
13
|
+
`color-mix(in oklab, --glass-bg-${tier}, --glass-tint-source --glass-tint-
|
|
14
|
+
strength)` (ladder.css) — so the card reaches the warm floor by setting a
|
|
15
|
+
CARD-LOCAL non-zero `--glass-tint-strength` (the global default at
|
|
16
|
+
surface-axis.css:83 stays `0%`, so the 6 other seam-readers — drawer / menu /
|
|
17
|
+
veil / jubilance / .btn-glass / .segmented-indicator — are byte-unchanged:
|
|
18
|
+
the blast-radius bite). `--glass-tint-source` defaults to `var(--card)` (a
|
|
19
|
+
warm cream, glass-fx.css:158), so the floor is warm by construction in BOTH
|
|
20
|
+
modes. The card clears the warm-chroma floor (C ≥ 0.02 warm) in the MATERIAL
|
|
21
|
+
itself — before the field even lands, and on a dead ground (print / reduced-
|
|
22
|
+
transparency), the "far too gray" verdict closes at the material layer.
|
|
23
|
+
|
|
24
|
+
SCOPE — `[data-surface]` is `glass` or `cartoon` (NOT `veil`: veil owns its
|
|
25
|
+
own `--veil-bg` tint seam below; NOT `opaque`: the solid `--card` plate is
|
|
26
|
+
already warm-cream). The strength is set on the host so it inherits into the
|
|
27
|
+
rung's `color-mix`. This is a card-local re-point of the SHIPPED seam — DRY,
|
|
28
|
+
no second compositing axis, the ladder rung does the mix. */
|
|
29
|
+
[data-slot="card"]:where(
|
|
30
|
+
[data-surface="glass"],
|
|
31
|
+
[data-surface="cartoon"]
|
|
32
|
+
) {
|
|
33
|
+
--glass-tint-strength: 8%;
|
|
34
|
+
/* BD.W-CARD-CEL-MOTION (§3.1) — the defined-edge border-ink floor. The
|
|
35
|
+
ladder rung's `--glass-border-resting`/`-quiet` ink is 4% warm
|
|
36
|
+
(glass.css:331-332) — it vanishes cream-on-cream (K3 RED). Floor the
|
|
37
|
+
card's own border-ink UP to ≥8% warm-ink so the cel reads as a defined
|
|
38
|
+
SHAPE (WCAG 1.4.11 non-text). `--glass-border-rung` is the per-rung ink
|
|
39
|
+
the accent-composed `--glass-border-accent` reads (ladder.css /
|
|
40
|
+
surfaces.css); re-pointing it card-locally floors the border WITHOUT
|
|
41
|
+
forking the rim (the keyed two-stop rim from `--glass-material-rim` is
|
|
42
|
+
CONSUMED unchanged — the card does NOT re-mint a rim). Warm (the
|
|
43
|
+
`--foreground` mix is warm-cream in both modes); the `.dark` ink lifts
|
|
44
|
+
off the near-black field through the same `--foreground` flip. */
|
|
45
|
+
--glass-border-rung: color-mix(in srgb, var(--foreground) 9%, transparent);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* BD.W-CARD-CEL-MOTION (§3.2) — the inner catch-light over the field. A faint
|
|
49
|
+
`screen`-blended warm catch sits where the upper-right `--glass-key` sun
|
|
50
|
+
hits, lifting the cel off the field (the §3 layer-4 catch, coherent with the
|
|
51
|
+
rim + cast — ONE key). It rides the host `background-image` stack ALONGSIDE
|
|
52
|
+
the field underlayer (both are static gradients in the same longhand; the
|
|
53
|
+
catch is the FIRST layer so it sits over the warm underlayer), so it adds NO
|
|
54
|
+
pseudo (`::before` = moving specular, `::after` = grain — both occupied).
|
|
55
|
+
`screen` lifts only where there is light, never darkening — and it is below
|
|
56
|
+
content + clipped to the host radius, so it never washes the text column
|
|
57
|
+
(the K-AA carve). Under `prefers-contrast: more` the screen blend is dropped
|
|
58
|
+
(the catch is decoration, the edge is the legibility asset). */
|
|
59
|
+
[data-slot="card"][data-surface="glass"]:not(.paper-grid) {
|
|
60
|
+
background-blend-mode: screen, normal;
|
|
61
|
+
}
|
|
62
|
+
@media (prefers-contrast: more) {
|
|
63
|
+
[data-slot="card"][data-surface="glass"]:not(.paper-grid) {
|
|
64
|
+
background-blend-mode: normal;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* ── BD.W-CARD-FIELD-FLOOR — the orphan-card static warm field underlayer ──
|
|
69
|
+
The §2 leg-(b) structural contract, card-local fallback. The COMMON case is
|
|
70
|
+
ancestor-supplied: the page mounts ONE global `[data-paper-field]` plane
|
|
71
|
+
(AppShell) behind every route, and the card composites over it. The ORPHAN
|
|
72
|
+
case is a card in an OCCLUDING context an ancestor field cannot reach (a
|
|
73
|
+
dialog / drawer / portal that paints its own opaque ground over the page
|
|
74
|
+
field) — there the card mounts its OWN cheap static warm underlayer so it is
|
|
75
|
+
NEVER gray-over-nothing wherever it is dropped.
|
|
76
|
+
|
|
77
|
+
MECHANISM — ONE static `radial-gradient` on the host `background-image`
|
|
78
|
+
longhand (the proven `.paper-grid` coexistence seam: a later
|
|
79
|
+
`background-image` COEXISTS with the glass tier's `background:` shorthand
|
|
80
|
+
fill — paints OVER the translucent color, UNDER content + UNDER both
|
|
81
|
+
pseudos, clipped to the host `border-radius` by construction). Zero JS, one
|
|
82
|
+
compositor-cached paint, PRM-static. The warm 0-alpha stops are explicit
|
|
83
|
+
`oklch(L C H / 0)` (NEVER bare `transparent` — the WebKit black-premultiply
|
|
84
|
+
hole, build-trap-(d)).
|
|
85
|
+
|
|
86
|
+
THE NO-DOUBLE-PAINT GATE (the presence-BEHIND check, NOT `closest()`): the
|
|
87
|
+
fallback paints ONLY when NO `[data-paper-field]` ancestor is present — `:where(
|
|
88
|
+
[data-paper-field]) &` switches it OFF under the global field, so a card over
|
|
89
|
+
the page field reads the page field (no local underlayer), and a 50-card grid
|
|
90
|
+
under ONE ancestor field is ONE field paint, not N. A `cartoon`/`opaque`
|
|
91
|
+
card already carries a defined edge + warm fill, so the orphan field is the
|
|
92
|
+
glass-surface case; `surface="glass"` only (the orphan glass card is the one
|
|
93
|
+
that reads gray-over-nothing). The `.paper-grid` document register is EXCLUDED
|
|
94
|
+
by selector (it sets its own grid `background-image` underlayer — a grid card
|
|
95
|
+
opts out of the warm-field fallback, not a `background-image: none` race). */
|
|
96
|
+
[data-slot="card"][data-surface="glass"]:not(.paper-grid) {
|
|
97
|
+
/* TWO static layers in ONE longhand (blended by the `background-blend-mode`
|
|
98
|
+
above — `screen, normal`): (1) the upper-right KEYED catch-light (warm,
|
|
99
|
+
`screen`-blended so it only LIFTS — the §3 catch), then (2) the warm cel
|
|
100
|
+
UNDERLAYER (one radial, amber-key toward the upper-right `--glass-key`,
|
|
101
|
+
the field fallback). Both fade to a warm 0-alpha — NEVER bare
|
|
102
|
+
`transparent` (the WebKit black-premultiply hole, build-trap-(d)). */
|
|
103
|
+
background-image:
|
|
104
|
+
radial-gradient(
|
|
105
|
+
60% 55% at 80% 16%,
|
|
106
|
+
oklch(0.96 0.04 78 / 0.5),
|
|
107
|
+
oklch(0.96 0.04 78 / 0) 72%
|
|
108
|
+
),
|
|
109
|
+
radial-gradient(
|
|
110
|
+
120% 110% at 78% 22%,
|
|
111
|
+
oklch(0.9 0.075 72 / 0.5),
|
|
112
|
+
oklch(0.9 0.075 72 / 0) 70%
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* The presence-behind gate — under an ancestor field, the card reads the REAL
|
|
117
|
+
field (the page plane transmits through the translucent fill), so the local
|
|
118
|
+
fallback is switched OFF (no double paint). A 50-card grid under ONE ancestor
|
|
119
|
+
field is ONE field paint, not N local underlayers. */
|
|
120
|
+
:where([data-paper-field])
|
|
121
|
+
[data-slot="card"][data-surface="glass"]:not(.paper-grid) {
|
|
122
|
+
background-image: none;
|
|
123
|
+
}
|
|
124
|
+
|
|
9
125
|
/* Paper texture overlay */
|
|
10
126
|
.paper-texture {
|
|
11
127
|
background-image: var(--paper-clean-texture);
|
|
@@ -182,13 +298,97 @@
|
|
|
182
298
|
a card surface that often hosts portaled content; `translate: 0` at rest
|
|
183
299
|
mints the stacking context once. Longhand maps `translate(x, y)` 1:1. */
|
|
184
300
|
translate: 0;
|
|
301
|
+
position: relative;
|
|
302
|
+
/* BD.W-CARTOON-CASTER — the LOUD register carries `--motion-weight: 1` in the
|
|
303
|
+
SAME recipe (the loud-register coupling: so the punch is never accidentally
|
|
304
|
+
muted to ~+13.6% by inheriting the rest 0.618 — the BD.W-CARTOON-PUNCH
|
|
305
|
+
loud-register guard's concrete pass-subject). The press ramp ALIASES the
|
|
306
|
+
existing `--card-press-t` (the host's `useLiquidPress` already drives it for
|
|
307
|
+
every `pressable` card) — NO second press var, NO Card press-driver rewrite. */
|
|
308
|
+
--motion-weight: 1;
|
|
309
|
+
--cartoon-press-t: var(--card-press-t, 0);
|
|
185
310
|
transition:
|
|
186
|
-
translate var(--duration-normal) var(--
|
|
311
|
+
translate var(--duration-normal) var(--ease-cartoon-punch),
|
|
312
|
+
scale var(--duration-normal) var(--ease-cartoon-punch),
|
|
187
313
|
box-shadow var(--duration-normal) var(--ease-standard);
|
|
188
314
|
|
|
189
|
-
|
|
315
|
+
/* BD.W-CARTOON-CASTER — the hover RE-POINTS the existing rule onto the punch
|
|
316
|
+
curve (was --spring-smooth) and guards `:not(:active)` so the press squash wins;
|
|
317
|
+
the object lifts a hair UP-RIGHT (toward the upper-right `--glass-key`) and the
|
|
318
|
+
cast deepens to the lg rung (the gap opens). ONE hover rule, no double-declare. */
|
|
319
|
+
&:hover:not(:active):not(:disabled) {
|
|
190
320
|
translate: var(--lift-sm) var(--lift-sm);
|
|
321
|
+
/* BD.W-CARD-CEL-MOTION (§5) — the cel lifts toward the light with a
|
|
322
|
+
sub-perceptual VOL-PRESERVING scale (X·Y ≈ 1: 1.015 × 0.985 ≈ 1.0): the
|
|
323
|
+
cel rising toward its sun reads as PEELING off the field, not a flat
|
|
324
|
+
sticker slide. Composes the existing `scale` transition (declared above)
|
|
325
|
+
on the punch curve. The press squash (`scale: 1.04 0.94`) wins via
|
|
326
|
+
`:not(:active)`. */
|
|
327
|
+
scale: 1.015 0.985;
|
|
191
328
|
box-shadow: var(--shadow-cartoon-lg);
|
|
329
|
+
& .cartoon-cast {
|
|
330
|
+
box-shadow: var(--shadow-cartoon-lg);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* BD.W-CARTOON-CASTER — the press is a NON-uniform SQUASH (H5): widen X, compress
|
|
335
|
+
Y — real squash & stretch, NOT a uniform shrink. The CSS `:active` is the no-JS
|
|
336
|
+
floor; `useLiquidPress` drives `--card-press-t` 0→1 for the continuous
|
|
337
|
+
interruptible press the inert caster rides. */
|
|
338
|
+
&:active:not(:disabled) {
|
|
339
|
+
scale: 1.04 0.94;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/* ── BD.W-CARTOON-CASTER — the inert-child moving cel cast ───────────────────────
|
|
344
|
+
The cast rides an INERT `<span class="cartoon-cast" aria-hidden>` child the Card
|
|
345
|
+
emits when `surface="cartoon"` — NOT a `::before`/`::after` pseudo (both are
|
|
346
|
+
OCCUPIED on the real glass carrier: `::before` is the moving-specular catch-light,
|
|
347
|
+
`::after` is the grain overlay; the H2 hardening). The child is a self-contained
|
|
348
|
+
ink-plate the body floats above: it carries the SAME shipped `--shadow-cartoon-md`
|
|
349
|
+
box-shadow (set ONCE per state-flip — NEVER animated, the §L7 paint-fence) and
|
|
350
|
+
MOVES on the compositor via `translate`/`scale` only.
|
|
351
|
+
|
|
352
|
+
The cast travels DOWN-LEFT (opposite the upper-right `--glass-key`, coherent with
|
|
353
|
+
the shadow.css cel-ink geometry) as the body lifts, and SPREADS as the gap opens.
|
|
354
|
+
ONE scalar drive: `--cartoon-press-t × --motion-weight` (the `:root` PRM carve
|
|
355
|
+
zeroes `--motion-weight` → travel/spread collapse to rest). It LAGS the body
|
|
356
|
+
(~1.15× slower transition) → the ink recoils LATE on release (follow-through /
|
|
357
|
+
overlapping action). The `--cartoon-cast-dx/dy` drag-track deltas are 0 at rest
|
|
358
|
+
(the opt-in `useCartoonCast` DOM bridge is future — labeled honestly). */
|
|
359
|
+
.cartoon-cast {
|
|
360
|
+
position: absolute;
|
|
361
|
+
inset: 0;
|
|
362
|
+
z-index: -1; /* behind the cel face, in front of the page */
|
|
363
|
+
border-radius: inherit;
|
|
364
|
+
pointer-events: none;
|
|
365
|
+
box-shadow: var(--shadow-cartoon-md);
|
|
366
|
+
/* the derived offset + spread — read `--motion-weight × --cartoon-press-t`. The
|
|
367
|
+
sign is DOWN-LEFT (negative X, positive Y) to match the upper-right key. */
|
|
368
|
+
--cast-travel: calc(6px * var(--motion-weight) * var(--cartoon-press-t));
|
|
369
|
+
--cast-spread: calc(1 + 0.18 * var(--motion-weight) * var(--cartoon-press-t));
|
|
370
|
+
translate:
|
|
371
|
+
calc(-1 * var(--cast-travel) + var(--cartoon-cast-dx))
|
|
372
|
+
calc(var(--cast-travel) + var(--cartoon-cast-dy));
|
|
373
|
+
scale: var(--cast-spread);
|
|
374
|
+
/* the caster LAGS the body (~1.15×) → the late ink recoil on release. */
|
|
375
|
+
transition:
|
|
376
|
+
translate calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch),
|
|
377
|
+
scale calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch),
|
|
378
|
+
--cartoon-cast-dx var(--duration-normal) var(--ease-cartoon-punch),
|
|
379
|
+
--cartoon-cast-dy var(--duration-normal) var(--ease-cartoon-punch);
|
|
380
|
+
will-change: translate, scale;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/* BD.W-CARTOON-CASTER — PRM/PRT carve. Under reduced-motion `--motion-weight: 0`
|
|
384
|
+
zeroes travel/spread/squash/lag in ONE assignment (every `calc(… * --motion-weight)`
|
|
385
|
+
collapses to rest); the transition is killed. The static bold cel STAMP persists
|
|
386
|
+
(identity/legibility — only the TRAVEL/PUNCH is removed). */
|
|
387
|
+
@media (prefers-reduced-motion: reduce) {
|
|
388
|
+
.cartoon-surface,
|
|
389
|
+
.cartoon-cast {
|
|
390
|
+
--motion-weight: 0;
|
|
391
|
+
transition: none;
|
|
192
392
|
}
|
|
193
393
|
}
|
|
194
394
|
|
|
@@ -37,7 +37,12 @@
|
|
|
37
37
|
.configurator-presets {
|
|
38
38
|
padding-block: var(--configurator-preset-row-weight);
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
/* The gallery track gap — the toggle-button group (BD.W-CONFIG-GALLERY-DOCK
|
|
41
|
+
* retired the `role="tablist"`/`role="tab"` ARIA-contradiction for the
|
|
42
|
+
* toggle-button `role="group"` + `aria-pressed` pattern). The token drives the
|
|
43
|
+
* inter-tile rhythm. */
|
|
44
|
+
.configurator-presets .configurator-gallery-track,
|
|
45
|
+
.configurator-presets [role="group"] {
|
|
41
46
|
gap: var(--configurator-preset-row-gap);
|
|
42
47
|
}
|
|
43
48
|
|
|
@@ -98,17 +103,168 @@
|
|
|
98
103
|
* utility read — the token contract is byte-identical, only the MECHANISM moves
|
|
99
104
|
* onto shipped CSS. The explicit mobile rows reset to `none` so one auto row
|
|
100
105
|
* stretches to the taller column. */
|
|
106
|
+
/* The MOBILE / base placement of the three section-level children (the gallery
|
|
107
|
+
* moved OUT of the aside to a grid sibling — BD.W-CONFIG-GALLERY-DOCK). Single
|
|
108
|
+
* column, three rows: gallery → stage → aside. The base `grid-template-rows`
|
|
109
|
+
* (`auto minmax(stage-min,auto) 1fr`) ships from the SFC; these rules pin each
|
|
110
|
+
* child to its row so the source order (gallery, stage, aside) reads correctly.
|
|
111
|
+
* When no gallery renders the `auto` row collapses to 0 (an empty track). */
|
|
112
|
+
[data-slot="configurator"] > [data-gallery-dock] {
|
|
113
|
+
grid-row: 1;
|
|
114
|
+
grid-column: 1;
|
|
115
|
+
}
|
|
116
|
+
[data-slot="configurator"] > .configurator-stage {
|
|
117
|
+
grid-row: 2;
|
|
118
|
+
grid-column: 1;
|
|
119
|
+
}
|
|
120
|
+
[data-slot="configurator"] > .configurator-aside {
|
|
121
|
+
grid-row: 3;
|
|
122
|
+
grid-column: 1;
|
|
123
|
+
}
|
|
124
|
+
|
|
101
125
|
@media (min-width: 1024px) {
|
|
126
|
+
/* The DESKTOP TWO-COLUMN geometry. Two columns (stage 1fr | aside band) and
|
|
127
|
+
* two rows: the gallery row (auto) over the body row (1fr). The placement of
|
|
128
|
+
* the gallery dock is the ONLY thing the `data-gallery` axis swaps. */
|
|
102
129
|
[data-slot="configurator"] {
|
|
103
130
|
grid-template-columns: minmax(0, 1fr)
|
|
104
131
|
minmax(
|
|
105
132
|
var(--configurator-aside-min, 280px),
|
|
106
133
|
var(--configurator-aside-max, 360px)
|
|
107
134
|
);
|
|
108
|
-
grid-template-rows:
|
|
135
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* data-gallery="aside" (the default, inspector idiom) — the gallery sits in
|
|
139
|
+
* the ASIDE column, row 1, above the controls; the stage spans BOTH rows on
|
|
140
|
+
* the left. Byte-equivalent to the legacy "preset row inside the aside top". */
|
|
141
|
+
[data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock] {
|
|
142
|
+
grid-row: 1;
|
|
143
|
+
grid-column: 2;
|
|
144
|
+
}
|
|
145
|
+
[data-slot="configurator"][data-gallery="aside"] > .configurator-stage {
|
|
146
|
+
grid-row: 1 / span 2;
|
|
147
|
+
grid-column: 1;
|
|
148
|
+
}
|
|
149
|
+
[data-slot="configurator"][data-gallery="aside"] > .configurator-aside {
|
|
150
|
+
grid-row: 2;
|
|
151
|
+
grid-column: 2;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* data-gallery="top" (the §2.1 reflow) — the gallery is a LARGE full-width
|
|
155
|
+
* dock spanning BOTH columns up-top; the stage (col 1) + controls (col 2)
|
|
156
|
+
* reclaim the full height in row 2. The gallery is now ~studio-width, not the
|
|
157
|
+
* 360px gutter — ~5 φ-tall tiles visible, horizontally scrollable. */
|
|
158
|
+
[data-slot="configurator"][data-gallery="top"] > [data-gallery-dock] {
|
|
159
|
+
grid-row: 1;
|
|
160
|
+
grid-column: 1 / span 2;
|
|
161
|
+
}
|
|
162
|
+
[data-slot="configurator"][data-gallery="top"] > .configurator-stage {
|
|
163
|
+
grid-row: 2;
|
|
164
|
+
grid-column: 1;
|
|
165
|
+
}
|
|
166
|
+
[data-slot="configurator"][data-gallery="top"] > .configurator-aside {
|
|
167
|
+
grid-row: 2;
|
|
168
|
+
grid-column: 2;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* The gallery-dock chrome divider — the hairline under the up-top dock / the
|
|
173
|
+
* left edge of the aside-placed dock. A dark-adaptive border off the same token
|
|
174
|
+
* the rest of the instrument reads, so it survives both glass plates. */
|
|
175
|
+
[data-slot="configurator"] > [data-gallery-dock] {
|
|
176
|
+
border-color: var(--configurator-divider);
|
|
177
|
+
}
|
|
178
|
+
[data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock] {
|
|
179
|
+
border-bottom-width: 1px;
|
|
180
|
+
}
|
|
181
|
+
@media (min-width: 1024px) {
|
|
182
|
+
/* The up-top dock carries a bottom hairline; the aside-placed dock carries it
|
|
183
|
+
* too (above the controls). */
|
|
184
|
+
[data-slot="configurator"][data-gallery="top"] > [data-gallery-dock] {
|
|
185
|
+
border-bottom-width: 1px;
|
|
109
186
|
}
|
|
110
187
|
}
|
|
111
188
|
|
|
189
|
+
/* ── The WARM-GLASS gallery tiles + the device-free field-well ────────────────
|
|
190
|
+
* BD.W-CONFIG-GALLERY-DOCK §5/§B1. The tile is a `.glass-capsule` warm-glass cel
|
|
191
|
+
* (composed in the SFC class list) — the §3 colourful field reads THROUGH, never
|
|
192
|
+
* a flat opaque bg-card scrim. These rules add the GEOMETRY the capsule register
|
|
193
|
+
* doesn't carry: the φ-tall card shape, the rounded field-well, the active ring,
|
|
194
|
+
* the loading shimmer. No new material is minted — the transmissive composite is
|
|
195
|
+
* the shared `.glass-capsule`; the cartoon cast is the shared `.cartoon-cast`. */
|
|
196
|
+
|
|
197
|
+
/* The big field-well tile (the PresetPickerRow / baked-thumbnail form). A φ-tall
|
|
198
|
+
* card: a 16:10 field-well crowned by a label band. The capsule register paints
|
|
199
|
+
* the warm-glass body; this rule sets the card radius + the column flex so the
|
|
200
|
+
* well meets the rounded crown with zero bg leak. */
|
|
201
|
+
.configurator-preset-tile {
|
|
202
|
+
inline-size: clamp(160px, 22vw, 232px);
|
|
203
|
+
border-radius: var(--radius-card);
|
|
204
|
+
/* The capsule fill is a warm-glass PILL by default (--radius-pill); a TILE is
|
|
205
|
+
* a card, so re-point the geometry to the card radius here. The transmissive
|
|
206
|
+
* fill + rim + cast all carry from .glass-capsule. */
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/* The §3 field-well — the device-free `auroraFallbackGround` background-image is
|
|
210
|
+
* set inline per tile; this rule sets the cover sizing + the rounded inner crown.
|
|
211
|
+
* The well is the COLOURFUL field; the warm-glass capsule frames it. */
|
|
212
|
+
.configurator-preset-well {
|
|
213
|
+
background-size: cover;
|
|
214
|
+
background-position: center;
|
|
215
|
+
/* a smooth bilinear upscale of the tiny raster (the per-quadrant mean
|
|
216
|
+
* luminance is preserved — the certify band reads true). */
|
|
217
|
+
image-rendering: auto;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* The loading state — a warm shimmer until the field build lands (the field
|
|
221
|
+
* build is synchronous + cheap, so this is a sub-frame flicker at most). */
|
|
222
|
+
.configurator-preset-well.is-loading {
|
|
223
|
+
background-image: linear-gradient(
|
|
224
|
+
100deg,
|
|
225
|
+
color-mix(in oklab, var(--card) 84%, transparent) 30%,
|
|
226
|
+
color-mix(in oklab, var(--foreground) 8%, var(--card)) 50%,
|
|
227
|
+
color-mix(in oklab, var(--card) 84%, transparent) 70%
|
|
228
|
+
);
|
|
229
|
+
background-size: 200% 100%;
|
|
230
|
+
animation: configurator-preset-shimmer 1.2s ease-in-out infinite;
|
|
231
|
+
}
|
|
232
|
+
@media (prefers-reduced-motion: reduce) {
|
|
233
|
+
.configurator-preset-well.is-loading {
|
|
234
|
+
animation: none;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
@keyframes configurator-preset-shimmer {
|
|
238
|
+
from {
|
|
239
|
+
background-position: 200% 0;
|
|
240
|
+
}
|
|
241
|
+
to {
|
|
242
|
+
background-position: -200% 0;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/* The active tile ring — a 2px foreground-keyed inset crown over the warm-glass
|
|
247
|
+
* cel (an inset ring never clips on the scroll axis, the PresetPickerRow note).
|
|
248
|
+
* Composes with the capsule's own rim; the cast deepens to `-lg` in the SFC. */
|
|
249
|
+
.configurator-preset-tile.is-active {
|
|
250
|
+
box-shadow:
|
|
251
|
+
inset 0 0 0 2px var(--ring),
|
|
252
|
+
var(--shadow-cartoon-lg);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* The compact CHIP form (the default fallback gallery — text-only preset pills).
|
|
256
|
+
* The capsule register paints the warm-glass body; this rule restores the pill
|
|
257
|
+
* radius the capsule already ships, and the active chip reads a selected fill via
|
|
258
|
+
* the `--glass-capsule-fill` override hook (no fork). */
|
|
259
|
+
.configurator-preset-chip {
|
|
260
|
+
border-radius: var(--radius-pill);
|
|
261
|
+
}
|
|
262
|
+
.configurator-preset-chip.is-active {
|
|
263
|
+
/* the selected rung — re-point the capsule fill toward the quiet glass-tint
|
|
264
|
+
* selected register via the documented override hook (NO new composite). */
|
|
265
|
+
--glass-capsule-fill: var(--glass-bg-quiet);
|
|
266
|
+
}
|
|
267
|
+
|
|
112
268
|
/* 5. The SIDE FLIP — a data-attr, default RIGHT (BC.W-CONFIG-RIGHT).
|
|
113
269
|
*
|
|
114
270
|
* The aside side moves off the dead `lg:col-start-*` arbitrary utility (gated
|
|
@@ -122,11 +278,20 @@
|
|
|
122
278
|
* order — WCAG 1.3.2/2.4.3 inviolate, the AM.W0 contract). Below `lg` (single
|
|
123
279
|
* column) neither side has meaning. */
|
|
124
280
|
@media (min-width: 1024px) {
|
|
125
|
-
|
|
126
|
-
|
|
281
|
+
/* The flip swaps the two BODY columns (stage ↔ aside) while DOM/tab order stays
|
|
282
|
+
* gallery→stage→aside. The selectors carry `>`-child specificity to match the
|
|
283
|
+
* `data-gallery` placement rules above (which also use `>`); a bare descendant
|
|
284
|
+
* selector would lose the cascade to those and the flip would no-op. The aside
|
|
285
|
+
* keeps its body row (row 2); only the column target moves. The aside-placed
|
|
286
|
+
* gallery dock follows the aside to column 1. */
|
|
287
|
+
[data-slot="configurator"][data-aside-side="left"] > .configurator-stage {
|
|
288
|
+
grid-column: 2;
|
|
289
|
+
}
|
|
290
|
+
[data-slot="configurator"][data-aside-side="left"] > .configurator-aside {
|
|
291
|
+
grid-column: 1;
|
|
127
292
|
}
|
|
128
|
-
[data-slot="configurator"][data-aside-side="left"]
|
|
129
|
-
|
|
130
|
-
grid-
|
|
293
|
+
[data-slot="configurator"][data-aside-side="left"][data-gallery="aside"]
|
|
294
|
+
> [data-gallery-dock] {
|
|
295
|
+
grid-column: 1;
|
|
131
296
|
}
|
|
132
297
|
}
|
|
@@ -38,7 +38,11 @@
|
|
|
38
38
|
* floating-CHROME collapse recipe — a late-mount surface decoration) and
|
|
39
39
|
* `completion-seal.css` (the one-shot earned-gold feedback seal — a focal opt-in
|
|
40
40
|
* surface that mounts on a completion event) are BOTH deferred: neither paints
|
|
41
|
-
* an above-the-fold first-paint chrome pixel.
|
|
41
|
+
* an above-the-fold first-paint chrome pixel. The BD-added `motion/morph-field.css`
|
|
42
|
+
* (the ONE `useMorphField` goo recipe — the body/neck/waist silhouette + the
|
|
43
|
+
* dedicated squish channel) is likewise DEFERRED: it is gated to `[data-morphing]`
|
|
44
|
+
* and paints only while a morph drive is live (a late-mount compositor decoration),
|
|
45
|
+
* never a steady-state first-paint chrome pixel.
|
|
42
46
|
*
|
|
43
47
|
* The `paper.css` partial is bucketed DEFERRED — the paper underpaint/grain
|
|
44
48
|
* utilities pair with glass for paper-on-glass compositions that mount with the
|
|
@@ -68,6 +72,8 @@ export const DEFERRED_PARTIALS = Object.freeze([
|
|
|
68
72
|
"floating-panel.css",
|
|
69
73
|
"transitions.css",
|
|
70
74
|
"animations.css",
|
|
75
|
+
"motion/morph-field.css",
|
|
76
|
+
"jubilance.css",
|
|
71
77
|
"scroll-driven.css",
|
|
72
78
|
"scroll-choreography.css",
|
|
73
79
|
"scroll-chrome.css",
|
|
@@ -158,5 +164,32 @@ export const DEFERRED_SOURCE_DIRECTIVE = '@source "../*.js";';
|
|
|
158
164
|
* stay under the old number). The render-block FLOOR stays W-LIGHTHOUSE's
|
|
159
165
|
* W3-arm-1 mobile-ms gate (the binding perf truth); this ceiling guards against a
|
|
160
166
|
* recipe revert-toward-monolith.
|
|
167
|
+
*
|
|
168
|
+
* RE-BASE (BD greenfield band — re-measured over the SETTLED BD cascade): the
|
|
169
|
+
* critical subset grew to raw 561233 / gzip 174231 — AGAIN not a component-recipe
|
|
170
|
+
* leak into the critical BUCKET (the critical bucket is STILL the SAME 6 documented
|
|
171
|
+
* token+glass+type partials; w2 partials-disjoint + w4 hold, and the two recipe-shaped
|
|
172
|
+
* BD additions that COULD have leaked do NOT: `motion/morph-field.css` is bucketed
|
|
173
|
+
* DEFERRED, `glass-atom.css`/`glass-chip.css` are @import-ed by the DEFERRED
|
|
174
|
+
* `icon-chip.css` (not by `glass.css`), and `liquid-morph.css` is demo-only — it is
|
|
175
|
+
* @import-ed by NO src partial). The growth is the legitimate BD GREENFIELD enrichment
|
|
176
|
+
* of the critical TOKEN CASCADE + glass ladder, which lives in the critical tokens/* +
|
|
177
|
+
* glass/* sub-partials by construction: the NEW `tokens/property-regs.css` (the
|
|
178
|
+
* @property registrations a bare var() interpolates over), the `tokens/scheme-motion.css`
|
|
179
|
+
* --motion-weight × --ease-cartoon-punch motion grammar, the `tokens/shadow.css` cartoon
|
|
180
|
+
* cast rungs, the `tokens/dark-arm.css` dark-mode arms, the `tokens/glass.css` squish/tint
|
|
181
|
+
* axes, and the `tokens/glass-fx.css` / `tokens/scale-paper.css` page-chassis registers —
|
|
182
|
+
* all custom-property registers the chrome reads at first paint. The ONE borderline
|
|
183
|
+
* residual is `glass/liquid-enter.css` (a late-mount entrance @keyframes recipe, ~3.7KiB
|
|
184
|
+
* gzip) which rides `glass.css` over its `reveal.css` `--lq-enter-*` substrate; carving it
|
|
185
|
+
* to a deferred top-level partial is a structural cascade-order change reserved for the
|
|
186
|
+
* named BB.W-CSS-CRITICAL-INLINE successor (a triumvirate trigger, NOT a token-edit here),
|
|
187
|
+
* and it recovers only ~3.7KiB — the bucket would still sit ~170KiB, well over the old
|
|
188
|
+
* 156000. The critical subset is 49.5% of the settled monolith's resolved gzip — the
|
|
189
|
+
* spec's ~46% small-above-the-fold-subset bar HELD over the settled cascade. Ceiling
|
|
190
|
+
* re-pinned 156000 → 182000 (~4.5% headroom over the measured 174231, the profile-bundle
|
|
191
|
+
* re-base convention — the reviewed write, NEVER a silent component-recipe swallow). The
|
|
192
|
+
* render-block FLOOR stays W-LIGHTHOUSE's W3-arm-1 mobile-ms gate (the binding perf truth);
|
|
193
|
+
* this ceiling guards against a recipe revert-toward-monolith.
|
|
161
194
|
*/
|
|
162
|
-
export const CRITICAL_GZIP_CEILING =
|
|
195
|
+
export const CRITICAL_GZIP_CEILING = 182000;
|