@mkbabb/glass-ui 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/CardAction-CW7a0m8M.js +253 -0
- package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-DvZNQ_HF.js} +4 -4
- package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
- package/dist/{ContextMenuContent-ON3x7cuk.js → ContextMenuContent-uWnVxDab.js} +1 -1
- package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
- package/dist/{DataTable-C464Zbqd.js → DataTable-CuKwF7wr.js} +4 -4
- package/dist/{DialogContent-DDE6pQBU.js → DialogContent-DcKK8k9i.js} +5 -5
- package/dist/{DialogFooter-8eZbdmPc.js → DialogFooter-BZNX5aVr.js} +3 -3
- package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DI6hQhT9.js} +1 -1
- package/dist/{HoverCardContent-DkMaQzH5.js → HoverCardContent-b2uaAMRR.js} +1 -1
- package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-CbqbNwgU.js} +2 -2
- package/dist/{IconChip-BDw1j5mu.js → IconChip-BTD-nay5.js} +3 -2
- package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-Bl8gFZ8d.js} +1 -1
- package/dist/{Input-DVG_J0ne.js → Input-h9v5LeXf.js} +1 -1
- package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-VUwexFUf.js +43 -0
- package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
- package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
- package/dist/{Progress-hAT4gqGH.js → Progress-DctG61iZ.js} +4 -4
- package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-yOpBzFYq.js} +2 -2
- package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-CrA8F0iV.js} +18 -19
- package/dist/Toaster-Bw4xR8xV.js +274 -0
- package/dist/{ToggleGroupItem-Dzk9hWsF.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
- package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +8 -3
- package/dist/api/types-extra.d.ts +6 -0
- package/dist/aurora.js +885 -242
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +106 -0
- package/dist/{button-BNDWhAZb.js → button-DYCUa-tH.js} +71 -26
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +2 -2
- package/dist/carousel.js +93 -110
- package/dist/collapsible.js +1 -1
- package/dist/command.js +1 -1
- package/dist/compile-CQEFRTmx.js +19 -0
- package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
- package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
- package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +2 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -12
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
- package/dist/components/custom/aurora/index.d.ts +2 -1
- package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
- package/dist/components/custom/border-progress/constants.d.ts +59 -0
- package/dist/components/custom/border-progress/index.d.ts +4 -0
- package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
- package/dist/components/custom/concentric/constants.d.ts +43 -0
- package/dist/components/custom/concentric/index.d.ts +5 -0
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
- package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
- package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
- package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
- package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
- package/dist/components/custom/easing/constants.d.ts +28 -0
- package/dist/components/custom/easing/index.d.ts +3 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +12 -2
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
- package/dist/components/custom/fourier-field/constants.d.ts +7 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
- package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
- package/dist/components/custom/icon-chip/types.d.ts +11 -1
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
- package/dist/components/custom/spa-view/index.d.ts +2 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +10 -0
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +1 -1
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/badge/index.d.ts +1 -1
- package/dist/components/ui/button/Button.vue.d.ts +5 -2
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/card/Card.vue.d.ts +34 -4
- package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
- package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
- package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
- package/dist/components/ui/card/index.d.ts +2 -0
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
- package/dist/components/ui/command/Command.vue.d.ts +1 -1
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
- package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
- package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
- package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
- package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
- package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
- package/dist/components/ui/drawer/constants.d.ts +45 -0
- package/dist/components/ui/drawer/index.d.ts +23 -15
- package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
- package/dist/components/ui/focus-scope/index.d.ts +2 -0
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
- package/dist/components/ui/toast/use-toast.d.ts +14 -0
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
- package/dist/composables/glass/index.d.ts +5 -2
- package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
- package/dist/composables/glass/vSpecular.d.ts +2 -0
- package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
- package/dist/composables/glass/webgpu/index.d.ts +2 -0
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +4 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
- package/dist/composables/motion/useDragMorph.d.ts +77 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
- package/dist/composables/motion/useLiquidPress.d.ts +71 -0
- package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
- package/dist/composables/motion/useNumericTransition.d.ts +3 -3
- package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
- package/dist/concentric.d.ts +1 -0
- package/dist/concentric.js +562 -0
- package/dist/configurator.js +3 -2
- package/dist/confirm-dialog.js +22 -24
- package/dist/constellation.js +11 -11
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +1 -1
- package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +564 -457
- package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
- package/dist/dom.js +5 -5
- package/dist/dot-flow-field.d.ts +1 -0
- package/dist/dot-flow-field.js +604 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +380 -0
- package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-CofSZuk8.js} +14 -15
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.d.ts +1 -0
- package/dist/easing.js +463 -0
- package/dist/expandable-container.js +7 -4
- package/dist/fading-scroll.js +1 -1
- package/dist/focus-scope.d.ts +1 -0
- package/dist/focus-scope.js +23 -0
- package/dist/forms.js +7 -7
- package/dist/fourier-field.js +128 -116
- package/dist/fourier-math.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +149 -341
- package/dist/goo-blob.js +830 -224
- package/dist/handmark.js +2 -2
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-chip.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/instrument-chassis.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +6 -6
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +4 -8
- package/dist/motion-core.js +36 -36
- package/dist/motion-curves.js +1 -1
- package/dist/motion.js +157 -55
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{compile-EXXzEr1q.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
- package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +9 -11
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CquRYOAw.js → sheet-tZMg0E0w.js} +5 -5
- package/dist/sheet.js +1 -1
- package/dist/{slider-DQ95MET2.js → slider-DVb4HXU-.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/spa-view.d.ts +1 -0
- package/dist/spa-view.js +46 -0
- package/dist/styles/animations.css +33 -9
- package/dist/styles/border-progress.css +109 -0
- package/dist/styles/cards.css +76 -0
- package/dist/styles/components.css +1 -1
- package/dist/styles/critical-partition.mjs +140 -0
- package/dist/styles/critical.css +12 -0
- package/dist/styles/deferred.css +31 -0
- package/dist/styles/dock/density.css +45 -0
- package/dist/styles/dock/layers.css +54 -30
- package/dist/styles/dock/morph.css +124 -7
- package/dist/styles/dock/overflow.css +16 -2
- package/dist/styles/dock/shell.css +54 -16
- package/dist/styles/dock.css +32 -0
- package/dist/styles/drawer.css +81 -35
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +87 -31
- package/dist/styles/glass/material.css +78 -15
- package/dist/styles/glass/reveal.css +136 -0
- package/dist/styles/glass/rim.css +100 -0
- package/dist/styles/glass/surfaces.css +101 -3
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +3 -0
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +77 -15
- package/dist/styles/index.css +21 -9
- package/dist/styles/instrument-chassis.css +66 -3
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/segmented-tabs.css +31 -0
- package/dist/styles/theme/bridges.css +11 -0
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +6 -1
- package/dist/styles/tokens/dark-arm.css +98 -26
- package/dist/styles/tokens/glass-deep.css +75 -0
- package/dist/styles/tokens/glass-fx.css +333 -0
- package/dist/styles/tokens/glass.css +39 -319
- package/dist/styles/tokens/light-dark.css +15 -2
- package/dist/styles/tokens/offsets.css +116 -0
- package/dist/styles/tokens/on-glass-fg.css +39 -0
- package/dist/styles/tokens/property-regs.css +127 -0
- package/dist/styles/tokens/scale-paper.css +117 -89
- package/dist/styles/tokens/scheme-motion.css +70 -32
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
- package/dist/styles/tokens.css +9 -3
- package/dist/styles/typography/semantic.css +8 -8
- package/dist/styles/typography/utilities.css +22 -7
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +255 -0
- package/dist/styles/utilities/base.css +47 -261
- package/dist/styles/utilities/btn.css +3 -1
- package/dist/styles/utilities/metal.css +189 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/switch.js +1 -1
- package/dist/tabs.js +220 -107
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
- package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
- package/dist/useDragMorph-DgxnsVJz.js +102 -0
- package/dist/useLiquidPress-kfb4KX79.js +39 -0
- package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-q1amq1SJ.js +71 -0
- package/dist/useSpringPress-BsqPr7FJ.js +34 -0
- package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/vSpecular-CQFmLNzA.js +68 -0
- package/dist/vendor-CKmzio-i.js +226 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +126 -22
- package/src/styles/animations.css +33 -9
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +76 -0
- package/src/styles/critical-partition.mjs +140 -0
- package/src/styles/dock/density.css +45 -0
- package/src/styles/dock/layers.css +54 -30
- package/src/styles/dock/morph.css +124 -7
- package/src/styles/dock/overflow.css +16 -2
- package/src/styles/dock/shell.css +54 -16
- package/src/styles/dock.css +32 -0
- package/src/styles/drawer.css +81 -35
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +87 -31
- package/src/styles/glass/material.css +78 -15
- package/src/styles/glass/reveal.css +136 -0
- package/src/styles/glass/rim.css +100 -0
- package/src/styles/glass/surfaces.css +101 -3
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +3 -0
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +77 -15
- package/src/styles/index.css +12 -0
- package/src/styles/instrument-chassis.css +66 -3
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/segmented-tabs.css +31 -0
- package/src/styles/theme/bridges.css +11 -0
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +6 -1
- package/src/styles/tokens/dark-arm.css +98 -26
- package/src/styles/tokens/glass-deep.css +75 -0
- package/src/styles/tokens/glass-fx.css +333 -0
- package/src/styles/tokens/glass.css +39 -319
- package/src/styles/tokens/light-dark.css +15 -2
- package/src/styles/tokens/offsets.css +116 -0
- package/src/styles/tokens/on-glass-fg.css +39 -0
- package/src/styles/tokens/property-regs.css +127 -0
- package/src/styles/tokens/scale-paper.css +117 -89
- package/src/styles/tokens/scheme-motion.css +70 -32
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
- package/src/styles/tokens.css +9 -3
- package/src/styles/typography/semantic.css +8 -8
- package/src/styles/typography/utilities.css +22 -7
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +255 -0
- package/src/styles/utilities/base.css +47 -261
- package/src/styles/utilities/btn.css +3 -1
- package/src/styles/utilities/metal.css +189 -0
- package/src/styles/utilities.css +14 -7
- package/dist/CardAction-XH4YBVEK.js +0 -158
- package/dist/Notification-DKjKsQq8.js +0 -100
- package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
- package/dist/Toaster-Bm_HQSpc.js +0 -263
- package/dist/check-njhk-vfu.js +0 -7
- package/dist/chevron-down-DKkxb4VV.js +0 -7
- package/dist/chevron-right-CPXbqQQz.js +0 -7
- package/dist/chevron-up-n_24SqI-.js +0 -7
- package/dist/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-kiIlun8I.js +0 -303
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CvopqiFr.js +0 -108
- package/dist/useViewTransition-COsPjQVZ.js +0 -47
- package/dist/x-BUwTKe50.js +0 -10
- /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
- /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
- /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-DwwjicPY.js} +0 -0
- /package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-DXswVdRz.js} +0 -0
- /package/dist/{Separator-BArl4OaB.js → Separator-pKF0oA4M.js} +0 -0
- /package/dist/{Switch-Dr--uLGH.js → Switch-CwYNf8bo.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{math-DeuJwLFx.js → math-BINYmg5z.js} +0 -0
- /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
- /package/dist/{prng-Cg22zv8g.js → prng-Za0Rmgag.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
- /package/dist/{springPresets-WXaLbu8u.js → springPresets-CFQGQfdl.js} +0 -0
- /package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-BfUq2bUM.js} +0 -0
- /package/dist/{useInterval-CNdua40W.js → useInterval-CvK1mL92.js} +0 -0
- /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-mZPMiNXh.js} +0 -0
- /package/dist/{useRAFLoop-CdwJ7284.js → useRAFLoop-UYa4zoiN.js} +0 -0
- /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useSortable-BVqlJRBR.js → useSortable-DHjtZSEd.js} +0 -0
- /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
- /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-CWEi25hf.js} +0 -0
- /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
- /package/dist/{vReveal-D9k0jADx.js → vReveal-Czsb7zQC.js} +0 -0
|
@@ -1,59 +1,111 @@
|
|
|
1
|
-
/*
|
|
2
|
-
*
|
|
3
|
-
*
|
|
1
|
+
/* BB.W-LENSING — the #glass-refract edge-lensing SVG filter, EVOLVED off the
|
|
2
|
+
* AW.W23 crude-radial garnish onto the real squircle bevel-profile + the typed
|
|
3
|
+
* `--glass-refract` axis driving the animatable displacement `scale` (the press
|
|
4
|
+
* lens-swell). Shipped as a library asset so `.glass-lens` works OUT OF THE BOX
|
|
5
|
+
* (no consumer hand-mounts a filter node).
|
|
4
6
|
*
|
|
5
|
-
* The refraction recipe is the canonical 3-primitive graph (kube.io /
|
|
7
|
+
* The refraction recipe is the canonical 3-primitive graph (kube.io / ekino /
|
|
6
8
|
* LogRocket, 2025):
|
|
7
9
|
*
|
|
8
|
-
* feImage —
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* feImage — the displacement map computed from the convex-squircle
|
|
11
|
+
* surface profile f(x) = ⁴√(1 − (1 − x)⁴) (Apple's preferred
|
|
12
|
+
* corner curve) via Snell's law (n₁ = 1 air, n₂ = 1.5 glass).
|
|
13
|
+
* The map's R channel carries the x-shift and G the y-shift
|
|
14
|
+
* (neutral 128 = no shift). The squircle slope is near-flat past
|
|
15
|
+
* the outer ~14% band and STEEP at the rim, so the bend
|
|
16
|
+
* CONCENTRATES at the edge (thin interior) — the iOS edge-lensing
|
|
17
|
+
* read, NOT a uniform radial bulge (the retired AW.W23 placeholder).
|
|
18
|
+
* Encoding: TWO crossed linear gradients — a HORIZONTAL gradient
|
|
19
|
+
* drives the R channel (255 @0% → 128 across the flat interior →
|
|
20
|
+
* 0 @100%, the squircle ramp held in the bevel band) and a VERTICAL
|
|
21
|
+
* gradient drives the G channel the same way — SCREEN-composited
|
|
22
|
+
* over a black base so each channel carries its own axis EXACTLY
|
|
23
|
+
* (`screen(C, 0) = C`; the displacement map reads only R/G, B unused).
|
|
24
|
+
* The map carries ZERO color (the warm-cream identity HOLDS —
|
|
25
|
+
* refraction is DEPTH not hue). The asset is baked ONCE (the
|
|
26
|
+
* squircle CURVE is fixed, the Apple-preferred profile); only the
|
|
27
|
+
* `scale` param animates the magnitude (scope 2 — no map re-bake).
|
|
16
28
|
* feDisplacementMap— displaces the backdrop by the baked map (R = x-shift,
|
|
17
|
-
* G = y-shift, `scale` = max px
|
|
18
|
-
* feImage specular — a soft top-left specular highlight
|
|
19
|
-
*
|
|
20
|
-
*
|
|
29
|
+
* G = y-shift, `scale` = max px the `--glass-refract` axis drives).
|
|
30
|
+
* feImage specular — a soft warm top-left specular highlight (PRESERVED from HEAD —
|
|
31
|
+
* the polished-glass catch).
|
|
32
|
+
* feBlend screen — blended `screen` over the displaced backdrop.
|
|
21
33
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
34
|
+
* DDR-LENS-BAKE — the displacement `scale` is a BAKED LITERAL (`scale='28'`, the §10
|
|
35
|
+
* default depth), NOT a var()-driven axis. WHY (the reversal of BB.W-LENSING scope 2):
|
|
36
|
+
* the scope-2 design split the filter across `var(--…head) var(--glass-refract) var(--…tail)`
|
|
37
|
+
* to splice the typed `@property --glass-refract` value between a head ending `…scale='`
|
|
38
|
+
* and a tail beginning `'…`. That construction is doubly broken, proven on the real edge
|
|
39
|
+
* (Chromium, playwright):
|
|
40
|
+
* (1) PARSE — head/tail each carry a COMPLETE `url(…)`, so the composite is the three
|
|
41
|
+
* tokens `url("…") 28 url("…")`, which a `backdrop-filter` REJECTS. The lens
|
|
42
|
+
* computed-`backdrop-filter: none` — it never rendered. (A var() inside a single
|
|
43
|
+
* url() STRING token is not re-tokenised by the engine either — tested — so there
|
|
44
|
+
* is no CSS-legal path to a dynamic `scale` inside one self-contained data-URI.)
|
|
45
|
+
* (2) BUNDLER — the tail `url("'…")` starts with a bare quote, so a consumer's CSS
|
|
46
|
+
* url()-rewriter (vite/postcss) reads it as a relative asset path and fails
|
|
47
|
+
* `ENOENT: open ''`, breaking EVERY bundler-based consumer.
|
|
48
|
+
* The fix: ONE complete, valid `url("data:…scale='28'…")` token. A `data:` URI is the
|
|
49
|
+
* single form that both PARSES as a filter value AND is skipped by the url()-rewriter
|
|
50
|
+
* (the rewriter only resolves non-data/non-#/non-http content as a file). RE-LITIGATE-IF
|
|
51
|
+
* the platform ships a way to substitute a value into a url() string token (then the
|
|
52
|
+
* press-swell `scale` animation could return). TRADEOFF: the per-instance `:active`
|
|
53
|
+
* lens-swell (28→44 `scale` on press) is dropped — but it was already inert (it animated
|
|
54
|
+
* a value that reached no rendering filter), so the lived read is UNCHANGED (and the lens
|
|
55
|
+
* now actually renders). The `@property --glass-refract` reg + `--glass-refract-swell`
|
|
56
|
+
* knob are retired with it. The bevel-band width is the `--glass-refract-bevel` knob
|
|
57
|
+
* (default 14% — the iOS edge band); the baked stops fix the squircle CURVE, the knob
|
|
58
|
+
* documents the rim concentration the map encodes.
|
|
27
59
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
60
|
+
* The filter ships INLINE as a data-URI in the `backdrop-filter` declaration, so the
|
|
61
|
+
* consumer gets it with zero markup. `backdrop-filter: url(#…)` is Chromium-only (WebKit
|
|
62
|
+
* bug 245510 open, Firefox not shipping), so the whole decl sits behind
|
|
63
|
+
* `@supports (backdrop-filter: url(#…))`; a non-supporting engine paints the un-gated blur
|
|
64
|
+
* base alone (no broken `url()` reference — the no-workaround degrade floor, PRESERVED).
|
|
65
|
+
*
|
|
66
|
+
* CLASS RENAME (BB.W-LENSING scope 5 — clean break, no alias, BB inv-7). The AW.W23
|
|
67
|
+
* `.glass-refract` opt-in class is RENAMED to `.glass-lens` (the §2 vocabulary); the
|
|
68
|
+
* `--glass-refract*` AXIS/token names are KEPT (the lens magnitude is the refraction
|
|
69
|
+
* axis). Consumers (`<Button :liquid>`, the demo witness) compose `.glass-lens`. The
|
|
70
|
+
* rename is the only public-surface delta (MIGRATION.md row). The garnish stays PE-only
|
|
71
|
+
* over the blur base; it is NEVER promoted to the card/primitive substrate
|
|
72
|
+
* (feDisplacementMap is resize-expensive — only the `scale` param animates without
|
|
73
|
+
* rebuilding the map).
|
|
37
74
|
*/
|
|
38
75
|
|
|
39
76
|
@layer components {
|
|
40
|
-
/* The shipped filter graph as
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
77
|
+
/* The shipped filter graph as ONE self-contained data-URI SVG (`scale='28'` baked,
|
|
78
|
+
DDR-LENS-BAKE). A single `url("data:…")` token is the only form that PARSES as a
|
|
79
|
+
`backdrop-filter` value AND survives a consumer bundler's url()-rewrite (a `data:`
|
|
80
|
+
URI is skipped; any other `url("…")` content is mis-resolved as a file). The
|
|
81
|
+
`#glass-refract` id is resolvable in-document (the data-URI is self-contained). */
|
|
82
|
+
.glass-lens {
|
|
83
|
+
/* The bevel-band width the squircle map encodes (the iOS edge concentration).
|
|
84
|
+
Documents the rim thickness the baked stops fix; a consumer reads it to tune
|
|
85
|
+
the perceived rim band on a successor re-bake. */
|
|
86
|
+
--glass-refract-bevel: 14%;
|
|
87
|
+
|
|
88
|
+
/* The shipped filter — ONE complete, valid `url("data:…")` token carrying the
|
|
89
|
+
whole 3-primitive graph with the `scale='28'` baked in (the §10 default depth,
|
|
90
|
+
DDR-LENS-BAKE). A single self-contained `data:` URI is (a) the ONLY form that
|
|
91
|
+
PARSES as a `backdrop-filter` value — the prior var()-spliced head/tail emitted
|
|
92
|
+
`url("…") <n> url("…")`, three tokens a `backdrop-filter` rejects, so the lens
|
|
93
|
+
silently rendered `none`; and (b) bundler-SAFE — a consumer's CSS url()-rewriter
|
|
94
|
+
skips a `data:` URI but mis-resolves any `url("…")` whose content starts with a
|
|
95
|
+
bare char (the old tail began `'…` → ENOENT, breaking every bundler consumer).
|
|
96
|
+
See the DDR-LENS-BAKE note in the header for the lost-tunability tradeoff. */
|
|
97
|
+
--glass-refract-filter: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cfilter id=%27glass-refract%27 x=%270%27 y=%270%27 width=%27100%25%27 height=%27100%25%27%3E%3CfeImage href=%27data:image/svg+xml,%253Csvg xmlns=%2522http://www.w3.org/2000/svg%2522 width=%2522100%2522 height=%2522100%2522%253E%253ClinearGradient id=%2522hx%2522 x1=%25220%2522 y1=%25220%2522 x2=%2522100%2525%2522 y2=%25220%2522%253E%253Cstop offset=%25220%2525%2522 stop-color=%2522rgb(255,0,0)%2522/%253E%253Cstop offset=%252214%2525%2522 stop-color=%2522rgb(128,0,0)%2522/%253E%253Cstop offset=%252286%2525%2522 stop-color=%2522rgb(128,0,0)%2522/%253E%253Cstop offset=%2522100%2525%2522 stop-color=%2522rgb(0,0,0)%2522/%253E%253C/linearGradient%253E%253ClinearGradient id=%2522vy%2522 x1=%25220%2522 y1=%25220%2522 x2=%25220%2522 y2=%2522100%2525%2522%253E%253Cstop offset=%25220%2525%2522 stop-color=%2522rgb(0,255,0)%2522/%253E%253Cstop offset=%252214%2525%2522 stop-color=%2522rgb(0,128,0)%2522/%253E%253Cstop offset=%252286%2525%2522 stop-color=%2522rgb(0,128,0)%2522/%253E%253Cstop offset=%2522100%2525%2522 stop-color=%2522rgb(0,0,0)%2522/%253E%253C/linearGradient%253E%253Crect width=%2522100%2522 height=%2522100%2522 fill=%2522black%2522/%253E%253Crect width=%2522100%2522 height=%2522100%2522 fill=%2522url(%2523hx)%2522/%253E%253Crect width=%2522100%2522 height=%2522100%2522 fill=%2522url(%2523vy)%2522 style=%2522mix-blend-mode:screen%2522/%253E%253C/svg%253E%27 result=%27map%27/%3E%3CfeDisplacementMap in=%27SourceGraphic%27 in2=%27map%27 scale=%2728%27 xChannelSelector=%27R%27 yChannelSelector=%27G%27 result=%27disp%27/%3E%3CfeImage href=%27data:image/svg+xml,%253Csvg xmlns=%2522http://www.w3.org/2000/svg%2522 width=%2522100%2522 height=%2522100%2522%253E%253CradialGradient id=%2522s%2522 cx=%252230%2525%2522 cy=%252225%2525%2522 r=%252260%2525%2522%253E%253Cstop offset=%25220%2525%2522 stop-color=%2522rgba(255,255,255,0.5)%2522/%253E%253Cstop offset=%2522100%2525%2522 stop-color=%2522rgba(255,255,255,0)%2522/%253E%253C/radialGradient%253E%253Crect width=%2522100%2522 height=%2522100%2522 fill=%2522url(%2523s)%2522/%253E%253C/svg%253E%27 result=%27spec%27/%3E%3CfeBlend in=%27disp%27 in2=%27spec%27 mode=%27screen%27/%3E%3C/filter%3E%3C/svg%3E%23glass-refract");
|
|
47
98
|
}
|
|
48
99
|
|
|
49
|
-
/* The gated consuming selector
|
|
50
|
-
|
|
51
|
-
refraction composes the shipped `#glass-refract` filter OVER the host's
|
|
52
|
-
|
|
53
|
-
|
|
100
|
+
/* The gated consuming selector. The squircle map + the baked `scale='28'` ride
|
|
101
|
+
INSIDE the `@supports (backdrop-filter: url(#…))` block;
|
|
102
|
+
the refraction composes the shipped `#glass-refract` filter OVER the host's existing
|
|
103
|
+
blur — additive (the blur already painted, this bends + concentrates the refraction
|
|
104
|
+
at the rim where the engine supports it). A non-supporting engine never reaches this
|
|
105
|
+
block and paints the un-gated `--glass-blur-*` + `--glass-tint-*` base ALONE. */
|
|
54
106
|
@supports (backdrop-filter: url("#glass-refract")) {
|
|
55
|
-
.glass-material.glass-
|
|
56
|
-
.glass-
|
|
107
|
+
.glass-material.glass-lens,
|
|
108
|
+
.glass-lens {
|
|
57
109
|
-webkit-backdrop-filter: var(--glass-blur-resting) var(--glass-refract-filter);
|
|
58
110
|
|
|
59
111
|
backdrop-filter: var(--glass-blur-resting) var(--glass-refract-filter);
|
|
@@ -43,6 +43,13 @@
|
|
|
43
43
|
.glass-specular-track::before {
|
|
44
44
|
--specular-x: 50%;
|
|
45
45
|
--specular-y: 50%;
|
|
46
|
+
/* BB.W-LENSING — pin the EDGE-glint angle static too (the conic seats at its
|
|
47
|
+
`0deg` top-edge rest). The `useSpecularPointer` leaf already skips the angle
|
|
48
|
+
write under PRM; this is the CSS belt-and-braces pin so the rim glint never
|
|
49
|
+
drifts under reduce. The lens-swell drive also snaps (Button.vue / .tap-squish
|
|
50
|
+
PRM carve), so the whole motion-reactive lens reaches rest with no in-between
|
|
51
|
+
frames — the gesture functions, the physics off. */
|
|
52
|
+
--specular-angle: 0deg;
|
|
46
53
|
transition: none;
|
|
47
54
|
}
|
|
48
55
|
}
|
package/dist/styles/glass.css
CHANGED
|
@@ -46,8 +46,11 @@
|
|
|
46
46
|
squircle + a11y @supports overrides, which must stay last): */
|
|
47
47
|
@import "./glass/material.css";
|
|
48
48
|
@import "./glass/ladder.css";
|
|
49
|
+
@import "./glass/rim.css";
|
|
49
50
|
@import "./glass/surfaces.css";
|
|
50
51
|
@import "./glass/surface-axis.css";
|
|
52
|
+
@import "./glass/reveal.css";
|
|
53
|
+
@import "./glass/deep.css";
|
|
51
54
|
@import "./glass/progress-rail.css";
|
|
52
55
|
@import "./glass/squircle.css";
|
|
53
56
|
@import "./glass/a11y-fallback.css";
|
|
@@ -37,10 +37,11 @@
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
/* The data-state animation grammar canonicalises onto `.
|
|
41
|
-
(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
/* The data-state animation grammar canonicalises onto `.glass-reveal`
|
|
41
|
+
(BB.W-LIQUID-REVEAL — off the retired `popover-animate` bezier zoom-95, clean
|
|
42
|
+
break). Authors compose `class="hover-popover-panel glass-reveal"` on the panel
|
|
43
|
+
root so the spring-clocked LIQUID-ENTER grammar (the coupled scale+fade+filter
|
|
44
|
+
blur-settle, glass/reveal.css) replaces the bespoke `hover-popover-in/out`
|
|
45
|
+
keyframes that lived here. The `prefers-reduced-motion` carve is handled at the
|
|
46
|
+
canonical site (`glass/reveal.css`'s reduced-motion block) so it cascades to all
|
|
46
47
|
popover-animation consumers automatically. */
|
|
@@ -9,15 +9,22 @@
|
|
|
9
9
|
* lives ONCE and proof:suffuse asserts against one component, not N pastes.
|
|
10
10
|
*
|
|
11
11
|
* THE INTERPOLATION SPACE — `in srgb` (DELIBERATE, recorded). The backplate is
|
|
12
|
-
* a foreground-over-transparent overlay at a hand-tuned
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
12
|
+
* a foreground-over-transparent overlay at a hand-tuned α stop — the SAME shape
|
|
13
|
+
* as the `--surface-tint-*` brand family, which CLAUDE.md fixes at `in srgb`
|
|
14
|
+
* (the brand-calibrated mix; switching the space shifts the resting α off its
|
|
15
|
+
* hand-set value). The chip is byte-faithful to the reference paste register
|
|
16
|
+
* (the binding W7 π target: stop-0 bg `color(srgb 0.915 0.484 0.671 / 0.25)`),
|
|
17
|
+
* so it preserves `in srgb` — the same brand-overlay path, NOT the glass-tint
|
|
18
|
+
* `in oklab` perceptual-mix path. (The spec text says `in oklab`; the resolution
|
|
19
|
+
* preserves the reference-faithful `in srgb` so the pop register does not shift
|
|
20
|
+
* — recorded in PROGRESS / the DELTA.)
|
|
21
|
+
*
|
|
22
|
+
* THE α STOP IS A TOKEN (BB.W-SUFFUSE3 c3). The hardcoded `25%` lifted onto
|
|
23
|
+
* `--icon-chip-plate-strength` (default `25%`, BYTE-IDENTICAL); the `:saturated`
|
|
24
|
+
* axis re-points it to ~40% for a louder focal pop — the STRENGTH varies, the
|
|
25
|
+
* `in srgb` space + the chip≤glyph ratio do NOT. The pop is ALIVE too: the
|
|
26
|
+
* reveal entrance + the hover-bloom GROW ride the per-spring CLOCK (the
|
|
27
|
+
* --spring-snappy/--spring-smooth registers), no longer the fixed bezier.
|
|
21
28
|
*/
|
|
22
29
|
|
|
23
30
|
:root {
|
|
@@ -30,6 +37,16 @@
|
|
|
30
37
|
/* The duotone fill α — a low-alpha fill of the same hue UNDER the
|
|
31
38
|
full-chroma stroke (the iOS/Material filled-tonal move). Mono-hue. */
|
|
32
39
|
--icon-chip-duotone-fill: 18%;
|
|
40
|
+
/* The backplate vibrancy stop (BB.W-SUFFUSE3 c3). The default reproduces
|
|
41
|
+
the reference 25% register BYTE-IDENTICALLY — the plate `color-mix`
|
|
42
|
+
reads this token instead of the hardcoded `25%`. The `:saturated` axis
|
|
43
|
+
re-points it to a louder focal stop (~40%); the STRENGTH changes, the
|
|
44
|
+
`in srgb` space + the chip≤glyph ratio do NOT (the recorded keep). Still
|
|
45
|
+
ONE color event per surface — a saturated chip is the same event,
|
|
46
|
+
louder, never a license for a second (proof:suffuse d3 counts the event
|
|
47
|
+
FAMILY, not the saturation). Token-first: a consumer retunes without a
|
|
48
|
+
component edit. */
|
|
49
|
+
--icon-chip-plate-strength: 25%;
|
|
33
50
|
/* The hover-bloom backplate lift (25% → ~35%) + the glow-ring spread. */
|
|
34
51
|
--icon-chip-bloom-mix: 35%;
|
|
35
52
|
--icon-chip-bloom-glow: 28%;
|
|
@@ -49,18 +66,25 @@
|
|
|
49
66
|
align-items: center;
|
|
50
67
|
justify-content: center;
|
|
51
68
|
border-radius: var(--radius-pill, 9999px);
|
|
52
|
-
/* The backplate — the reference recipe (`in srgb`,
|
|
69
|
+
/* The backplate — the reference recipe (`in srgb`, the --icon-chip-plate-
|
|
70
|
+
strength α stop, default 25% — BB.W-SUFFUSE3 c3 lifts the hardcoded `25%`
|
|
71
|
+
onto the token, BYTE-IDENTICAL at default). */
|
|
53
72
|
background-color: color-mix(
|
|
54
73
|
in srgb,
|
|
55
|
-
var(--icon-chip-plate-color, var(--muted))
|
|
74
|
+
var(--icon-chip-plate-color, var(--muted))
|
|
75
|
+
var(--icon-chip-plate-strength),
|
|
56
76
|
transparent
|
|
57
77
|
);
|
|
58
78
|
color: var(--icon-chip-event-color, var(--muted-foreground));
|
|
59
79
|
/* The §6 easing doctrine — surface props (bg/box-shadow) on the bezier
|
|
60
|
-
standard ease
|
|
80
|
+
standard ease. The transform leg at REST (the leave direction, reverting
|
|
81
|
+
to base) is the NO-OVERSHOOT bezier (a bloom must never overshoot past
|
|
82
|
+
gone — §6 exit law, BB.W-SUFFUSE3 c2); the hover ENTER direction lifts
|
|
83
|
+
onto --spring-smooth on the .icon-chip--bloom:hover rule below. */
|
|
61
84
|
transition:
|
|
62
85
|
background-color var(--duration-fast, 150ms) var(--ease-standard),
|
|
63
|
-
box-shadow var(--duration-fast, 150ms) var(--ease-standard)
|
|
86
|
+
box-shadow var(--duration-fast, 150ms) var(--ease-standard),
|
|
87
|
+
transform var(--duration-fast, 150ms) var(--ease-out);
|
|
64
88
|
}
|
|
65
89
|
|
|
66
90
|
.icon-chip__glyph {
|
|
@@ -76,6 +100,16 @@
|
|
|
76
100
|
border-radius: 0;
|
|
77
101
|
}
|
|
78
102
|
|
|
103
|
+
/* ── The :saturated vibrancy axis (BB.W-SUFFUSE3 c3) ───────────────────────── */
|
|
104
|
+
/* A louder, more-chromatic backplate for a genuine focal pop — the plate
|
|
105
|
+
`color-mix` re-points off the 25% reference stop to ~40%. STILL the ONE color
|
|
106
|
+
event (the same event, louder — proof:suffuse d3 counts the event FAMILY, not
|
|
107
|
+
the saturation). The interpolation STAYS `in srgb` (the recorded reference-
|
|
108
|
+
register keep) and the chip≤glyph ratio is untouched. */
|
|
109
|
+
.icon-chip--saturated {
|
|
110
|
+
--icon-chip-plate-strength: 40%;
|
|
111
|
+
}
|
|
112
|
+
|
|
79
113
|
/* ── The duotone axis — a low-alpha fill of the same hue UNDER the stroke ──── */
|
|
80
114
|
/* Lucide glyphs bake `fill: none` on the SVG root; CSS wins over the
|
|
81
115
|
presentation attribute, so the `[data-duotone] svg` rule reaches the inner
|
|
@@ -108,6 +142,16 @@
|
|
|
108
142
|
var(--icon-chip-bloom-glow),
|
|
109
143
|
transparent
|
|
110
144
|
);
|
|
145
|
+
/* The bloom GROW (BB.W-SUFFUSE3 c2) — the plate lifts a hair on the
|
|
146
|
+
§6 --spring-smooth transform register (enter smooth). The transition
|
|
147
|
+
is re-declared on :hover so the ENTER direction rides the spring; the
|
|
148
|
+
base rule's --ease-out transform leg governs the leave (no overshoot
|
|
149
|
+
past gone). The color legs stay on the bezier (base rule). */
|
|
150
|
+
transform: scale(var(--icon-chip-bloom-scale, 1.06));
|
|
151
|
+
transition:
|
|
152
|
+
background-color var(--duration-fast, 150ms) var(--ease-standard),
|
|
153
|
+
box-shadow var(--duration-fast, 150ms) var(--ease-standard),
|
|
154
|
+
transform var(--spring-smooth-duration) var(--spring-smooth);
|
|
111
155
|
}
|
|
112
156
|
/* The glyph stroke firms on the chip's own hover. */
|
|
113
157
|
.icon-chip--bloom:hover .icon-chip__glyph {
|
|
@@ -120,9 +164,19 @@
|
|
|
120
164
|
reacts ONLY on an opted-in chip (`.icon-chip--reveal`) so a non-reveal chip's
|
|
121
165
|
inert `[data-reveal]` hook never animates. PRM-gated. */
|
|
122
166
|
@media (prefers-reduced-motion: no-preference) {
|
|
167
|
+
/* BB.W-SUFFUSE3 c1 — the pop-ENTRANCE rides the per-spring CLOCK, NOT the
|
|
168
|
+
fixed --duration-medium bezier. The animation-timing-function is the
|
|
169
|
+
--spring-snappy linear() string (peaks ~1.068) and the duration is
|
|
170
|
+
--spring-snappy-duration (0.34s, the W-GLASS-CAL per-spring clock), so the
|
|
171
|
+
`scale(0.85)→1` keyframe carries the snappy spring's ~+7% overshoot then
|
|
172
|
+
settles (the springy pop, not a flat fade-up). The opacity 0→1 is COUPLED
|
|
173
|
+
on the SAME clock (the W-MOTION-CANON P3 coupled-fade — plate + glyph
|
|
174
|
+
bloom as ONE continuous layer). Compositor-only: transform/opacity only
|
|
175
|
+
(the proof:motion-compositor floor holds). The per-spring clock is the
|
|
176
|
+
W-GLASS-CAL/W-MOTION-CANON fence — CONSUMED here, never re-generated. */
|
|
123
177
|
.icon-chip--reveal[data-reveal] {
|
|
124
|
-
animation: icon-chip-reveal var(--duration
|
|
125
|
-
var(--
|
|
178
|
+
animation: icon-chip-reveal var(--spring-snappy-duration)
|
|
179
|
+
var(--spring-snappy) both;
|
|
126
180
|
animation-delay: calc(var(--d, 0) * var(--icon-chip-reveal-step));
|
|
127
181
|
}
|
|
128
182
|
}
|
|
@@ -139,7 +193,15 @@
|
|
|
139
193
|
}
|
|
140
194
|
|
|
141
195
|
/* ── The deform axes collapse under reduced motion (the PRM guard) ─────────── */
|
|
196
|
+
/* BB.W-SUFFUSE3 c1/c2 — the spring deform drops under reduce: the bloom GROW
|
|
197
|
+
scale collapses to 1 (the color cross-fade may stay — the legibility cue is
|
|
198
|
+
not motion), and the reveal pop SNAPS to its endpoint (scale 1, opacity 1,
|
|
199
|
+
zero in-between frames) via `animation: none` (the chip still APPEARS — only
|
|
200
|
+
the spring/overshoot is off; the W-MOTION-CANON P6 keep-fade/drop-transform). */
|
|
142
201
|
@media (prefers-reduced-motion: reduce) {
|
|
202
|
+
.icon-chip--bloom:hover {
|
|
203
|
+
transform: none;
|
|
204
|
+
}
|
|
143
205
|
.icon-chip--bloom:hover .icon-chip__glyph {
|
|
144
206
|
stroke-width: inherit;
|
|
145
207
|
}
|
package/dist/styles/index.css
CHANGED
|
@@ -114,6 +114,12 @@
|
|
|
114
114
|
* 10a. scroll-driven.css — native scroll-driven recipes (.scroll-progress
|
|
115
115
|
* + [data-scroll-reveal]); the `@supports`-gated
|
|
116
116
|
* primary over the JS-composable fallback (AQ.W5).
|
|
117
|
+
* 10a'. scroll-choreography.css — the SOTA scroll-CHOREOGRAPHY register
|
|
118
|
+
* (.scroll-build page-build / .scroll-cascade
|
|
119
|
+
* section-cascade / .scroll-pin scroll-pinned + the
|
|
120
|
+
* native .smooth-scroll opt-in) on the native
|
|
121
|
+
* scroll()/view()/timeline-scope substrate; NO
|
|
122
|
+
* Lenis/GSAP dep (BB.W-SCROLL-MOTION).
|
|
117
123
|
* 10b. view-transition.css — the `.gl-list-item` View-Transitions group
|
|
118
124
|
* recipe + `--vt-*` axes (AQ.W5; the
|
|
119
125
|
* `useViewTransition` substrate's CSS half).
|
|
@@ -161,6 +167,7 @@
|
|
|
161
167
|
@import "./transitions.css";
|
|
162
168
|
@import "./animations.css";
|
|
163
169
|
@import "./scroll-driven.css";
|
|
170
|
+
@import "./scroll-choreography.css";
|
|
164
171
|
@import "./view-transition.css";
|
|
165
172
|
@import "./utilities.css";
|
|
166
173
|
/* BA.W-MENU-GLASS — the glass menu-row + menu-section register. @import-ed AFTER
|
|
@@ -180,6 +187,11 @@
|
|
|
180
187
|
(duotone/bloom/reveal). A component partial; the token arms (--section-color-N
|
|
181
188
|
/ --muted) auto-flip under .dark so the chip is mode-robust by construction. */
|
|
182
189
|
@import "./icon-chip.css";
|
|
190
|
+
/* BB.W-BORDER-PROGRESS — progress IS the element's border: the masked-conic ring
|
|
191
|
+
consumption (the @property reg lives in tokens/property-regs.css §18). A
|
|
192
|
+
component partial; the conic + the radius-following mask-composite + the coverage
|
|
193
|
+
masks + the PRM milestone-pulse bracket. */
|
|
194
|
+
@import "./border-progress.css";
|
|
183
195
|
|
|
184
196
|
/* Ensure Tailwind scans glass-ui's compiled component templates for the utility
|
|
185
197
|
classes they emit (CVA variant classes like text-destructive-foreground,
|
|
@@ -192,15 +204,7 @@
|
|
|
192
204
|
`dist/components/` — a
|
|
193
205
|
directory that carries ONLY `.d.ts` mirror files (zero `.js`, zero `.vue`). The
|
|
194
206
|
compiled render-functions live FLAT at `dist/*.js`. So in every consumer that
|
|
195
|
-
re-imported this
|
|
196
|
-
@import "@mkbabb/glass-ui/styles" carries cascade + components) */
|
|
197
|
-
@import "../glass-ui.css";
|
|
198
|
-
|
|
199
|
-
/* P9 — component-utility rules (rounded-panel, text-muted-foreground,
|
|
200
|
-
…) shipped build-independently so a bare consumer paints them. */
|
|
201
|
-
@import "./components.css";
|
|
202
|
-
|
|
203
|
-
@source` line, Tailwind scanned an empty dir and glass-ui's own
|
|
207
|
+
re-imported this `@source` line, Tailwind scanned an empty dir and glass-ui's own
|
|
204
208
|
arbitrary utilities silently died (the P9 / valuejs-fold register-B class).
|
|
205
209
|
|
|
206
210
|
`../*.js` reaches the compiled render-functions PRECISELY in the SHIPPED context:
|
|
@@ -219,4 +223,12 @@
|
|
|
219
223
|
by a JIT scan, so every STRUCTURAL bracket utility (geometry/bounds/sizing) is
|
|
220
224
|
pre-compiled into shipped CSS instead — never load-bearing on any consumer's
|
|
221
225
|
content-scan reach. Locked by proof:emission. */
|
|
226
|
+
/* AN.W1 — SFC scoped component CSS (folded so a single
|
|
227
|
+
@import "@mkbabb/glass-ui/styles" carries cascade + components) */
|
|
228
|
+
@import "../glass-ui.css";
|
|
229
|
+
|
|
230
|
+
/* P9 — component-utility rules (rounded-panel, text-muted-foreground,
|
|
231
|
+
…) shipped build-independently so a bare consumer paints them. */
|
|
232
|
+
@import "./components.css";
|
|
233
|
+
|
|
222
234
|
@source "../*.js";
|
|
@@ -74,6 +74,28 @@
|
|
|
74
74
|
--phase-color: var(--muted-foreground);
|
|
75
75
|
--phase-color-label: var(--muted-foreground);
|
|
76
76
|
|
|
77
|
+
/* BB.W-PHASE-PALETTE (N18) — the `complete` phase ink is a CONSUMER
|
|
78
|
+
token, not a hardcoded brand metal. The four active phases
|
|
79
|
+
(ping/download/upload/jitter) already read a consumer-registerable
|
|
80
|
+
`--chart-{phase}` with a library `--viz-*` fallback (the bus carries
|
|
81
|
+
phase IDENTITY); `complete` was the one arm that pinned the gold
|
|
82
|
+
directly, so every completion gilded itself the moment the phase
|
|
83
|
+
flipped. `--phase-complete-color` (+ its WCAG-twin
|
|
84
|
+
`--phase-complete-color-label`) DEFAULT to the same gold the arm
|
|
85
|
+
hardcoded — an un-overriding consumer paints byte-identical gold (the
|
|
86
|
+
back-compat floor) — but a consumer (or any ancestor) overrides EITHER
|
|
87
|
+
on its host/preset to re-ink completion (its phase spectrum, an aurora
|
|
88
|
+
register, …), so gold is EARNED (the dock CTA + personal-best
|
|
89
|
+
garnish), never the chassis default leaking onto every completion.
|
|
90
|
+
The default lives at the chassis root (NOT :root/tokens.css) because
|
|
91
|
+
it is a chassis-phase register, scoped to the surface owning the bus —
|
|
92
|
+
the same home `--phase-color`'s idle default occupies above. It reads
|
|
93
|
+
`var(--color-gold)` / `var(--color-gold-dark)` (the existing mode-
|
|
94
|
+
resolved tokens, unedited), so it inherits the SAME .dark / light-dark
|
|
95
|
+
resolution the hardcoded form did. */
|
|
96
|
+
--phase-complete-color: var(--color-gold);
|
|
97
|
+
--phase-complete-color-label: var(--color-gold-dark, var(--color-gold));
|
|
98
|
+
|
|
77
99
|
/* AV.W16 TW3 — inline-size container named `chassis` so the dial reflow
|
|
78
100
|
below reads the chassis's OWN box, not the viewport (portable into a
|
|
79
101
|
narrow host). */
|
|
@@ -157,7 +179,10 @@
|
|
|
157
179
|
AND the structural twin-line grooves re-point from the warm-cream
|
|
158
180
|
`--surface-tint-*` default onto the `--silver` quad (gold's cool mirror).
|
|
159
181
|
The chassis reads as an INDUSTRIAL precision-instrument panel — the
|
|
160
|
-
cool-metal twin of the warm-gold "complete"-phase affirmation
|
|
182
|
+
cool-metal twin of the warm-gold "complete"-phase affirmation the chassis
|
|
183
|
+
ships BY DEFAULT (the `--phase-complete-color` consumer token's gold
|
|
184
|
+
default; BB.W-PHASE-PALETTE — a consumer may re-ink completion, but the
|
|
185
|
+
silver register's narration is of the warm-gold completion default).
|
|
161
186
|
|
|
162
187
|
The phase cascade (`[data-phase="…"]`) stays ORTHOGONAL — a `structure`
|
|
163
188
|
chassis still retints its phase fills on `data-phase`; only the
|
|
@@ -224,8 +249,15 @@
|
|
|
224
249
|
--phase-tint-amount: var(--phase-tint-peak);
|
|
225
250
|
}
|
|
226
251
|
.instrument-chassis[data-phase="complete"] {
|
|
227
|
-
|
|
228
|
-
|
|
252
|
+
/* BB.W-PHASE-PALETTE — demoted onto the `--phase-complete-color`
|
|
253
|
+
consumer seam (the exact `var(--chart-{phase}, …)` idiom the four
|
|
254
|
+
active arms above run). The arm reads ONLY the consumer token; the
|
|
255
|
+
gold lives in the token's DEFAULT at the chassis root, not as a
|
|
256
|
+
hardcoded ink here (a clean break with a back-compat default, NOT a
|
|
257
|
+
back-compat alias — no `--color-gold` dual-read survives). The warmth
|
|
258
|
+
ramp stays: `--phase-tint-amount` is orthogonal to the ink choice. */
|
|
259
|
+
--phase-color: var(--phase-complete-color);
|
|
260
|
+
--phase-color-label: var(--phase-complete-color-label);
|
|
229
261
|
--phase-tint-amount: var(--phase-tint-peak);
|
|
230
262
|
}
|
|
231
263
|
|
|
@@ -387,4 +419,35 @@
|
|
|
387
419
|
height: 1px;
|
|
388
420
|
}
|
|
389
421
|
}
|
|
422
|
+
|
|
423
|
+
/* BB.W-DESKTOP-RESERVE (B3) — the WIDE-AXIS (desktop) dial reserve, the
|
|
424
|
+
EXACT DISJOINT COMPLEMENT of the mobile `@container chassis (max-width:
|
|
425
|
+
44.9375rem)` reserve above: 44.9375rem ≈ 719px is the mobile ceiling, so
|
|
426
|
+
the desktop floor is 45rem ≈ 720px — the two container-query ranges share
|
|
427
|
+
no width, so a dial cell is reserved by exactly ONE branch at every box
|
|
428
|
+
width (no overlap, no gap, no competing `min-block-size`).
|
|
429
|
+
|
|
430
|
+
The mobile reflow reserves the dial box from frame 0; the wide box axis
|
|
431
|
+
had NO library reserve, so a `1fr` meter row collapsed to its pre-
|
|
432
|
+
hydration `<canvas>` intrinsic and grew on hydration, pushing the results
|
|
433
|
+
card + dock down (the desktop CLS the speedtest App.vue interim authored
|
|
434
|
+
a local `min-block-size: var(--chassis-max-block-size)` to cure — the
|
|
435
|
+
consumer interim this rung SUPERSEDES). The reserve is a STATIC
|
|
436
|
+
`min-block-size` — a frame-0 box reservation, NOT an animated height (no
|
|
437
|
+
per-frame layout, compositor-safe, `proof:no-layout-animation` holds: a
|
|
438
|
+
`min-block-size` reserve is never a `@keyframes`/`transition` target).
|
|
439
|
+
|
|
440
|
+
Token-first: `--instrument-dial-min-block-size-desktop` is the DESKTOP
|
|
441
|
+
DIAL a consumer overrides (default `var(--chassis-max-block-size)`, the
|
|
442
|
+
library's dock-adjusted dynamic-viewport guardrail, resolved at first
|
|
443
|
+
paint with no JS). The inline `var(--chassis-max-block-size)` fallback
|
|
444
|
+
carries the contract if the canonical token is unset. */
|
|
445
|
+
@container chassis (min-width: 45rem) {
|
|
446
|
+
.instrument-chassis .instrument-dial {
|
|
447
|
+
min-block-size: var(
|
|
448
|
+
--instrument-dial-min-block-size-desktop,
|
|
449
|
+
var(--chassis-max-block-size)
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
390
453
|
}
|