@mkbabb/glass-ui 4.0.1 → 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/dist/{CardAction-CW7a0m8M.js → CardAction-8whJrLWt.js} +23 -8
- package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-D3yxgHNn.js} +23 -12
- package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-CaP7U3ZA.js} +11 -11
- package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
- package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DDRID3qC.js} +15 -15
- package/dist/{DataTable-CuKwF7wr.js → DataTable-Bc9kUtu_.js} +2 -2
- package/dist/{DialogContent-DcKK8k9i.js → DialogContent-6JtTB5x2.js} +8 -5
- package/dist/DialogFooter-9phqcRIS.js +80 -0
- package/dist/DialogScrollContent-TTuovQst.js +93 -0
- package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
- package/dist/{IconChip-BTD-nay5.js → IconChip-DhbdGdFQ.js} +1 -1
- package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-B0zimd2H.js} +1 -1
- package/dist/Input-Cg9DF62r.js +57 -0
- package/dist/{Notification-VUwexFUf.js → Notification-CphK7AAm.js} +3 -3
- package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
- package/dist/PagerDots-Cjx96la-.js +98 -0
- package/dist/{SelectScrollDownButton-CrA8F0iV.js → SelectScrollDownButton-DAKCBEdW.js} +62 -57
- package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-C2UGOkXF.js} +1 -1
- package/dist/Separator-DQcwC2TR.js +44 -0
- package/dist/Switch-B8RscmRu.js +49 -0
- package/dist/{Toaster-Bw4xR8xV.js → Toaster-D9qIHjBI.js} +1 -1
- package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BLtr3TJq.js} +2 -2
- package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
- package/dist/animated-digit.js +1 -1
- package/dist/api/index.d.ts +15 -32
- package/dist/api/types-extra.d.ts +31 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +579 -251
- package/dist/border-progress.js +49 -57
- package/dist/{button-DYCUa-tH.js → button-5dY1Dvhd.js} +13 -14
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -3
- package/dist/card.js +1 -1
- package/dist/carousel.js +20 -20
- package/dist/color-Cs0-oxYL.js +116 -0
- package/dist/color.js +2 -2
- package/dist/command.js +1 -1
- 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/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 +12 -0
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +11 -2
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +18 -0
- package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
- 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 -1
- package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
- package/dist/components/custom/border-progress/index.d.ts +1 -1
- 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/composables/concentricGLSetup.d.ts +7 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +9 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +57 -16
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +2 -1
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +4 -4
- package/dist/components/custom/concentric/constants.d.ts +30 -6
- package/dist/components/custom/concentric/index.d.ts +2 -2
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
- package/dist/components/custom/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 +12 -0
- 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 +80 -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/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 +15 -11
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +48 -6
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +23 -8
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -5
- package/dist/components/custom/dot-flow-field/constants.d.ts +42 -21
- package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -20
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -1
- 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/EasingPicker.vue.d.ts +2 -2
- package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +40 -47
- 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 +40 -37
- package/dist/components/custom/fourier-field/constants.d.ts +61 -4
- 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/goo-blob/GooBlob.vue.d.ts +9 -1
- 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 -1
- 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/labeled-field/LabeledField.vue.d.ts +21 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
- 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/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 +8 -6
- package/dist/components/custom/tabs/constants.d.ts +20 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +29 -16
- 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/useControlSize.d.ts +46 -0
- package/dist/components/ui/button/index.d.ts +1 -1
- package/dist/components/ui/card/Card.vue.d.ts +45 -0
- package/dist/components/ui/card/index.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselPrevious.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/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
- package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -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/select/SelectContent.vue.d.ts +3 -0
- package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
- package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
- 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/useVizChoreography.d.ts +123 -0
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
- package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
- package/dist/composables/glass/webgpu/index.d.ts +1 -1
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +28 -7
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -0
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
- package/dist/composables/motion/core/index.d.ts +3 -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 +31 -6
- 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.js +495 -221
- package/dist/configurator.js +2 -2
- package/dist/confirm-dialog.js +62 -47
- package/dist/constellation.js +635 -235
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +1 -1
- 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 +602 -458
- package/dist/dot-flow-field.js +580 -290
- 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/{dropdown-menu-CofSZuk8.js → dropdown-menu-aJmV5SqE.js} +83 -79
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.js +188 -176
- package/dist/expandable-container.js +42 -20
- package/dist/fading-scroll.js +1 -1
- package/dist/flow.glsl-B2P7e0MT.js +4 -0
- package/dist/forms.js +62 -60
- package/dist/fourier-field.js +825 -178
- package/dist/fourier-math.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +145 -104
- package/dist/goo-blob.js +171 -1228
- package/dist/goo-dot-matrix.d.ts +1 -0
- package/dist/goo-dot-matrix.js +591 -0
- package/dist/handmark.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 +2 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +70 -60
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +11 -2
- package/dist/motion-core.js +54 -32
- package/dist/motion-curves.js +11 -1
- package/dist/motion.js +46 -111
- 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/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
- package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-m7Zgv35j.js} +2 -2
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +1 -1
- package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-yPyIpJt9.js} +12 -2
- package/dist/scrollReader-DI1NWxUw.js +42 -0
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +160 -304
- 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-tZMg0E0w.js → sheet-B2flBfLH.js} +2 -2
- package/dist/sheet.js +1 -1
- package/dist/sidebar.js +216 -114
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +1 -1
- package/dist/spectrum-walk-BVzA7Biz.js +33 -0
- package/dist/{springPresets-CFQGQfdl.js → springPresets-Ce7OYCm9.js} +12 -6
- package/dist/styles/animations.css +13 -3
- package/dist/styles/cards.css +69 -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 +33 -11
- package/dist/styles/deferred.css +2 -0
- package/dist/styles/dock/cta-seat.css +87 -0
- package/dist/styles/dock/density.css +153 -0
- package/dist/styles/dock/layers.css +55 -7
- package/dist/styles/dock/morph-bridge.css +54 -18
- package/dist/styles/dock/morph.css +41 -33
- package/dist/styles/dock/overflow.css +12 -0
- package/dist/styles/dock/search.css +68 -0
- package/dist/styles/dock/shape.css +124 -0
- package/dist/styles/dock/shell.css +23 -5
- 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 +11 -1
- package/dist/styles/glass/accent-tone.css +66 -0
- package/dist/styles/glass/control-surfaces.css +167 -0
- package/dist/styles/glass/ladder.css +67 -17
- package/dist/styles/glass/rim.css +19 -9
- package/dist/styles/glass/surfaces.css +69 -148
- package/dist/styles/glass.css +10 -0
- package/dist/styles/index.css +15 -0
- package/dist/styles/scroll-chrome.css +123 -0
- package/dist/styles/scroll-driven.css +38 -0
- package/dist/styles/segmented-tabs.css +50 -14
- package/dist/styles/theme/bridges.css +22 -0
- package/dist/styles/theme/radius.css +18 -1
- package/dist/styles/tokens/color-radius.css +13 -3
- package/dist/styles/tokens/dark-arm.css +39 -6
- package/dist/styles/tokens/glass-deep.css +28 -3
- package/dist/styles/tokens/glass-fx.css +44 -1
- package/dist/styles/tokens/glass.css +91 -31
- package/dist/styles/tokens/light-dark.css +1 -1
- package/dist/styles/tokens/offsets.css +27 -0
- package/dist/styles/tokens/property-regs.css +133 -0
- package/dist/styles/tokens/scale-paper.css +73 -29
- package/dist/styles/tokens/scheme-motion.css +44 -6
- package/dist/styles/tokens/sizing-config.css +110 -0
- package/dist/styles/tokens/sizing.css +55 -104
- package/dist/styles/tokens.css +5 -0
- package/dist/styles/typography/semantic.css +18 -5
- package/dist/styles/utilities/a11y-overrides.css +20 -5
- package/dist/styles/utilities/base-misc.css +52 -0
- package/dist/styles/utilities/btn.css +14 -3
- package/dist/styles/utilities/components.css +31 -6
- package/dist/styles/utilities/metal.css +26 -0
- package/dist/switch.js +1 -1
- package/dist/tabs.js +8 -8
- package/dist/timeline.js +1 -1
- 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 +1 -1
- package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
- package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-CLrxicG9.js} +1 -1
- package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-4xblKfwd.js} +25 -24
- package/dist/useControlSize-SH1UmJCi.js +9 -0
- package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
- package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-BUgAC-zK.js} +4 -4
- package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
- package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
- package/dist/{useLiquidPress-kfb4KX79.js → useLiquidPress-BooG97RY.js} +2 -2
- package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
- package/dist/useScrollChrome-D66AVP7C.js +258 -0
- package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-BWDnKIwh.js} +1 -1
- package/dist/useSpringPress-B1-Czp-V.js +36 -0
- package/dist/useViewTransition-CUI1nAgn.js +95 -0
- package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
- package/dist/virtual.d.ts +1 -0
- package/dist/virtual.js +225 -0
- package/dist/watercolor-dot.js +116 -73
- package/package.json +127 -7
- package/src/styles/animations.css +13 -3
- package/src/styles/cards.css +69 -0
- package/src/styles/completion-seal.css +131 -0
- package/src/styles/configurator.css +55 -0
- package/src/styles/critical-partition.mjs +33 -11
- package/src/styles/dock/cta-seat.css +87 -0
- package/src/styles/dock/density.css +153 -0
- package/src/styles/dock/layers.css +55 -7
- package/src/styles/dock/morph-bridge.css +54 -18
- package/src/styles/dock/morph.css +41 -33
- package/src/styles/dock/overflow.css +12 -0
- package/src/styles/dock/search.css +68 -0
- package/src/styles/dock/shape.css +124 -0
- package/src/styles/dock/shell.css +23 -5
- 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 +11 -1
- package/src/styles/glass/accent-tone.css +66 -0
- package/src/styles/glass/control-surfaces.css +167 -0
- package/src/styles/glass/ladder.css +67 -17
- package/src/styles/glass/rim.css +19 -9
- package/src/styles/glass/surfaces.css +69 -148
- package/src/styles/glass.css +10 -0
- package/src/styles/index.css +15 -0
- package/src/styles/scroll-chrome.css +123 -0
- package/src/styles/scroll-driven.css +38 -0
- package/src/styles/segmented-tabs.css +50 -14
- package/src/styles/theme/bridges.css +22 -0
- package/src/styles/theme/radius.css +18 -1
- package/src/styles/tokens/color-radius.css +13 -3
- package/src/styles/tokens/dark-arm.css +39 -6
- package/src/styles/tokens/glass-deep.css +28 -3
- package/src/styles/tokens/glass-fx.css +44 -1
- package/src/styles/tokens/glass.css +91 -31
- package/src/styles/tokens/light-dark.css +1 -1
- package/src/styles/tokens/offsets.css +27 -0
- package/src/styles/tokens/property-regs.css +133 -0
- package/src/styles/tokens/scale-paper.css +73 -29
- package/src/styles/tokens/scheme-motion.css +44 -6
- package/src/styles/tokens/sizing-config.css +110 -0
- package/src/styles/tokens/sizing.css +55 -104
- package/src/styles/tokens.css +5 -0
- package/src/styles/typography/semantic.css +18 -5
- package/src/styles/utilities/a11y-overrides.css +20 -5
- package/src/styles/utilities/base-misc.css +52 -0
- package/src/styles/utilities/btn.css +14 -3
- package/src/styles/utilities/components.css +31 -6
- package/src/styles/utilities/metal.css +26 -0
- package/dist/ContextMenuContent-uWnVxDab.js +0 -85
- package/dist/DialogFooter-BZNX5aVr.js +0 -165
- package/dist/HoverCardContent-b2uaAMRR.js +0 -83
- package/dist/Input-h9v5LeXf.js +0 -55
- package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
- package/dist/Separator-pKF0oA4M.js +0 -37
- package/dist/Switch-CwYNf8bo.js +0 -47
- package/dist/TooltipProvider-rzvnXz60.js +0 -104
- 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/createCanvasLifecycle-CHD5XrDW.js +0 -82
- package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
- package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
- package/dist/styles/dock/rail-extend.css +0 -397
- package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
- package/dist/useRAFLoop-UYa4zoiN.js +0 -109
- package/dist/useSpringPress-BsqPr7FJ.js +0 -34
- package/src/styles/dock/rail-extend.css +0 -397
- /package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-DLRbH5Xr.js} +0 -0
- /package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-BcIxvyqZ.js} +0 -0
- /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-CxsHSyMj.js} +0 -0
- /package/dist/{PaperBackdrop-Vf3tlpvd.js → PaperBackdrop-CqwjnfLv.js} +0 -0
- /package/dist/{Progress-DctG61iZ.js → Progress-CnqB7gLm.js} +0 -0
- /package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-CTZbA_cG.js} +0 -0
- /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-BFiod7X2.js} +0 -0
- /package/dist/{compile-CQEFRTmx.js → compile-nZ1xVYTp.js} +0 -0
- /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
- /package/dist/{math-BINYmg5z.js → math-Eb0w3LqU.js} +0 -0
- /package/dist/{prng-Za0Rmgag.js → prng-B-d9eYX8.js} +0 -0
- /package/dist/{slider-DVb4HXU-.js → slider-2A0rPn79.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/{useInterval-CvK1mL92.js → useInterval-CNdua40W.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
- /package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-UmA6LMZu.js} +0 -0
- /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
- /package/dist/{useSortable-DHjtZSEd.js → useSortable-BVqlJRBR.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
- /package/dist/{vReveal-Czsb7zQC.js → vReveal-D9k0jADx.js} +0 -0
- /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
package/dist/styles/glass.css
CHANGED
|
@@ -46,8 +46,18 @@
|
|
|
46
46
|
squircle + a11y @supports overrides, which must stay last): */
|
|
47
47
|
@import "./glass/material.css";
|
|
48
48
|
@import "./glass/ladder.css";
|
|
49
|
+
/* BC.W-ACCENT-TONE — the contrast-floored 3-channel tonal-accent register
|
|
50
|
+
(.accent-tone: one --tone → idle/active/edge/ink). AFTER ladder.css (reads the
|
|
51
|
+
warm-cream --card surface the ladder mints); the SOLE writer of the --accent-*
|
|
52
|
+
channels, so the placement is cascade-order-invariant. */
|
|
53
|
+
@import "./glass/accent-tone.css";
|
|
49
54
|
@import "./glass/rim.css";
|
|
50
55
|
@import "./glass/surfaces.css";
|
|
56
|
+
/* BC.W-CARVE6 — the .input-pill / .control-surface form-control REST register
|
|
57
|
+
carved out of surfaces.css to hold the 500-line bound, @import-ed IMMEDIATELY
|
|
58
|
+
AFTER surfaces.css and BEFORE surface-axis.css (same @layer components, same
|
|
59
|
+
source order — the dist is byte-isomorphic). */
|
|
60
|
+
@import "./glass/control-surfaces.css";
|
|
51
61
|
@import "./glass/surface-axis.css";
|
|
52
62
|
@import "./glass/reveal.css";
|
|
53
63
|
@import "./glass/deep.css";
|
package/dist/styles/index.css
CHANGED
|
@@ -120,6 +120,12 @@
|
|
|
120
120
|
* native .smooth-scroll opt-in) on the native
|
|
121
121
|
* scroll()/view()/timeline-scope substrate; NO
|
|
122
122
|
* Lenis/GSAP dep (BB.W-SCROLL-MOTION).
|
|
123
|
+
* 10a''. scroll-chrome.css — BC.W-SCROLL-CHROME the scroll-driven floating-
|
|
124
|
+
* CHROME collapse recipe (.scroll-chrome reads
|
|
125
|
+
* --chrome-collapse-t for the compositor shrink/
|
|
126
|
+
* quiet/shadow-lift; PERSISTENT-by-default, crisp
|
|
127
|
+
* blur, never-invisible quiet, PRM-discrete). The
|
|
128
|
+
* useScrollChrome JS machine owns the snap + ramp.
|
|
123
129
|
* 10b. view-transition.css — the `.gl-list-item` View-Transitions group
|
|
124
130
|
* recipe + `--vt-*` axes (AQ.W5; the
|
|
125
131
|
* `useViewTransition` substrate's CSS half).
|
|
@@ -168,6 +174,7 @@
|
|
|
168
174
|
@import "./animations.css";
|
|
169
175
|
@import "./scroll-driven.css";
|
|
170
176
|
@import "./scroll-choreography.css";
|
|
177
|
+
@import "./scroll-chrome.css";
|
|
171
178
|
@import "./view-transition.css";
|
|
172
179
|
@import "./utilities.css";
|
|
173
180
|
/* BA.W-MENU-GLASS — the glass menu-row + menu-section register. @import-ed AFTER
|
|
@@ -193,6 +200,14 @@
|
|
|
193
200
|
masks + the PRM milestone-pulse bracket. */
|
|
194
201
|
@import "./border-progress.css";
|
|
195
202
|
|
|
203
|
+
/* BC.W-AX-COMPLETION-SEAL — the hero-scale earned-GOLD completion seal: a one-shot
|
|
204
|
+
gold-draw mark (a `stroke-dashoffset` wipe on the 4 `@property` motion tokens
|
|
205
|
+
`--seal-draw`/`--seal-scale`/`--seal-glint`/`--seal-ink`, registered in
|
|
206
|
+
tokens/property-regs.css §18). The ink reads the W-PHASE-PALETTE earned-gold
|
|
207
|
+
register; the glint composes the W-AX-METAL-GLOW catch-light. One-shot, PRM-gated,
|
|
208
|
+
compositor-only — the feedback-surface partial. */
|
|
209
|
+
@import "./completion-seal.css";
|
|
210
|
+
|
|
196
211
|
/* Ensure Tailwind scans glass-ui's compiled component templates for the utility
|
|
197
212
|
classes they emit (CVA variant classes like text-destructive-foreground,
|
|
198
213
|
layout utilities like h-full/shrink-0).
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* scroll-chrome.css — the scroll-driven floating-CHROME collapse recipe
|
|
3
|
+
* (BC.W-SCROLL-CHROME).
|
|
4
|
+
*
|
|
5
|
+
* Cascade rung AFTER scroll-choreography.css. Where scroll-choreography.css is the
|
|
6
|
+
* ENTRANCE register (the page-build / section-cascade / scroll-pinned reveals), this is
|
|
7
|
+
* the COLLAPSE-STATE recipe a floating chrome bar (a dock, a header) composes: scroll
|
|
8
|
+
* down and it SHRINKS smoothly into a compact form; scroll up and it EXPANDS back; on
|
|
9
|
+
* scroll-stop it SNAPS to the nearest state (the `useScrollChrome` JS machine owns the
|
|
10
|
+
* snap + the ramp value — this recipe is the compositor paint of `--chrome-collapse-t`).
|
|
11
|
+
*
|
|
12
|
+
* .scroll-chrome — the chrome surface (a dock/header) reads `--chrome-collapse-t`
|
|
13
|
+
* (0 expanded → 1 collapsed; the @property reg in property-regs.css)
|
|
14
|
+
* for the COMPOSITOR shrink/quiet/shadow-lift ramp.
|
|
15
|
+
*
|
|
16
|
+
* COMPOSITOR-ONLY (the proof:no-layout-animation floor — motion-canon P5). The shrink is
|
|
17
|
+
* `transform: scale()/translateY()` — NEVER an animated `height`/`padding`/`width` (the
|
|
18
|
+
* box never reflows per scroll frame; the CDP Layout track stays flat). The quiet is
|
|
19
|
+
* `opacity` BOUNDED above a never-invisible floor (the NN/g pale-fade-into-content trap
|
|
20
|
+
* is the FORBIDDEN direction — the bar reads at EVERY collapse fraction). The
|
|
21
|
+
* SEPARATION/shadow LIFTS as content scrolls under (Apple "as text scrolls underneath,
|
|
22
|
+
* shadows become more prominent") — `box-shadow` is a paint prop, compositor-safe.
|
|
23
|
+
*
|
|
24
|
+
* THE BLUR STAYS CRISP (the W-DOCK-SHRINK-BLUR fence). The chrome's resting
|
|
25
|
+
* `backdrop-filter` blur is NOT animated by `--chrome-collapse-t` — a shrunken bar is
|
|
26
|
+
* crisp glass, not a blurry mess. The recipe touches ONLY transform/opacity/box-shadow;
|
|
27
|
+
* the surface's own `glass-*` tier owns the (untouched) backdrop blur.
|
|
28
|
+
*
|
|
29
|
+
* PERSISTENT BY DEFAULT (the iOS-27 lesson). `--chrome-collapse-t` rests at 0 (the
|
|
30
|
+
* @property initial-value), so a bare `.scroll-chrome` is byte-identical to the expanded
|
|
31
|
+
* chrome — it does NOT collapse until the `useScrollChrome` machine (opted in with
|
|
32
|
+
* `collapseOnScroll: true`) ramps the custom.
|
|
33
|
+
*
|
|
34
|
+
* PRM (the discrete-state-survives model, the useFadingScroll precedent). The transform/
|
|
35
|
+
* opacity RAMP sits inside the `@media (prefers-reduced-motion: no-preference)` outer
|
|
36
|
+
* gate (the scroll-choreography.css discipline) — under reduce the continuous ramp drops;
|
|
37
|
+
* the `useScrollChrome` machine snaps `--chrome-collapse-t` to a discrete 0/1 endpoint, so
|
|
38
|
+
* the DISCRETE collapsed/expanded state stays correct, instant, never half. The shadow
|
|
39
|
+
* lift sits OUTSIDE the gate (a paint cue, not a vestibular motion) so the lifted
|
|
40
|
+
* separation reads even under reduce.
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
/* The tunable depth knobs — a consumer retunes the shrink/fade depth per chrome. */
|
|
44
|
+
:root {
|
|
45
|
+
/* The shrink depth: at fully collapsed the chrome scales to (1 − this). 0.12 → a
|
|
46
|
+
compact 88% bar (a real shrink that still reads as the same bar). */
|
|
47
|
+
--chrome-shrink-depth: 0.12;
|
|
48
|
+
/* The rise (px) the chrome translates toward its anchor edge as it collapses. */
|
|
49
|
+
--chrome-rise-px: 6px;
|
|
50
|
+
/* The fade depth — BOUNDED LOW: at fully collapsed opacity floors at (1 − this).
|
|
51
|
+
0.28 → a 0.72 floor (the bar quiets but is NEVER invisible — the NN/g pale-fade
|
|
52
|
+
trap forbidden). A consumer that wants no quiet sets it 0. */
|
|
53
|
+
--chrome-fade-depth: 0.28;
|
|
54
|
+
/* The shadow-lift strength — the separation shadow grows from rest → this as content
|
|
55
|
+
scrolls under (Apple shadow-on-scroll). A paint prop, compositor-safe. */
|
|
56
|
+
--chrome-shadow-lift: 18%;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* The shrink/quiet RAMP — the SPATIAL (transform) + the EFFECTS (opacity) channels. It
|
|
60
|
+
rides `--chrome-collapse-t` directly (no CSS transition — the JS scalar already glides
|
|
61
|
+
on the reader's tick; on a native-timeline engine the same custom rides
|
|
62
|
+
`animation-timeline: scroll(self)`, the native-ramp path). Inside the PRM no-preference
|
|
63
|
+
gate: under reduce the ramp drops and the chrome reads its discrete snapped endpoint. */
|
|
64
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
65
|
+
.scroll-chrome {
|
|
66
|
+
/* SPATIAL leg — scale toward the compact size + a small rise toward the anchor
|
|
67
|
+
edge. transform-origin at the top (a header anchors its top; a consumer dock
|
|
68
|
+
re-points the origin to its natural seat). Compositor-only — never height/pad. */
|
|
69
|
+
transform: scale(calc(1 - var(--chrome-collapse-t) * var(--chrome-shrink-depth)))
|
|
70
|
+
translateY(calc(var(--chrome-collapse-t) * var(--chrome-rise-px) * -1));
|
|
71
|
+
transform-origin: top center;
|
|
72
|
+
/* EFFECTS leg — the quiet, BOUNDED above the never-invisible floor (the bar reads
|
|
73
|
+
at every fraction; the `* fade-depth` caps the drop, opacity never reaches 0). */
|
|
74
|
+
opacity: calc(1 - var(--chrome-collapse-t) * var(--chrome-fade-depth));
|
|
75
|
+
/* will-change the compositor channels (NEVER a layout property). */
|
|
76
|
+
will-change: transform, opacity;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* The shadow LIFT — OUTSIDE the PRM gate (a paint cue, not a vestibular motion): the
|
|
81
|
+
separation shadow strengthens as content scrolls under the chrome. `box-shadow` is a
|
|
82
|
+
paint prop (compositor-safe, in the proof:no-layout-animation paint set, NOT the reflow
|
|
83
|
+
set). The lift composes the house `--shadow-color: var(--foreground)` so it re-tints
|
|
84
|
+
light↔dark for free; the strength grows from a whisper at rest → `--chrome-shadow-lift`
|
|
85
|
+
at fully collapsed. */
|
|
86
|
+
.scroll-chrome {
|
|
87
|
+
box-shadow: 0 calc(2px + var(--chrome-collapse-t) * 6px)
|
|
88
|
+
calc(8px + var(--chrome-collapse-t) * 12px)
|
|
89
|
+
color-mix(
|
|
90
|
+
in srgb,
|
|
91
|
+
var(--shadow-color)
|
|
92
|
+
calc(6% + var(--chrome-collapse-t) * var(--chrome-shadow-lift)),
|
|
93
|
+
transparent
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* The native-ramp path — on a `scroll()`-supporting engine the consumer can drive
|
|
98
|
+
`--chrome-collapse-t` off `animation-timeline: scroll(self)` directly (the
|
|
99
|
+
`useScrollProgress`/`--scroll-t` native precedent: the JS writer is inert, the CSS owns
|
|
100
|
+
the compositor ramp). The keyframe is the linear 0→1 map over the collapse range; the
|
|
101
|
+
consumer binds it on the chrome with its own `animation-range` (the collapse-px span).
|
|
102
|
+
The SNAP-to-state stays the JS leg (a snap is a discrete commit, not a continuous ramp —
|
|
103
|
+
it rides the `useScrollChrome` scroll-stop tick on every engine). PRM-gated + supports-
|
|
104
|
+
gated (a non-supporting engine reads the JS `collapseT` write, never this keyframe). */
|
|
105
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
106
|
+
@supports (animation-timeline: scroll()) {
|
|
107
|
+
@keyframes gl-chrome-collapse {
|
|
108
|
+
from {
|
|
109
|
+
--chrome-collapse-t: 0;
|
|
110
|
+
}
|
|
111
|
+
to {
|
|
112
|
+
--chrome-collapse-t: 1;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/* OPT-IN: a consumer adds `.scroll-chrome--native` to ride the compositor ramp
|
|
116
|
+
(it must set `animation-range` for its own collapse-px span; the
|
|
117
|
+
`useScrollChrome` machine's JS write is the cross-engine floor + the snap). */
|
|
118
|
+
.scroll-chrome--native {
|
|
119
|
+
animation: gl-chrome-collapse auto linear both;
|
|
120
|
+
animation-timeline: scroll(self block);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -70,3 +70,41 @@
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
|
|
74
|
+
/* ── ONCE latch (the virtualized/teleporting opt-in) — BC.W-MOTION-PRESETS.
|
|
75
|
+
* The continuous `[data-scroll-reveal]` recipe above re-fires its entrance EVERY
|
|
76
|
+
* time a child re-enters the entry range — correct for a calm cascade, WRONG for
|
|
77
|
+
* a virtualized/teleporting list where a row scrolls out + back (it re-plays the
|
|
78
|
+
* fade-lift). A native `view()` timeline cannot latch "play once" (the CSS limit),
|
|
79
|
+
* so `[data-scroll-reveal-once]` swaps the live-range animation for a one-shot
|
|
80
|
+
* `@keyframes` keyed off a `data-revealed` attr a tiny JS-assist IntersectionObserver
|
|
81
|
+
* sets on FIRST cross + then `unobserve`s — the SHIPPED `useStaggerReveal` `once`
|
|
82
|
+
* machinery (its `if (once) observer?.unobserve(el)` leg), reused, not re-authored.
|
|
83
|
+
*
|
|
84
|
+
* SINGLE WRITER — an element is `[data-scroll-reveal]` XOR `[data-scroll-reveal-once]`
|
|
85
|
+
* (never both): the continuous path rides the `view()` timeline, the once path rides
|
|
86
|
+
* the `[data-revealed]` attr. They never both drive the same child.
|
|
87
|
+
*
|
|
88
|
+
* The keyframe is the SAME fade-lift values as `gl-reveal-in` but runs FORWARD
|
|
89
|
+
* (`from` hidden → `to` shown) so the terminal state holds without a timeline; the
|
|
90
|
+
* `--spring-gentle` partial-sum settle is the convergence-reveal register a consumer
|
|
91
|
+
* pairs with `useStagger` for the N-term build-up. Same PRM outer gate as the
|
|
92
|
+
* continuous recipe (a flourish — under reduce the row paints in-place, no entrance). */
|
|
93
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
94
|
+
@keyframes gl-reveal-once {
|
|
95
|
+
from {
|
|
96
|
+
opacity: 0;
|
|
97
|
+
transform: translateY(var(--scroll-reveal-rise, 6px));
|
|
98
|
+
}
|
|
99
|
+
to {
|
|
100
|
+
opacity: 1;
|
|
101
|
+
transform: none;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
[data-scroll-reveal-once] > * {
|
|
105
|
+
opacity: 0;
|
|
106
|
+
}
|
|
107
|
+
[data-scroll-reveal-once] > *[data-revealed] {
|
|
108
|
+
animation: gl-reveal-once var(--spring-gentle-duration) linear both;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -36,8 +36,15 @@
|
|
|
36
36
|
/* ── The PILL track (the glass material — DEFAULT) ── */
|
|
37
37
|
.segmented-tabs {
|
|
38
38
|
--bouncy-track-trim: 0.1875rem;
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
/* BC.W-TABS-IOS — the iOS-27 stadium register. The pill reads the role-bearing
|
|
40
|
+
`--radius-tab` (= --radius-pill = 9999px) — on a short pill box this clamps to
|
|
41
|
+
half-height → a TRUE stadium end-cap (not the squared `0.3125rem` rounded-rect
|
|
42
|
+
the HEAD shipped). The TRACK corner is CONCENTRIC with the pill (Apple's
|
|
43
|
+
`.containerConcentric`): the pill radius + the trim inset, so a stadium pill
|
|
44
|
+
sits inside a near-stadium track. No breakpoint radius bump — a stadium does
|
|
45
|
+
not change radius across viewports (clean break, the 640px radius lines gone). */
|
|
46
|
+
--bouncy-slider-radius: var(--radius-tab);
|
|
47
|
+
--bouncy-track-radius: calc(var(--bouncy-slider-radius) + var(--bouncy-track-trim));
|
|
41
48
|
/* The travel-squish axis — 1 at rest; useTabIndicator writes it transiently
|
|
42
49
|
on selection, the indicator pairs it volume-preserving. */
|
|
43
50
|
--stretch: 1;
|
|
@@ -55,7 +62,13 @@
|
|
|
55
62
|
|
|
56
63
|
backdrop-filter: var(--glass-blur-quiet);
|
|
57
64
|
-webkit-backdrop-filter: var(--glass-blur-quiet);
|
|
58
|
-
|
|
65
|
+
/* BC.W-TABS-IOS — the track hairline re-points off the `--border` ring (which read
|
|
66
|
+
dark over the cream plate — the D2 "black bar" on the strip top edge) onto the
|
|
67
|
+
BC.W-BLACK-BAR directional rim register: a bright top catch-light + a faint warm
|
|
68
|
+
under-shadow. The track is a thin warm-glass quiet capsule with a lit top edge,
|
|
69
|
+
never a dark hairline. The pill (above) carries the SAME rim plus the lift shadow
|
|
70
|
+
so it reads FORWARD; the track carries only the rim. */
|
|
71
|
+
box-shadow: var(--glass-rim-top), var(--glass-rim-bottom);
|
|
59
72
|
}
|
|
60
73
|
|
|
61
74
|
/* ── The vertical orientation axis (the block stack) ── */
|
|
@@ -69,20 +82,24 @@
|
|
|
69
82
|
|
|
70
83
|
@media (min-width: 640px) {
|
|
71
84
|
.segmented-tabs {
|
|
85
|
+
/* BC.W-TABS-IOS — only the trim (pad) axis bumps at the wider breakpoint; the
|
|
86
|
+
radius is the viewport-invariant stadium (--radius-tab), so the corner
|
|
87
|
+
track-radius re-resolves concentric off the bigger trim by construction. */
|
|
72
88
|
--bouncy-track-trim: 0.25rem;
|
|
73
|
-
--bouncy-track-radius: 0.5rem;
|
|
74
|
-
--bouncy-slider-radius: 0.375rem;
|
|
75
89
|
}
|
|
76
90
|
}
|
|
77
91
|
|
|
78
92
|
/* ── The shared indicator body (the PILL plate) ── */
|
|
79
93
|
.segmented-indicator {
|
|
80
94
|
position: absolute;
|
|
81
|
-
/*
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
95
|
+
/* BC.W-TABS-IOS — the active pill is the iOS-27 / value.js DISTINCT LIFTED PLATE,
|
|
96
|
+
not a +30%-α same-hue brightness step. The fill reads the SHARED element-level
|
|
97
|
+
oklab-tinted floating pair (surfaces.css `:where(.btn-glass, .segmented-indicator)`)
|
|
98
|
+
— over a bright field it darkens-to-legible, over a calm field it stays
|
|
99
|
+
warm-cream/near-white (the W55 adaptive register reaching the pill, the "raised
|
|
100
|
+
near-white plate" the user pinned). The FORWARD-ness comes from the rim + lift
|
|
101
|
+
below, NOT from cranking the same-hue alpha. */
|
|
102
|
+
background: var(--glass-bg-floating-tinted);
|
|
86
103
|
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
87
104
|
|
|
88
105
|
backdrop-filter: var(--glass-blur-floating);
|
|
@@ -90,9 +107,17 @@
|
|
|
90
107
|
z-index: 0;
|
|
91
108
|
inset-block: var(--bouncy-track-trim);
|
|
92
109
|
border-radius: var(--bouncy-slider-radius);
|
|
110
|
+
/* BC.W-TABS-IOS — the lifted-plate composite: the BC.W-BLACK-BAR directional rim
|
|
111
|
+
(bright top catch-light `--glass-rim-top` + warm bottom under-shadow
|
|
112
|
+
`--glass-rim-bottom` — the iOS-27 top-light/bottom-shadow thickness the track does
|
|
113
|
+
NOT carry, the FORWARD-ness device, NEVER the dark D2 hairline) PLUS a real layered
|
|
114
|
+
glass under-shadow (`--glass-shadow-floating`) lifting the plate ~2-3px off the
|
|
115
|
+
quiet track. Replaces the HEAD weak `0 1px 3px rgba(0,0,0,0.08)` + the 30%-border
|
|
116
|
+
dark ring (the same-hue low-contrast plate that read "not glassy"). */
|
|
93
117
|
box-shadow:
|
|
94
|
-
|
|
95
|
-
|
|
118
|
+
var(--glass-rim-top),
|
|
119
|
+
var(--glass-rim-bottom),
|
|
120
|
+
var(--glass-shadow-floating);
|
|
96
121
|
/* The volume-preserving travel-squish: stretch along X, compress Y in
|
|
97
122
|
inverse proportion. `transform-origin: center` → a symmetric width-flex
|
|
98
123
|
as it travels (the indicator grows wider mid-travel, settles to fit). */
|
|
@@ -169,8 +194,10 @@
|
|
|
169
194
|
|
|
170
195
|
@media (min-width: 640px) {
|
|
171
196
|
.segmented-indicator {
|
|
197
|
+
/* BC.W-TABS-IOS — only the inset (trim) axis bumps; the radius stays the
|
|
198
|
+
viewport-invariant stadium (`--bouncy-slider-radius` = --radius-tab). The
|
|
199
|
+
HEAD `border-radius: 0.375rem` px-literal that squared the pill is GONE. */
|
|
172
200
|
inset-block: 0.25rem;
|
|
173
|
-
border-radius: 0.375rem;
|
|
174
201
|
}
|
|
175
202
|
.segmented-tabs--vertical .segmented-indicator {
|
|
176
203
|
inset-block: auto;
|
|
@@ -328,7 +355,16 @@
|
|
|
328
355
|
|
|
329
356
|
.segmented-tabs--underline .segmented-tab {
|
|
330
357
|
padding: 0.375rem 0.75rem;
|
|
331
|
-
|
|
358
|
+
/* BC.W-UNDERLINE-TUNE — the audacious editorial label voice. The underline is
|
|
359
|
+
the PAPER/editorial material (BA.W-TABS), so its labels carry the √φ display
|
|
360
|
+
register, NOT the small 0.8125rem control size the PILL labels keep (the
|
|
361
|
+
two-voice fence — the pill is a compact control, the underline is an editorial
|
|
362
|
+
nav head). `--type-subheading` (1.272rem / 20.4px, the √φ rung) + the Apple
|
|
363
|
+
display tracking `--type-tracking-display` (−1.5%) are the BB.W-DISPLAY-TRACKING
|
|
364
|
+
ladder rungs CONSUMED here (never re-minted), the same pairing the semantic
|
|
365
|
+
display rungs ride. A confident editorial strip, not a default Tailwind row. */
|
|
366
|
+
font-size: var(--type-subheading);
|
|
367
|
+
letter-spacing: var(--type-tracking-display);
|
|
332
368
|
border-radius: 0.25rem;
|
|
333
369
|
/* The tab-text colour cross-fade rides the fast generic clock (the §6 doctrine
|
|
334
370
|
— a colour shift is a bezier ease, never a spring), matching the pill tab
|
|
@@ -315,6 +315,14 @@
|
|
|
315
315
|
--shadow-cartoon-md: var(--cartoon-shadow-md);
|
|
316
316
|
--shadow-cartoon-lg: var(--cartoon-shadow-lg);
|
|
317
317
|
|
|
318
|
+
/* BC.W-CONTROL-SMOOTH — the warm focus-ring box-shadow bridged to the
|
|
319
|
+
`shadow-focus-ring` utility (AW.W26 --focus-ring-shadow register). The
|
|
320
|
+
`.focus-ring` utility auto-arms on :focus-visible; this bridge lets a
|
|
321
|
+
surface compose the SAME warm ring on a NON-:focus-visible state (the
|
|
322
|
+
TagsInputItem reka roving-tabindex `data-[state=active]` selection) via the
|
|
323
|
+
@theme utility, not a `shadow-[var(--focus-ring-shadow)]` arbitrary wrap. */
|
|
324
|
+
--shadow-focus-ring: var(--focus-ring-shadow);
|
|
325
|
+
|
|
318
326
|
/* ═══════════════════════════════════════════════
|
|
319
327
|
Blur → blur-* and backdrop-blur-* utilities
|
|
320
328
|
═══════════════════════════════════════════════ */
|
|
@@ -332,6 +340,15 @@
|
|
|
332
340
|
--ease-spring-snappy: var(--spring-snappy);
|
|
333
341
|
--ease-spring-bouncy: var(--spring-bouncy);
|
|
334
342
|
--ease-spring-gentle: var(--spring-gentle);
|
|
343
|
+
/* BC.W-SPRING-EASE — the minted iOS interactive press register's @theme alias
|
|
344
|
+
(the documented public register the consumers reach by name; the JS path
|
|
345
|
+
reads it via useSpringPress + --glass-btn-press-t). */
|
|
346
|
+
--ease-spring-press: var(--spring-press);
|
|
347
|
+
/* BC.W-DECK — the deck slide-transition spring's @theme alias (the documented
|
|
348
|
+
public register a consumer's slide `transition-timing-function` reaches by
|
|
349
|
+
name: `ease-spring-deck`). --spring-deck aliases --spring-smooth; the headless
|
|
350
|
+
library mints the register, the deck consumer reads it (presets-in-consumers). */
|
|
351
|
+
--ease-spring-deck: var(--spring-deck);
|
|
335
352
|
|
|
336
353
|
--ease-standard: var(--motion-ease-standard);
|
|
337
354
|
--ease-out: var(--motion-ease-out);
|
|
@@ -352,6 +369,11 @@
|
|
|
352
369
|
--transition-duration-panel: var(--duration-panel);
|
|
353
370
|
--transition-duration-xl: var(--duration-xl);
|
|
354
371
|
--transition-duration-xxl: var(--duration-xxl);
|
|
372
|
+
/* BC.W-CONTROL-SMOOTH — the named iOS control-press surface beat (0.12s, the
|
|
373
|
+
calm bg/color/box-shadow cross-fade clock the `.control-surface`/Toggle
|
|
374
|
+
family rides). Bridged to the `duration-control` utility so a control
|
|
375
|
+
composes the named clock, not a `duration-[var(--duration-control)]` wrap. */
|
|
376
|
+
--transition-duration-control: var(--duration-control);
|
|
355
377
|
/* BA.W-GLASS-CAL — `--transition-duration-sparkle` bridge DELETED with the
|
|
356
378
|
`--duration-sparkle` token (the disco retirement); no `duration-sparkle`
|
|
357
379
|
utility consumer. */
|
|
@@ -42,9 +42,26 @@
|
|
|
42
42
|
on Checkbox + base Tabs onto a softer, named radius. One geometry language
|
|
43
43
|
across the form family — token + class only, no new primitive. */
|
|
44
44
|
--radius-field: var(--radius-2xl);
|
|
45
|
-
|
|
45
|
+
/* BC.W-CONTROL-SMOOTH — the small-inline-control corner rung is a STADIUM, not a
|
|
46
|
+
fixed small px. The prior `--radius-md` (6px) read SQUARE on a 16-24px control
|
|
47
|
+
(6px on a 16px box = 0.38-of-height — a rounded-rect, not a pill); the iOS-27
|
|
48
|
+
small-control silhouette is a near-stadium pill where the radius SCALES with the
|
|
49
|
+
control (clamped to half-height by `--radius-pill`'s 9999px geometry, so a 16px
|
|
50
|
+
control reads an 8px-radius pill — soft at every size). This retires the raw
|
|
51
|
+
`rounded-sm` (4px) on Checkbox + base Tabs AND the small-control square class in
|
|
52
|
+
ONE rung. The `card` toggle TILE keeps `--radius-card` (the large glass surface
|
|
53
|
+
keeps its 1rem squircle — only the small inline controls re-round). The corner-
|
|
54
|
+
SHAPE squircle axis reads at LARGE radius only (ROUND set = card+pill for small),
|
|
55
|
+
so the small pills stay ROUND (no regression). */
|
|
56
|
+
--radius-control: var(--radius-pill);
|
|
46
57
|
--radius-badge: var(--radius-pill);
|
|
47
58
|
--radius-dock: var(--radius-pill);
|
|
59
|
+
/* BC.W-TABS-IOS — the iOS-27 segmented-control stadium register. The pill is a
|
|
60
|
+
stadium by construction (--radius-pill clamps to half-height on a short box →
|
|
61
|
+
a true end-cap), so the tab strip stops being a squared rounded-rect. The
|
|
62
|
+
value.js DESIGN.md idiom: the role-bearing pill token, NOT a hand-rolled
|
|
63
|
+
`rounded-full`. A consumer retunes the tab geometry via `:root { --radius-tab }`. */
|
|
64
|
+
--radius-tab: var(--radius-pill);
|
|
48
65
|
/* AW.W3b — the big-dock card shell's default (comfortable-density) radius.
|
|
49
66
|
The density-scaled --dock-card-radius (dock.css) resolves through this. */
|
|
50
67
|
--radius-dock-card: var(--radius-3xl);
|
|
@@ -121,6 +121,16 @@
|
|
|
121
121
|
`--border` (which is `var(--neutral-4)`, light-dark()-resolved). */
|
|
122
122
|
--border-soft: color-mix(in srgb, var(--border) 45%, transparent);
|
|
123
123
|
|
|
124
|
+
/* BC.W-SEPARATOR-FIX — the warm separator hairline ink. A rule reads as
|
|
125
|
+
WARM material, not a grey `--border` line (BA.W-NO-GRAY floor): the
|
|
126
|
+
split-rule segments + un-labelled hairline both paint `--separator-ink`.
|
|
127
|
+
It is a `color-mix` off `--foreground` (`light-dark()`-resolved, so it
|
|
128
|
+
auto-darks warm in both modes — the warm-ink hairline, not `--neutral-4`
|
|
129
|
+
grey). 22% is a visible-but-whisper rule (crisper than `--border-soft`'s
|
|
130
|
+
45%-of-grey; this one is foreground-derived so it carries the warm hue
|
|
131
|
+
directly). A consumer retints every separator from this single rung. */
|
|
132
|
+
--separator-ink: color-mix(in srgb, var(--foreground) 22%, transparent);
|
|
133
|
+
|
|
124
134
|
/* AQ.W3 §W3.4 — tokenized scrollbar thumb + track. Minted in the color
|
|
125
135
|
block so the `scrollbar-color` / `::-webkit-scrollbar-thumb` rungs read a
|
|
126
136
|
single source. Auto-dark via `--muted-foreground` (light-dark()-resolved,
|
|
@@ -224,9 +234,9 @@
|
|
|
224
234
|
keyframes.js ω₀ = 2π/response convention, mints no second ω). */
|
|
225
235
|
--constellation-warp-response: 0.55; /* s — keyframes.js angular period (NOT a settle) */
|
|
226
236
|
--constellation-warp-zeta: 1.0; /* critically damped — a focal mark must NOT ring */
|
|
227
|
-
--constellation-well-gain:
|
|
237
|
+
--constellation-well-gain: 19000; /* inverse-square force scale (the held-pull gain). Lifted 14000→19000 (BC.W-VIZ-CONSTELLATION): the GPU substrate's high-refresh frame loop ramps the held strength to only ~0.70 within the egg-live π perturb window, so the weaker effective force (fought by the |v|→speed ease-back) fell under the gate's ≥20% perturb floor — a stronger pull restores the heat. Held-physics only; rest is byte-untouched. Mirrors DEFAULT_WELL_CONFIG.gain. */
|
|
228
238
|
--constellation-well-reach: 340; /* base-width px — the well's reach (k-scaled at step) */
|
|
229
|
-
--constellation-well-ramp:
|
|
239
|
+
--constellation-well-ramp: 8.0; /* 1/s — the ARM rate. Doubled 4→8 (BC.W-VIZ-CONSTELLATION) so the strength reaches near-full power within the gate's 40-frame perturb window at the GPU substrate's high refresh (~0.12s bloom); release is the fixed brisk WELL_RELEASE_RAMP — the field-cools invariant, not consumer-tunable. Mirrors DEFAULT_WELL_CONFIG.ramp. */
|
|
230
240
|
--constellation-well-max-speed: 4.0; /* base-width px/frame cap — the no-slingshot clamp */
|
|
231
241
|
--constellation-well-hold-ms: 140; /* ms hold before the well arms */
|
|
232
242
|
--constellation-wander-idle: 8000; /* ms — min idle between auto re-targets (the W-CON1 drift cadence) */
|
|
@@ -243,7 +253,7 @@
|
|
|
243
253
|
--section-color-2: oklch(0.484 0.163 265.5); /* indigo */
|
|
244
254
|
--section-color-3: oklch(0.542 0.089 222.8); /* teal-cyan */
|
|
245
255
|
--section-color-4: oklch(0.551 0.088 171.1); /* forest */
|
|
246
|
-
--section-color-5: oklch(0.
|
|
256
|
+
--section-color-5: oklch(0.530 0.124 69.6); /* amber — BC.W-ACCENT-TONE #13: the safeAccentColor-derived rebaseline (HEAD 0.623 → 0.530, 3.49:1 → 5.11:1 vs the warm-cream card; the dark arm already clears 8.07:1 so it stays). --viz-amber auto-tracks; fourier's :root override deletes on adopt. */
|
|
247
257
|
--section-color-6: oklch(0.579 0.201 30.4); /* tomato-red */
|
|
248
258
|
--section-color-7: oklch(0.532 0.180 317.5); /* violet */
|
|
249
259
|
--section-color-8: oklch(0.520 0.176 8.4); /* ruby */
|
|
@@ -214,6 +214,13 @@
|
|
|
214
214
|
--glass-opacity-floating: 0.88;
|
|
215
215
|
--glass-opacity-overlay: 0.96;
|
|
216
216
|
--glass-opacity-chassis: 0.36;
|
|
217
|
+
/* BC.W-DIALOG-GLASS — the dialog dark register lifts ~0.08 over the light arm
|
|
218
|
+
(0.68 → 0.76) for read-weight over the deep canvas, mirroring the dark opacity
|
|
219
|
+
ladder (it sits between dark `resting` 0.72 and `floating` 0.88 — see-through
|
|
220
|
+
but legible over the deep page). The SAME named token as the light arm, per-
|
|
221
|
+
mode; the composed `--glass-bg-dialog` (glass.css :root) re-resolves from it
|
|
222
|
+
automatically per mode. */
|
|
223
|
+
--glass-opacity-dialog: 0.76;
|
|
217
224
|
--glass-grain-opacity: 0.045;
|
|
218
225
|
--glass-highlight: inset 0 0.5px 0 0 hsl(0 0% 100% / 0.08);
|
|
219
226
|
|
|
@@ -225,12 +232,29 @@
|
|
|
225
232
|
aurora/page behind reads with chroma + a glow. The blur() RADIUS is the
|
|
226
233
|
light-arm primitive UNTOUCHED (W-GLASS-CAL owns the radius dial-back) — only the
|
|
227
234
|
saturate/brightness COMPANIONS lift here. The lower rungs lift more (they're
|
|
228
|
-
thinner, the backdrop carries the read); the heavy overlay lifts least.
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
235
|
+
thinner, the backdrop carries the read); the heavy overlay lifts least.
|
|
236
|
+
|
|
237
|
+
BC.W-GLASS-LEGIBILITY-MEASURED — the per-rung `--glass-saturate-{tier}` knob
|
|
238
|
+
(the speedtest-AX BC-W10 fold) is the SAME named register as the light arm
|
|
239
|
+
(tokens/glass.css), per-mode — the dark identity. The dark values ARE this
|
|
240
|
+
scope's luminosity lift (wash/quiet 1.35, resting 1.30, floating 1.28, overlay
|
|
241
|
+
1.22) become the dark token defaults, and each `--glass-blur-{tier}` reads
|
|
242
|
+
`saturate(var(--glass-saturate-{tier}))` THROUGH — so a `.dark` override re-
|
|
243
|
+
resolves the rung saturation with ZERO recipe edit, AND the composed dark blur
|
|
244
|
+
is BYTE-IDENTICAL to the old baked literal. The `brightness()` companions stay
|
|
245
|
+
baked (this fold mints ONLY the saturate knob). The dark dock/deep saturate stay
|
|
246
|
+
baked (off-ladder footprint rungs, not part of the {wash..overlay} ladder).
|
|
247
|
+
Machine-locked by `proof:glass-legibility` L7. */
|
|
248
|
+
--glass-saturate-wash: 1.35;
|
|
249
|
+
--glass-saturate-quiet: 1.35;
|
|
250
|
+
--glass-saturate-resting: 1.30;
|
|
251
|
+
--glass-saturate-floating: 1.28;
|
|
252
|
+
--glass-saturate-overlay: 1.22;
|
|
253
|
+
--glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(var(--glass-saturate-wash)) brightness(1.18);
|
|
254
|
+
--glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(var(--glass-saturate-quiet)) brightness(1.16);
|
|
255
|
+
--glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(var(--glass-saturate-resting)) brightness(1.14);
|
|
256
|
+
--glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(var(--glass-saturate-floating)) brightness(1.10);
|
|
257
|
+
--glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(var(--glass-saturate-overlay)) brightness(1.06);
|
|
234
258
|
--glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level))) saturate(1.30) brightness(1.12);
|
|
235
259
|
|
|
236
260
|
/* BB.W-DEEP-GLASS — the DARK arm of the OPT-IN deep tier (the luminous-dark
|
|
@@ -338,6 +362,15 @@
|
|
|
338
362
|
resolves to the `-dark` alpha on the deeper canvas. */
|
|
339
363
|
--glass-edge-light: var(--glass-edge-light-dark);
|
|
340
364
|
|
|
365
|
+
/* BC.W-BLACK-BAR D2 — the DIRECTIONAL rim dark arm (plain per-mode pair, NEVER
|
|
366
|
+
light-dark() round an inset — MEMORY: the inset-shadow trap). The top
|
|
367
|
+
catch-light lifts to 0.40 (the dark plate's fill barely separates from the deep
|
|
368
|
+
page, so the rim is the PRIMARY silhouette device — dark glass glows where light
|
|
369
|
+
passes; mirrors the --glass-edge-light-dark 0.18→0.22 lift). The bottom warm
|
|
370
|
+
under-shadow holds at 6% — the shadow grounds the plate in BOTH modes. */
|
|
371
|
+
--glass-rim-top: inset 0 1px 0 hsl(0 0% 100% / 0.40);
|
|
372
|
+
--glass-rim-bottom: inset 0 -1px 0 color-mix(in srgb, var(--foreground) 6%, transparent);
|
|
373
|
+
|
|
341
374
|
/* AW.W23 — the chromatic-fringe + adaptive-tint dark arm. The fringe drops
|
|
342
375
|
to a lower-luminance warm/cool pair on the deep canvas; `--glass-tint-
|
|
343
376
|
source` auto-flips with `--card` (no override needed — the default already
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* dark companions).
|
|
19
19
|
*
|
|
20
20
|
* ── The Apple-range derivation (DELTA cross-ref) ───────────────────────────
|
|
21
|
-
* Apple home nav: saturate(1.8) blur(20px) (the canonical measure)
|
|
21
|
+
* Apple home nav: saturate(1.8) blur(20px) (the canonical measure; the CEILING)
|
|
22
22
|
* Apple product tiers: blur(14-20px) (the band)
|
|
23
23
|
* glass-ui calm ceiling: floating 13px / saturate 1.18 (W-GLASS-CAL dial-back)
|
|
24
24
|
* glass-ui DEEP: 16px / saturate 1.5 (STRICTLY deeper on BOTH axes,
|
|
@@ -29,14 +29,39 @@
|
|
|
29
29
|
* and the warm-cream light-concentration ceiling (AX.W52 D19 — a saturate that
|
|
30
30
|
* over-juices a colored substrate reads as a garish smear) keeps it just-rich.
|
|
31
31
|
* The deepest BLUR carries the "more glass" read; the saturate stays restrained.
|
|
32
|
+
*
|
|
33
|
+
* ── The deep-tier BUDGET CALL (BC.W-GLASS-LEGIBILITY-MEASURED L4) ───────────
|
|
34
|
+
* The deep blur radius is the most expensive idiom glass-ui ships (`backdrop-
|
|
35
|
+
* filter` cost is super-linear in the radius past ~16px). The wave's call:
|
|
36
|
+
* STAY at the budget-clearing 16px and BOOK the 18-20px push (toward the live-
|
|
37
|
+
* measured apple.com nav `blur(20px)` ceiling, research/apple-glass.md §1.1)
|
|
38
|
+
* behind a recorded `profile:budget` clearance — the full 20px is the BOOKED
|
|
39
|
+
* successor (apple-ios27.md §1.4 "the full 20px booked"), NOT a silent over-
|
|
40
|
+
* spend. `--glass-saturate-deep-ceiling` BAKES the apple.com nav saturate 1.8 as
|
|
41
|
+
* the deep-tier CEILING (the load-bearing term — research/apple-glass.md §4
|
|
42
|
+
* "saturate 1.5 shipped, bake 1.8 as the deep ceiling"); the shipped
|
|
43
|
+
* `--glass-saturate-deep` 1.5 sits at the low end (≤ ceiling), warm-aurora-safe.
|
|
44
|
+
* `proof:glass-legibility` L4 reads BOTH: the 16px-stay is honest IFF the budget
|
|
45
|
+
* booking is recorded here, and the shipped deep saturate never crosses the 1.8
|
|
46
|
+
* ceiling. When a `profile:budget` run clears the 18-20px push, the radius
|
|
47
|
+
* lifts toward 20px on the SAME LERP (the booked successor lands, no recipe edit).
|
|
32
48
|
*/
|
|
33
49
|
:root {
|
|
34
50
|
/* The Apple-range deep ENDPOINTS — the radius + saturate the deep tier reaches
|
|
35
51
|
at full depth (`--glass-depth: 1`). The calm `floating` rung (13px / 1.18)
|
|
36
52
|
is the depth-0 floor; the deep recipe LERPs between the two on `--glass-depth`
|
|
37
53
|
so the axis is a genuine driver, not a literal. */
|
|
38
|
-
--glass-blur-deep-radius: 16px; /* in [14,20], STRICTLY > calm floating 13px
|
|
39
|
-
|
|
54
|
+
--glass-blur-deep-radius: 16px; /* in [14,20], STRICTLY > calm floating 13px;
|
|
55
|
+
BUDGET CALL (L4): stays 16px, the 18-20px push
|
|
56
|
+
toward the apple.com nav ceiling is BOOKED
|
|
57
|
+
behind a recorded profile:budget clearance. */
|
|
58
|
+
--glass-saturate-deep: 1.5; /* >= 1.5 (toward Apple 1.8), > calm floating 1.18;
|
|
59
|
+
≤ --glass-saturate-deep-ceiling (the apple.com
|
|
60
|
+
nav 1.8 bound — never over-shot, L4). */
|
|
61
|
+
--glass-saturate-deep-ceiling: 1.8; /* the apple.com-nav saturate CEILING, BAKED as
|
|
62
|
+
the deep-tier load-bearing term (research/
|
|
63
|
+
apple-glass.md §4); the deep saturate never
|
|
64
|
+
exceeds it (the warm-cream identity bound). */
|
|
40
65
|
|
|
41
66
|
/* The deep blur RADIUS — LERPed from the calm floating radius (depth 0) to the
|
|
42
67
|
Apple-deep radius (depth 1) on `--glass-depth`, THEN scaled by the ONE
|
|
@@ -33,6 +33,20 @@
|
|
|
33
33
|
--hairline-under-shadow: 0 0.5px 0 0 rgb(0 0 0 / 0.04);
|
|
34
34
|
--border-hairline: var(--hairline-catch-light), var(--hairline-under-shadow);
|
|
35
35
|
|
|
36
|
+
/* BC.W-AX-METAL-GLOW — the brand-metal catch-light DEFAULTS (the consumer
|
|
37
|
+
retune seam). The metal-shimmer family (`.metal-{gold,silver,bronze}`,
|
|
38
|
+
metal.css) halos the text-clip with a `drop-shadow` of the metal's OWN base
|
|
39
|
+
hue at this radius + strength — the gold reads as LIT metal, not a flat fill.
|
|
40
|
+
Shared by the loop sweep AND the one-shot headline (the W-AX-COMPLETION-SEAL
|
|
41
|
+
seal glint reads `--metal-glow-blur`/`--metal-glow-opacity` — the ≥2-consumer
|
|
42
|
+
register). The defaults are a soft warm WHISPER bounded by the warm-cream
|
|
43
|
+
identity — a halo radius proportional to the text (0.5em) at a low strength
|
|
44
|
+
(0.35), NOT a neon bloom (the §6 calm register; the disco family stays gone).
|
|
45
|
+
A garish high-opacity glow is the consumer's preset choice, never the default;
|
|
46
|
+
a consumer who wants NO glow sets `--metal-glow-opacity: 0`. */
|
|
47
|
+
--metal-glow-blur-default: 0.5em;
|
|
48
|
+
--metal-glow-opacity-default: 0.35;
|
|
49
|
+
|
|
36
50
|
/* Specular catch-light — 1.5px-tall top-edge highlight that swaps in for
|
|
37
51
|
--glass-highlight on interactive moments (e.g. primary-action hover).
|
|
38
52
|
Reads as a real catch-light on a curved surface. The `-dark` companion
|
|
@@ -54,6 +68,25 @@
|
|
|
54
68
|
on text. The `-dark` companion is overridden inside `.dark` mirroring
|
|
55
69
|
the `--glass-specular-dark` precedent. */
|
|
56
70
|
--glass-edge-light: inset 0 0 0 0.75px hsl(0 0% 100% / 0.18);
|
|
71
|
+
|
|
72
|
+
/* BC.W-BLACK-BAR D2 — the DIRECTIONAL rim register (the iOS-27 glass-thickness
|
|
73
|
+
physics: light catch-light rims the TOP, a faint warm shadow grounds the
|
|
74
|
+
BOTTOM, so the plate reads as a physical pane lifted off the page — NEVER a
|
|
75
|
+
dark full-perimeter ink hairline). This RETIRES the load-bearing dark-rim role
|
|
76
|
+
of the per-rung `--glass-border-*` (now ≤5% α, glass.css): the silhouette is
|
|
77
|
+
carved by these two stops, not by the perimeter ink.
|
|
78
|
+
--glass-rim-top: the BRIGHT catch-light on the top edge (the kevinbism
|
|
79
|
+
`inset 0 1px white` motif; 0.30 α = apple-ios27.md §1.3 community value
|
|
80
|
+
rgba(255,255,255,0.3)). Subsumes the old omnidirectional white rim RING.
|
|
81
|
+
--glass-rim-bottom: the FAINT warm under-shadow grounding the plate (the
|
|
82
|
+
warm-ink that used to ring the whole perimeter, now only the bottom, at a
|
|
83
|
+
whisper 6% — riding --foreground so it stays warm-not-grey, BA.W-NO-GRAY).
|
|
84
|
+
Plain per-mode arms — NEVER an inset fragment inside light-dark() (the dark arm
|
|
85
|
+
re-declares both in dark-arm.css; light-dark() round an inset computes the WHOLE
|
|
86
|
+
box-shadow to none). The dark arm lifts the top to 0.40 (dark glass glows where
|
|
87
|
+
light passes) + keeps the bottom under-shadow at 6%. */
|
|
88
|
+
--glass-rim-top: inset 0 1px 0 hsl(0 0% 100% / 0.30);
|
|
89
|
+
--glass-rim-bottom: inset 0 -1px 0 color-mix(in srgb, var(--foreground) 6%, transparent);
|
|
57
90
|
/* BA.W-DARK-MATERIAL scope 2 — the dark edge/rim is the PRIMARY silhouette device in
|
|
58
91
|
dark. The light register's fill+shadow carry the plate; in dark the fill barely
|
|
59
92
|
separates (the deep page is near-black), so the EDGE + the transmitted glow carry the
|
|
@@ -120,8 +153,18 @@
|
|
|
120
153
|
bucket blocks drive to; the live 4.5:1 readback (proof:adaptive-glass π arm)
|
|
121
154
|
ratifies the exact value. */
|
|
122
155
|
--glass-backdrop: dark;
|
|
123
|
-
--glass-backdrop-luma: ;
|
|
124
156
|
--glass-tint-ink: var(--foreground);
|
|
157
|
+
|
|
158
|
+
/* BC.W-ADAPTIVE-RECONCILE — the ONE retune knob for the continuous observer
|
|
159
|
+
driver. `--glass-backdrop-luma` (the measured sampled relative-luminance the
|
|
160
|
+
useGlassBackdropLuminance observer WRITES, registered typed in property-regs.css)
|
|
161
|
+
is now READ on the RHS of the `--glass-tint-strength` clamp (glass/ladder.css +
|
|
162
|
+
dock/morph.css): below this knee the plate holds the calm warm-cream floor; above
|
|
163
|
+
it the strength ramps CONTINUOUSLY toward the ≤24% AA ceiling (the iOS-27 dynamic-
|
|
164
|
+
range shift, apple-ios27.md §1.5 ~0.6 light threshold). The dead-knob is closed —
|
|
165
|
+
the loop READS. A consumer raising the knee darkens LATER (a brighter backdrop is
|
|
166
|
+
tolerated before the lift); the ONE override point for the whole adaptive axis. */
|
|
167
|
+
--glass-backdrop-luma-knee: 0.6;
|
|
125
168
|
/* AZ.W-ADAPTIVE-AUTO Arm 1 — recalibrated 18% → 20%. The bump strengthens the
|
|
126
169
|
G2 surface-SILHOUETTE darken (ΔL ≈ 0.40 over synthetic white, the plate is
|
|
127
170
|
distinguishable from a bright page behind) while staying bounded ≤ 24% (the
|