@mkbabb/glass-ui 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/CardAction-8whJrLWt.js +268 -0
- package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
- package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
- package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
- package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
- package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
- package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
- package/dist/DialogFooter-9phqcRIS.js +80 -0
- package/dist/DialogScrollContent-TTuovQst.js +93 -0
- package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
- package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
- package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
- package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
- package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
- package/dist/Input-Cg9DF62r.js +57 -0
- package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-CphK7AAm.js +43 -0
- package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
- package/dist/PagerDots-Cjx96la-.js +98 -0
- package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
- package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
- package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
- package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
- package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
- package/dist/Separator-DQcwC2TR.js +44 -0
- package/dist/Switch-B8RscmRu.js +49 -0
- package/dist/Toaster-D9qIHjBI.js +274 -0
- package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
- package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +21 -33
- package/dist/api/types-extra.d.ts +37 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +1231 -260
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +98 -0
- package/dist/button-5dY1Dvhd.js +125 -0
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -3
- package/dist/card.js +2 -2
- package/dist/carousel.js +93 -110
- package/dist/collapsible.js +1 -1
- package/dist/color-Cs0-oxYL.js +116 -0
- package/dist/color.js +2 -2
- package/dist/command.js +1 -1
- package/dist/compile-nZ1xVYTp.js +19 -0
- package/dist/completion-seal.d.ts +1 -0
- package/dist/completion-seal.js +89 -0
- package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
- 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/color.d.ts +13 -0
- package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
- package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
- package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
- 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/spectrum-walk.d.ts +25 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -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/completion-seal/CompletionSeal.vue.d.ts +21 -0
- package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
- package/dist/components/custom/completion-seal/constants.d.ts +46 -0
- package/dist/components/custom/completion-seal/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 +18 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
- package/dist/components/custom/concentric/constants.d.ts +67 -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/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
- package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
- package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
- package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
- package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
- package/dist/components/custom/constellation/constants.d.ts +33 -0
- package/dist/components/custom/constellation/constellationField.d.ts +31 -1
- package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
- package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
- package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
- package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
- package/dist/components/custom/constellation/index.d.ts +5 -5
- package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
- package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
- package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
- package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
- package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
- package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
- package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
- package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
- package/dist/components/custom/deck/constants.d.ts +14 -0
- package/dist/components/custom/deck/index.d.ts +8 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
- package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
- package/dist/components/custom/dock/composables/index.d.ts +2 -0
- package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
- package/dist/components/custom/dock/constants.d.ts +18 -14
- package/dist/components/custom/dock/index.d.ts +5 -2
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
- package/dist/components/custom/dot-flow-field/constants.d.ts +69 -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 +4 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
- package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
- package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
- package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
- package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
- package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
- package/dist/components/custom/dot-matrix/index.d.ts +5 -0
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.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 +80 -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 +11 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
- package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
- package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
- package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
- package/dist/components/custom/fourier-field/constants.d.ts +64 -0
- package/dist/components/custom/fourier-field/index.d.ts +23 -18
- package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
- 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/constants.d.ts +1 -1
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/types.d.ts +36 -0
- package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
- package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
- package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
- package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
- package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
- package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
- package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -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/labeled-field/LabeledField.vue.d.ts +21 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -0
- package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
- package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
- package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
- package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
- package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
- package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
- package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
- package/dist/components/custom/paper-grid/constants.d.ts +57 -0
- package/dist/components/custom/paper-grid/index.d.ts +5 -0
- package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
- package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
- package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
- package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
- package/dist/components/custom/search/index.d.ts +2 -0
- package/dist/components/custom/search/searchVariants.d.ts +19 -0
- package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
- package/dist/components/custom/selectable-chip/index.d.ts +2 -0
- package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -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/split-chars/SplitChars.vue.d.ts +39 -0
- package/dist/components/custom/split-chars/index.d.ts +1 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/tabs/constants.d.ts +20 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
- package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/_shared/useControlSize.d.ts +46 -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 +79 -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 +3 -1
- 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/command/CommandDialog.vue.d.ts +9 -3
- package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
- package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -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/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
- 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/hover-card/HoverCardContent.vue.d.ts +3 -0
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/input/Input.vue.d.ts +3 -0
- package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
- 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/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
- package/dist/composables/color/index.d.ts +2 -0
- package/dist/composables/color/useAccentTone.d.ts +34 -0
- 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/useVizChoreography.d.ts +123 -0
- package/dist/composables/glass/vSpecular.d.ts +2 -0
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
- package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
- package/dist/composables/glass/webgl/shaders/flow.wgsl.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 +75 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
- package/dist/composables/motion/core/index.d.ts +4 -0
- package/dist/composables/motion/index.d.ts +4 -0
- package/dist/composables/motion/scrollReader.d.ts +25 -0
- package/dist/composables/motion/springPresets.d.ts +20 -1
- package/dist/composables/motion/useCharStagger.d.ts +44 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +84 -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/useScrollChrome.d.ts +58 -0
- package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
- package/dist/composables/motion/useSpringPress.d.ts +5 -5
- package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
- package/dist/composables/sidebar/index.d.ts +4 -1
- package/dist/composables/sidebar/types.d.ts +68 -3
- package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
- package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
- package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
- package/dist/composables/virtual/index.d.ts +4 -0
- package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
- package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
- package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
- package/dist/concentric.d.ts +1 -0
- package/dist/concentric.js +836 -0
- package/dist/configurator.js +3 -2
- package/dist/confirm-dialog.js +62 -49
- package/dist/constellation.js +635 -235
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +2 -2
- package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck.d.ts +1 -0
- package/dist/deck.js +105 -0
- package/dist/dialog.js +4 -3
- package/dist/dock.js +819 -568
- 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 +894 -0
- package/dist/dot-matrix.d.ts +1 -0
- package/dist/dot-matrix.js +630 -0
- package/dist/dotMatrixField-D_x9_1qq.js +48 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +380 -0
- package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.d.ts +1 -0
- package/dist/easing.js +475 -0
- package/dist/expandable-container.js +46 -21
- package/dist/fading-scroll.js +1 -1
- package/dist/flow.glsl-B2P7e0MT.js +4 -0
- package/dist/focus-scope.d.ts +1 -0
- package/dist/focus-scope.js +23 -0
- package/dist/forms.js +65 -63
- package/dist/fourier-field.js +831 -172
- 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 +187 -338
- package/dist/goo-blob.js +241 -692
- package/dist/goo-dot-matrix.d.ts +1 -0
- package/dist/goo-dot-matrix.js +591 -0
- 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 +3 -1
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +70 -60
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +14 -9
- package/dist/motion-core.js +58 -36
- package/dist/motion-curves.js +11 -1
- package/dist/motion.js +90 -53
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +2 -91
- package/dist/paper-backdrop.js +1 -1
- package/dist/paper-grid.d.ts +1 -0
- package/dist/paper-grid.js +788 -0
- package/dist/popover.js +1 -1
- package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
- package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
- package/dist/progress.js +1 -1
- package/dist/pulse.js +2 -2
- package/dist/reactive.js +1 -1
- package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
- package/dist/scrollReader-DI1NWxUw.js +42 -0
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +162 -308
- package/dist/select.js +3 -3
- package/dist/selectable-chip.d.ts +1 -0
- package/dist/selectable-chip.js +65 -0
- package/dist/separator.js +1 -1
- package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
- package/dist/sheet.js +1 -1
- package/dist/sidebar.js +216 -114
- package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/spa-view.d.ts +1 -0
- package/dist/spa-view.js +46 -0
- package/dist/spectrum-walk-BVzA7Biz.js +33 -0
- package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
- package/dist/styles/animations.css +46 -12
- package/dist/styles/border-progress.css +109 -0
- package/dist/styles/cards.css +145 -0
- package/dist/styles/completion-seal.css +131 -0
- package/dist/styles/components.css +2 -3
- package/dist/styles/configurator.css +55 -0
- package/dist/styles/critical-partition.mjs +162 -0
- package/dist/styles/critical.css +12 -0
- package/dist/styles/deferred.css +33 -0
- package/dist/styles/dock/cta-seat.css +87 -0
- package/dist/styles/dock/density.css +198 -0
- package/dist/styles/dock/layers.css +101 -29
- package/dist/styles/dock/morph-bridge.css +54 -18
- package/dist/styles/dock/morph.css +132 -7
- package/dist/styles/dock/overflow.css +28 -2
- package/dist/styles/dock/search.css +68 -0
- package/dist/styles/dock/shape.css +124 -0
- package/dist/styles/dock/shell.css +77 -21
- package/dist/styles/dock/stack-rail.css +264 -0
- package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
- package/dist/styles/dock-controls/icon-button.css +14 -0
- package/dist/styles/dock.css +43 -1
- package/dist/styles/drawer.css +81 -35
- package/dist/styles/glass/accent-tone.css +66 -0
- package/dist/styles/glass/control-surfaces.css +167 -0
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +147 -41
- package/dist/styles/glass/material.css +78 -15
- package/dist/styles/glass/reveal.css +136 -0
- package/dist/styles/glass/rim.css +110 -0
- package/dist/styles/glass/surfaces.css +148 -129
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +13 -0
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +77 -15
- package/dist/styles/index.css +36 -9
- package/dist/styles/instrument-chassis.css +66 -3
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/scroll-chrome.css +123 -0
- package/dist/styles/scroll-driven.css +38 -0
- package/dist/styles/segmented-tabs.css +81 -14
- package/dist/styles/theme/bridges.css +33 -0
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +24 -2
- package/dist/styles/tokens/color-radius.css +13 -3
- package/dist/styles/tokens/dark-arm.css +137 -32
- package/dist/styles/tokens/glass-deep.css +100 -0
- package/dist/styles/tokens/glass-fx.css +376 -0
- package/dist/styles/tokens/glass.css +131 -351
- package/dist/styles/tokens/light-dark.css +16 -3
- package/dist/styles/tokens/offsets.css +143 -0
- package/dist/styles/tokens/on-glass-fg.css +39 -0
- package/dist/styles/tokens/property-regs.css +260 -0
- package/dist/styles/tokens/scale-paper.css +168 -96
- package/dist/styles/tokens/scheme-motion.css +114 -38
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/sizing-config.css +110 -0
- package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
- package/dist/styles/tokens.css +14 -3
- package/dist/styles/typography/semantic.css +26 -13
- package/dist/styles/typography/utilities.css +22 -7
- package/dist/styles/utilities/a11y-overrides.css +20 -5
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +307 -0
- package/dist/styles/utilities/base.css +47 -261
- package/dist/styles/utilities/btn.css +17 -4
- package/dist/styles/utilities/components.css +31 -6
- package/dist/styles/utilities/metal.css +215 -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-chip.js +10 -10
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +2 -2
- package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
- package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
- package/dist/useConfiguratorState-4xblKfwd.js +162 -0
- package/dist/useControlSize-SH1UmJCi.js +9 -0
- package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
- package/dist/useDragMorph-BUgAC-zK.js +102 -0
- package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
- package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
- package/dist/useLiquidPress-BooG97RY.js +39 -0
- package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
- package/dist/useScrollChrome-D66AVP7C.js +258 -0
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-BWDnKIwh.js +71 -0
- package/dist/useSpringPress-B1-Czp-V.js +36 -0
- package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/useViewTransition-CUI1nAgn.js +95 -0
- package/dist/vSpecular-EX7loENl.js +68 -0
- package/dist/vendor-B2qOlYY3.js +239 -0
- package/dist/virtual.d.ts +1 -0
- package/dist/virtual.js +225 -0
- package/dist/watercolor-dot.js +117 -74
- package/package.json +252 -28
- package/src/styles/animations.css +46 -12
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +145 -0
- package/src/styles/completion-seal.css +131 -0
- package/src/styles/configurator.css +55 -0
- package/src/styles/critical-partition.mjs +162 -0
- package/src/styles/dock/cta-seat.css +87 -0
- package/src/styles/dock/density.css +198 -0
- package/src/styles/dock/layers.css +101 -29
- package/src/styles/dock/morph-bridge.css +54 -18
- package/src/styles/dock/morph.css +132 -7
- package/src/styles/dock/overflow.css +28 -2
- package/src/styles/dock/search.css +68 -0
- package/src/styles/dock/shape.css +124 -0
- package/src/styles/dock/shell.css +77 -21
- package/src/styles/dock/stack-rail.css +264 -0
- package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
- package/src/styles/dock-controls/icon-button.css +14 -0
- package/src/styles/dock.css +43 -1
- package/src/styles/drawer.css +81 -35
- package/src/styles/glass/accent-tone.css +66 -0
- package/src/styles/glass/control-surfaces.css +167 -0
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +147 -41
- package/src/styles/glass/material.css +78 -15
- package/src/styles/glass/reveal.css +136 -0
- package/src/styles/glass/rim.css +110 -0
- package/src/styles/glass/surfaces.css +148 -129
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +13 -0
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +77 -15
- package/src/styles/index.css +27 -0
- package/src/styles/instrument-chassis.css +66 -3
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/scroll-chrome.css +123 -0
- package/src/styles/scroll-driven.css +38 -0
- package/src/styles/segmented-tabs.css +81 -14
- package/src/styles/theme/bridges.css +33 -0
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +24 -2
- package/src/styles/tokens/color-radius.css +13 -3
- package/src/styles/tokens/dark-arm.css +137 -32
- package/src/styles/tokens/glass-deep.css +100 -0
- package/src/styles/tokens/glass-fx.css +376 -0
- package/src/styles/tokens/glass.css +131 -351
- package/src/styles/tokens/light-dark.css +16 -3
- package/src/styles/tokens/offsets.css +143 -0
- package/src/styles/tokens/on-glass-fg.css +39 -0
- package/src/styles/tokens/property-regs.css +260 -0
- package/src/styles/tokens/scale-paper.css +168 -96
- package/src/styles/tokens/scheme-motion.css +114 -38
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/sizing-config.css +110 -0
- package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
- package/src/styles/tokens.css +14 -3
- package/src/styles/typography/semantic.css +26 -13
- package/src/styles/typography/utilities.css +22 -7
- package/src/styles/utilities/a11y-overrides.css +20 -5
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +307 -0
- package/src/styles/utilities/base.css +47 -261
- package/src/styles/utilities/btn.css +17 -4
- package/src/styles/utilities/components.css +31 -6
- package/src/styles/utilities/metal.css +215 -0
- package/src/styles/utilities.css +14 -7
- package/dist/CardAction-XH4YBVEK.js +0 -158
- package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
- package/dist/DialogFooter-8eZbdmPc.js +0 -165
- package/dist/HoverCardContent-DkMaQzH5.js +0 -83
- package/dist/Input-DVG_J0ne.js +0 -55
- package/dist/Notification-DKjKsQq8.js +0 -100
- package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
- package/dist/Separator-BArl4OaB.js +0 -37
- package/dist/Switch-Dr--uLGH.js +0 -47
- package/dist/Toaster-Bm_HQSpc.js +0 -263
- package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
- package/dist/TooltipProvider-B3MkB_8P.js +0 -104
- package/dist/button-BNDWhAZb.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/color-DweYl7pE.js +0 -86
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
- package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
- package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
- package/dist/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/styles/dock/rail-extend.css +0 -397
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-kiIlun8I.js +0 -303
- package/dist/useRAFLoop-CdwJ7284.js +0 -109
- 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/src/styles/dock/rail-extend.css +0 -397
- /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.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-CqwjnfLv.js} +0 -0
- /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.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/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
- /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
- /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
- /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
- /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
- /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
- /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.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/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
- /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.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
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/* glass/control-surfaces.css
|
|
2
|
+
The form-control REST register carved from glass/surfaces.css — the
|
|
3
|
+
`.input-pill` family (Input/Textarea/NumberField), the shared `.control-surface`
|
|
4
|
+
class (Select default + TagsInput), the validity vocabulary, and the Select
|
|
5
|
+
trigger resting-border lift. A cohesive sub-concern of surfaces.css (the
|
|
6
|
+
no-god-module re-drain), @import-ed by glass.css in cascade order IMMEDIATELY
|
|
7
|
+
AFTER surfaces.css and BEFORE surface-axis.css — same `@layer components`, same
|
|
8
|
+
source order, so the carve is byte-isomorphic.
|
|
9
|
+
See docs/precepts/design-idioms.md §cohesion-aware partials. */
|
|
10
|
+
@layer components {
|
|
11
|
+
/* ── Pill input ───────────────────────────────── */
|
|
12
|
+
.input-pill {
|
|
13
|
+
@apply flex w-full;
|
|
14
|
+
|
|
15
|
+
/* AX.W51 D18 — the input pill rides the ONE `--ui-scale` comfort axis: the
|
|
16
|
+
height reads the `--control-h-md` cohort (`max(calc(2.5rem * --ui-scale),
|
|
17
|
+
--control-floor)`, the h-10 register with the WCAG-44px coarse clamp), the
|
|
18
|
+
font reads `--control-text`, the inline padding scales — so ONE override
|
|
19
|
+
grows the field's height + padding + font in lockstep. Desktop default is
|
|
20
|
+
the identity. */
|
|
21
|
+
/* BC.W-CONTROL-CUSTOM — the height reads the `--control-pill-h` element-
|
|
22
|
+
override seam, DEFAULTING to the cohort `--control-h-md` so a bare
|
|
23
|
+
control is byte-identical to HEAD. The shared `controlSizeClass(size)`
|
|
24
|
+
(_shared/useControlSize.ts) re-points the seam per rung
|
|
25
|
+
(sm→`--control-h-sm`, lg→`--control-h-lg`), so the `size` prop retunes
|
|
26
|
+
the field height WITHOUT a recipe fork — ONE substitution rung, the
|
|
27
|
+
cohort is still the source. */
|
|
28
|
+
height: var(--control-pill-h, var(--control-h-md));
|
|
29
|
+
border-radius: var(--radius-pill);
|
|
30
|
+
/* AW.W13 — the resting field edge reads as an enclosed control at rest
|
|
31
|
+
(~15%α — ~2× the prior 8% glass-wash floor that vanished on cream). The
|
|
32
|
+
`:focus-visible` accent ring + the `:user-invalid`/`[aria-invalid]`
|
|
33
|
+
destructive ring below still win by order + specificity.
|
|
34
|
+
AX.W54 — moved off the srgb `--surface-tint-15` fork onto the glass
|
|
35
|
+
border seam so the pill is ONE glass model with the rest of the ladder.
|
|
36
|
+
BA.W-SURFACE-AXIS scope 7 — re-pointed onto the SHARED `--control-surface-*`
|
|
37
|
+
REST register so Input/Textarea/NumberField/Select/Combobox/TagsInput are
|
|
38
|
+
ONE material at rest (the input rung was the warmer of the two; Select rode
|
|
39
|
+
the `glass-wash` gray — the no-gray control-family seam). The register reads
|
|
40
|
+
the same `--glass-*` ladder, so `--glass-level`/the W55 bright bucket retune
|
|
41
|
+
the whole form family in lockstep (--control-surface-border defaults to the
|
|
42
|
+
`--glass-border-floating` 15%α rung, --control-surface-bg to `--glass-bg-quiet`,
|
|
43
|
+
--control-surface-blur to `--glass-blur-quiet`). */
|
|
44
|
+
border: 1.5px solid var(--control-surface-border);
|
|
45
|
+
background: var(--control-surface-bg);
|
|
46
|
+
/* The control's REAL glass blur — the shared register's quiet-tier radius
|
|
47
|
+
(the same `--control-surface-blur` pairs with `--control-surface-bg`); the
|
|
48
|
+
`--glass-level` knob clarifies it in lockstep with every surface. */
|
|
49
|
+
backdrop-filter: var(--control-surface-blur);
|
|
50
|
+
padding: 0 calc(1rem * var(--ui-scale));
|
|
51
|
+
/* BC.W-CONTROL-CUSTOM — the font reads the `--control-pill-text` seam,
|
|
52
|
+
DEFAULTING to `--control-text` (byte-identical at unset). The `sm` rung
|
|
53
|
+
re-points it to `--control-text-sm` (the quieter register); `default`/`lg`
|
|
54
|
+
keep `--control-text`. This is the C1 close — the input register reads
|
|
55
|
+
`--control-text` via the recipe, NOT a bare `text-sm` literal. */
|
|
56
|
+
font-size: var(--control-pill-text, var(--control-text));
|
|
57
|
+
color: var(--foreground);
|
|
58
|
+
transition:
|
|
59
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
60
|
+
border-color var(--duration-fast) var(--ease-standard),
|
|
61
|
+
box-shadow var(--duration-fast) var(--ease-standard),
|
|
62
|
+
color var(--duration-fast) var(--ease-standard),
|
|
63
|
+
opacity var(--duration-fast) var(--ease-standard);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.input-pill::placeholder {
|
|
67
|
+
color: var(--surface-tint-35);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* BA.W-SURFACE-AXIS scope 7 — the shared control REST surface class. The
|
|
71
|
+
NON-pill control families (the Select trigger, the TagsInput root) that do
|
|
72
|
+
NOT compose `.input-pill` but want the SAME resting material read this — so
|
|
73
|
+
the whole form band is ONE register at rest (the Select default rode the
|
|
74
|
+
lighter `glass-wash` gray before; this is the no-gray control-family seam).
|
|
75
|
+
It carries the bg/border/blur ONLY (each control owns its own height/radius/
|
|
76
|
+
padding/font), so a non-pill control composes `.control-surface` + its own
|
|
77
|
+
geometry. The hover lift brightens the fill one step toward the resting rung. */
|
|
78
|
+
.control-surface {
|
|
79
|
+
background: var(--control-surface-bg);
|
|
80
|
+
border: 1px solid var(--control-surface-border);
|
|
81
|
+
backdrop-filter: var(--control-surface-blur);
|
|
82
|
+
-webkit-backdrop-filter: var(--control-surface-blur);
|
|
83
|
+
}
|
|
84
|
+
.control-surface:hover:not(:disabled, [data-disabled]) {
|
|
85
|
+
background: var(--control-surface-bg-hover);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* AQ.W4 §W4.6 — keyboard-focus ring only. Was bare `:focus` (showed the
|
|
89
|
+
accent ring on a mouse click); `:focus-visible` matches the
|
|
90
|
+
`.focus-ring` / `.glass-btn` / dock-control discipline. Ordered BEFORE
|
|
91
|
+
the `:user-invalid` rungs so an invalid focused field shows destructive,
|
|
92
|
+
not accent (the `:user-invalid:focus-visible` rule below wins by order +
|
|
93
|
+
specificity). `:focus-visible` Baseline Widely — no fallback. */
|
|
94
|
+
.input-pill:focus-visible {
|
|
95
|
+
outline: none;
|
|
96
|
+
border-color: var(--color-accent-opaque, var(--ring));
|
|
97
|
+
box-shadow: 0 0 0 2px var(--color-accent, color-mix(in srgb, var(--ring) 30%, transparent));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* AQ.W4 §W4.1 — validity vocabulary on `.input-pill` (Input + Textarea).
|
|
101
|
+
The forgiving `:where(:user-invalid, .user-invalid-fallback,
|
|
102
|
+
[aria-invalid="true"])` group is ONE rule covering THREE trigger surfaces:
|
|
103
|
+
native constraint-validation (`:user-invalid`), the `useUserInvalidAria`
|
|
104
|
+
fallback class for engines without `:user-invalid` (css §3.2; NOT a
|
|
105
|
+
live+dead alias — the class is the SOLE fallback), AND (AW.W18) the
|
|
106
|
+
imperative `[aria-invalid="true"]` attribute. The `[aria-invalid]` arm
|
|
107
|
+
serves APP-DRIVEN validity — a custom key match, an async server check —
|
|
108
|
+
where there is no native constraint to trip `:user-invalid`, so the app
|
|
109
|
+
sets the ARIA attribute and the library's own ring paints with no
|
|
110
|
+
`:deep()` re-paint at the consumer. The destructive/success tints reuse
|
|
111
|
+
the semantic tokens via `color-mix` per the house pattern (W2). Non-color
|
|
112
|
+
reinforcement is the error TEXT (W4.5 `error` slot) + the `required`
|
|
113
|
+
asterisk — the border/bg shift is the supplementary cue, never the sole
|
|
114
|
+
one. `:user-valid` is intentionally subtle (border only, no bg fill) so
|
|
115
|
+
a long valid form is not a wall of green. */
|
|
116
|
+
.input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]) {
|
|
117
|
+
border-color: var(--destructive);
|
|
118
|
+
background: color-mix(in srgb, var(--destructive) 8%, var(--glass-bg-quiet));
|
|
119
|
+
}
|
|
120
|
+
.input-pill:where(:user-valid, .user-valid-fallback) {
|
|
121
|
+
border-color: var(--success);
|
|
122
|
+
}
|
|
123
|
+
/* Invalid + keyboard-focused → destructive ring (overrides the accent
|
|
124
|
+
`:focus-visible` ring above by order + the extra invalid compound). The
|
|
125
|
+
`[aria-invalid]` arm rides the same widened group so an app-driven
|
|
126
|
+
invalid field shows the destructive ring on focus too. */
|
|
127
|
+
.input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]):focus-visible {
|
|
128
|
+
border-color: var(--destructive);
|
|
129
|
+
/* BB.W-INVALID-RING — the shared destructive ring register (the
|
|
130
|
+
--focus-ring-shadow sibling). The byte-identical recipe is now ONE
|
|
131
|
+
token; the `8%` at-rest bg arm above stays `.input-pill`-local (a
|
|
132
|
+
glass-tint substrate the bare-ring surfaces do not carry). */
|
|
133
|
+
box-shadow: var(--invalid-ring);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* AQ.W4 §W4.3 — `field-sizing: content` autosize (opt-in via the Textarea
|
|
137
|
+
`autosize` prop → `[data-autosize]`). The textarea grows vertically with
|
|
138
|
+
content between a 3-line floor and a token-driven ceiling, then scrolls.
|
|
139
|
+
`field-sizing` Baseline Newly (Chromium 2024) — on a non-supporting
|
|
140
|
+
engine the declaration is ignored and the element keeps the
|
|
141
|
+
`min/max-block-size` bounds + standard scroll (no JS, no `@supports`,
|
|
142
|
+
no grid-mirror polyfill). The fixed-size path (default, `min-h-20`) is
|
|
143
|
+
the unchanged no-op fallback. */
|
|
144
|
+
.input-pill[data-autosize] {
|
|
145
|
+
field-sizing: content;
|
|
146
|
+
width: 100%;
|
|
147
|
+
min-block-size: 3lh;
|
|
148
|
+
max-block-size: var(--textarea-autosize-max, 12lh);
|
|
149
|
+
resize: vertical;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.input-pill:disabled {
|
|
153
|
+
opacity: 0.5;
|
|
154
|
+
cursor: not-allowed;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* AW.W13 — the Select trigger mirrors the input pill's resting border lift.
|
|
158
|
+
The reka-ui SelectTrigger renders `role="combobox"` over the `.glass-wash`
|
|
159
|
+
surface; its 8%α `--glass-border-wash` field edge vanished on cream just
|
|
160
|
+
like the input pill, so the same `--surface-tint-15` lift makes the
|
|
161
|
+
trigger read as an enclosed control at rest. Scoped to the combobox role
|
|
162
|
+
so the lift reaches ONLY the Select trigger, not every `.glass-wash`
|
|
163
|
+
surface. */
|
|
164
|
+
.glass-wash[role="combobox"] {
|
|
165
|
+
border-color: var(--surface-tint-15);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* glass/deep.css — BB.W-DEEP-GLASS — the OPT-IN `.glass-deep` decoration.
|
|
2
|
+
*
|
|
3
|
+
* The deep-glass register: the maximal iOS-27 Liquid-Glass tier ABOVE the
|
|
4
|
+
* W-GLASS-CAL calm default (the Apple `saturate(1.8) blur(20px)` family, landed
|
|
5
|
+
* at the budget-clearing 16px / saturate 1.5; tokens/glass-deep.css). `.glass-deep`
|
|
6
|
+
* is the OPT-IN surface — a consumer adds it to a glass surface that wants the
|
|
7
|
+
* thick refractive liquid read (the hero glass, the dock, the CTA); the bare
|
|
8
|
+
* content default is UNCHANGED (the calm default is the user's call).
|
|
9
|
+
*
|
|
10
|
+
* ── The token-substitution model (the `.glass-opaque` precedent) ───────────
|
|
11
|
+
* `.glass-deep` is a DECORATION ON a base `.glass-*` rung, NOT a parallel solid/
|
|
12
|
+
* blur recipe. It mirrors `.glass-opaque` (ladder.css §opaque-escape — which only
|
|
13
|
+
* sets `--glass-level: 0`, a token re-point, never a competing `backdrop-filter`):
|
|
14
|
+
* `.glass-deep` re-points the floating-rung blur token to the deep family
|
|
15
|
+
* (`--glass-blur-floating: var(--glass-blur-deep)`), so the base `.glass-floating`
|
|
16
|
+
* rule's `backdrop-filter: var(--glass-blur-floating)` resolves to the DEEP blur —
|
|
17
|
+
* NO cascade fight, NO base-rule edit, the glass edge/rim/under-shadow + the W55
|
|
18
|
+
* tint axis + the a11y brackets all compose unchanged. The deep tier rides a base
|
|
19
|
+
* rung exactly as `.glass-opaque` does (the CardTier map is `deep →
|
|
20
|
+
* 'glass-floating glass-deep'`).
|
|
21
|
+
*
|
|
22
|
+
* Because the deep blur (glass-deep.css) COMPOSES `var(--glass-level)`, the a11y
|
|
23
|
+
* brackets (`prefers-reduced-transparency: reduce` / `prefers-contrast: more` set
|
|
24
|
+
* `--glass-level: 0` / 0.3 at :root, a11y-fallback.css) reach the deep plate for
|
|
25
|
+
* FREE — the deep blur collapses to blur(0) under reduced-transparency through the
|
|
26
|
+
* SAME level path (the opaque escape). The W55 bright-bucket darken reaches the
|
|
27
|
+
* deep surface by construction too: `.glass-deep` is composed WITH `.glass-floating`,
|
|
28
|
+
* which is already in the W55 `@container style(--glass-backdrop: light)` material
|
|
29
|
+
* group (ladder.css) AND self-engages the overlay-band darken — the deep tier
|
|
30
|
+
* inherits the legibility tint with no selector-list edit.
|
|
31
|
+
*
|
|
32
|
+
* @import-ed in glass.css AFTER ladder.css/surfaces.css (the same @layer components,
|
|
33
|
+
* source-order-after so the token re-point lands beside the rung it rides) and
|
|
34
|
+
* BEFORE the a11y @media brackets (which still win by the :root level re-point).
|
|
35
|
+
*/
|
|
36
|
+
@layer components {
|
|
37
|
+
/* The deep decoration: re-point the floating rung's blur token to the deep
|
|
38
|
+
family. The base `.glass-floating` rule (`backdrop-filter:
|
|
39
|
+
var(--glass-blur-floating)`) then paints the deep `blur(16px) saturate(1.5)`
|
|
40
|
+
at `--glass-depth: 1` — the Apple-deep register, opt-in. */
|
|
41
|
+
.glass-deep {
|
|
42
|
+
--glass-blur-floating: var(--glass-blur-deep);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -31,13 +31,21 @@
|
|
|
31
31
|
strength))`). With the default `--glass-tint-strength: 0%` the mix is a
|
|
32
32
|
no-op = byte-identical to the un-tinted rung; a consumer biases the surface
|
|
33
33
|
toward a sampled backdrop hue by setting `--glass-tint-source` + a
|
|
34
|
-
strength ≤30%. oklab is the mwg-preferred tint space
|
|
35
|
-
`oklch(from …)` lightness-shift
|
|
34
|
+
strength ≤30%. oklab is the mwg-preferred tint space for the TINT mix here
|
|
35
|
+
(NEVER an `oklch(from …)` lightness-shift in the GLASS-TINT mix). The
|
|
36
|
+
`oklch(from var(--foreground) …)` relative-color recipe DID land its first
|
|
37
|
+
live consumer at BB.W-DARK-INK-WARM — the dark `--surface-tint-*` arm
|
|
38
|
+
(`tokens/dark-arm.css`), where the tolerant α-mix absorbs the small high-L
|
|
39
|
+
chroma (the gamut-map caveat documented + pinned under the gamut edge there).
|
|
40
|
+
That is the INK derivation, separate from THIS glass-tint mix space. */
|
|
36
41
|
.glass-wash {
|
|
37
42
|
position: relative;
|
|
38
43
|
background: color-mix(in oklab, var(--glass-bg-wash), var(--glass-tint-source) var(--glass-tint-strength));
|
|
39
44
|
backdrop-filter: var(--glass-blur-wash);
|
|
40
|
-
border
|
|
45
|
+
/* BB.W-GLASS-ACCENT — the rung border ink feeds the accent-composed
|
|
46
|
+
`--glass-border-accent` (rim group above); byte-identical at 0%. */
|
|
47
|
+
--glass-border-rung: var(--glass-border-wash);
|
|
48
|
+
border: 1px solid var(--glass-border-accent);
|
|
41
49
|
box-shadow: var(--glass-material-rim), var(--glass-shadow-wash);
|
|
42
50
|
}
|
|
43
51
|
|
|
@@ -57,7 +65,8 @@
|
|
|
57
65
|
position: relative;
|
|
58
66
|
background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
|
|
59
67
|
backdrop-filter: var(--glass-blur-quiet);
|
|
60
|
-
border:
|
|
68
|
+
--glass-border-rung: var(--glass-border-quiet);
|
|
69
|
+
border: 1px solid var(--glass-border-accent);
|
|
61
70
|
box-shadow:
|
|
62
71
|
var(--glass-material-rim),
|
|
63
72
|
var(--glass-under-shadow-quiet),
|
|
@@ -68,7 +77,8 @@
|
|
|
68
77
|
position: relative;
|
|
69
78
|
background: color-mix(in oklab, var(--glass-bg-resting), var(--glass-tint-source) var(--glass-tint-strength));
|
|
70
79
|
backdrop-filter: var(--glass-blur-resting);
|
|
71
|
-
border:
|
|
80
|
+
--glass-border-rung: var(--glass-border-resting);
|
|
81
|
+
border: 1px solid var(--glass-border-accent);
|
|
72
82
|
box-shadow:
|
|
73
83
|
var(--glass-material-rim),
|
|
74
84
|
var(--glass-under-shadow-default),
|
|
@@ -94,7 +104,8 @@
|
|
|
94
104
|
position: relative;
|
|
95
105
|
background: color-mix(in oklab, var(--glass-bg-floating), var(--glass-tint-source) var(--glass-tint-strength));
|
|
96
106
|
backdrop-filter: var(--glass-blur-floating);
|
|
97
|
-
border:
|
|
107
|
+
--glass-border-rung: var(--glass-border-floating);
|
|
108
|
+
border: 1px solid var(--glass-border-accent);
|
|
98
109
|
box-shadow:
|
|
99
110
|
var(--glass-material-rim),
|
|
100
111
|
var(--glass-under-shadow-vivid),
|
|
@@ -108,7 +119,8 @@
|
|
|
108
119
|
position: relative;
|
|
109
120
|
background: color-mix(in oklab, var(--glass-bg-overlay), var(--glass-tint-source) var(--glass-tint-strength));
|
|
110
121
|
backdrop-filter: var(--glass-blur-overlay);
|
|
111
|
-
border:
|
|
122
|
+
--glass-border-rung: var(--glass-border-overlay);
|
|
123
|
+
border: 1px solid var(--glass-border-accent);
|
|
112
124
|
box-shadow: var(--glass-material-rim), var(--glass-shadow-overlay);
|
|
113
125
|
}
|
|
114
126
|
|
|
@@ -199,8 +211,35 @@
|
|
|
199
211
|
`--glass-tint-strength: 0%`. */
|
|
200
212
|
:where(.glass-floating, .glass-overlay) {
|
|
201
213
|
--glass-tint-source: var(--glass-tint-ink);
|
|
202
|
-
|
|
203
|
-
|
|
214
|
+
/* BC.W-ADAPTIVE-RECONCILE (the fourier-analysis-M Tier-1 #1 fold, CONTINUOUS half)
|
|
215
|
+
— the OVERLAY band SPECIFICALLY JOINS the continuous observer driver, the SAME
|
|
216
|
+
clamp the content tiers get. The dropdown/Dialog/Popover/Select-content plate
|
|
217
|
+
FLOORS to warm-cream when the measured backdrop is calm/dark, and darkens
|
|
218
|
+
CONTINUOUSLY only under a measured bright backdrop — NOT the binary `@container`
|
|
219
|
+
bucket jump, NOT a blanket unconditional darken (the retired 4.0.x 20% slab).
|
|
220
|
+
The `BC.W-AUDIT` pre-fix already closed the UNCONDITIONAL-darken half (the band
|
|
221
|
+
floored by default); THIS is the continuous earned-darken half. The MEASURED AA
|
|
222
|
+
bar (the overlay plate clears 4.5:1 WHILE α < 0.86) is GLASS-LEGIBILITY-
|
|
223
|
+
MEASURED's roster addition — the driver here, the bar there, no double-ownership. */
|
|
224
|
+
--glass-tint-strength: clamp(
|
|
225
|
+
var(--glass-tint-strength-floor),
|
|
226
|
+
calc(
|
|
227
|
+
var(--glass-tint-strength-floor) +
|
|
228
|
+
(var(--glass-tint-strength-aa) - var(--glass-tint-strength-floor)) *
|
|
229
|
+
max(0, (var(--glass-backdrop-luma, 0) - var(--glass-backdrop-luma-knee, 0.6)) / (1 - var(--glass-backdrop-luma-knee, 0.6)))
|
|
230
|
+
),
|
|
231
|
+
var(--glass-tint-strength-aa)
|
|
232
|
+
);
|
|
233
|
+
/* BC.W-DIALOG-GLASS — the overlay band's muted caption keeps the on-glass MUTED
|
|
234
|
+
register on a CALM modal (the SAME `--on-glass-muted` the content tiers read on
|
|
235
|
+
their calm path — legible-AND-subordinate against the composited glass fill),
|
|
236
|
+
NOT an UNCONDITIONAL lift to full `--foreground` that blackened the caption on a
|
|
237
|
+
cream modal over a light page. The bright-bucket lift (@container --glass-
|
|
238
|
+
backdrop:light below) moves `--muted-foreground` to the contrast ink in LOCKSTEP
|
|
239
|
+
with `--foreground` only where the plate ACTUALLY darkens to AA — so a busy-
|
|
240
|
+
backdrop modal goes full ink, a calm modal keeps the muted register. */
|
|
241
|
+
--muted-foreground: var(--on-glass-muted);
|
|
242
|
+
--muted-foreground-strong: var(--on-glass-muted-strong);
|
|
204
243
|
}
|
|
205
244
|
|
|
206
245
|
/* BA.W-DARK-MATERIAL scope 7 — the plain CONTENT tiers self-engage the SUB-PERCEPTUAL
|
|
@@ -212,10 +251,52 @@
|
|
|
212
251
|
under the declared/sampled BRIGHT signal (the @container --glass-backdrop:light bucket
|
|
213
252
|
above — where the muted lift also lives now). NO unconditional --muted-foreground lift
|
|
214
253
|
here: on the calm-light floor the caption keeps the muted register (the slides read).
|
|
215
|
-
A consumer opts a light-page card out via `--glass-tint-strength: 0%` on an ancestor.
|
|
254
|
+
A consumer opts a light-page card out via `--glass-tint-strength: 0%` on an ancestor.
|
|
255
|
+
|
|
256
|
+
BB.W-ON-GLASS-FG (N13) — the THIRD-STATE on-glass FOREGROUND re-point lands HERE,
|
|
257
|
+
BESIDE the BA seam (the SAME cascade context, the SAME content-tier set, NOT a new
|
|
258
|
+
competing layer). The calm-light floor keeps the page-muted --neutral-5 at HEAD —
|
|
259
|
+
but the muted ink is calibrated against the CANVAS, and on a TRANSLUCENT content
|
|
260
|
+
plate (the glass-first common case) it composites toward the lifted backdrop and
|
|
261
|
+
its contrast COLLAPSES (1.15-3.29:1 measured in dark). The re-point targets the
|
|
262
|
+
muted register at the COMPOSITED glass fill: --muted-foreground → --on-glass-muted
|
|
263
|
+
(+ the -strong twin), a register BETWEEN the page-muted and the bright-bucket full
|
|
264
|
+
ink (legible-AND-subordinate; the caption stays quieter than body --foreground).
|
|
265
|
+
This is NOT a fork of --glass-tint-* — it READS the seam context and expresses the
|
|
266
|
+
third state; it NEVER re-declares --glass-tint-ink/-strength-* (W-DARK-MATERIAL's
|
|
267
|
+
frozen bound). The BA bright-bucket lift (@container --glass-backdrop:light above,
|
|
268
|
+
--muted-foreground → --foreground) STILL WINS where the plate darkens — the
|
|
269
|
+
@container conditional overrides this unconditional :where() when it engages, so a
|
|
270
|
+
darkened plate goes full ink; this calm re-point is the calm-plate case ONLY. The
|
|
271
|
+
overlay band (:where(.glass-floating, .glass-overlay) above) is a DISJOINT selector
|
|
272
|
+
set (it keeps the full-ink lift), so neither path collides. The values auto-flip per
|
|
273
|
+
mode (the on-glass rungs carry their own light/dark per-mode arms in tokens). */
|
|
216
274
|
:where(.glass-card, .glass-resting, .glass-quiet, .glass-wash) {
|
|
217
275
|
--glass-tint-source: var(--glass-tint-ink);
|
|
218
|
-
|
|
276
|
+
/* BC.W-ADAPTIVE-RECONCILE — the CONTINUOUS observer-driven darken (the dead-knob
|
|
277
|
+
closed; req #7). The strength is no longer a flat floor: it is a clamp that
|
|
278
|
+
READS the observer's measured `--glass-backdrop-luma` and lerps from the calm
|
|
279
|
+
warm-cream floor toward the ≤24% AA ceiling as the backdrop brightens past the
|
|
280
|
+
`--glass-backdrop-luma-knee` (the iOS-27 dynamic-range shift, apple-ios27.md
|
|
281
|
+
§1.5). Over a calm/dark backdrop (luma ≤ knee, the `max(0, …)` ramp → 0) the
|
|
282
|
+
clamp resolves EXACTLY `--glass-tint-strength-floor` (the GLASS-IDENTITY calm
|
|
283
|
+
identity, byte-equal); rising luma ramps the lift CONTINUOUSLY; the clamp floors
|
|
284
|
+
at the 4% identity and ceilings at the bounded AA — never an unconditional 20%
|
|
285
|
+
slab (the AZ grey-slab is the OPPOSITE of this earned, measured track). This
|
|
286
|
+
RETIRES the discrete `@container --glass-backdrop: light` bucket as the strength
|
|
287
|
+
driver — the continuous calc subsumes it (the bucket survives only as a no-
|
|
288
|
+
`@property` degrade fallback). */
|
|
289
|
+
--glass-tint-strength: clamp(
|
|
290
|
+
var(--glass-tint-strength-floor),
|
|
291
|
+
calc(
|
|
292
|
+
var(--glass-tint-strength-floor) +
|
|
293
|
+
(var(--glass-tint-strength-aa) - var(--glass-tint-strength-floor)) *
|
|
294
|
+
max(0, (var(--glass-backdrop-luma, 0) - var(--glass-backdrop-luma-knee, 0.6)) / (1 - var(--glass-backdrop-luma-knee, 0.6)))
|
|
295
|
+
),
|
|
296
|
+
var(--glass-tint-strength-aa)
|
|
297
|
+
);
|
|
298
|
+
--muted-foreground: var(--on-glass-muted);
|
|
299
|
+
--muted-foreground-strong: var(--on-glass-muted-strong);
|
|
219
300
|
}
|
|
220
301
|
|
|
221
302
|
/* AX.W55 — the `contrast-color()` foreground-ink flip (Chrome 147+/Safari 26+).
|
|
@@ -257,14 +338,22 @@
|
|
|
257
338
|
--muted-foreground: contrast-color(var(--card));
|
|
258
339
|
}
|
|
259
340
|
}
|
|
260
|
-
/*
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
341
|
+
/* BC.W-DIALOG-GLASS / BC.W-ADAPTIVE-RECONCILE (overlay-band arm) — the overlay
|
|
342
|
+
band's `contrast-color()` ink flip is now GATED in the bright bucket above
|
|
343
|
+
(the @container --glass-backdrop:light block already lists `.glass-floating,
|
|
344
|
+
.glass-overlay` alongside the content tiers), NOT here as an UNCONDITIONAL
|
|
345
|
+
flip. The retired unconditional `:where(.glass-floating, .glass-overlay)`
|
|
346
|
+
rule blackened the ink even on a CALM modal over a light page — a translucent
|
|
347
|
+
cream plate forced to pure-black `contrast-color(--card)`, harsh on the cream,
|
|
348
|
+
and `--muted-foreground` flipped to the same so captions lost their muted
|
|
349
|
+
register. Now: over a calm/dark backdrop the modal keeps the WARM-INK
|
|
350
|
+
`--foreground` (legible, not pure-black) + the muted caption register; only a
|
|
351
|
+
modal over a genuinely-bright/busy backdrop flips to the dark contrast ink
|
|
352
|
+
(where the plate ACTUALLY darkens to bright-bucket AA), the `--foreground`/
|
|
353
|
+
`--muted-foreground` lift moving in LOCKSTEP there (the scope-6 lockstep). The
|
|
354
|
+
overlay band STILL self-darkens UNCONDITIONALLY (the tint-strength clamp above,
|
|
355
|
+
it floats over unknown) — only the INK flips in the bright bucket. ONE
|
|
356
|
+
reconciled flip, not two forks (ladder.css stays the single source). */
|
|
268
357
|
/* BA.W-DARK-MATERIAL scope 7 — the content-tier ink flip is GATED on the bright
|
|
269
358
|
signal (it moved INTO the @container bucket above), NOT unconditional. Over a calm
|
|
270
359
|
LIGHT page the content tiers only carry the 4% silhouette floor (still a warm cream
|
|
@@ -332,7 +421,16 @@
|
|
|
332
421
|
var(--glass-shadow-floating);
|
|
333
422
|
}
|
|
334
423
|
|
|
335
|
-
/* Grain noise overlay — reuses paper texture SVG, no extra assets
|
|
424
|
+
/* Grain noise overlay — reuses paper texture SVG, no extra assets.
|
|
425
|
+
BB.W-LIQUIDHOVER — the disco-grain pop (T8-F6) killed at the COMPOSITION CLASS:
|
|
426
|
+
the `background-image` is ALWAYS PRESENT (decoded once at rest, NEVER toggled to
|
|
427
|
+
`none`), and any STATE-driven grain engagement cross-fades the `opacity` ONLY on
|
|
428
|
+
the thin `--glass-grain-engage-duration` (~120ms linear) clock. A `background-
|
|
429
|
+
image: none → var(--paper-clean-texture)` engage decodes-and-appears in one frame
|
|
430
|
+
(the pop); the opacity cross-fade is a compositor-cheap interpolation with the
|
|
431
|
+
image constant — the only sanctioned grain engage. The `transition` lives HERE so
|
|
432
|
+
a hover/active grain lift (wherever a glass surface raises grain on interaction)
|
|
433
|
+
reads as a smooth fade by construction, not a discrete swap. */
|
|
336
434
|
.glass-wash::after,
|
|
337
435
|
.glass-quiet::after,
|
|
338
436
|
.glass-resting::after,
|
|
@@ -342,36 +440,44 @@
|
|
|
342
440
|
position: absolute;
|
|
343
441
|
inset: 0;
|
|
344
442
|
border-radius: inherit;
|
|
345
|
-
background
|
|
443
|
+
/* The grain texture is the `background-image` longhand (NOT the `background`
|
|
444
|
+
shorthand) so the image stays a STABLE always-present layer the engage
|
|
445
|
+
never re-declares — the structural anti-pop: opacity is the only animated
|
|
446
|
+
channel, the image is never `none → image`. */
|
|
447
|
+
background-image: var(--paper-clean-texture);
|
|
346
448
|
background-repeat: repeat;
|
|
347
449
|
background-size: var(--paper-texture-size);
|
|
348
450
|
opacity: var(--glass-grain-opacity);
|
|
451
|
+
/* The opacity cross-fade engage — plain ~120ms linear direct-write (no spring,
|
|
452
|
+
no overshoot — instant-but-smooth per the ask). Under the PRM / reduced-
|
|
453
|
+
transparency brackets the clock collapses to 0ms (the a11y bracket below). */
|
|
454
|
+
transition: opacity var(--glass-grain-engage-duration, 120ms) linear;
|
|
349
455
|
pointer-events: none;
|
|
350
456
|
mix-blend-mode: overlay;
|
|
351
457
|
}
|
|
352
458
|
|
|
353
|
-
/*
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
.glass-floating,
|
|
368
|
-
.glass-overlay,
|
|
369
|
-
.glass-card,
|
|
370
|
-
.glass-specular-track,
|
|
371
|
-
.dock-icon-button {
|
|
372
|
-
--glass-material-rim: var(--glass-edge-light);
|
|
459
|
+
/* BB.W-LIQUIDHOVER — the grain engage collapses to INSTANT under reduced motion (a
|
|
460
|
+
grain that cross-fades on hover under reduce is still motion; accessibility is
|
|
461
|
+
absolute). The reduced-transparency / forced-colors brackets already zero
|
|
462
|
+
`--glass-grain-opacity` (a11y-fallback.css), so the grain is inert there; this
|
|
463
|
+
bracket covers the reduced-MOTION case where the grain still paints but must not
|
|
464
|
+
animate. */
|
|
465
|
+
@media (prefers-reduced-motion: reduce) {
|
|
466
|
+
.glass-wash::after,
|
|
467
|
+
.glass-quiet::after,
|
|
468
|
+
.glass-resting::after,
|
|
469
|
+
.glass-floating::after,
|
|
470
|
+
.glass-overlay::after {
|
|
471
|
+
transition: none;
|
|
472
|
+
}
|
|
373
473
|
}
|
|
374
474
|
|
|
475
|
+
/* The unified rim (AW.W22) + the BB.W-GLASS-ACCENT per-INSTANCE chromatic-RIM
|
|
476
|
+
tint group (the rim-ink + --glass-material-rim ring + the per-rung
|
|
477
|
+
--glass-border-accent border, light + dark arms) lives in glass/rim.css
|
|
478
|
+
(carved at BB.W-CARVE4 — the next adjacent @layer components block, the SOLE
|
|
479
|
+
writer of --glass-material-rim/--glass-border-accent). */
|
|
480
|
+
|
|
375
481
|
.dark .glass-wash::after,
|
|
376
482
|
.dark .glass-quiet::after,
|
|
377
483
|
.dark .glass-resting::after,
|
|
@@ -105,23 +105,72 @@
|
|
|
105
105
|
registered-`@property` var() nested in an hsl() alpha computes to 0 in
|
|
106
106
|
Chromium — the cross-engine-safe path); the per-stop alphas are literals so
|
|
107
107
|
even the lifted hover/active states read as a lens, not a flash. */
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
/* BB.W-LENSING (scope 3) — the motion-reactive EDGE glint UNIFIED with the
|
|
109
|
+
centered catch-light disc on ONE `::before`. TWO background layers compose:
|
|
110
|
+
(TOP) the angle-keyed EDGE-anchored conic sweep — a warm-cream arc that
|
|
111
|
+
brightens the RIM where the pointer's `--specular-angle` grazes (the
|
|
112
|
+
glass-THICKNESS read iOS-27 fuses with the catch-light); (BOTTOM) the
|
|
113
|
+
existing pointer-position centered disc. BOTH ride the SAME `--specular-
|
|
114
|
+
intensity` cohort (the `opacity` below) + `plus-lighter` blend + warm-cream
|
|
115
|
+
core `hsl(40 35% 92%)` — NEVER a second color/blend fork. The conic is masked
|
|
116
|
+
to the rim band only (the `--glass-edge-glint-band` radial mask, scope 3),
|
|
117
|
+
so the glint is a bounded RIM ring, NOT a whole-plate wash (the AX.W52 D19
|
|
118
|
+
bounded-gleam discipline). The `--specular-angle` floor `0deg` sits the glint
|
|
119
|
+
at the top edge when unwired (static rest — no ambient drift, no blowout). */
|
|
120
|
+
/* BB.W-GLASS-ACCENT — the catch-light CORE COLOR composes the per-instance
|
|
121
|
+
chromatic accent. The warm-cream `hsl(40 35% 92%)` core resolves through
|
|
122
|
+
the ONE `--glass-specular-core` var, OKLab-mixed toward `var(--glass-
|
|
123
|
+
accent)` at `var(--glass-accent-strength)`. This tints the CORE only — it
|
|
124
|
+
is the COLOR axis; W-LENSING owns the GEOMETRY (the conic angle-keyed
|
|
125
|
+
edge-glint + the radial disc + the masks + the `plus-lighter` blend, all
|
|
126
|
+
BELOW, untouched). Tinting the ONE core tints BOTH the centered disc AND
|
|
127
|
+
the rim glint (they share the core), so the data hue reads at the glint
|
|
128
|
+
where the pointer grazes — the data-keyed colored catch-light. At
|
|
129
|
+
`--glass-accent-strength: 0%` + `--glass-accent: transparent` (the
|
|
130
|
+
`@property` defaults) the mix === `hsl(40 35% 92%)` byte-identical (the W2
|
|
131
|
+
warm-cream floor). Each gradient stop reproduces its original alpha via
|
|
132
|
+
`color-mix(in srgb, <core> N%, transparent)` (=== the prior `<core> / 0.NN`),
|
|
133
|
+
so the geometry + falloff is byte-identical at rest. */
|
|
134
|
+
--glass-specular-core: color-mix(
|
|
135
|
+
in oklab,
|
|
136
|
+
hsl(40 35% 92%),
|
|
137
|
+
var(--glass-accent) var(--glass-accent-strength)
|
|
113
138
|
);
|
|
139
|
+
background:
|
|
140
|
+
conic-gradient(
|
|
141
|
+
from var(--specular-angle, 0deg) at 50% 50%,
|
|
142
|
+
transparent 0deg,
|
|
143
|
+
color-mix(in srgb, var(--glass-specular-core) 55%, transparent) 18deg,
|
|
144
|
+
transparent 60deg,
|
|
145
|
+
transparent 360deg
|
|
146
|
+
),
|
|
147
|
+
radial-gradient(
|
|
148
|
+
circle var(--glass-specular-size, 36%) at var(--specular-x, 50%) var(--specular-y, 50%),
|
|
149
|
+
color-mix(in srgb, var(--glass-specular-core) 50%, transparent) 0%,
|
|
150
|
+
transparent 70%,
|
|
151
|
+
transparent 100%
|
|
152
|
+
);
|
|
114
153
|
opacity: var(--specular-intensity, 0);
|
|
115
|
-
/*
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
154
|
+
/* Per-layer masks (the `,`-separated list pairs with the two backgrounds in
|
|
155
|
+
order): the EDGE conic is masked to the RIM BAND ONLY — transparent across
|
|
156
|
+
the interior, opaque in the outer `--glass-edge-glint-band` (default 22%) — so
|
|
157
|
+
the angle-keyed glint reads as a THICKNESS rim, not a center wash; the centered
|
|
158
|
+
disc keeps its own-radius clip (AX.W52 D19). `mask-image` Baseline 2023-12-07;
|
|
159
|
+
a non-supporting engine ignores it and the `inset: 0` + in-paint falloff still
|
|
160
|
+
bound the gleam. */
|
|
161
|
+
mask-image:
|
|
162
|
+
radial-gradient(
|
|
163
|
+
circle closest-side at 50% 50%,
|
|
164
|
+
transparent calc(100% - var(--glass-edge-glint-band, 22%)),
|
|
165
|
+
black calc(100% - calc(var(--glass-edge-glint-band, 22%) * 0.5)),
|
|
166
|
+
black 100%
|
|
167
|
+
),
|
|
168
|
+
radial-gradient(
|
|
169
|
+
circle var(--glass-specular-size, 36%) at var(--specular-x, 50%) var(--specular-y, 50%),
|
|
170
|
+
black 0%,
|
|
171
|
+
black 60%,
|
|
172
|
+
transparent 100%
|
|
173
|
+
);
|
|
125
174
|
/* AX.W52 D19 — `plus-lighter` (additive but HDR-clamped, Safari 16.4+) over
|
|
126
175
|
the prior `screen` (a non-linear lightener that lifted the whole tile
|
|
127
176
|
toward white — the muddy-card defect). A non-supporting engine degrades to
|
|
@@ -235,4 +284,18 @@
|
|
|
235
284
|
--specular-intensity: var(--glass-specular-intensity-active, 0.16);
|
|
236
285
|
}
|
|
237
286
|
|
|
287
|
+
/* BB.W-LENSING (scope 2) — the `:active` LENS-SWELL is RETIRED (DDR-LENS-BAKE,
|
|
288
|
+
glass-refract.css header). The swell drove the displacement `scale` by mutating
|
|
289
|
+
the `--glass-refract` axis on the `--glass-btn-press-t` press drive (28 rest → 44
|
|
290
|
+
pressed). That depended on the var()-spliced head/`scale`/tail filter — which never
|
|
291
|
+
PARSED as a `backdrop-filter` (three tokens: `url("…") <n> url("…")`), so the lens
|
|
292
|
+
rendered `none` and the swell animated a value that reached NO filter. A CSS url()
|
|
293
|
+
string token cannot carry a substituted `var()` (the engine does not re-tokenise
|
|
294
|
+
inside a string), so a dynamic per-instance `scale` is structurally impossible in a
|
|
295
|
+
single self-contained data-URI — and the single token is mandatory for both parse
|
|
296
|
+
validity and bundler url()-rewrite safety. The `scale` is now BAKED at the §10
|
|
297
|
+
default (28); the resting lens read is PRESERVED (and now actually renders), the
|
|
298
|
+
press-depth animation is the deliberate tradeoff. The press squish + gleam lift on
|
|
299
|
+
the SAME `--glass-btn-press-t` drive (material gleam, above) carry the press read. */
|
|
300
|
+
|
|
238
301
|
}
|