@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
|
@@ -91,12 +91,38 @@
|
|
|
91
91
|
opacity-only register. */
|
|
92
92
|
--glass-blur-dock-radius: 9px;
|
|
93
93
|
|
|
94
|
+
/* ── Per-rung SATURATE — the CANONICAL named saturate register (BC.W-GLASS-
|
|
95
|
+
LEGIBILITY-MEASURED, the speedtest-AX BC-W10 fold) ───────────────────────
|
|
96
|
+
The saturate term is the LOAD-BEARING glass knob (research/apple-glass.md §4:
|
|
97
|
+
the apple.com nav rides `saturate(1.8)` — the highest term, blur moderate).
|
|
98
|
+
Each `--glass-saturate-{tier}` is the library's canonical saturation for that
|
|
99
|
+
rung — a NAMED, `:root`-overridable input the composed `--glass-blur-{tier}`
|
|
100
|
+
reads THROUGH, the SAME substitution-vs-redeclaration discipline as the
|
|
101
|
+
`--glass-opacity-{tier}` alpha register above. A `:root { --glass-saturate-
|
|
102
|
+
quiet: … }` override re-resolves the rung's saturation with ZERO recipe edit
|
|
103
|
+
(the speedtest "dark cards" chronic + the apple-glass saturate-as-load-bearing
|
|
104
|
+
lever). The values here ARE the W52-D19 bake (wash/quiet/resting 1.05,
|
|
105
|
+
floating 1.18, overlay 1.2) become the token defaults — so the composed blur
|
|
106
|
+
is BYTE-IDENTICAL to the old baked literal (proof:glass-cal / proof:card-tier-
|
|
107
|
+
alpha stay GREEN by construction). The deep-tier `--glass-saturate-deep` 1.8
|
|
108
|
+
ceiling (glass-deep.css) is the upper bound; no rung saturate exceeds it. The
|
|
109
|
+
dark arm (tokens/dark-arm.css) re-declares this register with the W-DARK-
|
|
110
|
+
MATERIAL luminosity lift — the SAME named tokens, per-mode (the plain per-mode
|
|
111
|
+
pair idiom). The brightness() companions stay baked (this fold mints ONLY the
|
|
112
|
+
saturate knob). Machine-locked by `proof:glass-legibility` L7. */
|
|
113
|
+
--glass-saturate-wash: 1.05;
|
|
114
|
+
--glass-saturate-quiet: 1.05;
|
|
115
|
+
--glass-saturate-resting: 1.05;
|
|
116
|
+
--glass-saturate-floating: 1.18;
|
|
117
|
+
--glass-saturate-overlay: 1.2;
|
|
118
|
+
|
|
94
119
|
/* AX.W54 — each blur radius is scaled by the ONE `--glass-level` scalar (in
|
|
95
120
|
lockstep with the opacity seam above): level=1 byte-identical; level=0 →
|
|
96
121
|
blur(0) (the clean solid floor with the opacity); level>1 → more diffusion.
|
|
97
|
-
The per-rung `saturate()
|
|
122
|
+
The per-rung `saturate()` companion reads the named `--glass-saturate-{tier}`
|
|
123
|
+
knob (BC.W-GLASS-LEGIBILITY-MEASURED); `brightness()` stays baked (the level
|
|
98
124
|
scales the RADIUS, not the saturation — W52's calm light-concentration). */
|
|
99
|
-
--glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(
|
|
125
|
+
--glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(var(--glass-saturate-wash));
|
|
100
126
|
/* AV.W15 M1 — the `quiet` rung gained `saturate(1.05) brightness(1.02)`
|
|
101
127
|
so the lower ladder reads with the same saturation life as `resting`+
|
|
102
128
|
(Apple: Liquid Glass concentrates light, it does not desaturate). The
|
|
@@ -104,27 +130,34 @@
|
|
|
104
130
|
between bare `wash` and `resting` without over-brightening the rung.
|
|
105
131
|
The `prefers-reduced-transparency: reduce` bracket at glass.css maps
|
|
106
132
|
`--glass-blur-quiet: none`, so this whole chain drops with the blur. */
|
|
107
|
-
--glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(
|
|
108
|
-
--glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(
|
|
133
|
+
--glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(var(--glass-saturate-quiet)) brightness(1.02);
|
|
134
|
+
--glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(var(--glass-saturate-resting));
|
|
109
135
|
/* AX.W52 D19 — the floating/overlay backdrop saturate tamed from 1.4/1.5 to a
|
|
110
136
|
gentle ~1.18/1.2 (real liquid glass concentrates light ~1.1–1.2×; the prior
|
|
111
137
|
1.4–1.5× over-juiced the bleed-through into a garish smear over a colored
|
|
112
138
|
substrate). wash/quiet/resting already sit at 1.05 — untouched. */
|
|
113
|
-
--glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(
|
|
114
|
-
--glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(
|
|
139
|
+
--glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(var(--glass-saturate-floating));
|
|
140
|
+
--glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(var(--glass-saturate-overlay));
|
|
115
141
|
/* Dock blur composes blur() only — no saturate. */
|
|
116
142
|
--glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level)));
|
|
117
143
|
|
|
118
|
-
/* AX.W52 — the GLASS BUTTON blur
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
144
|
+
/* AX.W52 → BC.W-GLASS-LEGIBILITY-MEASURED — the GLASS BUTTON blur, lifted to
|
|
145
|
+
the FLOATING-tier "more glass" register. The `glass`/`glass-wash` button
|
|
146
|
+
variants compose the `.glass-wash` tier (`--glass-blur-wash` = blur(1px)) — a
|
|
147
|
+
sub-perceptual diffusion authored for a small detail TILE, not a button the
|
|
148
|
+
user reads as "glass." A button is a hero control: it wants a real glass blur.
|
|
149
|
+
The AX.W52 landing sat at the quiet-tier 8px/saturate(1.05) — "quieter than
|
|
150
|
+
even the calm floating tier" (apple-ios27.md §4.2). This wave lifts it to the
|
|
151
|
+
FLOATING-tier register (apple-ios27.md §5 bake-table "button blur lift to
|
|
152
|
+
10-13 / 1.18"): the floating radius (13px, in the 10-13 band) + the named
|
|
153
|
+
`--glass-saturate-floating` knob (1.18) — a genuinely MORE-glass transmissive
|
|
154
|
+
capsule revealing the craft beneath (the apple-glass SUPERSET: apple.com's web
|
|
155
|
+
CTA is a SOLID blue capsule, zero blur — research/apple-glass.md §1.4). The
|
|
156
|
+
`brightness(1.02)` light-concentration the quiet rung carried is KEPT (no
|
|
157
|
+
colour-juice). Clean break — the old 8px/quiet value is GONE, no alias. The
|
|
158
|
+
wash TILE tier (MetricCell et al.) keeps its 1px — only the glass BUTTON
|
|
159
|
+
variants reach for this. Machine-locked by `proof:glass-legibility` L3. */
|
|
160
|
+
--glass-blur-btn: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(var(--glass-saturate-floating)) brightness(1.02);
|
|
128
161
|
|
|
129
162
|
/* Dock-specific opacity (0.42) — lighter than `resting` (0.65) so the dock
|
|
130
163
|
reads as a translucent overlay rather than a panel, backdrop bleed
|
|
@@ -133,6 +166,20 @@
|
|
|
133
166
|
dock reads as painted chrome, not a frosted ghost. */
|
|
134
167
|
--glass-opacity-dock: 0.42;
|
|
135
168
|
|
|
169
|
+
/* Dialog-specific opacity (0.68) — BC.W-DIALOG-GLASS. The iOS-27 control-
|
|
170
|
+
center modal register: SEE-THROUGH frosted glass that reveals the page
|
|
171
|
+
beneath, NOT the floating-tier near-opaque slab (0.80 read as "NOT glassy
|
|
172
|
+
at all"). 0.68 sits between `resting` (0.65 — transparent enough to read
|
|
173
|
+
through) and `floating` (0.80 — opaque enough for AA legibility against
|
|
174
|
+
the bright bucket), so the modal floats with the FLOATING-tier lift (edge/
|
|
175
|
+
rim/under-shadow) while reading at the RESTING-tier transparency. The
|
|
176
|
+
LIBRARY iOS-modal identity (presets-in-consumers — a consumer retunes
|
|
177
|
+
`--glass-bg-dialog` via :root). Consumed by DialogContent.vue, which re-
|
|
178
|
+
declares `--glass-bg-floating: var(--glass-bg-dialog)` on the dialog scope
|
|
179
|
+
(the self-re-point recipe, the dock precedent — NOT a raw rung override
|
|
180
|
+
that won't re-compose). */
|
|
181
|
+
--glass-opacity-dialog: 0.68;
|
|
182
|
+
|
|
136
183
|
/* Dock foreground over an animated backdrop. A dock floating over an
|
|
137
184
|
aurora/animated surface (`value.js` dock-over-aurora, a slides routed
|
|
138
185
|
control, bbnf) sits on a mid-luminance, shifting field where the muted
|
|
@@ -178,22 +225,35 @@
|
|
|
178
225
|
second hand-rolled recipe. */
|
|
179
226
|
--glass-bg-dock: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-dock)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
|
|
180
227
|
--glass-bg-chassis: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-chassis)) * var(--glass-level)) * 100%), transparent);
|
|
228
|
+
/* BC.W-DIALOG-GLASS — the dialog plate bg, composed the SAME oklab-tint-wrapped
|
|
229
|
+
way the dock self-re-points (so the BC.W-ADAPTIVE-RECONCILE darken reaches the
|
|
230
|
+
modal over a bright backdrop without a second hand-rolled recipe). The 0.68
|
|
231
|
+
opacity is the iOS-27 control-center register (see `--glass-opacity-dialog`).
|
|
232
|
+
DialogContent.vue re-declares `--glass-bg-floating: var(--glass-bg-dialog)` on
|
|
233
|
+
the dialog scope (the documented retune path — the self-re-point, NOT a raw
|
|
234
|
+
rung override) so the floating edge/rim/under-shadow LIFT survives the
|
|
235
|
+
transparency drop. */
|
|
236
|
+
--glass-bg-dialog: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-dialog)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
|
|
181
237
|
|
|
182
|
-
/* Composed borders — foreground-tinted.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
--glass-border-
|
|
196
|
-
--glass-border-
|
|
238
|
+
/* Composed borders — foreground-tinted. BC.W-BLACK-BAR D2 — the perimeter
|
|
239
|
+
hairline is RETIRED as the silhouette device. The old 11-22% warm-ink rung
|
|
240
|
+
borders rode --foreground (oklab L 0.216, near-black warm ink); over a
|
|
241
|
+
near-white cream plate the full-perimeter hairline read as the user's "wtf
|
|
242
|
+
is this black bar" — worst on the TOP edge where the bright white catch-light
|
|
243
|
+
ring sat just inside a dark border (a bright rim and a dark line at war on the
|
|
244
|
+
SAME edge). The silhouette is now carved by the directional rim
|
|
245
|
+
(--glass-rim-top catch-light + --glass-rim-bottom under-shadow, glass-fx.css),
|
|
246
|
+
NOT by this perimeter ink. So each rung drops to ≤5% α — the warm hue stays
|
|
247
|
+
--foreground (the warm-not-tinted identity, BA.W-NO-GRAY), only the PRESENCE
|
|
248
|
+
falls below the read-threshold so the hairline can never read as a bar. The
|
|
249
|
+
+1% on the two heaviest rungs (floating/overlay) holds a faint tier-presence
|
|
250
|
+
ordering without crossing the threshold (apple-ios27.md §5 "top ≤4%" target). */
|
|
251
|
+
--glass-border-wash: color-mix(in srgb, var(--foreground) 4%, transparent);
|
|
252
|
+
--glass-border-quiet: color-mix(in srgb, var(--foreground) 4%, transparent);
|
|
253
|
+
--glass-border-resting: color-mix(in srgb, var(--foreground) 4%, transparent);
|
|
254
|
+
--glass-border-floating: color-mix(in srgb, var(--foreground) 5%, transparent);
|
|
255
|
+
--glass-border-overlay: color-mix(in srgb, var(--foreground) 5%, transparent);
|
|
256
|
+
--glass-border-dock: color-mix(in srgb, var(--foreground) 4%, transparent);
|
|
197
257
|
--glass-border: var(--glass-border-quiet);
|
|
198
258
|
|
|
199
259
|
/* ── The control REST register (BA.W-SURFACE-AXIS scope 7) ────────────────
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
--section-color-2: light-dark(oklch(0.484 0.163 265.5), oklch(0.718 0.107 268.4));
|
|
132
132
|
--section-color-3: light-dark(oklch(0.542 0.089 222.8), oklch(0.767 0.091 219.9));
|
|
133
133
|
--section-color-4: light-dark(oklch(0.551 0.088 171.1), oklch(0.776 0.105 172.6));
|
|
134
|
-
--section-color-5: light-dark(oklch(0.
|
|
134
|
+
--section-color-5: light-dark(oklch(0.530 0.124 69.6), oklch(0.813 0.109 78.2));
|
|
135
135
|
--section-color-6: light-dark(oklch(0.579 0.201 30.4), oklch(0.693 0.151 28.1));
|
|
136
136
|
--section-color-7: light-dark(oklch(0.532 0.180 317.5), oklch(0.739 0.134 318.1));
|
|
137
137
|
--section-color-8: light-dark(oklch(0.520 0.176 8.4), oklch(0.709 0.142 2.3));
|
|
@@ -108,6 +108,33 @@
|
|
|
108
108
|
it claimed to back never read it — PopoverContent paints `p-4` directly), so
|
|
109
109
|
it was an orphan declaration the golden-padding cut prunes. */
|
|
110
110
|
--panel-padding: 0.375rem;
|
|
111
|
+
|
|
112
|
+
/* BC.W-OVERLAY-UNIFORM — the token-BACKING of the raw floating-overlay
|
|
113
|
+
literals (the token-beats-prop seam). Each defaults to the byte-identical
|
|
114
|
+
HEAD magnitude so a bare overlay is pixel-unchanged; a consumer retunes
|
|
115
|
+
EVERY overlay's min-width / max-block / tooltip type / select chevron from
|
|
116
|
+
ONE `:root` override (the uniformity payoff). These are token-backings of
|
|
117
|
+
EXISTING raw literals (`min-w-32` / `max-h-[60vh]` / tooltip `text-sm` /
|
|
118
|
+
chevron `opacity-50`) — NOT a new compositing register (the `surface` axis
|
|
119
|
+
+ the φ `--overlay-pad-*` ladder are THREADED, not re-minted). */
|
|
120
|
+
/* `min-w-32` = 32 × 0.25rem = 8rem — the dropdown/select/context-menu min-width. */
|
|
121
|
+
--overlay-min-width: 8rem;
|
|
122
|
+
/* The collision-bounded max-block ceiling the dropdown (`max-h-[60vh]`) +
|
|
123
|
+
command list (`max-h-[300px]`) read. Defaults to 60vh — the viewport-
|
|
124
|
+
relative ceiling so a long menu scrolls inside the overlay rather than
|
|
125
|
+
running off-screen. (The Select precompiled `[data-slot="select-content"]`
|
|
126
|
+
max-height in select.css is the BA.W-EMISSION consumer-reach floor — KEPT,
|
|
127
|
+
not threaded here; see the census on-the-line row.) */
|
|
128
|
+
--overlay-max-block: 60vh;
|
|
129
|
+
/* The tooltip type rung — the golden quiet caption register (√φ ladder), the
|
|
130
|
+
token-backing of the bare `text-sm` on TooltipContent (the overlay share of
|
|
131
|
+
class 3). Defaults to `--type-caption` so the compact tooltip chip reads the
|
|
132
|
+
house caption scale; a consumer retunes the tooltip type from `:root`. */
|
|
133
|
+
--tooltip-text: var(--type-caption);
|
|
134
|
+
/* The Select trigger chevron opacity — the token-backing of the bare
|
|
135
|
+
`opacity-50` so a consumer retunes the affordance prominence from `:root`. */
|
|
136
|
+
--select-chevron-opacity: 0.5;
|
|
137
|
+
|
|
111
138
|
--chart-height-compact: 15rem;
|
|
112
139
|
--chart-height-default: 22.5rem;
|
|
113
140
|
--chart-height-large: 25rem;
|
|
@@ -171,6 +171,19 @@
|
|
|
171
171
|
initial-value: 0%;
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
+
/* BC.W-GLASS-GLOW-FIX (Atlas A-8) — the Pulse aura breath SCALE. The `ambient-pulse`
|
|
175
|
+
keyframe runs on `.pulse-aura` and writes this property; the `.pulse-aura::before`
|
|
176
|
+
child (the radial paint) reads it via `transform: scale(var(--pulse-aura-breath-
|
|
177
|
+
scale))`. Typed `<number>` so the keyframe INTERPOLATES it per-frame (a bare
|
|
178
|
+
unregistered var would snap min↔max). INHERITS so the pseudo-element picks it up
|
|
179
|
+
from its originating `.pulse-aura` (the aura has no content descendants — it is
|
|
180
|
+
`aria-hidden` + empty — so the inherit only reaches the `::before` halo). */
|
|
181
|
+
@property --pulse-aura-breath-scale {
|
|
182
|
+
syntax: "<number>";
|
|
183
|
+
inherits: true;
|
|
184
|
+
initial-value: 1;
|
|
185
|
+
}
|
|
186
|
+
|
|
174
187
|
/* AX.W54 — the GLASS-FIRST single knob. `--glass-level` is the ONE clarity
|
|
175
188
|
scalar threaded through BOTH glass ladders at their single sites (the
|
|
176
189
|
`--glass-bg-*` opacity recipe + the `--glass-blur-*` radii). It is a typed,
|
|
@@ -194,6 +207,26 @@
|
|
|
194
207
|
initial-value: 1;
|
|
195
208
|
}
|
|
196
209
|
|
|
210
|
+
/* BC.W-ADAPTIVE-RECONCILE — the OBSERVER's measured backdrop relative-luminance, now
|
|
211
|
+
LOAD-BEARING. `useGlassBackdropLuminance` WRITES `--glass-backdrop-luma` (0..1) on
|
|
212
|
+
the glass target; the content/overlay/dock `:where()` rules READ it on the RHS of the
|
|
213
|
+
`--glass-tint-strength` clamp (glass/ladder.css, dock/morph.css) — the continuous
|
|
214
|
+
driver that lifts the calm 4% floor toward the ≤24% AA ceiling as the measured
|
|
215
|
+
backdrop brightens past the knee (the iOS-27 dynamic-range shift; apple-ios27.md §1.5).
|
|
216
|
+
Registered as a typed INHERITING `<number>` (the `--glass-level`/`--progress-crescendo`
|
|
217
|
+
precedent) so a bare `var()` INTERPOLATES smoothly between sample frames instead of
|
|
218
|
+
snapping (a per-sample re-paint would flicker the plate). `inherits: true` so the
|
|
219
|
+
observer's write on the target reaches every descendant glass surface that reads the
|
|
220
|
+
clamp. `initial-value: 0` is the calm-dark rest: with luma 0 the clamp's luma-ramp is
|
|
221
|
+
`max(0, …) = 0`, so an unwired surface resolves EXACTLY the floor (the zero-delta calm
|
|
222
|
+
identity GLASS-IDENTITY pins). This replaces the empty `--glass-backdrop-luma: ;`
|
|
223
|
+
placeholder declaration (the dead-knob's write-only stub) — the loop now READS. */
|
|
224
|
+
@property --glass-backdrop-luma {
|
|
225
|
+
syntax: "<number>";
|
|
226
|
+
inherits: true;
|
|
227
|
+
initial-value: 0;
|
|
228
|
+
}
|
|
229
|
+
|
|
197
230
|
/* BB.W-DEEP-GLASS — the OPT-IN deep-glass DEPTH scalar. `--glass-depth` is the
|
|
198
231
|
`--glass-level` TWIN for the deep tier: a typed INHERITING <number> so a host
|
|
199
232
|
sets it on any ancestor to retune the deep tier's depth (the cascading-scalar
|
|
@@ -287,3 +320,103 @@
|
|
|
287
320
|
inherits: true;
|
|
288
321
|
initial-value: 0;
|
|
289
322
|
}
|
|
323
|
+
|
|
324
|
+
/* BC.W-AX-COMPLETION-SEAL — the 4 motion drives of the hero-scale earned-GOLD
|
|
325
|
+
completion seal (completion-seal.css consumes them). Registered typed so the
|
|
326
|
+
one-shot draw INTERPOLATES (a bare unregistered var() snaps; the §18 typed-property
|
|
327
|
+
idiom lets the engine animate the stroke-reveal / settle / glint). The seal is the
|
|
328
|
+
visual seal of the W-PHASE-PALETTE completion event — its ink reads the earned-gold
|
|
329
|
+
register; its glint composes the W-AX-METAL-GLOW catch-light. One-shot, PRM-gated,
|
|
330
|
+
compositor-only.
|
|
331
|
+
|
|
332
|
+
• --seal-draw (<percentage>) — the stroke-reveal extent (the stroke-dashoffset wipe
|
|
333
|
+
drive: 0% undrawn → 100% fully drawn). `inherits: false` (each seal owns its own
|
|
334
|
+
draw, the per-surface ownership of the specular/border-progress cohort — a sealed
|
|
335
|
+
parent must not push its draw onto a child seal). `initial-value: 100%` is the
|
|
336
|
+
SAFE fully-drawn resting seal: on a non-supporting engine (no @property) the seal
|
|
337
|
+
paints fully drawn, NEVER a blank — the editorial draw-on degrades to the finished
|
|
338
|
+
mark, never to nothing.
|
|
339
|
+
|
|
340
|
+
• --seal-scale (<number>) — the settle scale (the draw-on lands with a small spring
|
|
341
|
+
overshoot on the seal's own --spring-snappy/--spring-bouncy clock — the SPATIAL
|
|
342
|
+
leg, W-MOTION-CANON P2 enter-bouncy). `inherits: false` (per-seal). `initial-value:
|
|
343
|
+
1` is the resting settled scale.
|
|
344
|
+
|
|
345
|
+
• --seal-glint (<number>) — the gold catch-light intensity (the one-pass glint that
|
|
346
|
+
fires once on settle, reading --metal-glow-opacity from W-AX-METAL-GLOW — a glint,
|
|
347
|
+
not a loop). `inherits: false` (per-seal). `initial-value: 0` so an unwired seal is
|
|
348
|
+
un-glinting at rest (the calm floor; the glint wakes only on the draw).
|
|
349
|
+
|
|
350
|
+
• --seal-ink (<color>) — the seal stroke color. `inherits: true` (the cascading-scalar
|
|
351
|
+
idiom — a consumer scope re-inks the seal in lockstep with the completion register).
|
|
352
|
+
The @property `initial-value` MUST be a CONCRETE var-free <color> (the typed-property
|
|
353
|
+
rule: a registration fallback cannot be a var()), so it is the LITERAL light-gold
|
|
354
|
+
`oklch(0.751 0.147 84.2)` (scale-paper.css's `--gold` value) — the engine fallback
|
|
355
|
+
when no cascaded value exists. The RUNTIME cascade default is the TOKEN form the
|
|
356
|
+
recipe sets: `--seal-ink: var(--phase-complete-color, var(--color-gold))` — the
|
|
357
|
+
EARNED-gold completion register (Q2: gold is earned at completion, NEVER the running
|
|
358
|
+
phase spectrum). */
|
|
359
|
+
@property --seal-draw {
|
|
360
|
+
syntax: "<percentage>";
|
|
361
|
+
inherits: false;
|
|
362
|
+
initial-value: 100%;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
@property --seal-scale {
|
|
366
|
+
syntax: "<number>";
|
|
367
|
+
inherits: false;
|
|
368
|
+
initial-value: 1;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
@property --seal-glint {
|
|
372
|
+
syntax: "<number>";
|
|
373
|
+
inherits: false;
|
|
374
|
+
initial-value: 0;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
@property --seal-ink {
|
|
378
|
+
syntax: "<color>";
|
|
379
|
+
inherits: true;
|
|
380
|
+
initial-value: oklch(0.751 0.147 84.2);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/* BC.W-SCROLL-TRIGGER — the native scroll-ramp custom. The continuous 0..1 scroll
|
|
384
|
+
progress the `useScrollTrigger` reader exposes rides this registered custom on a
|
|
385
|
+
`supportsScrollTimeline()` engine: a `.scroll-progress`-style recipe writes it via
|
|
386
|
+
`animation-timeline: scroll(self)` so a consumer's CSS ramp (the BC.W-SCROLL-CHROME
|
|
387
|
+
shrink/opacity) reads `--scroll-t` with ZERO JS (the dual-path single-writer — the JS
|
|
388
|
+
`progress` ref attaches NOTHING on a supporting engine). `inherits: true` (the
|
|
389
|
+
cascading-scalar idiom — a scroll-driven ancestor exposes the ramp to descendant
|
|
390
|
+
chrome, the `--ui-scale`/`--glass-level` pattern), distinct from the per-element
|
|
391
|
+
non-inheriting specular/progress cohort. `initial-value: 0` is the safe resting ramp
|
|
392
|
+
(the unregistered fallback paints it; on a non-supporting engine the JS reader writes
|
|
393
|
+
`progress.value` and the consumer reads the ref, not this custom). The typed
|
|
394
|
+
`<number>` lets the engine interpolate the ramp rather than the textual rep (a bare
|
|
395
|
+
unregistered var() snaps — the `--border-progress-fill`/`--dock-morph-t` precedent). */
|
|
396
|
+
@property --scroll-t {
|
|
397
|
+
syntax: "<number>";
|
|
398
|
+
inherits: true;
|
|
399
|
+
initial-value: 0;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/* BC.W-SCROLL-CHROME — the floating-chrome COLLAPSE fraction. `--chrome-collapse-t`
|
|
403
|
+
is the 0..1 collapse scalar `useScrollChrome` ramps off the scroll reader's
|
|
404
|
+
direction + range (0 = fully expanded, 1 = fully collapsed). The `.scroll-chrome`
|
|
405
|
+
recipe (scroll-chrome.css) reads it for the COMPOSITOR shrink/quiet ramp:
|
|
406
|
+
`transform: scale()/translateY()` (the SPATIAL leg), `opacity` (bounded above a
|
|
407
|
+
never-invisible floor — the NN/g pale-fade trap forbidden), and the shadow LIFT as
|
|
408
|
+
content scrolls under (Apple "as text scrolls underneath, shadows become more
|
|
409
|
+
prominent"). It NEVER drives the resting `backdrop-filter` blur (the
|
|
410
|
+
W-DOCK-SHRINK-BLUR fence — the shrunken bar is crisp glass, not a blurry mess).
|
|
411
|
+
Registered typed so a bare `var()` INTERPOLATES the ramp rather than snapping (the
|
|
412
|
+
`--scroll-t`/`--dock-morph-t` precedent); `inherits: true` (the cascading-scalar
|
|
413
|
+
idiom — a scroll-driven ancestor exposes the collapse to descendant chrome, the
|
|
414
|
+
`--scroll-t`/`--glass-level` pattern, distinct from the per-element non-inheriting
|
|
415
|
+
specular cohort). `initial-value: 0` is the PERSISTENT rest (the iOS-27 default — a
|
|
416
|
+
bare chrome does NOT collapse; the unregistered fallback paints it too, so the
|
|
417
|
+
recipe is byte-identical to the expanded chrome when unwired). */
|
|
418
|
+
@property --chrome-collapse-t {
|
|
419
|
+
syntax: "<number>";
|
|
420
|
+
inherits: true;
|
|
421
|
+
initial-value: 0;
|
|
422
|
+
}
|
|
@@ -44,13 +44,17 @@
|
|
|
44
44
|
(segmented/pill slider OR the underline rule) STRETCHES along its travel
|
|
45
45
|
axis as it glides between tabs, then settles to fit — the Material 3
|
|
46
46
|
ELASTIC / Apple Liquid-Glass "controls insist on animating themselves"
|
|
47
|
-
register
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
register. The deform is volume-preserving (stretch X, compress Y in lockstep:
|
|
48
|
+
`scale: var(--stretch) calc(1 / var(--stretch))`) so it reads as an elastic
|
|
49
|
+
warp, never a size pump. A consumer dials the elasticity (or to 1 for none)
|
|
50
|
+
without touching source.
|
|
51
|
+
BC.W-LIQUID-TAB — lifted 1.08 → 1.15 (in lockstep with the no-token floor
|
|
52
|
+
DEFAULT_INDICATOR_MAX_STRETCH, the SOLE cap source — constant + token never
|
|
53
|
+
fork). The click travel-squish AND the liquid-tab pull-morph read this ONE
|
|
54
|
+
cap; the lift makes a FAST pull visibly swell the pill so the gel-squish READS
|
|
55
|
+
as liquid (glass-dock-codebase.md §3.4) — still capped LOW (≤1.2, the
|
|
56
|
+
anti-taffy-pull bar; the pill swells, never taffy-pulls). */
|
|
57
|
+
--tab-indicator-max-stretch: 1.15;
|
|
54
58
|
/* BA.W-TABS — the indicator's OWN travel clock, re-pointed off the generic
|
|
55
59
|
`--duration-normal` (0.3s, which dragged a ~190ms sub-pixel undershoot tail
|
|
56
60
|
past the ~100ms 90%-travel point — the R10-2 "too slow" read) onto the
|
|
@@ -81,6 +85,26 @@
|
|
|
81
85
|
--invalid-ring: 0 0 0 var(--focus-ring-width)
|
|
82
86
|
color-mix(in srgb, var(--destructive) var(--invalid-ring-tint), transparent);
|
|
83
87
|
|
|
88
|
+
/* BC.W-RADIO-FIX — the selection-control STATE register (the `--focus-ring-shadow`
|
|
89
|
+
/ `--invalid-ring` precedent: one named register, read everywhere — never a
|
|
90
|
+
per-control magic literal). The checks family (Checkbox + RadioGroupItem) reads
|
|
91
|
+
these TWO tokens so a re-tint is ONE edit, library-wide.
|
|
92
|
+
|
|
93
|
+
• `--control-ring` — the UNCHECKED outline. Post-BC.W-BLACK-BAR the general glass
|
|
94
|
+
rim is ≤4% warm-ink (`--glass-border-resting`), which reads as a near-invisible
|
|
95
|
+
hairline on a 16px circle — too faint to tell a rest radio from its siblings. So
|
|
96
|
+
the selection atoms are the NAMED exception (recorded in BC.W-BLACK-BAR's fences):
|
|
97
|
+
a slightly-stronger ~12% warm-ink outline that reads as a DEFINED circle at 16px
|
|
98
|
+
without re-introducing the dark `--primary` hairline. Warm-ink-derived (no gray,
|
|
99
|
+
BA.W-NO-GRAY).
|
|
100
|
+
• `--control-checked-bg` — the SELECTED glass-tinted fill. The recipe is minted
|
|
101
|
+
ONCE here (the anti-paste bite: a second inline `color-mix(... --primary 88% ...)`
|
|
102
|
+
literal on a checks atom reds — the recipe IS the token). Mirrors the
|
|
103
|
+
glass-`--primary` over the floating tier the Checkbox already speaks, so the ring
|
|
104
|
+
goes outline → filled glass disc (a real material step), warm-not-saturated. */
|
|
105
|
+
--control-ring: color-mix(in srgb, var(--foreground) 12%, transparent);
|
|
106
|
+
--control-checked-bg: color-mix(in srgb, var(--primary) 88%, var(--glass-bg-floating));
|
|
107
|
+
|
|
84
108
|
/* ═══════════════════════════════════════════════
|
|
85
109
|
§12 PAPER TEXTURES
|
|
86
110
|
═══════════════════════════════════════════════ */
|
|
@@ -94,29 +118,49 @@
|
|
|
94
118
|
--paper-clean-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
|
|
95
119
|
--paper-aged-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='5' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
|
|
96
120
|
|
|
97
|
-
/*
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
`--
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
grid
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
/* BC.W-GRID-SIMPLE — the ONE engineering-graph-paper rhythm source. The
|
|
122
|
+
keyframes.js `EditorShell` magnitudes, re-expressed as `--grid-*` tokens:
|
|
123
|
+
a fine 1rem cell + a bolder 5rem major rule (the 5× engineering-graph
|
|
124
|
+
rhythm), each line a hairline-crisp single device-pixel. The pitch is
|
|
125
|
+
REM-RELATIVE — 1rem (16px at the default root) and 5rem (80px) divide
|
|
126
|
+
cleanly at DPR 1/2/3, so every line lands on a whole device-pixel column/
|
|
127
|
+
row (the anti-blur rule; the prior 28px/32px integer pitch landed on
|
|
128
|
+
sub-pixel boundaries at fractional-DPR zoom and the anti-aliaser softened
|
|
129
|
+
the 1px lines). The fine 3% is the user's "less busy substrate" — DELIBERATELY
|
|
130
|
+
BELOW the 10% legibility floor — and the major 11% is held STRICTLY ABOVE it
|
|
131
|
+
(the kf weight step). The line INK is a `color-mix(… var(--foreground) N%, …)`
|
|
132
|
+
so it re-tints with the theme by construction (warm-ink on light, lifting
|
|
133
|
+
off near-black on dark) — NO parallel `--grid-*-dark` family (the
|
|
134
|
+
`--foreground` flip re-resolves the mix; the cards.css dark-arm precedent).
|
|
135
|
+
A consumer dials it LARGER (`--grid-pitch: 1.25rem` / `--grid-major: 6.25rem`)
|
|
136
|
+
or quieter (the `--grid-line`/`--grid-line-major` strength knobs) at `:root`
|
|
137
|
+
— the token-first axis. This is the SINGLE rhythm source: the demo full-bleed
|
|
138
|
+
page grid (`.grid-bg`, story-hero.css) AND the library card-interior register
|
|
139
|
+
(`.paper-grid`, cards.css) both read it (the two-parallel-28px/32px-systems
|
|
140
|
+
fix). The LIQUID full-bleed sibling (`<PaperGrid>`, BC.W-VIZ-PAPERGRID)
|
|
141
|
+
re-uses the SAME rhythm — one pitch, two registers (static page-bg vs liquid). */
|
|
142
|
+
--grid-pitch: 1rem;
|
|
143
|
+
--grid-major: 5rem;
|
|
144
|
+
--grid-line: color-mix(in srgb, var(--foreground) 3%, transparent);
|
|
145
|
+
--grid-line-major: color-mix(in srgb, var(--foreground) 11%, transparent);
|
|
146
|
+
|
|
147
|
+
/* The library card-interior GEOMETRIC register (`.paper-grid`, cards.css) —
|
|
148
|
+
the document-register card's INTERIOR ground, felt THROUGH the glass tint.
|
|
149
|
+
It UNIFIES its pitch onto the shared `--grid-pitch` (the prior 32px literal
|
|
150
|
+
retired — ONE rhythm source) and keeps its OWN ambient through-card strength
|
|
151
|
+
register: the `--paper-grid-opacity` single knob (~0.08, the ask's "felt
|
|
152
|
+
THROUGH the card ~0.08"). DISTINCT from the page-bg 3%/11% tier above — a
|
|
153
|
+
card interior reads quieter than a full-bleed page wash — but the PITCH is
|
|
154
|
+
shared. The ink stays a `color-mix(… var(--foreground) N%, …)` (re-tints with
|
|
155
|
+
--foreground in lockstep, never a hardcoded literal — the no-gray floor); the
|
|
156
|
+
MAJOR rule rides `* 1.6` (the 0.08→0.128 weight step). The strength lives in
|
|
157
|
+
the ink alpha, not a layer `opacity`, because `.paper-grid` paints the grid on
|
|
158
|
+
the card's HOST `background-image` to avoid two-pseudo-budget contention with
|
|
159
|
+
the grain `::after` / specular `::before` (see cards.css). A STATIC raster —
|
|
160
|
+
gradient-stack `background-image`, one compositor-cached paint, never a
|
|
161
|
+
per-frame repaint. */
|
|
118
162
|
--paper-grid-opacity: 0.08;
|
|
119
|
-
--paper-grid-texture-size:
|
|
163
|
+
--paper-grid-texture-size: var(--grid-pitch);
|
|
120
164
|
--paper-grid-line: color-mix(
|
|
121
165
|
in srgb,
|
|
122
166
|
var(--foreground) calc(var(--paper-grid-opacity) * 100%),
|
|
@@ -74,6 +74,20 @@
|
|
|
74
74
|
§1 DURATION
|
|
75
75
|
═══════════════════════════════════════════════ */
|
|
76
76
|
--duration-instant: 0.1s;
|
|
77
|
+
/* BC.W-CONTROL-SMOOTH — the named control-press SURFACE clock (the W-GLASS-CAL
|
|
78
|
+
per-register-clock discipline). An interactive control the user actively pokes
|
|
79
|
+
(hover-in, press, toggle) wants the iOS quick ~100-120ms surface beat, NOT the
|
|
80
|
+
0.2s calm card-crossfade beat — at 0.2s the colour/border/shadow easing drags
|
|
81
|
+
VISIBLY behind the pointer (the §F "super laggy" read). 0.12s brackets the iOS
|
|
82
|
+
100-120ms quick-control register (apple-ios27.md). `transition-control` (btn.css)
|
|
83
|
+
reads THIS so the whole control family re-times from one `:root` override, and
|
|
84
|
+
the surface beat now tracks the press-squish window (the press is `tap-squish`/
|
|
85
|
+
`useSpringPress`'s coupled transform leg on the spring's own clock — P3 fade-
|
|
86
|
+
coupled-to-transform). The bezier `--ease-standard` STAYS for the surface legs
|
|
87
|
+
(a colour cross-fade on a spring wobbles, §6 binding); only the DURATION shortens.
|
|
88
|
+
The CALM card register keeps `--duration-fast`/`--duration-normal` — a `<Card>` is
|
|
89
|
+
not an interactive control. */
|
|
90
|
+
--duration-control: 0.12s;
|
|
77
91
|
--duration-fast: 0.2s;
|
|
78
92
|
--duration-normal: 0.3s;
|
|
79
93
|
--duration-slow: 0.45s;
|
|
@@ -141,12 +155,14 @@
|
|
|
141
155
|
`linear()` stops; this is the single source of truth tying each
|
|
142
156
|
(response, ζ) pair to its serialized curve.
|
|
143
157
|
|
|
144
|
-
iOS-canonical (response, dampingFraction) per AL-X4 §3
|
|
158
|
+
iOS-canonical (response, dampingFraction) per AL-X4 §3 (BC.W-SPRING-EASE
|
|
159
|
+
eased `snappy`+`bouncy` to fill their clocks + minted the `press` register):
|
|
145
160
|
smooth: (0.50s, ζ=0.86) — gentle settle, sub-perceptual overshoot ~0.5%
|
|
146
|
-
snappy: (0.
|
|
147
|
-
bouncy: (0.50s, ζ=0.
|
|
161
|
+
snappy: (0.42s, ζ=0.78) — quick crisp, eased to fill its clock, overshoot ~+2.0%
|
|
162
|
+
bouncy: (0.50s, ζ=0.55) — emphatic, overshoot ~+12.6% (the Apple 12-18% band)
|
|
148
163
|
gentle: (0.70s, ζ=1.00) — patient critically-damped
|
|
149
164
|
dock: (0.32s, ζ=0.70) — dock expand/collapse morph, overshoot ~+4.6%
|
|
165
|
+
press: (0.15s, ζ=0.86) — the iOS interactive tap-press, sub-100ms answer, ~+0.5%
|
|
150
166
|
|
|
151
167
|
Note on `smooth`: at ζ=0.86 the analytic solver produces a peak
|
|
152
168
|
of 1.00498 (+0.5%) at the 24% slot — mathematically present but
|
|
@@ -218,10 +234,11 @@
|
|
|
218
234
|
for interactive transforms; those use `--spring-smooth`).
|
|
219
235
|
═══════════════════════════════════════════════ */
|
|
220
236
|
--spring-smooth: linear(0, 0.09804 2.041%, 0.29288 4.082%, 0.49447 6.122%, 0.66436 8.163%, 0.79208 10.204%, 0.88050 12.245%, 0.93754 14.286%, 0.97182 16.327%, 0.99083 18.367%, 1.00027 20.408%, 1.00413 22.449%, 1.00502 24.490%, 1.00453 26.531%, 1.00355 28.571%, 1.00254 30.612%, 1.00169 32.653%, 1.00105 34.694%, 1.00060 36.735%, 1.00031 38.776%, 1.00014 40.816%, 1.00005 42.857%, 1.00000 44.898%, 1.00000 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
|
|
221
|
-
--spring-snappy: linear(0, 0.
|
|
222
|
-
--spring-bouncy: linear(0, 0.
|
|
237
|
+
--spring-snappy: linear(0, 0.10038 2.041%, 0.30488 4.082%, 0.51991 6.122%, 0.70158 8.163%, 0.83608 10.204%, 0.92554 12.245%, 0.97893 14.286%, 1.00665 16.327%, 1.01792 18.367%, 1.01981 20.408%, 1.01715 22.449%, 1.01292 24.490%, 1.00873 26.531%, 1.00530 28.571%, 1.00282 30.612%, 1.00120 32.653%, 1.00027 34.694%, 0.99980 36.735%, 0.99962 38.776%, 0.99961 40.816%, 0.99967 42.857%, 0.99976 44.898%, 0.99984 46.939%, 0.99991 48.980%, 0.99995 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
|
|
238
|
+
--spring-bouncy: linear(0, 0.10764 2.041%, 0.34440 4.082%, 0.60803 6.122%, 0.83510 8.163%, 0.99669 10.204%, 1.08926 12.245%, 1.12435 14.286%, 1.11986 16.327%, 1.09372 18.367%, 1.06042 20.408%, 1.02959 22.449%, 1.00623 24.490%, 0.99172 26.531%, 0.98510 28.571%, 0.98426 30.612%, 0.98688 32.653%, 0.99095 34.694%, 0.99505 36.735%, 0.99835 38.776%, 1.00055 40.816%, 1.00170 42.857%, 1.00202 44.898%, 1.00180 46.939%, 1.00132 48.980%, 1.00079 51.020%, 1.00033 53.061%, 1.00001 55.102%, 0.99982 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
|
|
223
239
|
--spring-gentle: linear(0, 0.09415 2.041%, 0.27374 4.082%, 0.45506 6.122%, 0.60779 8.163%, 0.72570 10.204%, 0.81213 12.245%, 0.87336 14.286%, 0.91570 16.327%, 0.94445 18.367%, 0.96371 20.408%, 0.97645 22.449%, 0.98481 24.490%, 0.99025 26.531%, 0.99377 28.571%, 0.99604 30.612%, 0.99749 32.653%, 0.99841 34.694%, 0.99900 36.735%, 0.99937 38.776%, 0.99961 40.816%, 0.99975 42.857%, 0.99985 44.898%, 1.00000 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
|
|
224
240
|
--spring-dock: linear(0, 0.10282 2.041%, 0.31773 4.082%, 0.54783 6.122%, 0.74309 8.163%, 0.88550 10.204%, 0.97598 12.245%, 1.02452 14.286%, 1.04368 16.327%, 1.04501 18.367%, 1.03739 20.408%, 1.02681 22.449%, 1.01672 24.490%, 1.00873 26.531%, 1.00323 28.571%, 0.99996 30.612%, 0.99837 32.653%, 0.99789 34.694%, 0.99805 36.735%, 0.99848 38.776%, 0.99897 40.816%, 0.99940 42.857%, 0.99972 44.898%, 0.99993 46.939%, 1.00004 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
|
|
241
|
+
--spring-press: linear(0, 0.09804 2.041%, 0.29288 4.082%, 0.49447 6.122%, 0.66436 8.163%, 0.79208 10.204%, 0.88050 12.245%, 0.93754 14.286%, 0.97182 16.327%, 0.99083 18.367%, 1.00027 20.408%, 1.00413 22.449%, 1.00502 24.490%, 1.00453 26.531%, 1.00355 28.571%, 1.00254 30.612%, 1.00169 32.653%, 1.00105 34.694%, 1.00060 36.735%, 1.00031 38.776%, 1.00014 40.816%, 1.00005 42.857%, 1.00000 44.898%, 1.00000 46.939%, 1.00000 48.980%, 1.00000 51.020%, 1.00000 53.061%, 1.00000 55.102%, 1.00000 57.143%, 1.00000 59.184%, 1.00000 61.224%, 1.00000 63.265%, 1.00000 65.306%, 1.00000 67.347%, 1.00000 69.388%, 1.00000 71.429%, 1.00000 73.469%, 1.00000 75.510%, 1.00000 77.551%, 1.00000 79.592%, 1.00000 81.633%, 1.00000 83.673%, 1.00000 85.714%, 1.00000 87.755%, 1.00000 89.796%, 1.00000 91.837%, 1.00000 93.878%, 1.00000 95.918%, 1.00000 97.959%, 1);
|
|
225
242
|
|
|
226
243
|
/* ── PER-SPRING DURATION CLOCK (BA.W-GLASS-CAL Unit 3) ──
|
|
227
244
|
Generated from `scripts/regen-spring-tokens.mjs` — DO NOT hand-edit.
|
|
@@ -241,9 +258,20 @@
|
|
|
241
258
|
matching `--spring-<name>-duration`. */
|
|
242
259
|
--spring-smooth-duration: 0.36s;
|
|
243
260
|
--spring-snappy-duration: 0.34s;
|
|
244
|
-
--spring-bouncy-duration: 0.
|
|
261
|
+
--spring-bouncy-duration: 0.57s;
|
|
245
262
|
--spring-gentle-duration: 0.44s;
|
|
246
263
|
--spring-dock-duration: 0.28s;
|
|
264
|
+
--spring-press-duration: 0.11s;
|
|
265
|
+
|
|
266
|
+
/* ── DECK SLIDE-TRANSITION CURVE (BC.W-DECK) ──
|
|
267
|
+
The full-viewport keyboard-paged deck's slide transition rides the SAME
|
|
268
|
+
`--spring-smooth` register the deck's `DECK_SPRING` samples (the calm-settle
|
|
269
|
+
`.smooth` family; the (response, ζ) pair lives in deck/constants.ts) — an
|
|
270
|
+
ALIAS, NOT a new spring family (the donor's own fence + the W-GLASS-CAL spring
|
|
271
|
+
fence). `--spring-deck: var(--spring-smooth)` so a deck slide reads as a calm
|
|
272
|
+
settle, not a bounce; the JS half (`installDeckSpring`) consumes keyframes.js
|
|
273
|
+
`springTimingFunction(DECK_SPRING)` for the count-up easing. */
|
|
274
|
+
--spring-deck: var(--spring-smooth);
|
|
247
275
|
|
|
248
276
|
/* Core cubic-bezier (exits, fallbacks, non-spring uses) */
|
|
249
277
|
--motion-ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -264,6 +292,16 @@
|
|
|
264
292
|
--ease-decelerate: var(--ease-out);
|
|
265
293
|
--ease-accelerate: var(--ease-in);
|
|
266
294
|
|
|
295
|
+
/* BC.W-MOTION-PRESETS — the brand "convergence-reveal" / partial-sum settle.
|
|
296
|
+
The Fourier partial sum converges ONTO its target with a decaying Gibbs
|
|
297
|
+
ripple — a monotone critically-damped approach, NO sustained overshoot past
|
|
298
|
+
terminal. That curve IS `gentle` (ζ=1.0, overshoot 0), so this is the ALIAS
|
|
299
|
+
reuse: `--ease-convergence` resolves to `--spring-gentle` (no new
|
|
300
|
+
SPRING_PRESETS row, no second curve). The settle clock is the per-spring
|
|
301
|
+
`--spring-gentle-duration`. The N-term build-up is the `useStagger`
|
|
302
|
+
orchestration ON this curve (a documented recipe, not a new primitive). */
|
|
303
|
+
--ease-convergence: var(--spring-gentle);
|
|
304
|
+
|
|
267
305
|
/* ═══════════════════════════════════════════════
|
|
268
306
|
§2.A AMBIENT MOTION — Pulse aura tokens
|
|
269
307
|
|