@mkbabb/glass-ui 3.13.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-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
- package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
- package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
- package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
- package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
- package/dist/DialogContent-DcKK8k9i.js +103 -0
- package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
- package/dist/FadingScroll-DI6hQhT9.js +76 -0
- package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
- package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
- package/dist/IconChip-BTD-nay5.js +55 -0
- package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
- package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
- package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-VUwexFUf.js +43 -0
- package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
- package/dist/PopoverContent-DL7E6vJP.js +127 -0
- package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
- package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
- package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
- package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
- package/dist/Toaster-Bw4xR8xV.js +274 -0
- package/dist/{ToggleGroupItem-D_AHlRw9.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 +16 -8
- package/dist/api/types-extra.d.ts +6 -0
- package/dist/api.js +2 -2
- package/dist/aurora.js +888 -230
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +106 -0
- package/dist/button-DYCUa-tH.js +126 -0
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +2 -2
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +90 -151
- package/dist/collapsible.js +1 -1
- package/dist/color-swatch.d.ts +1 -0
- package/dist/color-swatch.js +47 -0
- package/dist/color.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 +30 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
- 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 +3 -2
- 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/color-swatch/ColorSwatch.vue.d.ts +22 -0
- package/dist/components/custom/color-swatch/index.d.ts +1 -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/configurator/Configurator.vue.d.ts +19 -8
- package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
- package/dist/components/custom/constellation/constellationField.d.ts +2 -369
- package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
- package/dist/components/custom/constellation/index.d.ts +1 -1
- 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/DockRail.vue.d.ts +17 -16
- package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
- 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/dock/constants.d.ts +35 -0
- package/dist/components/custom/dock/index.d.ts +2 -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/expandable-container/ExpandableContainer.vue.d.ts +10 -0
- package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
- package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
- package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
- package/dist/components/custom/fading-scroll/index.d.ts +2 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -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/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -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 +29 -12
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/constants.d.ts +6 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +269 -0
- package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
- package/dist/components/custom/handmark/constants.d.ts +39 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +52 -0
- package/dist/components/custom/handmark/index.d.ts +27 -0
- package/dist/components/custom/handmark/ink.d.ts +11 -0
- package/dist/components/custom/handmark/texture.d.ts +39 -0
- package/dist/components/custom/handmark/types.d.ts +62 -0
- package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
- package/dist/components/custom/icon-chip/index.d.ts +2 -0
- package/dist/components/custom/icon-chip/types.d.ts +82 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -0
- 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 +29 -24
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
- package/dist/components/custom/tabs/constants.d.ts +9 -3
- package/dist/components/custom/tabs/index.d.ts +1 -1
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
- package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
- 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/carousel/index.d.ts +0 -1
- package/dist/components/ui/command/Command.vue.d.ts +4 -1
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -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 -1
- package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
- package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
- 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/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +23 -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/composables/motion/useViewTransition.d.ts +36 -1
- 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 +93 -95
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +10 -4
- package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +738 -442
- package/dist/{dockContext-BegmJVmx.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-DzkkyBwX.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 +45 -38
- package/dist/fading-scroll.d.ts +1 -0
- package/dist/fading-scroll.js +2 -0
- 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 +135 -122
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +39 -36
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +154 -362
- package/dist/goo-blob.js +838 -227
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +707 -0
- 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.d.ts +1 -0
- package/dist/icon-chip.js +2 -0
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +6 -6
- package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
- package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +25 -22
- package/dist/metric-stack.js +4 -8
- package/dist/motion-core.js +36 -35
- 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.d.ts +1 -0
- package/dist/pager-dots.js +91 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
- package/dist/{compile-B7NGOBcP.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 +10 -12
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet-tZMg0E0w.js +218 -0
- package/dist/sheet.js +1 -1
- package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
- 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 +40 -31
- 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/configurator.css +35 -0
- 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 +64 -0
- package/dist/styles/dock/layers.css +54 -30
- package/dist/styles/dock/morph.css +124 -7
- package/dist/styles/dock/overflow.css +31 -2
- package/dist/styles/dock/rail-extend.css +168 -71
- package/dist/styles/dock/section.css +59 -0
- package/dist/styles/dock/shell.css +83 -16
- package/dist/styles/dock-controls/icon-button.css +11 -1
- package/dist/styles/dock-controls/tab-button.css +24 -83
- package/dist/styles/dock-controls/triggers.css +7 -0
- package/dist/styles/dock.css +38 -3
- package/dist/styles/drawer.css +127 -35
- package/dist/styles/feedback-tone.css +104 -0
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +154 -52
- 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/surface-axis.css +113 -0
- package/dist/styles/glass/surfaces.css +189 -15
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +8 -2
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +211 -0
- package/dist/styles/index.css +78 -4
- package/dist/styles/instrument-chassis.css +107 -2
- package/dist/styles/menu.css +127 -0
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/segmented-tabs.css +188 -86
- package/dist/styles/select.css +50 -0
- package/dist/styles/theme/bridges.css +22 -1
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +6 -1
- package/dist/styles/tokens/color-radius.css +40 -13
- package/dist/styles/tokens/dark-arm.css +200 -20
- package/dist/styles/tokens/glass-deep.css +75 -0
- package/dist/styles/tokens/glass-fx.css +333 -0
- package/dist/styles/tokens/glass.css +95 -315
- package/dist/styles/tokens/light-dark.css +64 -22
- 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 +130 -10
- package/dist/styles/tokens/scale-paper.css +155 -84
- package/dist/styles/tokens/scheme-motion.css +102 -46
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
- package/dist/styles/tokens.css +9 -3
- package/dist/styles/transitions.css +7 -7
- package/dist/styles/typography/scale.css +153 -0
- package/dist/styles/typography/semantic.css +220 -0
- package/dist/styles/typography/utilities.css +174 -0
- package/dist/styles/typography.css +23 -507
- package/dist/styles/utilities/a11y-overrides.css +33 -4
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +255 -0
- package/dist/styles/utilities/base.css +100 -138
- package/dist/styles/utilities/btn.css +21 -202
- package/dist/styles/utilities/metal.css +189 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/styles/view-transition.css +4 -1
- package/dist/switch.js +1 -1
- package/dist/tabs.js +275 -191
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +3 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.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/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
- package/dist/useLiquidPress-kfb4KX79.js +39 -0
- package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
- package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-q1amq1SJ.js +71 -0
- package/dist/useSpringPress-BsqPr7FJ.js +34 -0
- package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
- package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/vReveal-Czsb7zQC.js +10 -0
- package/dist/vSpecular-CQFmLNzA.js +68 -0
- package/dist/vendor-CKmzio-i.js +226 -0
- package/dist/watercolor-dot.js +12 -5
- package/package.json +193 -25
- package/src/styles/animations.css +40 -31
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +76 -0
- package/src/styles/configurator.css +35 -0
- package/src/styles/critical-partition.mjs +140 -0
- package/src/styles/dock/density.css +64 -0
- package/src/styles/dock/layers.css +54 -30
- package/src/styles/dock/morph.css +124 -7
- package/src/styles/dock/overflow.css +31 -2
- package/src/styles/dock/rail-extend.css +168 -71
- package/src/styles/dock/section.css +59 -0
- package/src/styles/dock/shell.css +83 -16
- package/src/styles/dock-controls/icon-button.css +11 -1
- package/src/styles/dock-controls/tab-button.css +24 -83
- package/src/styles/dock-controls/triggers.css +7 -0
- package/src/styles/dock.css +38 -3
- package/src/styles/drawer.css +123 -35
- package/src/styles/feedback-tone.css +104 -0
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +154 -52
- 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/surface-axis.css +113 -0
- package/src/styles/glass/surfaces.css +189 -15
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +8 -2
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +211 -0
- package/src/styles/index.css +78 -4
- package/src/styles/instrument-chassis.css +107 -2
- package/src/styles/menu.css +127 -0
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/segmented-tabs.css +184 -84
- package/src/styles/select.css +50 -0
- package/src/styles/theme/bridges.css +22 -1
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +6 -1
- package/src/styles/tokens/color-radius.css +40 -13
- package/src/styles/tokens/dark-arm.css +200 -20
- package/src/styles/tokens/glass-deep.css +75 -0
- package/src/styles/tokens/glass-fx.css +333 -0
- package/src/styles/tokens/glass.css +95 -315
- package/src/styles/tokens/light-dark.css +64 -22
- 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 +130 -10
- package/src/styles/tokens/scale-paper.css +155 -84
- package/src/styles/tokens/scheme-motion.css +102 -46
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
- package/src/styles/tokens.css +9 -3
- package/src/styles/transitions.css +7 -7
- package/src/styles/typography/scale.css +153 -0
- package/src/styles/typography/semantic.css +220 -0
- package/src/styles/typography/utilities.css +174 -0
- package/src/styles/typography.css +23 -507
- package/src/styles/utilities/a11y-overrides.css +33 -4
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +255 -0
- package/src/styles/utilities/base.css +100 -138
- package/src/styles/utilities/btn.css +21 -202
- package/src/styles/utilities/metal.css +189 -0
- package/src/styles/utilities.css +14 -7
- package/src/styles/view-transition.css +4 -1
- package/dist/CardAction-Cj2eycQ2.js +0 -157
- package/dist/DialogContent-Dl9WkAoS.js +0 -100
- package/dist/Notification-DdwNxIrI.js +0 -100
- package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
- package/dist/PopoverContent-BYwt2-4x.js +0 -121
- package/dist/TabsList-Dttss653.js +0 -105
- package/dist/Toaster-D6q4HtXu.js +0 -263
- package/dist/button-ChXMfsud.js +0 -81
- 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/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
- package/dist/components/custom/underline/index.d.ts +0 -2
- package/dist/components/custom/underline/types.d.ts +0 -56
- package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
- 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/sheet-1fChZjtw.js +0 -214
- package/dist/underline.d.ts +0 -1
- package/dist/underline.js +0 -85
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-DAoeHVue.js +0 -287
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CI2jOstM.js +0 -108
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/dist/x-BUwTKe50.js +0 -10
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
- /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
- /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
- /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
- /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
- /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
- /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
- /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
- /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
- /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
- /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
- /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
- /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
- /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
- /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
- /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/* glass/reveal.css
|
|
2
|
+
BB.W-LIQUID-REVEAL — the `.glass-reveal` LIQUID-ENTER recipe: the spring-clocked,
|
|
3
|
+
coupled-channel top-layer open that REPLACES `popover-animate`'s fixed-bezier
|
|
4
|
+
zoom-95 (clean break, no alias). The zero-JS floor the reka portaled overlays
|
|
5
|
+
compose (they are not native top-layer, so they cannot ride `@starting-style`;
|
|
6
|
+
`.glass-reveal` is the data-state form). The `useLiquidReveal` JS leaf is the
|
|
7
|
+
source-rect REFINEMENT (the dialog-from-button / dock-from-pill bloom); this CSS
|
|
8
|
+
recipe is the everywhere floor.
|
|
9
|
+
@import-ed by glass.css in cascade order, in its own @layer components
|
|
10
|
+
(isomorphic to the monolith). See docs/precepts/design-idioms.md §cohesion-aware
|
|
11
|
+
partials. */
|
|
12
|
+
|
|
13
|
+
/* ── THE LIQUID ENTER (the iOS-27 bloom-from-anchor) ──────────────────────────
|
|
14
|
+
*
|
|
15
|
+
* Three COUPLED channels, the SPATIAL/EFFECTS split (the Material-3 / §6 /
|
|
16
|
+
* W-MOTION-CANON doctrine):
|
|
17
|
+
*
|
|
18
|
+
* (a) SCALE (the bloom — SPATIAL) rides `--spring-snappy` + its OWN settle clock
|
|
19
|
+
* `--spring-snappy-duration` (the W-GLASS-CAL Unit 3 per-spring clock, NOT the
|
|
20
|
+
* generic `--duration-normal` that re-timed every spring to one wall clock).
|
|
21
|
+
* The overshoot interior of the spring `linear()` gives the canonical iOS
|
|
22
|
+
* arrival. `transform-origin` anchors at the popper edge (`--reka-popper-
|
|
23
|
+
* transform-origin`) so the surface blooms FROM its anchor, not center.
|
|
24
|
+
* (b) OPACITY (the fade — EFFECTS) rides `--ease-out` (NO overshoot — a fade must
|
|
25
|
+
* not bounce), coupled so scale+fade read as ONE continuous coalescing layer.
|
|
26
|
+
* (c) BLUR-SETTLE (the iOS "light-bending modulation" decongest — EFFECTS)
|
|
27
|
+
* `filter: blur(--glass-reveal-blur)` → `blur(0)`, on the SAME spring clock as
|
|
28
|
+
* the scale so the surface clarifies AS it blooms. The decongest rides the
|
|
29
|
+
* surface's OWN pixels (`filter`) NOT the backdrop (`backdrop-filter`), so it
|
|
30
|
+
* does NOT clobber the resting `glass-floating` tier plate blur the overlay
|
|
31
|
+
* carries at rest (a `backdrop-filter: blur(0)` open value would erase the
|
|
32
|
+
* glass). A `filter` radius interp is COMPOSITOR-safe (never a layout property
|
|
33
|
+
* — the proof:no-layout-animation floor).
|
|
34
|
+
*
|
|
35
|
+
* Uses the `scale:` / `translate:` LONGHANDS (not `transform:`), so it composes with
|
|
36
|
+
* any identity-base transform and mints no stacking context (the `.glass-top-layer`
|
|
37
|
+
* `scale:` discipline). NEVER animates a layout property (the zoom is `scale`, the
|
|
38
|
+
* side-slide is `translate` — the directional slide-in `popover-animate` +
|
|
39
|
+
* `slide-in-from-side` used to carry, now folded onto the compositor `translate` leg).
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
@layer components {
|
|
43
|
+
.glass-reveal {
|
|
44
|
+
/* The one public start knob (the decongest radius). The spatial/effects
|
|
45
|
+
clocks read the shared spring tokens (read-only — the W-GLASS-CAL fence). */
|
|
46
|
+
--glass-reveal-blur: 4px;
|
|
47
|
+
--glass-reveal-slide: 0.5rem;
|
|
48
|
+
transform-origin: var(--reka-popper-transform-origin, center);
|
|
49
|
+
/* The coupled transition list — the SPATIAL legs (scale/translate) on the
|
|
50
|
+
snappy spring's OWN settle clock, the EFFECTS legs (opacity/filter blur-
|
|
51
|
+
settle) on the no-overshoot ease-out. ONE coherent glide. The blur rides
|
|
52
|
+
`filter` (the surface's own pixels) NOT `backdrop-filter` (which would
|
|
53
|
+
clobber the resting glass-floating plate blur). */
|
|
54
|
+
transition-property: scale, translate, opacity, filter, display, overlay;
|
|
55
|
+
transition-duration: var(--spring-snappy-duration), var(--spring-snappy-duration),
|
|
56
|
+
var(--spring-snappy-duration), var(--spring-snappy-duration),
|
|
57
|
+
var(--spring-snappy-duration), var(--spring-snappy-duration);
|
|
58
|
+
transition-timing-function: var(--spring-snappy), var(--spring-snappy),
|
|
59
|
+
var(--ease-out), var(--ease-out), linear, linear;
|
|
60
|
+
transition-behavior: allow-discrete;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* OPEN — the settled, bloomed-in state (the spring-clocked scale/fade/blur-settle
|
|
64
|
+
interpolates FROM the closed values). `filter: blur(0)` clarifies the surface;
|
|
65
|
+
the resting `glass-floating` backdrop-filter is untouched. The `translate` leg
|
|
66
|
+
is set ONLY by the `data-side` variants below (a side-anchored popover slides
|
|
67
|
+
from its edge) — the BASE never writes `translate`, so a center-anchored Dialog
|
|
68
|
+
keeping its `-translate-x-1/2 -translate-y-1/2` centering is NEVER clobbered. */
|
|
69
|
+
.glass-reveal[data-state="open"] {
|
|
70
|
+
scale: 1;
|
|
71
|
+
opacity: 1;
|
|
72
|
+
filter: blur(0);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* CLOSED — both the resting CLOSED snapshot AND the EXIT leg. The exit reads
|
|
76
|
+
`--ease-out` (a bezier, NO overshoot — a closing surface must never overshoot
|
|
77
|
+
past gone, the §6/W-MOTION-CANON P2 doctrine); NO `--spring-*` token on the
|
|
78
|
+
exit. The exit is faster + un-sprung — the surface recedes cleanly. */
|
|
79
|
+
.glass-reveal[data-state="closed"] {
|
|
80
|
+
scale: var(--glass-reveal-enter-scale, 0.95);
|
|
81
|
+
opacity: 0;
|
|
82
|
+
filter: blur(var(--glass-reveal-blur));
|
|
83
|
+
transition-timing-function: var(--ease-out);
|
|
84
|
+
transition-duration: var(--duration-fast);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* The directional slide-in — the compositor `translate` leg keyed off the
|
|
88
|
+
popper's `data-side` (folds the retired `slide-in-from-side` `@utility`'s
|
|
89
|
+
directional entry onto the compositor channel; the panel enters from outside
|
|
90
|
+
the anchor's edge). On the SAME snappy spring + clock as the scale. ONLY a
|
|
91
|
+
side-anchored popover (with `data-side`) sets `translate`; the open settled
|
|
92
|
+
value is `0 0` (per side, so it slides home from the edge). A center-anchored
|
|
93
|
+
Dialog has no `data-side` and is never reached here. */
|
|
94
|
+
.glass-reveal[data-side="top"][data-state="open"],
|
|
95
|
+
.glass-reveal[data-side="bottom"][data-state="open"],
|
|
96
|
+
.glass-reveal[data-side="left"][data-state="open"],
|
|
97
|
+
.glass-reveal[data-side="right"][data-state="open"] {
|
|
98
|
+
translate: 0 0;
|
|
99
|
+
}
|
|
100
|
+
.glass-reveal[data-state="closed"][data-side="top"] {
|
|
101
|
+
translate: 0 var(--glass-reveal-slide);
|
|
102
|
+
}
|
|
103
|
+
.glass-reveal[data-state="closed"][data-side="bottom"] {
|
|
104
|
+
translate: 0 calc(-1 * var(--glass-reveal-slide));
|
|
105
|
+
}
|
|
106
|
+
.glass-reveal[data-state="closed"][data-side="left"] {
|
|
107
|
+
translate: var(--glass-reveal-slide) 0;
|
|
108
|
+
}
|
|
109
|
+
.glass-reveal[data-state="closed"][data-side="right"] {
|
|
110
|
+
translate: calc(-1 * var(--glass-reveal-slide)) 0;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* ── REDUCED-MOTION CARVE (the vestibular floor — WCAG 2.3.3) ──────────────────
|
|
115
|
+
* Under `prefers-reduced-motion: reduce` the reveal SNAPS the spatial channels to
|
|
116
|
+
* their endpoints (scale → none, translate → none) and the blur-settle to none —
|
|
117
|
+
* ZERO transform/blur frames. The OPACITY fade SURVIVES (opacity is not a vestibular
|
|
118
|
+
* trigger; the surface fades, never flies, never disappears). The fade rides the
|
|
119
|
+
* short `--duration-fast` clock (the `.glass-top-layer` PRM precedent). */
|
|
120
|
+
@media (prefers-reduced-motion: reduce) {
|
|
121
|
+
.glass-reveal {
|
|
122
|
+
scale: none;
|
|
123
|
+
translate: none;
|
|
124
|
+
/* The decongest snaps to clear (`filter: blur(0)`); the resting
|
|
125
|
+
`glass-floating` backdrop-filter plate blur is UNTOUCHED. */
|
|
126
|
+
filter: blur(0);
|
|
127
|
+
transition-property: opacity, display, overlay;
|
|
128
|
+
transition-duration: var(--duration-fast);
|
|
129
|
+
transition-timing-function: var(--ease-out);
|
|
130
|
+
}
|
|
131
|
+
.glass-reveal[data-state="closed"] {
|
|
132
|
+
scale: none;
|
|
133
|
+
translate: none;
|
|
134
|
+
filter: blur(0);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* glass/rim.css
|
|
2
|
+
The BB.W-GLASS-ACCENT per-INSTANCE chromatic rim/accent group (the rim-ink +
|
|
3
|
+
--glass-material-rim ring + the per-rung --glass-border-accent border, light +
|
|
4
|
+
dark arms).
|
|
5
|
+
Carved from glass/ladder.css at BB.W-CARVE4 to hold the no-god-module bound (the
|
|
6
|
+
five-rung surface ladder + the W55 bright-bucket @container + the calm-tier re-point
|
|
7
|
+
+ the contrast-color ink-flip + the opaque escape + the under-shadow modifier + the
|
|
8
|
+
grain ::after stay in ladder.css). @import-ed by glass.css in cascade order
|
|
9
|
+
IMMEDIATELY AFTER ladder.css — the SAME @layer components; the rim/accent group is
|
|
10
|
+
the SOLE writer of --glass-material-rim/--glass-border-accent (the rungs read those
|
|
11
|
+
+ --glass-rim-ink as custom properties resolved at use-time on the SAME elements, so
|
|
12
|
+
the relocation is cascade-order-invariant), and the W55 bright-bucket is DELIBERATELY
|
|
13
|
+
kept in ladder.css (relocating it past the contrast-color @supports block would invert
|
|
14
|
+
their same-specificity source-order tie on supporting engines — a behaviour change the
|
|
15
|
+
byte-isomorphism bound forbids). The dist is byte-isomorphic. */
|
|
16
|
+
@layer components {
|
|
17
|
+
/* (b) The unified rim — `--glass-edge-light` full-perimeter inset ring on
|
|
18
|
+
EVERY material surface (AW.W22). Previously the rim was wired only into
|
|
19
|
+
the floating/overlay tiers' box-shadow stack; promoting it to the material
|
|
20
|
+
group makes wash/quiet/resting/card/dock-control all carry the same
|
|
21
|
+
silhouette catch-light from ONE token. The rim is its OWN `box-shadow`
|
|
22
|
+
declaration on the material group so it composes uniformly without
|
|
23
|
+
perturbing each tier's elevation recipe (the floating/overlay tiers drop
|
|
24
|
+
their now-redundant inline `--glass-edge-light` layer below). The alpha is
|
|
25
|
+
deliberately low so the rim never eats AA legibility over a busy
|
|
26
|
+
backdrop. */
|
|
27
|
+
/* ── BB.W-GLASS-ACCENT — the per-INSTANCE chromatic-RIM tint ───────────────
|
|
28
|
+
The THIRD disjoint glass axis (LEVEL · TINT · ACCENT). The rim is TWO
|
|
29
|
+
resolved things — the `--glass-material-rim` inset RING (= `--glass-edge-
|
|
30
|
+
light`, an inset box-shadow) and the per-rung `--glass-border-*` BORDER —
|
|
31
|
+
and BOTH must carry the accent hue so the rim reads as ONE accent silhouette,
|
|
32
|
+
not a half-tinted edge.
|
|
33
|
+
|
|
34
|
+
The composition is `color-mix(in oklab, <current rim color>, var(--glass-
|
|
35
|
+
accent) var(--glass-accent-strength))` — the PERCEPTUAL oklab mix the W55
|
|
36
|
+
glass-tint seam + the `<IconChip>` chip already speak (NOT in-srgb — the
|
|
37
|
+
in-srgb fence is the `--surface-tint-*` brand-overlay family, a SEPARATE
|
|
38
|
+
axis this never touches). At the resting `--glass-accent-strength: 0%` (the
|
|
39
|
+
`@property` default) + `--glass-accent: transparent` (the neutral identity)
|
|
40
|
+
the mix resolves byte-identical to today's rim (the W2 no-op floor).
|
|
41
|
+
|
|
42
|
+
The RING: a box-shadow value cannot be `color-mix`-ed whole, so the rim ring
|
|
43
|
+
is REBUILT here as `inset 0 0 0 0.75px <mixed-color>` — the SAME 0.75px inset
|
|
44
|
+
geometry the `--glass-edge-light` token paints (AV.W15 M3), only its COLOR
|
|
45
|
+
stop composing the accent. At 0% strength the color resolves to the
|
|
46
|
+
`--glass-edge-light` base ink (`hsl(0 0% 100% / 0.18)` light / 0.22 dark —
|
|
47
|
+
read via `--glass-rim-ink`) so the ring is byte-identical to
|
|
48
|
+
`var(--glass-edge-light)`. The `.dark` arm re-points `--glass-rim-ink` to the
|
|
49
|
+
dark base so the dark rim composes off `--glass-edge-light-dark`.
|
|
50
|
+
|
|
51
|
+
The BORDER: each rung's `border-color` reads `--glass-border-accent`, which
|
|
52
|
+
composes the accent onto the rung's own `--glass-border-*` ink. The rung
|
|
53
|
+
borders are re-pointed at their declarations (the `border: 1px solid
|
|
54
|
+
var(--glass-border-accent)`) so ONE derived token carries the accent across
|
|
55
|
+
the band; `--glass-border-accent` reads the per-rung `--glass-border-rung`
|
|
56
|
+
the rung sets locally, mixed with the accent.
|
|
57
|
+
|
|
58
|
+
This axis NEVER touches the plate BACKGROUND (the W55 `--glass-tint-source`
|
|
59
|
+
cohort) — the accent is the rim+glint chromatic DECORATION, not the
|
|
60
|
+
whole-plate legibility darken (the distinct-axis-not-fork fence). */
|
|
61
|
+
.glass-material,
|
|
62
|
+
.glass-wash,
|
|
63
|
+
.glass-quiet,
|
|
64
|
+
.glass-resting,
|
|
65
|
+
.glass-floating,
|
|
66
|
+
.glass-overlay,
|
|
67
|
+
.glass-card,
|
|
68
|
+
.glass-specular-track,
|
|
69
|
+
.dock-icon-button {
|
|
70
|
+
/* the resolved rim ring INK (white-α light / lifted-white-α dark — the
|
|
71
|
+
SAME stop the `--glass-edge-light` token carries; the `.dark` arm below
|
|
72
|
+
re-points it). The accent mixes ONTO this ink. */
|
|
73
|
+
--glass-rim-ink: hsl(0 0% 100% / 0.18);
|
|
74
|
+
--glass-material-rim: inset 0 0 0 0.75px
|
|
75
|
+
color-mix(in oklab, var(--glass-rim-ink), var(--glass-accent) var(--glass-accent-strength));
|
|
76
|
+
/* the per-rung border ink, accent-composed. `--glass-border-rung` is set by
|
|
77
|
+
each rung at its own declaration (it reads the rung's `--glass-border-*`
|
|
78
|
+
token); the accent mixes onto it so the BORDER half of the rim carries the
|
|
79
|
+
same hue as the RING. At 0% strength === the un-mixed rung ink. */
|
|
80
|
+
--glass-border-accent: color-mix(
|
|
81
|
+
in oklab,
|
|
82
|
+
var(--glass-border-rung, var(--glass-border)),
|
|
83
|
+
var(--glass-accent) var(--glass-accent-strength)
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
.dark .glass-material,
|
|
87
|
+
.dark .glass-wash,
|
|
88
|
+
.dark .glass-quiet,
|
|
89
|
+
.dark .glass-resting,
|
|
90
|
+
.dark .glass-floating,
|
|
91
|
+
.dark .glass-overlay,
|
|
92
|
+
.dark .glass-card,
|
|
93
|
+
.dark .glass-specular-track,
|
|
94
|
+
.dark .dock-icon-button {
|
|
95
|
+
/* the dark rim ink is the lifted-α base (`--glass-edge-light-dark` stop) so
|
|
96
|
+
the accent composes off the dark silhouette device (W-DARK-MATERIAL). */
|
|
97
|
+
--glass-rim-ink: hsl(0 0% 100% / 0.22);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/* glass/surface-axis.css — the ONE shared {glass·veil·opaque} surface-decoration
|
|
2
|
+
axis (BA.W-SURFACE-AXIS).
|
|
3
|
+
|
|
4
|
+
The house minted `--glass-level` (the opacity knob, AX.W54) and `--glass-tint-*`
|
|
5
|
+
(the legibility seam, AX.W55) as SHARED inheriting axes, but left the
|
|
6
|
+
{glass·veil·opaque} surface-DECORATION choice as a per-component one-off
|
|
7
|
+
(`<Card>` had the only true axis; `<Dialog>` a binary string; everyone else
|
|
8
|
+
none). This seam factors that choice ONCE — every enrolled surface composes a
|
|
9
|
+
base glass tier + the `[data-surface]` attribute, and these rules apply the
|
|
10
|
+
three-rung decoration UNIFORMLY:
|
|
11
|
+
|
|
12
|
+
glass — the resolved tier's plain glass rung (IDENTITY; no rule needed —
|
|
13
|
+
the bare tier paints).
|
|
14
|
+
veil — the borderless/rimless text-legibility plate: the `--glass-bg-quiet`
|
|
15
|
+
fill + blur with the box border AND rim STRIPPED (the boxed look
|
|
16
|
+
reads as a dividing line on a text plate). Reads `--glass-bg-quiet`
|
|
17
|
+
+ the W55 `--glass-tint-*` seam through the SAME `--glass-*` ladder,
|
|
18
|
+
so `--glass-level` / the bright-bucket darken retune it in lockstep
|
|
19
|
+
with every glass surface — NO veil-local recipe fork.
|
|
20
|
+
opaque — the `--glass-level:0` solid-card escape (the `.glass-opaque` rung):
|
|
21
|
+
solid `--card` + `blur(0)` through the ONE level knob, the tint axis
|
|
22
|
+
zeroed (a solid plate has no translucent backdrop to darken-over).
|
|
23
|
+
|
|
24
|
+
NO second axis: `cartoon` stays a Card-local decoration (it is NOT a
|
|
25
|
+
{glass·veil·opaque} member — the shared axis is the three-rung MATERIAL
|
|
26
|
+
decoration; cartoon rides Card's own `surface` superset). The `Surface` union +
|
|
27
|
+
the `surfaceClass(surface, tier)` resolver are the TS half
|
|
28
|
+
(`src/components/ui/_shared/useSurfaceAxis.ts`); this file is the CSS half.
|
|
29
|
+
|
|
30
|
+
Cascade: `@layer components`, @import-ed AFTER ladder.css so the attr rules
|
|
31
|
+
(specificity 0-1-0, equal to the `.glass-*` classes) win by source order over
|
|
32
|
+
the base rung's border/box-shadow. */
|
|
33
|
+
@layer components {
|
|
34
|
+
/* ── veil — the borderless text-legibility plate ──────────────────────────
|
|
35
|
+
Composes the SAME deltas as the `veil-surface` @utility (cards.css), keyed
|
|
36
|
+
off the SAME `--glass-bg-quiet` + `--glass-tint-*` tokens (no recipe fork).
|
|
37
|
+
Each delta is an overridable `--veil-*` rung so a consumer re-points the
|
|
38
|
+
plate to any other ladder rung. */
|
|
39
|
+
[data-surface="veil"] {
|
|
40
|
+
--veil-bg: color-mix(
|
|
41
|
+
in oklab,
|
|
42
|
+
var(--glass-bg-quiet),
|
|
43
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
44
|
+
);
|
|
45
|
+
--veil-blur: var(--glass-blur-quiet);
|
|
46
|
+
/* The three veil deltas over a bare rung — each overridable. */
|
|
47
|
+
--veil-border: none;
|
|
48
|
+
--veil-shadow: none;
|
|
49
|
+
--veil-feather: none;
|
|
50
|
+
|
|
51
|
+
background: var(--veil-bg);
|
|
52
|
+
backdrop-filter: var(--veil-blur);
|
|
53
|
+
-webkit-backdrop-filter: var(--veil-blur);
|
|
54
|
+
border: var(--veil-border);
|
|
55
|
+
box-shadow: var(--veil-shadow);
|
|
56
|
+
/* The optional radial feather — a `mask-image` only painted when
|
|
57
|
+
`--veil-feather` is set to a gradient (default `none` = no mask = a
|
|
58
|
+
clean rectangle). `mask-image: none` is the identity. */
|
|
59
|
+
mask-image: var(--veil-feather);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── opaque — the solid-card escape ───────────────────────────────────────
|
|
63
|
+
The level-0 endpoint of the SAME glass machinery — a solid `--card` plate
|
|
64
|
+
with `blur(0)`. A surface that ALSO carries a base tier keeps its glass
|
|
65
|
+
edge/rim/under-shadow (a solid plate with a glass edge, not a bare div).
|
|
66
|
+
|
|
67
|
+
THE SUBSTITUTION-VS-INHERITANCE TRAP (the recurring AX.W55 / dock-scale
|
|
68
|
+
class, live-found in the π readback): the `--glass-bg-*` tier tokens bake
|
|
69
|
+
`var(--glass-level)` at their `:root` DECLARATION (where level=1), so a
|
|
70
|
+
DESCENDANT element's `--glass-level: 0` does NOT re-resolve the `:root`-baked
|
|
71
|
+
`--glass-bg-floating` — the plate stayed translucent (α 0.8, NOT solid). The
|
|
72
|
+
`.glass-opaque` class works only when `--glass-level` is set at `:root` (the
|
|
73
|
+
cohesion fixture's pattern); a PER-ELEMENT opaque surface (the whole point of
|
|
74
|
+
`surface="opaque"`) needs the solid plate composed AT THE ELEMENT. So the
|
|
75
|
+
opaque rung sets the SOLID `--card` background + `blur(0)` DIRECTLY (the
|
|
76
|
+
level-0 endpoint resolved here, not via the baked token) — AND still flips the
|
|
77
|
+
`--glass-level: 0` / `--glass-tint-strength: 0%` knobs so a NESTED glass
|
|
78
|
+
descendant + any consumer reading the level scalar see the opaque register
|
|
79
|
+
coherently. The adaptive TINT axis is zeroed (a solid plate has no
|
|
80
|
+
translucent backdrop to darken-over — the bucket-INVARIANT contract). */
|
|
81
|
+
[data-surface="opaque"] {
|
|
82
|
+
--glass-level: 0;
|
|
83
|
+
--glass-tint-strength: 0%;
|
|
84
|
+
/* The SOLID --card plate composed at the element via the house color-mix
|
|
85
|
+
idiom (`--card` over transparent at 0% transparent = fully solid --card)
|
|
86
|
+
— functionally `var(--card)`, expressed as the cohesion-sanctioned mix
|
|
87
|
+
the token ladder already speaks. */
|
|
88
|
+
background: color-mix(in srgb, var(--card), transparent 0%);
|
|
89
|
+
backdrop-filter: none;
|
|
90
|
+
-webkit-backdrop-filter: none;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ── .paper-ink-mark — the PAPER ink-hairline MARK register ────────────────
|
|
94
|
+
(BA.W-SURFACE-AXIS scope 8). The 2px `--foreground` ink mark on a paper
|
|
95
|
+
surface — NO plate, NO blur, NO glass. This is a MARK register, NOT a
|
|
96
|
+
`[data-surface]` plate rung: a `[data-surface]` value DECORATES a glass
|
|
97
|
+
plate (fill + edge + rim); `.paper-ink-mark` is the opposite — a bare ink
|
|
98
|
+
hairline drawn directly on paper, the math-paper section-rail / underline-
|
|
99
|
+
tab vocabulary. Recorded here (the surface-decoration seam) co-located with
|
|
100
|
+
the plate axis but DISTINCT from it — the canon note is in CLAUDE.md.
|
|
101
|
+
|
|
102
|
+
≥2 consumers at birth: (1) the math-paper section rail (the `border-l-[3px]`
|
|
103
|
+
family composes it for a VERTICAL left-edge ink rail); (2) W-TABS's re-cut
|
|
104
|
+
underline indicator (a HORIZONTAL 2px ink mark — W-TABS CONSUMES this seam,
|
|
105
|
+
a shape gap there triumvirates HERE per the DAG §5 seam rule). The register
|
|
106
|
+
exposes ONE knob (`--paper-ink-mark-weight`, default 2px) + the ink color;
|
|
107
|
+
the consumer applies the weight on whichever edge/axis it draws (a left
|
|
108
|
+
`border-inline-start-width` rail, a bottom `block-size` underline). */
|
|
109
|
+
.paper-ink-mark {
|
|
110
|
+
--paper-ink-mark-weight: 2px;
|
|
111
|
+
--paper-ink-mark-color: var(--foreground);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -18,7 +18,12 @@
|
|
|
18
18
|
position: relative;
|
|
19
19
|
background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
|
|
20
20
|
backdrop-filter: var(--glass-blur-quiet);
|
|
21
|
-
border
|
|
21
|
+
/* BB.W-GLASS-ACCENT — the card border feeds its focus-elevation ink into the
|
|
22
|
+
accent-composed `--glass-border-accent` (ladder.css rim group); byte-
|
|
23
|
+
identical at 0% strength. The focus rung still re-points `--card-focus-
|
|
24
|
+
border`, which flows through `--glass-border-rung`. */
|
|
25
|
+
--glass-border-rung: var(--card-focus-border);
|
|
26
|
+
border: 1px solid var(--glass-border-accent);
|
|
22
27
|
border-radius: var(--radius-card);
|
|
23
28
|
box-shadow: var(--glass-material-rim), var(--card-focus-shadow);
|
|
24
29
|
/* AY.W-A11Y-PERF O-4 — upgrade `layout style` → include `paint` so the
|
|
@@ -43,6 +48,17 @@
|
|
|
43
48
|
|
|
44
49
|
/* ── Glassmorphic circular icon button ── */
|
|
45
50
|
|
|
51
|
+
/* BA.W-DEMO-AFFORDANCES (IG-A4) — the two size registers below are
|
|
52
|
+
MUTUALLY EXCLUSIVE; never stack `.glass-btn` and `.btn-pill` on one
|
|
53
|
+
element. `.glass-btn` is the FIXED-square icon primitive (width/height:
|
|
54
|
+
var(--size-icon-btn) + contain:paint) — `.btn-pill` is the CONTENT-WIDTH
|
|
55
|
+
text pill. Stacked, the fixed square wins and contain:paint clips the
|
|
56
|
+
wrapped label into a ~40px blob (the R8-17 "play button" defect). A
|
|
57
|
+
text-bearing `.glass-btn` collapses the same way even without `.btn-pill`.
|
|
58
|
+
For a play/replay affordance reach for <StoryPlayButton> (demo) or a real
|
|
59
|
+
<Button> with a leading Lucide glyph, never an icon-button carrying text.
|
|
60
|
+
Machine-locked by proof:demo-affordances (W1 — no class co-occurrence,
|
|
61
|
+
no text-bearing icon button). */
|
|
46
62
|
.glass-btn {
|
|
47
63
|
@apply flex items-center justify-center cursor-pointer;
|
|
48
64
|
|
|
@@ -72,7 +88,7 @@
|
|
|
72
88
|
background var(--duration-fast) var(--ease-standard),
|
|
73
89
|
border-color var(--duration-fast) var(--ease-standard),
|
|
74
90
|
color var(--duration-fast) var(--ease-standard),
|
|
75
|
-
scale var(--duration
|
|
91
|
+
scale var(--spring-smooth-duration) var(--spring-smooth);
|
|
76
92
|
}
|
|
77
93
|
|
|
78
94
|
.glass-btn:hover:not(:disabled) {
|
|
@@ -141,7 +157,7 @@
|
|
|
141
157
|
box-shadow var(--duration-fast) var(--ease-standard),
|
|
142
158
|
color var(--duration-fast) var(--ease-standard),
|
|
143
159
|
opacity var(--duration-fast) var(--ease-standard),
|
|
144
|
-
scale var(--duration
|
|
160
|
+
scale var(--spring-smooth-duration) var(--spring-smooth);
|
|
145
161
|
}
|
|
146
162
|
|
|
147
163
|
.btn-pill > * {
|
|
@@ -170,6 +186,96 @@
|
|
|
170
186
|
dedup-and-keep-prefixed, which modern Chromium then drops). */
|
|
171
187
|
.btn-glass {
|
|
172
188
|
backdrop-filter: var(--glass-blur-btn);
|
|
189
|
+
|
|
190
|
+
/* BB.W-BUTTON-GLASS (d) — the button-scoped DEPTH stack + the hover-specular
|
|
191
|
+
bump. The glass button was the flattest wash rung (a bare backdrop-filter,
|
|
192
|
+
no rim, no under-shadow) — it read as a tinted rectangle, not a lifted
|
|
193
|
+
glass lozenge. The `--glass-btn-*` knobs compose ALREADY-MINTED tokens (the
|
|
194
|
+
`--glass-edge-light` rim + the `quiet`/`resting`-tier `--glass-under-shadow-*`
|
|
195
|
+
drop) so a consumer retints the whole button depth from ONE override; NO new
|
|
196
|
+
compositing axis. The rim+under-shadow lifts the lozenge; the box-shadow is
|
|
197
|
+
additive over the variant's own focus/press shadow legs (the `.btn-pill`
|
|
198
|
+
transition carries box-shadow on the §6 bezier, so the depth cross-fades
|
|
199
|
+
coherently). */
|
|
200
|
+
--glass-btn-rim: var(--glass-edge-light);
|
|
201
|
+
--glass-btn-under-shadow: var(--glass-under-shadow-quiet);
|
|
202
|
+
--glass-btn-under-shadow-hover: var(--glass-under-shadow-default);
|
|
203
|
+
box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow);
|
|
204
|
+
/* The button-scoped hover gleam bump (0.10 → ~0.14): a hovered glass button
|
|
205
|
+
reads a notch brighter at the grazing edge than the global hover whisper.
|
|
206
|
+
Token-scoped to `.btn-glass` (NOT the global `:root` cohort property-regs.css
|
|
207
|
+
owns) so only the button lifts. The active/rest rungs ride the global cohort
|
|
208
|
+
(the press whisper + the dormant rest). */
|
|
209
|
+
--glass-specular-intensity-hover: var(--glass-specular-btn-hover);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* The depth deepens one rung on hover (the lifted-lozenge read) — additive over
|
|
213
|
+
the variant's own hover surface legs. The variants paint the bg/border on
|
|
214
|
+
hover; this adds the deeper drop. */
|
|
215
|
+
.btn-glass:hover:not(:disabled, [data-disabled]) {
|
|
216
|
+
box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow-hover);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* BB.W-BUTTON-GLASS (a) — the ELEMENT-LEVEL oklab-tinted hover/active fill pair
|
|
220
|
+
(the substitution-vs-inheritance trap fixed on the button register). The glass
|
|
221
|
+
button variants painted `hover:bg-(--glass-bg-resting) active:bg-(--glass-bg-
|
|
222
|
+
floating)` — the RAW `:root` rung tokens, which carry NO `color-mix(in oklab, …,
|
|
223
|
+
--glass-tint-source --glass-tint-strength)` wrapper. So the W55 adaptive darken
|
|
224
|
+
+ the `contrast-color()` ink flip + the content-tier floor (all of which the REST
|
|
225
|
+
bg `.glass-wash` composes via the element-level oklab seam) DROPPED the moment the
|
|
226
|
+
pointer landed — "more glass would cost legibility" exactly inverted from the
|
|
227
|
+
iOS-27 ask. These two tokens wrap the raw rungs in the SAME element-level oklab
|
|
228
|
+
seam `ladder.css` composes for the rest bg + `--glass-bg-dock` for the dock — ZERO
|
|
229
|
+
new compositing axis, the literal darken-over-light recipe reached at the lit
|
|
230
|
+
fill. ZERO-delta at the `--glass-tint-strength: 0%`/floor default (the mix toward
|
|
231
|
+
the source is 0%); under the declared/sampled bright bucket the lit fill darkens
|
|
232
|
+
to AA in lockstep with the rest bg. The `:root` raw `--glass-bg-*` tokens are
|
|
233
|
+
UNTOUCHED (other surfaces compose them at the element correctly — the raw token +
|
|
234
|
+
the element-level oklab wrapper is the correct ladder shape). */
|
|
235
|
+
.btn-glass {
|
|
236
|
+
--glass-bg-resting-tinted: color-mix(
|
|
237
|
+
in oklab,
|
|
238
|
+
var(--glass-bg-resting),
|
|
239
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
240
|
+
);
|
|
241
|
+
--glass-bg-floating-tinted: color-mix(
|
|
242
|
+
in oklab,
|
|
243
|
+
var(--glass-bg-floating),
|
|
244
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* BB.W-BUTTON-GLASS (e) — the optional refraction-edge opt-in. CONSUMES the
|
|
249
|
+
EXISTING refraction axis (glass-refract.css, the `#glass-refract` SVG-filter
|
|
250
|
+
lens, `@supports (backdrop-filter: url(#…))`-gated with the un-gated blur base
|
|
251
|
+
as the off-Chromium floor) — NEVER a button-local lens fork. BB.W-LENSING landed
|
|
252
|
+
the squircle bevel-profile + the typed `--glass-refract` axis + the `.glass-lens`
|
|
253
|
+
opt-in class (renamed off `.glass-refract`, clean break); the button COMPOSES
|
|
254
|
+
`.glass-lens`.
|
|
255
|
+
|
|
256
|
+
A `<Button :liquid>` adds `.glass-lens` to the host; on a supporting engine the
|
|
257
|
+
button reads the edge-bend over its blur base. The base recipe (the
|
|
258
|
+
`@supports`-gated `.glass-lens` rule in glass-refract.css) already paints the
|
|
259
|
+
displacement filter over `--glass-blur-resting`; this block adds NOTHING to the
|
|
260
|
+
filter graph (it would fork the axis) — the button merely COMPOSES `.glass-lens`.
|
|
261
|
+
|
|
262
|
+
The `:active` LENS-SWELL is the CHEAP coupled read, NOT a per-frame displacement-
|
|
263
|
+
map re-rasterize (the §Triumvirate / R2 budget: `feDisplacementMap` is resize-
|
|
264
|
+
expensive — only the `scale` attr animates without rebuilding the map, and even
|
|
265
|
+
that re-rasterizes; the one-refractive-element-per-route budget forbids the per-
|
|
266
|
+
frame cost). The swell is the press SQUISH (Button.vue, the `useLiquidFlex`
|
|
267
|
+
reciprocal X/Y deform) + the coupled `--glass-specular-intensity-active` gleam
|
|
268
|
+
lift on the SAME `--glass-btn-press-t` drive — the glass reads as DEFORMING under
|
|
269
|
+
the press without re-rasterizing the lens map. Off-Chromium the whole arm degrades
|
|
270
|
+
to the un-gated `.btn-glass` blur+tint base (the no-workaround floor). The
|
|
271
|
+
`--glass-btn-press-t` typed drive (property-regs.css) is the ONE press scalar the
|
|
272
|
+
squish + the gleam coupling both read. */
|
|
273
|
+
.btn-glass.glass-lens {
|
|
274
|
+
/* The press drive scalar (0 rest → 1 pressed) Button.vue writes off the spring;
|
|
275
|
+
the resting default is 0 so an unwired refraction button is the static lens.
|
|
276
|
+
The `:active` LENS-SWELL on this drive lives in material.css's `.glass-lens`
|
|
277
|
+
block (`--glass-refract` bumps on press); this block only floors the drive. */
|
|
278
|
+
--glass-btn-press-t: 0;
|
|
173
279
|
}
|
|
174
280
|
|
|
175
281
|
/* ── Pill input ───────────────────────────────── */
|
|
@@ -189,16 +295,21 @@
|
|
|
189
295
|
`:focus-visible` accent ring + the `:user-invalid`/`[aria-invalid]`
|
|
190
296
|
destructive ring below still win by order + specificity.
|
|
191
297
|
AX.W54 — moved off the srgb `--surface-tint-15` fork onto the glass
|
|
192
|
-
border seam
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
`--glass-
|
|
201
|
-
|
|
298
|
+
border seam so the pill is ONE glass model with the rest of the ladder.
|
|
299
|
+
BA.W-SURFACE-AXIS scope 7 — re-pointed onto the SHARED `--control-surface-*`
|
|
300
|
+
REST register so Input/Textarea/NumberField/Select/Combobox/TagsInput are
|
|
301
|
+
ONE material at rest (the input rung was the warmer of the two; Select rode
|
|
302
|
+
the `glass-wash` gray — the no-gray control-family seam). The register reads
|
|
303
|
+
the same `--glass-*` ladder, so `--glass-level`/the W55 bright bucket retune
|
|
304
|
+
the whole form family in lockstep (--control-surface-border defaults to the
|
|
305
|
+
`--glass-border-floating` 15%α rung, --control-surface-bg to `--glass-bg-quiet`,
|
|
306
|
+
--control-surface-blur to `--glass-blur-quiet`). */
|
|
307
|
+
border: 1.5px solid var(--control-surface-border);
|
|
308
|
+
background: var(--control-surface-bg);
|
|
309
|
+
/* The control's REAL glass blur — the shared register's quiet-tier radius
|
|
310
|
+
(the same `--control-surface-blur` pairs with `--control-surface-bg`); the
|
|
311
|
+
`--glass-level` knob clarifies it in lockstep with every surface. */
|
|
312
|
+
backdrop-filter: var(--control-surface-blur);
|
|
202
313
|
padding: 0 calc(1rem * var(--ui-scale));
|
|
203
314
|
font-size: var(--control-text);
|
|
204
315
|
color: var(--foreground);
|
|
@@ -214,6 +325,24 @@
|
|
|
214
325
|
color: var(--surface-tint-35);
|
|
215
326
|
}
|
|
216
327
|
|
|
328
|
+
/* BA.W-SURFACE-AXIS scope 7 — the shared control REST surface class. The
|
|
329
|
+
NON-pill control families (the Select trigger, the TagsInput root) that do
|
|
330
|
+
NOT compose `.input-pill` but want the SAME resting material read this — so
|
|
331
|
+
the whole form band is ONE register at rest (the Select default rode the
|
|
332
|
+
lighter `glass-wash` gray before; this is the no-gray control-family seam).
|
|
333
|
+
It carries the bg/border/blur ONLY (each control owns its own height/radius/
|
|
334
|
+
padding/font), so a non-pill control composes `.control-surface` + its own
|
|
335
|
+
geometry. The hover lift brightens the fill one step toward the resting rung. */
|
|
336
|
+
.control-surface {
|
|
337
|
+
background: var(--control-surface-bg);
|
|
338
|
+
border: 1px solid var(--control-surface-border);
|
|
339
|
+
backdrop-filter: var(--control-surface-blur);
|
|
340
|
+
-webkit-backdrop-filter: var(--control-surface-blur);
|
|
341
|
+
}
|
|
342
|
+
.control-surface:hover:not(:disabled, [data-disabled]) {
|
|
343
|
+
background: var(--control-surface-bg-hover);
|
|
344
|
+
}
|
|
345
|
+
|
|
217
346
|
/* AQ.W4 §W4.6 — keyboard-focus ring only. Was bare `:focus` (showed the
|
|
218
347
|
accent ring on a mouse click); `:focus-visible` matches the
|
|
219
348
|
`.focus-ring` / `.glass-btn` / dock-control discipline. Ordered BEFORE
|
|
@@ -255,8 +384,11 @@
|
|
|
255
384
|
invalid field shows the destructive ring on focus too. */
|
|
256
385
|
.input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]):focus-visible {
|
|
257
386
|
border-color: var(--destructive);
|
|
258
|
-
|
|
259
|
-
|
|
387
|
+
/* BB.W-INVALID-RING — the shared destructive ring register (the
|
|
388
|
+
--focus-ring-shadow sibling). The byte-identical recipe is now ONE
|
|
389
|
+
token; the `8%` at-rest bg arm above stays `.input-pill`-local (a
|
|
390
|
+
glass-tint substrate the bare-ring surfaces do not carry). */
|
|
391
|
+
box-shadow: var(--invalid-ring);
|
|
260
392
|
}
|
|
261
393
|
|
|
262
394
|
/* AQ.W4 §W4.3 — `field-sizing: content` autosize (opt-in via the Textarea
|
|
@@ -291,6 +423,48 @@
|
|
|
291
423
|
border-color: var(--surface-tint-15);
|
|
292
424
|
}
|
|
293
425
|
|
|
426
|
+
/* ── BA.W-PAGER — the glass pager pill chassis (.glass-pager-ring) ──────────
|
|
427
|
+
The ONE pager-CHASSIS ring register: a `--radius-pill` glass-floating pill
|
|
428
|
+
(the DockRail-chip recipe — `--glass-bg-floating` + `--glass-blur-floating`
|
|
429
|
+
+ `--glass-edge-light`/`--glass-specular` + the soft drop + the `.dark`
|
|
430
|
+
box-shadow arm). It encapsulates BOTH the `<PagerDots ring>` dot rail AND
|
|
431
|
+
the `<CarouselPager>` counter (the counter re-registers OFF the opaque
|
|
432
|
+
`bg-card` slab onto this — the R9/R10-5 dark-slab class dies in the same
|
|
433
|
+
edit). NEVER an opaque `bg-card` plate: this is the house "controls in a
|
|
434
|
+
glass pill" idiom, translucent (reads the substrate through it), already
|
|
435
|
+
dark/light-safe, already specular-rimmed (≥2-consumer-proven on the dock
|
|
436
|
+
rail-extend chips + the dock collapsed pill). The legibility floor over the
|
|
437
|
+
carousel's image content rides the SAME rebuilt registers
|
|
438
|
+
(W-DARK-MATERIAL/W-NO-GRAY) — no local opaque fallback. */
|
|
439
|
+
.glass-pager-ring {
|
|
440
|
+
display: inline-flex;
|
|
441
|
+
align-items: center;
|
|
442
|
+
gap: 0.375rem;
|
|
443
|
+
padding-inline: 0.625rem;
|
|
444
|
+
padding-block: 0.3125rem;
|
|
445
|
+
border-radius: var(--radius-pill);
|
|
446
|
+
background: var(--glass-bg-floating);
|
|
447
|
+
backdrop-filter: var(--glass-blur-floating);
|
|
448
|
+
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
449
|
+
box-shadow:
|
|
450
|
+
var(--glass-edge-light),
|
|
451
|
+
var(--glass-specular),
|
|
452
|
+
0 2px 6px -2px color-mix(in srgb, var(--shadow-color) 22%, transparent);
|
|
453
|
+
/* §6 EASING DOCTRINE — the surface channel cross-fades on the bezier
|
|
454
|
+
`--ease-standard` (NEVER a spring; a surface prop on a spring is the
|
|
455
|
+
violation). */
|
|
456
|
+
transition:
|
|
457
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
458
|
+
box-shadow var(--duration-fast) var(--ease-standard),
|
|
459
|
+
border-color var(--duration-fast) var(--ease-standard);
|
|
460
|
+
}
|
|
461
|
+
.dark .glass-pager-ring {
|
|
462
|
+
box-shadow:
|
|
463
|
+
var(--glass-edge-light-dark),
|
|
464
|
+
var(--glass-specular-dark),
|
|
465
|
+
0 2px 6px -2px color-mix(in srgb, var(--shadow-color) 30%, transparent);
|
|
466
|
+
}
|
|
467
|
+
|
|
294
468
|
/* ── AW.W23 — chromatic edge dispersion (the polished-glass rim fringe) ──
|
|
295
469
|
An opt-in `.glass-chromatic` composes the warm/cool oklab fringe OVER the
|
|
296
470
|
W22 uniform rim (it does NOT replace it — the rim still rides each rung's
|