@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
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/* utilities/base-misc.css
|
|
2
|
+
The @layer components FORM/INTERACTION TAIL — status-dot, depth-text,
|
|
3
|
+
preserve-3d, ios input fix, fading-scroll (scroll-state-driven edge fade) +
|
|
4
|
+
the @supports (animation-timeline: scroll()) native path, deferred-section,
|
|
5
|
+
card-scroll-host, gold-shimmer, kbd.
|
|
6
|
+
BB.W-CARVE3 carved this off utilities/base.css (the post-tap-squish tail) so
|
|
7
|
+
each partial stays under the no-god-module 500-line bound. @import-ed by
|
|
8
|
+
utilities.css IMMEDIATELY AFTER base.css — two adjacent same-`@layer
|
|
9
|
+
components` blocks compose identically, so the dist is byte-isomorphic. The
|
|
10
|
+
@property --fade-start/--fade-end registrations the .fading-scroll rules read
|
|
11
|
+
stay in base.css (source-order BEFORE this partial). See
|
|
12
|
+
docs/precepts/design-idioms.md §cohesion-aware partials. */
|
|
13
|
+
|
|
14
|
+
@layer components {
|
|
15
|
+
/* ── Status dot indicator ── */
|
|
16
|
+
.status-dot {
|
|
17
|
+
display: inline-block;
|
|
18
|
+
width: 0.5rem;
|
|
19
|
+
height: 0.5rem;
|
|
20
|
+
border-radius: var(--radius-pill);
|
|
21
|
+
flex-shrink: 0;
|
|
22
|
+
transition:
|
|
23
|
+
color var(--duration-fast) var(--ease-standard),
|
|
24
|
+
background var(--duration-fast) var(--ease-standard),
|
|
25
|
+
box-shadow var(--duration-fast) var(--ease-standard);
|
|
26
|
+
}
|
|
27
|
+
/* ── Depth text (layered offset stamp) ──
|
|
28
|
+
AW.W26 — composes the `--text-shadow-depth` @theme identity token (the
|
|
29
|
+
hard offset stack + soft ambient tail) instead of a hand-rolled multi-stop
|
|
30
|
+
literal. The token holds the stack inside the `@theme` defs (gate 4) and
|
|
31
|
+
re-tints under `.dark` via `--shadow`/`--shadow-color` BY CONSTRUCTION. */
|
|
32
|
+
.depth-text {
|
|
33
|
+
--depth-color-primary: var(--primary);
|
|
34
|
+
|
|
35
|
+
color: var(--depth-color-primary);
|
|
36
|
+
text-shadow: var(--text-shadow-depth);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* ── 3D preserve ── */
|
|
40
|
+
.preserve-3d {
|
|
41
|
+
transform-style: preserve-3d;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* ── iOS input font-size fix (prevent auto-zoom) ── */
|
|
45
|
+
.ios input,
|
|
46
|
+
.ios select,
|
|
47
|
+
.ios textarea,
|
|
48
|
+
.ios [contenteditable] {
|
|
49
|
+
font-size: max(1rem, 1em);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* ── Fading scroll — the scroll-STATE-driven edge fade (BA.W-FADING-SCROLL) ──
|
|
53
|
+
`<FadingScroll>`'s recipe. Each edge's ramp width is a registered
|
|
54
|
+
`--fade-start` / `--fade-end` custom (above, default 0px = SHARP), driven
|
|
55
|
+
by the
|
|
56
|
+
`scroll(self)` timeline so the start edge feathers only past `scroll > 0`
|
|
57
|
+
and the end edge only while trailing overflow remains.
|
|
58
|
+
|
|
59
|
+
The root IS the scroll port (the component sets overflow via the consumer's
|
|
60
|
+
utilities — `overflow-x-auto` / `overflow-y-auto` come from the class the
|
|
61
|
+
consumer passes; the axis floor below sets the OTHER axis). The 4-stop
|
|
62
|
+
mask reads the two customs; at rest both are 0px so the gradient is a flat
|
|
63
|
+
opaque pass-through (no feather). */
|
|
64
|
+
.fading-scroll {
|
|
65
|
+
/* The base mask is axis-specialized by the modifier classes below. The
|
|
66
|
+
default-x case uses the inline ramp; the y case the block ramp. */
|
|
67
|
+
mask-image: linear-gradient(
|
|
68
|
+
to right,
|
|
69
|
+
transparent 0,
|
|
70
|
+
black var(--fade-start),
|
|
71
|
+
black calc(100% - var(--fade-end)),
|
|
72
|
+
transparent 100%
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
.fading-scroll--x {
|
|
76
|
+
overflow-x: auto;
|
|
77
|
+
mask-image: linear-gradient(
|
|
78
|
+
to right,
|
|
79
|
+
transparent 0,
|
|
80
|
+
black var(--fade-start),
|
|
81
|
+
black calc(100% - var(--fade-end)),
|
|
82
|
+
transparent 100%
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
.fading-scroll--y {
|
|
86
|
+
overflow-y: auto;
|
|
87
|
+
mask-image: linear-gradient(
|
|
88
|
+
to bottom,
|
|
89
|
+
transparent 0,
|
|
90
|
+
black var(--fade-start),
|
|
91
|
+
black calc(100% - var(--fade-end)),
|
|
92
|
+
transparent 100%
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* The NATIVE primary path: drive the per-edge customs off a `scroll(self)`
|
|
97
|
+
timeline — ZERO JS on a supporting engine (the `scroll-driven.css` /
|
|
98
|
+
Baseline-Newly-Available bar). UNLIKE `scroll-driven.css` this is NOT
|
|
99
|
+
wrapped in `prefers-reduced-motion: no-preference` — the fade is a
|
|
100
|
+
LEGIBILITY cue, not motion, so it stays present under PRM (it merely stops
|
|
101
|
+
interpolating; the discrete overflow-edge presence stays correct, and the
|
|
102
|
+
registered customs make even the static endpoints land right). */
|
|
103
|
+
@supports (animation-timeline: scroll()) {
|
|
104
|
+
/* The start edge: from sharp (0) to feathered, completing within the
|
|
105
|
+
first `--fade-scroll-width` of scroll — so at `scroll = 0` the start is
|
|
106
|
+
SHARP and it ramps in only once the user genuinely scrolls past. */
|
|
107
|
+
@keyframes gl-fade-start-in {
|
|
108
|
+
from {
|
|
109
|
+
--fade-start: 0px;
|
|
110
|
+
}
|
|
111
|
+
to {
|
|
112
|
+
--fade-start: var(--fade-scroll-width);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/* The end edge: feathered while trailing overflow remains, ramping OUT to
|
|
116
|
+
sharp over the last `--fade-scroll-width` of scroll — so at the scroll
|
|
117
|
+
end (no trailing overflow) the end is SHARP. */
|
|
118
|
+
@keyframes gl-fade-end-out {
|
|
119
|
+
from {
|
|
120
|
+
--fade-end: var(--fade-scroll-width);
|
|
121
|
+
}
|
|
122
|
+
to {
|
|
123
|
+
--fade-end: 0px;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/* x axis — `scroll(self inline)`; two animations on the ONE element, each
|
|
127
|
+
gated by `animation-range` to the start / end sliver of the scroll
|
|
128
|
+
distance. `fadeStart`/`fadeEnd` props toggle their respective
|
|
129
|
+
animation off via the `[data-fade-*]` presence attrs. */
|
|
130
|
+
.fading-scroll--x[data-fade-start] {
|
|
131
|
+
animation: gl-fade-start-in linear both;
|
|
132
|
+
animation-timeline: scroll(self inline);
|
|
133
|
+
animation-range: 0 var(--fade-scroll-width);
|
|
134
|
+
}
|
|
135
|
+
.fading-scroll--x[data-fade-end] {
|
|
136
|
+
animation: gl-fade-end-out linear both;
|
|
137
|
+
animation-timeline: scroll(self inline);
|
|
138
|
+
animation-range: calc(100% - var(--fade-scroll-width)) 100%;
|
|
139
|
+
}
|
|
140
|
+
/* BOTH edges on one element compose as two named animations. */
|
|
141
|
+
.fading-scroll--x[data-fade-start][data-fade-end] {
|
|
142
|
+
animation:
|
|
143
|
+
gl-fade-start-in linear both,
|
|
144
|
+
gl-fade-end-out linear both;
|
|
145
|
+
animation-timeline: scroll(self inline), scroll(self inline);
|
|
146
|
+
animation-range:
|
|
147
|
+
0 var(--fade-scroll-width),
|
|
148
|
+
calc(100% - var(--fade-scroll-width)) 100%;
|
|
149
|
+
}
|
|
150
|
+
/* y axis — `scroll(self block)`. */
|
|
151
|
+
.fading-scroll--y[data-fade-start] {
|
|
152
|
+
animation: gl-fade-start-in linear both;
|
|
153
|
+
animation-timeline: scroll(self block);
|
|
154
|
+
animation-range: 0 var(--fade-scroll-width);
|
|
155
|
+
}
|
|
156
|
+
.fading-scroll--y[data-fade-end] {
|
|
157
|
+
animation: gl-fade-end-out linear both;
|
|
158
|
+
animation-timeline: scroll(self block);
|
|
159
|
+
animation-range: calc(100% - var(--fade-scroll-width)) 100%;
|
|
160
|
+
}
|
|
161
|
+
.fading-scroll--y[data-fade-start][data-fade-end] {
|
|
162
|
+
animation:
|
|
163
|
+
gl-fade-start-in linear both,
|
|
164
|
+
gl-fade-end-out linear both;
|
|
165
|
+
animation-timeline: scroll(self block), scroll(self block);
|
|
166
|
+
animation-range:
|
|
167
|
+
0 var(--fade-scroll-width),
|
|
168
|
+
calc(100% - var(--fade-scroll-width)) 100%;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
|
|
173
|
+
`content-visibility: auto` skips layout/paint/style of an offscreen
|
|
174
|
+
subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
|
|
175
|
+
`contain-intrinsic-size: auto <estimate>` is measurement-safe: the `auto`
|
|
176
|
+
prefix makes the engine REMEMBER the last-rendered size (no scroll-jump on
|
|
177
|
+
re-entry); plain `<estimate>` freezes the section + thrashes the scrollbar
|
|
178
|
+
— the trap this closes. Estimate is token-driven (`--deferred-section-
|
|
179
|
+
size`, default 30rem). `.deferred-section--cached` →
|
|
180
|
+
`content-visibility: hidden` (always skipped, state CACHED — cheaper to
|
|
181
|
+
re-show than `display:none`). Baseline Widely; unsupporting engines render
|
|
182
|
+
normally. JS HOOK: the engine fires `contentvisibilityautostatechange`
|
|
183
|
+
{ skipped } at the render-skip boundary — pair with `useRAFLoop`
|
|
184
|
+
pause/resume: `el.addEventListener('contentvisibilityautostatechange',
|
|
185
|
+
e => e.skipped ? loop.pause() : loop.resume())`. */
|
|
186
|
+
.deferred-section {
|
|
187
|
+
content-visibility: auto;
|
|
188
|
+
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
189
|
+
}
|
|
190
|
+
.deferred-section--cached {
|
|
191
|
+
content-visibility: hidden;
|
|
192
|
+
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* ── Card scroll-timeline host (AI.W1-α) ───────────────────────────────
|
|
196
|
+
Canonical scroll-overflow host that emits the `--card-scroll` named
|
|
197
|
+
scroll-timeline consumed by `<CardHeader shrink>`. Apply to the
|
|
198
|
+
scroll-overflow ancestor (typically the `<Card>` itself OR a wrapper
|
|
199
|
+
inside it that carries `overflow-y: auto`).
|
|
200
|
+
|
|
201
|
+
`contain: layout style paint` isolates the named timeline so child
|
|
202
|
+
animations respond to THIS host's scroll only — not to portal-
|
|
203
|
+
triggered layout shifts in ancestor containers (the load-bearing
|
|
204
|
+
isolation guarantee the value.js `PaneHeader.vue:18-29` comment
|
|
205
|
+
called out and the AI.W1 spec §1.2 ratified as canon).
|
|
206
|
+
|
|
207
|
+
Disambiguated from `.fading-scroll` (the `<FadingScroll>` mask-image
|
|
208
|
+
edge fade at the container's leading/trailing edge) — `.card-scroll-host`
|
|
209
|
+
does NOT paint any visual; it only emits the timeline. */
|
|
210
|
+
.card-scroll-host {
|
|
211
|
+
contain: layout style paint;
|
|
212
|
+
scroll-timeline: --card-scroll block;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* ── Shimmer text effects ──
|
|
216
|
+
BB.W-METAL-SHIMMER — the gold-only `gold-shimmer-slide` is RETIRED (clean
|
|
217
|
+
break, no alias); `.gold-shimmer` re-points onto the metal-PARAMETERIZED
|
|
218
|
+
`metal-shimmer-sweep` keyframe with `--metal-shimmer-color: gold`. The gold
|
|
219
|
+
gradient stops + the `background-size`/`background-clip` + the PRM bracket are
|
|
220
|
+
byte-PRESERVED — the gold READ is unchanged; only the keyframe NAME generalizes.
|
|
221
|
+
The text-fill + background-clip composition is load-bearing visual (the gold
|
|
222
|
+
gradient itself); only the `animation:` line is wrapped in the PRM no-preference
|
|
223
|
+
bracket so PRM users see the static gradient without the slide. */
|
|
224
|
+
.gold-shimmer {
|
|
225
|
+
--metal-shimmer-color: gold;
|
|
226
|
+
background: linear-gradient(90deg, var(--color-gold-dark), var(--color-gold-light), var(--color-gold), var(--color-gold-light), var(--color-gold-dark));
|
|
227
|
+
background-size: 250% 100%;
|
|
228
|
+
background-clip: text;
|
|
229
|
+
-webkit-background-clip: text;
|
|
230
|
+
color: transparent;
|
|
231
|
+
}
|
|
232
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
233
|
+
.gold-shimmer {
|
|
234
|
+
animation: metal-shimmer-sweep var(--duration-shimmer) linear infinite;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* ── Keyboard key ── */
|
|
239
|
+
.kbd {
|
|
240
|
+
display: inline-flex;
|
|
241
|
+
align-items: center;
|
|
242
|
+
justify-content: center;
|
|
243
|
+
min-height: 1.5rem;
|
|
244
|
+
min-width: 1.5rem;
|
|
245
|
+
padding: 0 0.375rem;
|
|
246
|
+
font-family: var(--font-mono);
|
|
247
|
+
font-size: var(--type-micro);
|
|
248
|
+
background: var(--muted);
|
|
249
|
+
border: 1px solid var(--border);
|
|
250
|
+
border-radius: var(--radius-sm);
|
|
251
|
+
box-shadow: 0 1px 0 1px color-mix(in srgb, var(--border) 30%, transparent);
|
|
252
|
+
line-height: 1;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/* utilities/base.css
|
|
2
|
-
The @layer components
|
|
2
|
+
The @layer components FORM/INTERACTION half — the @property fade pair (read by
|
|
3
|
+
the .fading-scroll rules in base-misc.css), section-description, labeled-field
|
|
4
|
+
(incl. the width-contract + error region), popover-content, scrollbar,
|
|
5
|
+
focus-ring, hairline-accent, interactive-item, tap-squish.
|
|
6
|
+
BB.W-CARVE3 carved the post-tap-squish tail (status-dot → kbd, incl. the
|
|
7
|
+
fading-scroll recipe) into the adjacent base-misc.css partial so each stays
|
|
8
|
+
under the no-god-module 500-line bound. The two adjacent same-`@layer
|
|
9
|
+
components` blocks compose identically — the dist is byte-isomorphic.
|
|
3
10
|
Carved from the utilities.css cascade root; @import-ed by utilities.css in
|
|
4
11
|
cascade order. See docs/precepts/design-idioms.md §cohesion-aware partials. */
|
|
5
12
|
|
|
@@ -127,8 +134,9 @@
|
|
|
127
134
|
(PopoverContent, DropdownMenuContent, SelectContent, etc.).
|
|
128
135
|
Covers radius + outline + popover-foreground; consumers compose
|
|
129
136
|
this with `.glass-floating` (bg + blur + border + shadow), with
|
|
130
|
-
`.
|
|
131
|
-
|
|
137
|
+
`.glass-reveal` (the spring-clocked data-state LIQUID-ENTER —
|
|
138
|
+
BB.W-LIQUID-REVEAL, off the retired `popover-animate`), and with the
|
|
139
|
+
per-host z-rung. The floating-tier shadow comes from
|
|
132
140
|
`--glass-shadow-floating` via `.glass-floating`, replacing the
|
|
133
141
|
`shadow-md`/`shadow-lg` literals that bypassed the canonical
|
|
134
142
|
cascade. */
|
|
@@ -278,264 +286,42 @@
|
|
|
278
286
|
}
|
|
279
287
|
}
|
|
280
288
|
|
|
281
|
-
/* ──
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
/* ── Scroll fade masks ──
|
|
319
|
-
Single-source `mask-image` (AV.W16 TW7): the `-webkit-` companion is
|
|
320
|
-
dropped — Tailwind v4's Lightning CSS build pipeline auto-prefixes per
|
|
321
|
-
the browserslist targets, mirroring the glass ladder's single-source
|
|
322
|
-
`backdrop-filter` (glass.css). NOTE: this is the consistency cut; it
|
|
323
|
-
does NOT conflict with W15's `@supports`-gated older-Safari mask
|
|
324
|
-
fallback (that fallback is the distinct case where the companion is
|
|
325
|
-
genuinely needed and W15 gates it). */
|
|
326
|
-
.scroll-fade-mask {
|
|
327
|
-
mask-image: linear-gradient(to right, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
.scroll-fade-top {
|
|
331
|
-
mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width));
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.scroll-fade-bottom {
|
|
335
|
-
mask-image: linear-gradient(to bottom, black calc(100% - var(--mask-fade-width)), transparent);
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.scroll-fade-y {
|
|
339
|
-
mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
/* ── Fading scroll — the scroll-STATE-driven edge fade (BA.W-FADING-SCROLL) ──
|
|
343
|
-
`<FadingScroll>`'s recipe. SUPERSEDES the scroll-BLIND `.scroll-fade-*`
|
|
344
|
-
masks above (which feathered both edges unconditionally — the R8-08 "Shy"
|
|
345
|
-
defect). Here each edge's ramp width is a registered `--fade-start` /
|
|
346
|
-
`--fade-end` custom (above, default 0px = SHARP), driven by the
|
|
347
|
-
`scroll(self)` timeline so the start edge feathers only past `scroll > 0`
|
|
348
|
-
and the end edge only while trailing overflow remains.
|
|
349
|
-
|
|
350
|
-
The root IS the scroll port (the component sets overflow via the consumer's
|
|
351
|
-
utilities — `overflow-x-auto` / `overflow-y-auto` come from the class the
|
|
352
|
-
consumer passes; the axis floor below sets the OTHER axis). The 4-stop
|
|
353
|
-
mask reads the two customs; at rest both are 0px so the gradient is a flat
|
|
354
|
-
opaque pass-through (no feather). */
|
|
355
|
-
.fading-scroll {
|
|
356
|
-
/* The base mask is axis-specialized by the modifier classes below. The
|
|
357
|
-
default-x case uses the inline ramp; the y case the block ramp. */
|
|
358
|
-
mask-image: linear-gradient(
|
|
359
|
-
to right,
|
|
360
|
-
transparent 0,
|
|
361
|
-
black var(--fade-start),
|
|
362
|
-
black calc(100% - var(--fade-end)),
|
|
363
|
-
transparent 100%
|
|
364
|
-
);
|
|
365
|
-
}
|
|
366
|
-
.fading-scroll--x {
|
|
367
|
-
overflow-x: auto;
|
|
368
|
-
mask-image: linear-gradient(
|
|
369
|
-
to right,
|
|
370
|
-
transparent 0,
|
|
371
|
-
black var(--fade-start),
|
|
372
|
-
black calc(100% - var(--fade-end)),
|
|
373
|
-
transparent 100%
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
|
-
.fading-scroll--y {
|
|
377
|
-
overflow-y: auto;
|
|
378
|
-
mask-image: linear-gradient(
|
|
379
|
-
to bottom,
|
|
380
|
-
transparent 0,
|
|
381
|
-
black var(--fade-start),
|
|
382
|
-
black calc(100% - var(--fade-end)),
|
|
383
|
-
transparent 100%
|
|
384
|
-
);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
/* The NATIVE primary path: drive the per-edge customs off a `scroll(self)`
|
|
388
|
-
timeline — ZERO JS on a supporting engine (the `scroll-driven.css` /
|
|
389
|
-
Baseline-Newly-Available bar). UNLIKE `scroll-driven.css` this is NOT
|
|
390
|
-
wrapped in `prefers-reduced-motion: no-preference` — the fade is a
|
|
391
|
-
LEGIBILITY cue, not motion, so it stays present under PRM (it merely stops
|
|
392
|
-
interpolating; the discrete overflow-edge presence stays correct, and the
|
|
393
|
-
registered customs make even the static endpoints land right). */
|
|
394
|
-
@supports (animation-timeline: scroll()) {
|
|
395
|
-
/* The start edge: from sharp (0) to feathered, completing within the
|
|
396
|
-
first `--fade-scroll-width` of scroll — so at `scroll = 0` the start is
|
|
397
|
-
SHARP and it ramps in only once the user genuinely scrolls past. */
|
|
398
|
-
@keyframes gl-fade-start-in {
|
|
399
|
-
from {
|
|
400
|
-
--fade-start: 0px;
|
|
401
|
-
}
|
|
402
|
-
to {
|
|
403
|
-
--fade-start: var(--fade-scroll-width);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
/* The end edge: feathered while trailing overflow remains, ramping OUT to
|
|
407
|
-
sharp over the last `--fade-scroll-width` of scroll — so at the scroll
|
|
408
|
-
end (no trailing overflow) the end is SHARP. */
|
|
409
|
-
@keyframes gl-fade-end-out {
|
|
410
|
-
from {
|
|
411
|
-
--fade-end: var(--fade-scroll-width);
|
|
412
|
-
}
|
|
413
|
-
to {
|
|
414
|
-
--fade-end: 0px;
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
/* x axis — `scroll(self inline)`; two animations on the ONE element, each
|
|
418
|
-
gated by `animation-range` to the start / end sliver of the scroll
|
|
419
|
-
distance. `fadeStart`/`fadeEnd` props toggle their respective
|
|
420
|
-
animation off via the `[data-fade-*]` presence attrs. */
|
|
421
|
-
.fading-scroll--x[data-fade-start] {
|
|
422
|
-
animation: gl-fade-start-in linear both;
|
|
423
|
-
animation-timeline: scroll(self inline);
|
|
424
|
-
animation-range: 0 var(--fade-scroll-width);
|
|
425
|
-
}
|
|
426
|
-
.fading-scroll--x[data-fade-end] {
|
|
427
|
-
animation: gl-fade-end-out linear both;
|
|
428
|
-
animation-timeline: scroll(self inline);
|
|
429
|
-
animation-range: calc(100% - var(--fade-scroll-width)) 100%;
|
|
430
|
-
}
|
|
431
|
-
/* BOTH edges on one element compose as two named animations. */
|
|
432
|
-
.fading-scroll--x[data-fade-start][data-fade-end] {
|
|
433
|
-
animation:
|
|
434
|
-
gl-fade-start-in linear both,
|
|
435
|
-
gl-fade-end-out linear both;
|
|
436
|
-
animation-timeline: scroll(self inline), scroll(self inline);
|
|
437
|
-
animation-range:
|
|
438
|
-
0 var(--fade-scroll-width),
|
|
439
|
-
calc(100% - var(--fade-scroll-width)) 100%;
|
|
440
|
-
}
|
|
441
|
-
/* y axis — `scroll(self block)`. */
|
|
442
|
-
.fading-scroll--y[data-fade-start] {
|
|
443
|
-
animation: gl-fade-start-in linear both;
|
|
444
|
-
animation-timeline: scroll(self block);
|
|
445
|
-
animation-range: 0 var(--fade-scroll-width);
|
|
446
|
-
}
|
|
447
|
-
.fading-scroll--y[data-fade-end] {
|
|
448
|
-
animation: gl-fade-end-out linear both;
|
|
449
|
-
animation-timeline: scroll(self block);
|
|
450
|
-
animation-range: calc(100% - var(--fade-scroll-width)) 100%;
|
|
451
|
-
}
|
|
452
|
-
.fading-scroll--y[data-fade-start][data-fade-end] {
|
|
453
|
-
animation:
|
|
454
|
-
gl-fade-start-in linear both,
|
|
455
|
-
gl-fade-end-out linear both;
|
|
456
|
-
animation-timeline: scroll(self block), scroll(self block);
|
|
457
|
-
animation-range:
|
|
458
|
-
0 var(--fade-scroll-width),
|
|
459
|
-
calc(100% - var(--fade-scroll-width)) 100%;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
|
|
464
|
-
`content-visibility: auto` skips layout/paint/style of an offscreen
|
|
465
|
-
subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
|
|
466
|
-
`contain-intrinsic-size: auto <estimate>` is measurement-safe: the `auto`
|
|
467
|
-
prefix makes the engine REMEMBER the last-rendered size (no scroll-jump on
|
|
468
|
-
re-entry); plain `<estimate>` freezes the section + thrashes the scrollbar
|
|
469
|
-
— the trap this closes. Estimate is token-driven (`--deferred-section-
|
|
470
|
-
size`, default 30rem). `.deferred-section--cached` →
|
|
471
|
-
`content-visibility: hidden` (always skipped, state CACHED — cheaper to
|
|
472
|
-
re-show than `display:none`). Baseline Widely; unsupporting engines render
|
|
473
|
-
normally. JS HOOK: the engine fires `contentvisibilityautostatechange`
|
|
474
|
-
{ skipped } at the render-skip boundary — pair with `useRAFLoop`
|
|
475
|
-
pause/resume: `el.addEventListener('contentvisibilityautostatechange',
|
|
476
|
-
e => e.skipped ? loop.pause() : loop.resume())`. */
|
|
477
|
-
.deferred-section {
|
|
478
|
-
content-visibility: auto;
|
|
479
|
-
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
480
|
-
}
|
|
481
|
-
.deferred-section--cached {
|
|
482
|
-
content-visibility: hidden;
|
|
483
|
-
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/* ── Card scroll-timeline host (AI.W1-α) ───────────────────────────────
|
|
487
|
-
Canonical scroll-overflow host that emits the `--card-scroll` named
|
|
488
|
-
scroll-timeline consumed by `<CardHeader shrink>`. Apply to the
|
|
489
|
-
scroll-overflow ancestor (typically the `<Card>` itself OR a wrapper
|
|
490
|
-
inside it that carries `overflow-y: auto`).
|
|
491
|
-
|
|
492
|
-
`contain: layout style paint` isolates the named timeline so child
|
|
493
|
-
animations respond to THIS host's scroll only — not to portal-
|
|
494
|
-
triggered layout shifts in ancestor containers (the load-bearing
|
|
495
|
-
isolation guarantee the value.js `PaneHeader.vue:18-29` comment
|
|
496
|
-
called out and the AI.W1 spec §1.2 ratified as canon).
|
|
497
|
-
|
|
498
|
-
Disambiguated from `.scroll-fade-*` (mask-image fade gradient at
|
|
499
|
-
the container's leading/trailing edge) — `.card-scroll-host` does
|
|
500
|
-
NOT paint any visual; it only emits the timeline. */
|
|
501
|
-
.card-scroll-host {
|
|
502
|
-
contain: layout style paint;
|
|
503
|
-
scroll-timeline: --card-scroll block;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/* ── Shimmer text effects ──
|
|
507
|
-
The text-fill + background-clip composition is load-bearing visual
|
|
508
|
-
(the gold gradient itself); only the `animation:` line is wrapped in
|
|
509
|
-
the PRM no-preference bracket so PRM users see the static gradient
|
|
510
|
-
without the slide animation. */
|
|
511
|
-
.gold-shimmer {
|
|
512
|
-
background: linear-gradient(90deg, var(--color-gold-dark), var(--color-gold-light), var(--color-gold), var(--color-gold-light), var(--color-gold-dark));
|
|
513
|
-
background-size: 250% 100%;
|
|
514
|
-
background-clip: text;
|
|
515
|
-
-webkit-background-clip: text;
|
|
516
|
-
color: transparent;
|
|
517
|
-
}
|
|
518
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
519
|
-
.gold-shimmer {
|
|
520
|
-
animation: gold-shimmer-slide var(--duration-shimmer) linear infinite;
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
/* ── Keyboard key ── */
|
|
525
|
-
.kbd {
|
|
526
|
-
display: inline-flex;
|
|
527
|
-
align-items: center;
|
|
528
|
-
justify-content: center;
|
|
529
|
-
min-height: 1.5rem;
|
|
530
|
-
min-width: 1.5rem;
|
|
531
|
-
padding: 0 0.375rem;
|
|
532
|
-
font-family: var(--font-mono);
|
|
533
|
-
font-size: var(--type-micro);
|
|
534
|
-
background: var(--muted);
|
|
535
|
-
border: 1px solid var(--border);
|
|
536
|
-
border-radius: var(--radius-sm);
|
|
537
|
-
box-shadow: 0 1px 0 1px color-mix(in srgb, var(--border) 30%, transparent);
|
|
538
|
-
line-height: 1;
|
|
289
|
+
/* ── Glass-press — the interactive press register (BB.W-PRESS-UNIFY) ──
|
|
290
|
+
The CSS half of the `<Card :pressable>` / interactive-glass press. Two
|
|
291
|
+
coupled legs on ONE `--card-press-t` drive (the `useLiquidPress` writes the
|
|
292
|
+
JS-driven value; the CSS `:active` is the no-JS / SSR floor):
|
|
293
|
+
|
|
294
|
+
• The SCALE leg is the co-composed `.tap-squish` (the Card binds both
|
|
295
|
+
classes), so the no-JS press already scales to `--scale-press` on the
|
|
296
|
+
`--spring-smooth` clock and the JS reciprocal squish wins while engaged.
|
|
297
|
+
• The BRIGHTNESS leg reads the `--card-press-t` drive directly — a sub-
|
|
298
|
+
perceptual `filter: brightness()` lift so the glass reads as DEFORMING +
|
|
299
|
+
catching light under the press, not just shrinking (the W-MOTION-CANON P3
|
|
300
|
+
coupling — fade/brightness coupled WITH the transform on the same drive).
|
|
301
|
+
`filter` is compositor-safe (the P5 ban targets layout props only —
|
|
302
|
+
`proof:no-layout-animation` greens it), so the lift never re-layouts.
|
|
303
|
+
|
|
304
|
+
The brightness leg rides the `--card-press-t` VALUE (the typed press drive),
|
|
305
|
+
NOT a CSS transition — it tracks the JS spring frame-for-frame and degrades to
|
|
306
|
+
the resting 0 (no lift) when JS is off. The press surface is INTERACTIVE: the
|
|
307
|
+
cursor + a WCAG-2.5.5 touch floor (`min-block-size`) read here, not on the
|
|
308
|
+
static-card register. The interruptibility + the PRM-instant snap are the JS
|
|
309
|
+
driver's (`useLiquidPress` → the kf `SpringProgress` re-seat + the PRM policy);
|
|
310
|
+
this is the CSS floor the JS enhances. */
|
|
311
|
+
.glass-press {
|
|
312
|
+
cursor: pointer;
|
|
313
|
+
min-block-size: max(0px, var(--control-floor, 0px));
|
|
314
|
+
/* The coupled brightness lift on the press drive (rest 0 → ~4% at full
|
|
315
|
+
press). The drive is the JS-written `--card-press-t`; with JS off it stays
|
|
316
|
+
the `@property` 0 initial so the filter is a no-op (`brightness(1)`). */
|
|
317
|
+
filter: brightness(calc(1 + var(--card-press-t, 0) * 0.04));
|
|
318
|
+
}
|
|
319
|
+
/* The press-drive typed registration so a downstream `calc()` interpolates the
|
|
320
|
+
VALUE (number) and an unwired/SSR card is the static rest frame. */
|
|
321
|
+
@property --card-press-t {
|
|
322
|
+
syntax: "<number>";
|
|
323
|
+
inherits: true;
|
|
324
|
+
initial-value: 0;
|
|
539
325
|
}
|
|
540
326
|
|
|
541
327
|
}
|
|
@@ -69,7 +69,9 @@
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/* ── Sheet/drawer slide-out animation grammar ──
|
|
72
|
-
|
|
72
|
+
The sheet/drawer-panel analogue of the overlay enter (the popover-class
|
|
73
|
+
surfaces now ride the spring-clocked `.glass-reveal`, BB.W-LIQUID-REVEAL).
|
|
74
|
+
Pairs with
|
|
73
75
|
`slide-in-from-{top,right,bottom,left}-N` to compose side-keyed entries.
|
|
74
76
|
The open path uses --duration-panel (slow, deliberate); the close path
|
|
75
77
|
uses --duration-fast so dismiss feels snappy. R5 vocab.γ gap row 6;
|