@mkbabb/glass-ui 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -34
- package/dist/DropdownMenuTrigger-ClIq8RJE.js +93 -0
- package/dist/FeedbackMark-DZq5001h.js +23 -0
- package/dist/Input-9BlLluik.js +77 -0
- package/dist/{PagerDots-BoTQ7g5l.js → PagerDots-BEq0MgtH.js} +85 -81
- package/dist/Surface-kFQeYrYv.js +82 -0
- package/dist/accent-tone-solve-Cw7WkRD9.js +14 -0
- package/dist/animated-digit.js +5 -5
- package/dist/asElement-CRnm6A2v.js +9 -0
- package/dist/aurora.js +831 -776
- package/dist/axes.js +25 -14
- package/dist/badge-u65NClWn.js +62 -0
- package/dist/badge.js +1 -1
- package/dist/blob-config.js +1 -1
- package/dist/blob.js +442 -395
- package/dist/button-Bu9F4uU6.js +98 -0
- package/dist/button.js +2 -2
- package/dist/canvas.js +1 -1
- package/dist/card-Bk96VI2R.js +234 -0
- package/dist/card.js +2 -2
- package/dist/carousel.js +109 -169
- package/dist/chip-DFZQr6rV.js +129 -0
- package/dist/chip.js +2 -81
- package/dist/{class-names-5jotTFzp.js → class-names-Cpy5eaBk.js} +11 -4
- package/dist/collapsible-BAP95XTt.js +154 -0
- package/dist/collapsible.js +1 -1
- package/dist/color.js +46 -50
- package/dist/{procedural-color.wgsl-B9mLK7v0.js → color.wgsl-Ct5o9dpf.js} +155 -121
- package/dist/command-SFqDQ65h.js +320 -0
- package/dist/command.js +1 -1
- package/dist/completion-seal.js +54 -54
- package/dist/components/_shared/FeedbackMark.vue.d.ts +11 -0
- package/dist/components/_shared/axes.d.ts +9 -3
- package/dist/components/_shared/class-names.d.ts +9 -8
- package/dist/components/_shared/control-size.d.ts +2 -0
- package/dist/components/_shared/disclosure-context.d.ts +7 -0
- package/dist/components/_shared/disclosure.css +1 -0
- package/dist/components/_shared/feedback.d.ts +7 -0
- package/dist/components/_shared/field-control.css +1 -0
- package/dist/components/_shared/field-surfaces.css +1 -1
- package/dist/components/_shared/fieldControl.d.ts +13 -0
- package/dist/components/_shared/floating.d.ts +14 -0
- package/dist/components/_shared/index.d.ts +2 -6
- package/dist/components/_shared/interaction.d.ts +23 -0
- package/dist/components/_shared/menu.css +1 -1
- package/dist/components/_shared/menuRowClass.d.ts +2 -0
- package/dist/components/_shared/primitive.d.ts +19 -0
- package/dist/components/_shared/resolveSurfaceClass.d.ts +3 -0
- package/dist/components/_shared/selection.d.ts +7 -0
- package/dist/components/_shared/useMotionAxis.d.ts +3 -2
- package/dist/components/accordion/Accordion.vue.d.ts +41 -16
- package/dist/components/accordion/AccordionContent.vue.d.ts +11 -9
- package/dist/components/accordion/AccordionItem.vue.d.ts +12 -9
- package/dist/components/accordion/AccordionTrigger.vue.d.ts +8 -11
- package/dist/components/accordion/index.d.ts +4 -4
- package/dist/components/alert/Alert.vue.d.ts +9 -5
- package/dist/components/alert/index.d.ts +17 -8
- package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +2 -3
- package/dist/components/aurora/Aurora.vue.d.ts +37 -42
- package/dist/components/aurora/composables/atoms-fields.d.ts +13 -2
- package/dist/components/aurora/composables/atoms.d.ts +52 -50
- package/dist/components/aurora/composables/auroraFallbackGround.d.ts +13 -13
- package/dist/components/aurora/composables/auroraImageSource.d.ts +4 -5
- package/dist/components/aurora/composables/color.d.ts +15 -20
- package/dist/components/aurora/composables/frameLoop.d.ts +14 -11
- package/dist/components/aurora/composables/glSetup.d.ts +19 -2
- package/dist/components/aurora/composables/runtime.d.ts +56 -60
- package/dist/components/aurora/composables/uniformBridge.d.ts +9 -14
- package/dist/components/aurora/composables/uniformBridgeWGPU.d.ts +21 -22
- package/dist/components/aurora/composables/uniformBridgeWGPUImage.d.ts +13 -13
- package/dist/components/aurora/composables/useAurora.d.ts +19 -30
- package/dist/components/aurora/composables/wgpuSetup.d.ts +10 -8
- package/dist/components/aurora/constants/budget.d.ts +12 -25
- package/dist/components/aurora/constants/presets.d.ts +47 -58
- package/dist/components/aurora/constants/renderMode.d.ts +21 -36
- package/dist/components/aurora/constants/shaders/aurora-image.wgsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/brush.glsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/composition.glsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/flow.glsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/metal-medium.glsl.d.ts +2 -2
- package/dist/components/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -1
- package/dist/components/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -1
- package/dist/components/aurora/index.d.ts +2 -1
- package/dist/components/avatar/Avatar.vue.d.ts +72 -11
- package/dist/components/avatar/AvatarFallback.vue.d.ts +1 -2
- package/dist/components/avatar/AvatarImage.vue.d.ts +12 -8
- package/dist/components/avatar/index.d.ts +3 -9
- package/dist/components/avatar/styles.css +1 -0
- package/dist/components/badge/Badge.vue.d.ts +2 -9
- package/dist/components/badge/index.d.ts +32 -9
- package/dist/components/blob/Blob.vue.d.ts +5 -12
- package/dist/components/blob/composables/blobSimulation.d.ts +80 -0
- package/dist/components/blob/composables/buildMetaballProgram.d.ts +1 -1
- package/dist/components/blob/composables/resolveBlobSurface.d.ts +6 -0
- package/dist/components/blob/composables/satelliteKinematics.d.ts +3 -3
- package/dist/components/blob/composables/uniformBridgeWGPU.d.ts +1 -1
- package/dist/components/blob/composables/uploadBlobUniforms.d.ts +4 -31
- package/dist/components/blob/composables/useBlobMood.d.ts +5 -5
- package/dist/components/blob/composables/useBlobPointer.d.ts +11 -12
- package/dist/components/blob/composables/useMetaballRenderer.d.ts +27 -24
- package/dist/components/blob/composables/wgpuSetup.d.ts +7 -5
- package/dist/components/blob/config.d.ts +1 -1
- package/dist/components/blob/index.d.ts +2 -2
- package/dist/components/blob/presets.d.ts +2 -2
- package/dist/components/blob/shaders/metaball-palette.wgsl.d.ts +1 -1
- package/dist/components/blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
- package/dist/components/blob/shaders/metaball.wgsl.d.ts +1 -1
- package/dist/components/blob/shaders/sdf-body.glsl.d.ts +1 -1
- package/dist/components/blob/shaders/watercolor-edges.glsl.d.ts +1 -1
- package/dist/components/blob/types.d.ts +28 -60
- package/dist/components/button/Button.vue.d.ts +26 -20
- package/dist/components/button/index.d.ts +1 -9
- package/dist/components/button/styles.css +1 -0
- package/dist/components/card/Card.vue.d.ts +20 -155
- package/dist/components/card/CardAction.vue.d.ts +0 -7
- package/dist/components/card/CardContent.vue.d.ts +2 -2
- package/dist/components/card/CardDescription.vue.d.ts +2 -2
- package/dist/components/card/CardFooter.vue.d.ts +2 -2
- package/dist/components/card/CardHeader.vue.d.ts +3 -42
- package/dist/components/card/CardTitle.vue.d.ts +6 -3
- package/dist/components/card/card-scroll.css +1 -1
- package/dist/components/card/index.d.ts +1 -3
- package/dist/components/card/styles.css +1 -1
- package/dist/components/carousel/index.d.ts +0 -2
- package/dist/components/carousel/interface.d.ts +2 -0
- package/dist/components/checkbox/Checkbox.vue.d.ts +17 -9
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/checkbox/styles.css +1 -0
- package/dist/components/chip/Chip.vue.d.ts +12 -7
- package/dist/components/chip/chipVariants.d.ts +20 -43
- package/dist/components/chip/index.d.ts +1 -1
- package/dist/components/chip/types.d.ts +45 -30
- package/dist/components/collapsible/Collapsible.vue.d.ts +22 -9
- package/dist/components/collapsible/CollapsibleContent.vue.d.ts +11 -5
- package/dist/components/collapsible/CollapsibleTrigger.vue.d.ts +12 -9
- package/dist/components/collapsible/index.d.ts +3 -3
- package/dist/components/combobox/Combobox.vue.d.ts +10 -20
- package/dist/components/combobox/ComboboxAnchor.vue.d.ts +2 -6
- package/dist/components/combobox/ComboboxEmpty.vue.d.ts +2 -6
- package/dist/components/combobox/ComboboxGroup.vue.d.ts +2 -7
- package/dist/components/combobox/ComboboxInput.vue.d.ts +7 -12
- package/dist/components/combobox/ComboboxItem.vue.d.ts +7 -11
- package/dist/components/combobox/ComboboxItemIndicator.vue.d.ts +2 -6
- package/dist/components/combobox/ComboboxList.vue.d.ts +14 -17
- package/dist/components/combobox/ComboboxTrigger.vue.d.ts +16 -0
- package/dist/components/combobox/index.d.ts +2 -1
- package/dist/components/combobox/types.d.ts +87 -0
- package/dist/components/command/Command.vue.d.ts +9 -23
- package/dist/components/command/CommandDialog.vue.d.ts +4 -9
- package/dist/components/command/CommandEmpty.vue.d.ts +2 -6
- package/dist/components/command/CommandGroup.vue.d.ts +2 -7
- package/dist/components/command/CommandInput.vue.d.ts +6 -7
- package/dist/components/command/CommandItem.vue.d.ts +7 -11
- package/dist/components/command/CommandList.vue.d.ts +12 -19
- package/dist/components/command/CommandSeparator.vue.d.ts +2 -6
- package/dist/components/command/CommandShortcut.vue.d.ts +2 -2
- package/dist/components/command/dialogContext.d.ts +6 -0
- package/dist/components/command/index.d.ts +10 -10
- package/dist/components/command/styles.css +1 -0
- package/dist/components/command/types.d.ts +27 -0
- package/dist/components/completion-seal/CompletionSeal.vue.d.ts +2 -2
- package/dist/components/completion-seal/constants.d.ts +2 -2
- package/dist/components/configurator/Configurator.vue.d.ts +6 -6
- package/dist/components/configurator/ConfiguratorLayer.vue.d.ts +14 -18
- package/dist/components/configurator/ConfiguratorRow.vue.d.ts +14 -17
- package/dist/components/configurator/size.d.ts +5 -7
- package/dist/components/configurator/styles.css +1 -1
- package/dist/components/constellation/Constellation.vue.d.ts +1 -1
- package/dist/components/constellation/composables/createConstellationField.d.ts +2 -2
- package/dist/components/constellation/constants.d.ts +8 -8
- package/dist/components/constellation/constellationField.d.ts +5 -6
- package/dist/components/constellation/constellationInteraction.d.ts +8 -8
- package/dist/components/constellation/constellationTypes.d.ts +53 -54
- package/dist/components/constellation/constellationWell.d.ts +2 -2
- package/dist/components/dark-mode-toggle/DarkModeToggle.vue.d.ts +12 -0
- package/dist/components/dark-mode-toggle/dark-mode-toggle.css +1 -0
- package/dist/components/dark-mode-toggle/index.d.ts +2 -0
- package/dist/components/data-table/DataTable.vue.d.ts +11 -59
- package/dist/components/data-table/composables/useDataTableRowIdentity.d.ts +5 -23
- package/dist/components/data-table/index.d.ts +1 -1
- package/dist/components/data-table/styles.css +1 -0
- package/dist/components/data-table/types.d.ts +10 -12
- package/dist/components/deck/index.d.ts +0 -1
- package/dist/components/dialog/Dialog.vue.d.ts +8 -3
- package/dist/components/dialog/DialogClose.vue.d.ts +3 -1
- package/dist/components/dialog/DialogContent.vue.d.ts +27 -90
- package/dist/components/dialog/DialogDescription.vue.d.ts +5 -6
- package/dist/components/dialog/DialogTitle.vue.d.ts +5 -6
- package/dist/components/dialog/DialogTrigger.vue.d.ts +3 -1
- package/dist/components/{_shared → dialog}/ModalOverlay.vue.d.ts +18 -16
- package/dist/components/dialog/dialogStageContext.d.ts +7 -0
- package/dist/components/dialog/index.d.ts +8 -8
- package/dist/components/dialog/placement.css +1 -1
- package/dist/components/dialog/sheet-motion.d.ts +17 -0
- package/dist/components/dock/DockControl.vue.d.ts +9 -12
- package/dist/components/dock/DockCrossfade.vue.d.ts +4 -8
- package/dist/components/dock/DockLayer.vue.d.ts +2 -3
- package/dist/components/dock/DockLayerGroup.vue.d.ts +6 -6
- package/dist/components/dock/DockSeparator.vue.d.ts +8 -8
- package/dist/components/dock/composables/dockContext.d.ts +4 -14
- package/dist/components/dock/composables/dockCrossfadeContext.d.ts +6 -7
- package/dist/components/dock/composables/dockMorphMeasure.d.ts +7 -86
- package/dist/components/dock/composables/index.d.ts +1 -1
- package/dist/components/dock/composables/useDockClickIntegrity.d.ts +1 -1
- package/dist/components/dock/composables/useDockHold.d.ts +4 -5
- package/dist/components/dock/composables/useDockMorph.d.ts +26 -0
- package/dist/components/dock/composables/useDockOverflowFit.d.ts +4 -6
- package/dist/components/dock/composables/useDockSearch.d.ts +8 -8
- package/dist/components/dock/composables/useDockShellProps.d.ts +46 -43
- package/dist/components/dock/composables/useDockSpring.d.ts +7 -11
- package/dist/components/dock/composables/useDockState.d.ts +12 -3
- package/dist/components/dock/composables/useDockTouchGate.d.ts +14 -23
- package/dist/components/dock/constants.d.ts +5 -78
- package/dist/components/dock/index.d.ts +2 -7
- package/dist/components/dock/styles/controls.css +1 -1
- package/dist/components/dock/styles/crossfade.css +1 -1
- package/dist/components/dock/styles/density.css +1 -1
- package/dist/components/dock/styles/index.css +1 -1
- package/dist/components/dock/styles/layer-group.css +1 -1
- package/dist/components/dock/styles/layers.css +1 -1
- package/dist/components/dock/styles/morph.css +1 -1
- package/dist/components/dock/styles/shape.css +1 -1
- package/dist/components/dock/styles/shell.css +1 -1
- package/dist/components/drawer/Drawer.vue.d.ts +17 -20
- package/dist/components/drawer/DrawerContent.vue.d.ts +15 -16
- package/dist/components/drawer/DrawerDescription.vue.d.ts +5 -6
- package/dist/components/drawer/DrawerOverlay.vue.d.ts +6 -6
- package/dist/components/drawer/DrawerTitle.vue.d.ts +5 -6
- package/dist/components/drawer/composables/drawerSnapContext.d.ts +7 -1
- package/dist/components/drawer/composables/useDrawerSnap.d.ts +3 -1
- package/dist/components/drawer/constants.d.ts +7 -25
- package/dist/components/drawer/index.d.ts +10 -10
- package/dist/components/drawer/styles.css +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.vue.d.ts +43 -16
- package/dist/components/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts +22 -13
- package/dist/components/dropdown-menu/DropdownMenuContent.vue.d.ts +28 -19
- package/dist/components/dropdown-menu/DropdownMenuGroup.vue.d.ts +6 -4
- package/dist/components/dropdown-menu/DropdownMenuItem.vue.d.ts +21 -9
- package/dist/components/dropdown-menu/DropdownMenuLabel.vue.d.ts +9 -9
- package/dist/components/dropdown-menu/DropdownMenuRadioGroup.vue.d.ts +13 -6
- package/dist/components/dropdown-menu/DropdownMenuRadioItem.vue.d.ts +18 -11
- package/dist/components/dropdown-menu/DropdownMenuSeparator.vue.d.ts +5 -6
- package/dist/components/dropdown-menu/DropdownMenuShortcut.vue.d.ts +7 -8
- package/dist/components/dropdown-menu/DropdownMenuSub.vue.d.ts +15 -7
- package/dist/components/dropdown-menu/DropdownMenuSubContent.vue.d.ts +24 -17
- package/dist/components/dropdown-menu/DropdownMenuSubTrigger.vue.d.ts +11 -9
- package/dist/components/dropdown-menu/DropdownMenuTrigger.vue.d.ts +15 -8
- package/dist/components/dropdown-menu/index.d.ts +15 -15
- package/dist/components/dropdown-menu/styles.css +1 -0
- package/dist/components/dropdown-menu/useMenuTrigger.d.ts +2 -9
- package/dist/components/easing/composables/useEasingPicker.d.ts +5 -8
- package/dist/components/easing/constants.d.ts +1 -1
- package/dist/components/expandable-container/ExpandableContainer.vue.d.ts +1 -25
- package/dist/components/expandable-container/styles.css +1 -0
- package/dist/components/fading-scroll/FadingScroll.vue.d.ts +4 -0
- package/dist/components/fading-scroll/composables/useFadingScroll.d.ts +4 -0
- package/dist/components/fading-scroll/constants.d.ts +1 -2
- package/dist/components/fourier-field/FourierField.vue.d.ts +3 -5
- package/dist/components/fourier-field/composables/fourierFieldGLSetup.d.ts +1 -1
- package/dist/components/fourier-field/composables/fourierFieldWGPUSetup.d.ts +1 -1
- package/dist/components/fourier-field/composables/useFourierField.d.ts +4 -4
- package/dist/components/fourier-field/constants.d.ts +10 -10
- package/dist/components/fourier-field/index.d.ts +3 -3
- package/dist/components/fourier-field/presets.d.ts +3 -3
- package/dist/components/fourier-field/shaders/fourier-field.glsl.d.ts +2 -2
- package/dist/components/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
- package/dist/components/handmark/HandMark.vue.d.ts +1 -1
- package/dist/components/handmark/brush.d.ts +1 -1
- package/dist/components/handmark/composables/useHandMark.d.ts +4 -4
- package/dist/components/handmark/constants.d.ts +10 -10
- package/dist/components/handmark/geometry.d.ts +8 -8
- package/dist/components/handmark/index.d.ts +7 -8
- package/dist/components/handmark/noise.d.ts +3 -3
- package/dist/components/handmark/types.d.ts +2 -2
- package/dist/components/header-ribbon/HeaderRibbon.vue.d.ts +3 -21
- package/dist/components/header-ribbon/styles.css +1 -0
- package/dist/components/header-ribbon/types.d.ts +5 -2
- package/dist/components/index.d.ts +0 -3
- package/dist/components/infinite-scroll/composables/types.d.ts +1 -1
- package/dist/components/input/Input.vue.d.ts +10 -35
- package/dist/components/input/index.d.ts +2 -1
- package/dist/components/input/types.d.ts +22 -0
- package/dist/components/instrument-chassis/InstrumentChassis.vue.d.ts +10 -84
- package/dist/components/instrument-chassis/index.d.ts +1 -2
- package/dist/components/instrument-chassis/styles.css +1 -1
- package/dist/components/instrument-chassis/types.d.ts +13 -0
- package/dist/components/label/Label.vue.d.ts +9 -14
- package/dist/components/label/index.d.ts +1 -1
- package/dist/components/labeled-field/LabeledField.vue.d.ts +10 -108
- package/dist/components/labeled-field/LabeledInput.vue.d.ts +3 -23
- package/dist/components/labeled-field/LabeledSelect.vue.d.ts +12 -18
- package/dist/components/labeled-field/LabeledSlider.vue.d.ts +12 -18
- package/dist/components/labeled-field/LabeledSwitch.vue.d.ts +14 -17
- package/dist/components/labeled-field/index.d.ts +1 -0
- package/dist/components/labeled-field/types.d.ts +50 -0
- package/dist/components/liquid-grid/composables/liquidGrid.d.ts +5 -5
- package/dist/components/liquid-grid/constants.d.ts +6 -7
- package/dist/components/liquid-grid/shaders/liquid-grid.glsl.d.ts +1 -1
- package/dist/components/liquid-grid/shaders/liquid-grid.wgsl.d.ts +1 -1
- package/dist/components/metric/Metric.vue.d.ts +24 -0
- package/dist/components/metric/MetricCell.vue.d.ts +26 -0
- package/dist/components/metric/MetricRow.vue.d.ts +22 -0
- package/dist/components/metric/MetricStack.vue.d.ts +16 -0
- package/dist/components/metric/coalesce-metric.d.ts +7 -28
- package/dist/components/metric/index.d.ts +5 -0
- package/dist/components/metric/styles.css +1 -0
- package/dist/components/metric/types.d.ts +32 -0
- package/dist/components/number-field/NumberField.vue.d.ts +21 -9
- package/dist/components/number-field/NumberFieldContent.vue.d.ts +2 -2
- package/dist/components/number-field/NumberFieldDecrement.vue.d.ts +6 -6
- package/dist/components/number-field/NumberFieldIncrement.vue.d.ts +6 -6
- package/dist/components/number-field/NumberFieldInput.vue.d.ts +1 -6
- package/dist/components/number-field/context.d.ts +6 -0
- package/dist/components/number-field/index.d.ts +5 -5
- package/dist/components/number-field/styles.css +1 -0
- package/dist/components/pager-dots/constants.d.ts +1 -2
- package/dist/components/pager-dots/index.d.ts +0 -2
- package/dist/components/paper-backdrop/PaperBackdrop.vue.d.ts +1 -14
- package/dist/components/paper-backdrop/index.d.ts +1 -1
- package/dist/components/popover/Popover.vue.d.ts +24 -36
- package/dist/components/popover/PopoverContent.vue.d.ts +23 -29
- package/dist/components/popover/PopoverTrigger.vue.d.ts +12 -7
- package/dist/components/popover/index.d.ts +3 -3
- package/dist/components/popover/popoverContext.d.ts +3 -4
- package/dist/components/progress/Progress.vue.d.ts +5 -13
- package/dist/components/progress/index.d.ts +1 -0
- package/dist/components/progress/types.d.ts +19 -0
- package/dist/components/pulse/Pulse.vue.d.ts +8 -47
- package/dist/components/pulse/index.d.ts +1 -0
- package/dist/components/radio-group/RadioGroup.vue.d.ts +27 -15
- package/dist/components/radio-group/RadioGroupItem.vue.d.ts +9 -6
- package/dist/components/radio-group/index.d.ts +2 -0
- package/dist/components/radio-group/styles.css +1 -0
- package/dist/components/scroll-progress-rim/styles.css +1 -1
- package/dist/components/search/FuzzySearch.vue.d.ts +2 -2
- package/dist/components/search/SearchBar.vue.d.ts +2 -2
- package/dist/components/search/searchVariants.d.ts +15 -17
- package/dist/components/select/Select.vue.d.ts +25 -14
- package/dist/components/select/SelectContent.vue.d.ts +26 -29
- package/dist/components/select/SelectGroup.vue.d.ts +7 -11
- package/dist/components/select/SelectItem.vue.d.ts +24 -13
- package/dist/components/select/SelectLabel.vue.d.ts +7 -11
- package/dist/components/select/SelectScrollDownButton.vue.d.ts +3 -4
- package/dist/components/select/SelectScrollUpButton.vue.d.ts +3 -4
- package/dist/components/select/SelectSeparator.vue.d.ts +5 -6
- package/dist/components/select/SelectTrigger.vue.d.ts +15 -41
- package/dist/components/select/SelectValue.vue.d.ts +13 -7
- package/dist/components/select/index.d.ts +16 -8
- package/dist/components/separator/Separator.vue.d.ts +11 -6
- package/dist/components/separator/index.d.ts +1 -1
- package/dist/components/skeleton/Skeleton.vue.d.ts +3 -31
- package/dist/components/slider/Slider.vue.d.ts +10 -37
- package/dist/components/slider/index.d.ts +1 -45
- package/dist/components/slider/types.d.ts +25 -0
- package/dist/components/sortable-list/SortableList.vue.d.ts +1 -1
- package/dist/components/sortable-list/composables/ghostRenderer.d.ts +1 -1
- package/dist/components/sortable-list/composables/touchGate.d.ts +1 -1
- package/dist/components/sortable-list/composables/transitionTiming.d.ts +1 -1
- package/dist/components/status-dot/StatusDot.vue.d.ts +7 -10
- package/dist/components/status-dot/index.d.ts +1 -0
- package/dist/components/surface/Surface.vue.d.ts +13 -21
- package/dist/components/surface/index.d.ts +2 -2
- package/dist/components/switch/Switch.vue.d.ts +20 -11
- package/dist/components/switch/index.d.ts +2 -1
- package/dist/components/switch/styles.css +1 -0
- package/dist/components/table/Table.vue.d.ts +1 -1
- package/dist/components/tabs/SegmentedTabs.vue.d.ts +21 -13
- package/dist/components/tabs/composables/useTabDragMorph.d.ts +6 -6
- package/dist/components/tabs/composables/useTabResponsive.d.ts +5 -6
- package/dist/components/tabs/composables/useTabRovingFocus.d.ts +16 -16
- package/dist/components/tabs/constants.d.ts +1 -1
- package/dist/components/tabs/index.d.ts +1 -1
- package/dist/components/tabs/styles/drag.css +1 -1
- package/dist/components/tabs/styles/segmented.css +1 -1
- package/dist/components/tags-input/TagsInput.vue.d.ts +28 -15
- package/dist/components/tags-input/TagsInputInput.vue.d.ts +8 -6
- package/dist/components/tags-input/TagsInputItem.vue.d.ts +9 -8
- package/dist/components/tags-input/TagsInputItemDelete.vue.d.ts +5 -6
- package/dist/components/tags-input/TagsInputItemText.vue.d.ts +5 -6
- package/dist/components/tags-input/context.d.ts +5 -0
- package/dist/components/tags-input/index.d.ts +5 -5
- package/dist/components/tags-input/styles.css +1 -0
- package/dist/components/textarea/Textarea.vue.d.ts +10 -55
- package/dist/components/textarea/index.d.ts +2 -1
- package/dist/components/textarea/types.d.ts +22 -0
- package/dist/components/timeline/ContinuousMarkers.vue.d.ts +2 -4
- package/dist/components/timeline/ContinuousRail.vue.d.ts +3 -6
- package/dist/components/timeline/ContinuousTimeline.vue.d.ts +12 -13
- package/dist/components/timeline/GlassTimeline.vue.d.ts +7 -8
- package/dist/components/timeline/ScrubberTimeline.vue.d.ts +4 -4
- package/dist/components/timeline/SegmentedTimeline.vue.d.ts +2 -3
- package/dist/components/timeline/geometry.d.ts +3 -4
- package/dist/components/timeline/types.d.ts +3 -3
- package/dist/components/toast/Toast.vue.d.ts +37 -79
- package/dist/components/toast/ToastAction.vue.d.ts +5 -5
- package/dist/components/toast/ToastClose.vue.d.ts +4 -5
- package/dist/components/toast/ToastDescription.vue.d.ts +4 -5
- package/dist/components/toast/ToastTitle.vue.d.ts +4 -5
- package/dist/components/toast/Toaster.vue.d.ts +1 -1
- package/dist/components/toast/index.d.ts +8 -9
- package/dist/components/toast/use-toast.d.ts +20 -163
- package/dist/components/toggle-group/ToggleGroup.vue.d.ts +44 -22
- package/dist/components/toggle-group/ToggleGroupItem.vue.d.ts +11 -9
- package/dist/components/toggle-group/index.d.ts +3 -2
- package/dist/components/toggle-group/styles.css +1 -0
- package/dist/components/toggle-group/toggleGroupContext.d.ts +4 -15
- package/dist/components/tooltip/Tooltip.vue.d.ts +20 -7
- package/dist/components/tooltip/TooltipContent.vue.d.ts +20 -12
- package/dist/components/tooltip/TooltipProvider.vue.d.ts +12 -5
- package/dist/components/tooltip/TooltipTrigger.vue.d.ts +12 -5
- package/dist/components/tooltip/index.d.ts +4 -4
- package/dist/components/typewriter/composables/useTypewriter.d.ts +1 -0
- package/dist/components/typewriter/utils/timing.d.ts +0 -2
- package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +5 -18
- package/dist/components/watercolor-dot/useWatercolorBlob.d.ts +1 -4
- package/dist/composables/color/accent-tone-solve.d.ts +2 -5
- package/dist/composables/color/index.d.ts +31 -38
- package/dist/composables/color/useAccentTone.d.ts +0 -3
- package/dist/composables/color/value.d.ts +21 -0
- package/dist/composables/context/createContext.d.ts +2 -2
- package/dist/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +7 -6
- package/dist/composables/dom/useBreakpoint.d.ts +2 -2
- package/dist/composables/dom/useClipboard.d.ts +28 -52
- package/dist/composables/dom/useDocumentVisibility.d.ts +3 -1
- package/dist/composables/dom/useIdleReady.d.ts +5 -6
- package/dist/composables/dom/useTokenColor.d.ts +2 -2
- package/dist/composables/dom/useUserInvalidAria.d.ts +2 -3
- package/dist/composables/dom/useViewportReady.d.ts +4 -4
- package/dist/composables/glass/backdropLuminanceSample.d.ts +7 -6
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +7 -1
- package/dist/composables/glass/textureUpload.d.ts +8 -10
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +11 -19
- package/dist/composables/glass/useSpecularPointer.d.ts +6 -6
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -15
- package/dist/composables/glass/wave/waveField.d.ts +2 -2
- package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -1
- package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -1
- package/dist/composables/glass/webgl/backingSize.d.ts +5 -8
- package/dist/composables/glass/webgl/compile.d.ts +1 -1
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +20 -20
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -28
- package/dist/composables/glass/webgl/visibility.d.ts +3 -4
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +10 -10
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -1
- package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +12 -10
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +15 -16
- package/dist/composables/motion/core/asElement.d.ts +2 -0
- package/dist/composables/motion/{constants.d.ts → core/constants.d.ts} +2 -3
- package/dist/composables/motion/core/index.d.ts +20 -23
- package/dist/composables/motion/core/useReducedMotion.d.ts +5 -0
- package/dist/composables/motion/core/useViewTransition.d.ts +44 -0
- package/dist/composables/motion/index.d.ts +14 -16
- package/dist/composables/motion/{useDockCtaReceive.d.ts → morph/useDockCtaReceive.d.ts} +2 -3
- package/dist/composables/motion/{useDragMorph.d.ts → morph/useDragMorph.d.ts} +7 -7
- package/dist/composables/motion/morph/useElementMorph.d.ts +50 -0
- package/dist/composables/motion/{useLeadTrail.d.ts → morph/useLeadTrail.d.ts} +6 -6
- package/dist/composables/motion/{useSelectionGroup.d.ts → morph/useSelectionGroup.d.ts} +7 -5
- package/dist/composables/motion/{useSelectionIndicator.d.ts → morph/useSelectionIndicator.d.ts} +9 -16
- package/dist/composables/motion/{useNumericTransition.d.ts → number/useNumericTransition.d.ts} +2 -2
- package/dist/composables/motion/{pointerFieldMappings.d.ts → pointer/pointerFieldMappings.d.ts} +7 -10
- package/dist/composables/motion/{usePointerVelocityField.d.ts → pointer/usePointerVelocityField.d.ts} +1 -1
- package/dist/composables/motion/{bloomUpField.d.ts → reveal/bloomUpField.d.ts} +1 -1
- package/dist/composables/motion/reveal/useBloomUp.d.ts +33 -0
- package/dist/composables/motion/{useLiquidReveal.d.ts → reveal/useLiquidReveal.d.ts} +5 -5
- package/dist/composables/motion/{useStagger.d.ts → reveal/useStagger.d.ts} +3 -3
- package/dist/composables/motion/reveal/useStaggerReveal.d.ts +28 -0
- package/dist/composables/motion/{useScrollChrome.d.ts → scroll/useScrollChrome.d.ts} +2 -2
- package/dist/composables/motion/{useScrollProgress.d.ts → scroll/useScrollProgress.d.ts} +12 -2
- package/dist/composables/motion/{springPresets.d.ts → spring/springPresets.d.ts} +8 -7
- package/dist/composables/motion/{springProjection.d.ts → spring/springProjection.d.ts} +3 -0
- package/dist/composables/motion/{useLiquidFlex.d.ts → spring/useLiquidFlex.d.ts} +11 -12
- package/dist/composables/motion/{useLiquidPress.d.ts → spring/useLiquidPress.d.ts} +3 -3
- package/dist/composables/motion/{useSpring.d.ts → spring/useSpring.d.ts} +5 -2
- package/dist/composables/motion/{useSpringMount.d.ts → spring/useSpringMount.d.ts} +8 -1
- package/dist/composables/sidebar/types.d.ts +3 -3
- package/dist/{configurator-CSENXXSy.js → configurator-M5OaIlJd.js} +11 -11
- package/dist/configurator.js +1 -1
- package/dist/{constants-DRZmNIY-.js → constants-nBz23tJE.js} +1 -1
- package/dist/constellation.js +125 -124
- package/dist/{createCanvasLifecycle-hsFkQVdl.js → createCanvasLifecycle-DbXRwjU_.js} +87 -82
- package/dist/dark-mode-toggle.d.ts +1 -0
- package/dist/dark-mode-toggle.js +43 -0
- package/dist/dark.js +1 -1
- package/dist/data-table-BygKg6ZA.js +491 -0
- package/dist/data-table.js +1 -1
- package/dist/deck.js +3 -3
- package/dist/dialog-TNRDkcE4.js +385 -0
- package/dist/dialog.js +1 -1
- package/dist/dock.js +523 -940
- package/dist/dockContext-BUTlGRNJ.js +13 -0
- package/dist/dom.js +52 -114
- package/dist/drawer.js +262 -209
- package/dist/dropdown-menu-BlbnvMaZ.js +507 -0
- package/dist/dropdown-menu.js +2 -2
- package/dist/easing.js +294 -278
- package/dist/expandable-container.js +107 -93
- package/dist/fading-scroll-DhxXIhm2.js +96 -0
- package/dist/fading-scroll.js +1 -1
- package/dist/field-control.css_vue_type_style_index_0_src_true_lang-CeLay9Tk.js +21 -0
- package/dist/floating-dB5TD88k.js +7 -0
- package/dist/{flow.glsl-DEGFGE11.js → flow.wgsl-Cd2GUkPx.js} +2 -2
- package/dist/fonts/README.md +14 -18
- package/dist/forms.js +279 -174
- package/dist/fourier-field.js +148 -148
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +512 -373
- package/dist/handmark.js +4 -4
- package/dist/header-ribbon.js +37 -68
- package/dist/index.d.ts +9 -18
- package/dist/infinite-scroll.js +31 -28
- package/dist/instrument-chassis.js +54 -2
- package/dist/label-DnMqH7jr.js +55 -0
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +291 -214
- package/dist/liquid-grid.js +141 -151
- package/dist/menuRowClass-Nh7CtMON.js +12 -0
- package/dist/metric.d.ts +1 -0
- package/dist/metric.js +192 -0
- package/dist/motion-core.js +73 -165
- package/dist/motion.js +104 -161
- package/dist/number-field-Boe09SvX.js +154 -0
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +2 -2
- package/dist/paper-backdrop.js +16 -24
- package/dist/{pointerFieldMappings-CZojkgKj.js → pointerFieldMappings-DP5tla5z.js} +4 -7
- package/dist/popover-BQGYXZyO.js +244 -0
- package/dist/popover.js +1 -1
- package/dist/{presets-CxeNvxuO.js → presets-5myqNv59.js} +1 -1
- package/dist/primitive-B2t2jdqM.js +11 -0
- package/dist/progress-DClbhRAT.js +88 -0
- package/dist/progress.js +1 -1
- package/dist/pulse.js +29 -43
- package/dist/reactive.js +1 -1
- package/dist/resolveCanvasColor-DS_6DBxA.js +82 -0
- package/dist/resolveSurfaceClass-DCZ4PZcy.js +6 -0
- package/dist/{scrollReader-C2oK9Hb8.js → scrollReader-Brf5cQNo.js} +1 -1
- package/dist/search.js +241 -213
- package/dist/select-BcBAyLXA.js +336 -0
- package/dist/select.js +1 -1
- package/dist/selection-DqIULxRG.js +6 -0
- package/dist/separator-CgZInrX-.js +75 -0
- package/dist/separator.js +1 -1
- package/dist/sidebar.js +53 -42
- package/dist/slider-DzqeQmMu.js +162 -0
- package/dist/slider.js +2 -2
- package/dist/sortable-list.js +9 -8
- package/dist/springPresets-rCii5KqX.js +52 -0
- package/dist/status-dot.js +26 -43
- package/dist/styles/accessibility.css +1 -1
- package/dist/styles/animations.css +1 -1
- package/dist/styles/components.css +1 -1
- package/dist/styles/glass/a11y-fallback.css +1 -1
- package/dist/styles/glass/accent-tone.css +1 -1
- package/dist/styles/glass/control-surfaces.css +1 -1
- package/dist/styles/glass/defined.css +1 -1
- package/dist/styles/glass/glass-atom.css +1 -1
- package/dist/styles/glass/glass-capsule.css +1 -1
- package/dist/styles/glass/glass-chip.css +1 -1
- package/dist/styles/glass/ladder.css +1 -1
- package/dist/styles/glass/liquid-fill.css +1 -1
- package/dist/styles/glass/material-roles.css +1 -1
- package/dist/styles/glass/material.css +1 -1
- package/dist/styles/glass/reveal.css +1 -1
- package/dist/styles/glass/squircle.css +1 -1
- package/dist/styles/glass/surface-axis.css +1 -1
- package/dist/styles/glass/surfaces-pager.css +1 -1
- package/dist/styles/glass/surfaces.css +1 -1
- package/dist/styles/glass-refract.css +1 -1
- package/dist/styles/glass.css +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/paper.css +1 -1
- package/dist/styles/scroll-driven.css +1 -1
- package/dist/styles/theme/bridges.css +1 -1
- package/dist/styles/theme/radius.css +1 -1
- package/dist/styles/tokens/color-radius.css +1 -1
- package/dist/styles/tokens/dark-arm.css +1 -1
- package/dist/styles/tokens/glass-deep.css +1 -1
- package/dist/styles/tokens/glass-fx.css +1 -1
- package/dist/styles/tokens/glass.css +1 -1
- package/dist/styles/tokens/light-dark.css +1 -1
- package/dist/styles/tokens/manifest.d.ts +14 -0
- package/dist/styles/tokens/manifest.ts +56 -0
- package/dist/styles/tokens/motion-registers.css +1 -1
- package/dist/styles/tokens/offsets.css +1 -1
- package/dist/styles/tokens/property-regs-specular.css +1 -1
- package/dist/styles/tokens/property-regs.css +1 -1
- package/dist/styles/tokens/scale-paper.css +1 -1
- package/dist/styles/tokens/scheme-motion.css +1 -1
- package/dist/styles/tokens/scheme-spring.css +1 -1
- package/dist/styles/tokens/scroll-tokens.css +1 -1
- package/dist/styles/tokens/shadow.css +1 -1
- package/dist/styles/tokens/sizing-config.css +1 -1
- package/dist/styles/tokens/sizing.css +1 -1
- package/dist/styles/tokens.d.ts +4 -9
- package/dist/styles/tokens.ts +5 -9
- package/dist/styles/transitions.css +1 -1
- package/dist/styles/typography/scale.css +1 -1
- package/dist/styles/typography/semantic.css +1 -1
- package/dist/styles/typography/utilities.css +1 -1
- package/dist/styles/utilities/a11y-overrides.css +1 -1
- package/dist/styles/utilities/base-misc.css +1 -1
- package/dist/styles/utilities/base.css +1 -1
- package/dist/styles/utilities/btn.css +1 -1
- package/dist/styles/utilities/components.css +1 -1
- package/dist/styles/utilities/metal.css +1 -1
- package/dist/styles/utilities/responsive.css +1 -0
- package/dist/styles/view-transition.css +1 -1
- package/dist/{supportsCssTimeline-Dz-GVxXM.js → supportsCssTimeline-C2zyWpl8.js} +1 -1
- package/dist/surface.js +2 -3
- package/dist/switch-DZjQuFLa.js +54 -0
- package/dist/switch.js +1 -1
- package/dist/tabs.js +141 -169
- package/dist/timeline.js +86 -87
- package/dist/toast-CH5mnsYT.js +267 -0
- package/dist/toast.js +1 -1
- package/dist/toggle-group-O6jBo7AE.js +150 -0
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.js +96 -5
- package/dist/tooltip-Drx5qnw_.js +148 -0
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +222 -193
- package/dist/{useAccentTone-C-p6WdPe.js → useAccentTone-DyInfHXE.js} +2 -2
- package/dist/{useAnimatedNumber-BRVVaFFc.js → useAnimatedNumber-WPtMz0AN.js} +2 -2
- package/dist/useClipboard-D36OTaeT.js +53 -0
- package/dist/useDockCtaReceive-DkrOTM0q.js +146 -0
- package/dist/useDocumentVisibility-Dh_TGXsU.js +21 -0
- package/dist/useDragMorph-BogSV_nv.js +293 -0
- package/dist/{useIntersectionPause-B-dbxl9w.js → useIntersectionPause-B5mAU6XY.js} +15 -15
- package/dist/useLeadTrail-AW1-zZcd.js +74 -0
- package/dist/{useLiquidFlex-Ch4exNvN.js → useLiquidFlex-TJZmRqyY.js} +1 -1
- package/dist/useLiquidPress-BOxuDkKa.js +101 -0
- package/dist/useMotionAxis-D-rtIhca.js +19 -0
- package/dist/usePointerVelocityField-DsIf7yyq.js +121 -0
- package/dist/useRAFLoop-B3YlWK4M.js +98 -0
- package/dist/useReducedMotion-vCXA_vyM.js +27 -0
- package/dist/useRoutePointer-B8itM7Ka.js +53 -0
- package/dist/useScrollProgress-CSFYXIZT.js +43 -0
- package/dist/useScrollTrigger-BDdqptlc.js +87 -0
- package/dist/useSelectionGroup-B5XplBbo.js +132 -0
- package/dist/{useSpring-BBSKFx_0.js → useSpring-9u2_shxV.js} +2 -2
- package/dist/useSpringMount-uQ8QL9Ff.js +74 -0
- package/dist/useTabRovingFocus-YnWh-Ytr.js +169 -0
- package/dist/useTextHighlight-mfwNIC1f.js +112 -0
- package/dist/{useTouchGate-Cj5fOkTv.js → useTouchGate-B4mzQcHJ.js} +1 -1
- package/dist/vSpecular-DMJo8pfD.js +68 -0
- package/dist/value-DMhh2R94.js +33 -0
- package/dist/watercolor-dot.js +77 -103
- package/package.json +163 -232
- package/dist/DropdownMenuTrigger-BzQtd9lt.js +0 -65
- package/dist/FadingScroll-C1ZWEjmG.js +0 -83
- package/dist/Input-B4WQ_CMc.js +0 -57
- package/dist/Surface-BWRfwyn8.js +0 -59
- package/dist/accent-tone-solve-Dii9ePhK.js +0 -20
- package/dist/badge-C0C-rTBu.js +0 -80
- package/dist/button-32mg6xA8.js +0 -194
- package/dist/card-16xmzIr3.js +0 -303
- package/dist/coalesce-metric-znAcLzkB.js +0 -13
- package/dist/collapsible-bPzS1aQk.js +0 -63
- package/dist/color-swatch.d.ts +0 -1
- package/dist/color-swatch.js +0 -48
- package/dist/command-BjPjUU9z.js +0 -307
- package/dist/components/_shared/menuItemVariants.d.ts +0 -51
- package/dist/components/_shared/useControlSize.d.ts +0 -46
- package/dist/components/_shared/useStalePropWarning.d.ts +0 -27
- package/dist/components/_shared/useSurfaceAxis.d.ts +0 -64
- package/dist/components/card/ScrollCard.vue.d.ts +0 -33
- package/dist/components/card/ScrollCardHeader.vue.d.ts +0 -17
- package/dist/components/carousel/CarouselNext.vue.d.ts +0 -21
- package/dist/components/carousel/CarouselPrevious.vue.d.ts +0 -21
- package/dist/components/color-swatch/ColorSwatch.vue.d.ts +0 -22
- package/dist/components/color-swatch/index.d.ts +0 -1
- package/dist/components/controls/DarkModeToggle.vue.d.ts +0 -32
- package/dist/components/controls/dark-mode-toggle.css +0 -1
- package/dist/components/controls/index.d.ts +0 -1
- package/dist/components/data-table/DataTablePagination.vue.d.ts +0 -13
- package/dist/components/dock/DockSection.vue.d.ts +0 -69
- package/dist/components/dock/DockStack.vue.d.ts +0 -73
- package/dist/components/dock/composables/dockMorphContext.d.ts +0 -91
- package/dist/components/dock/composables/useDockFisheye.d.ts +0 -24
- package/dist/components/dock/composables/useDockPopover.d.ts +0 -70
- package/dist/components/dock/styles/fisheye.css +0 -1
- package/dist/components/dock/styles/popover.css +0 -1
- package/dist/components/dock/styles/section.css +0 -1
- package/dist/components/focus-scope/FocusScope.vue.d.ts +0 -20
- package/dist/components/focus-scope/index.d.ts +0 -2
- package/dist/components/goo-filter/GooFilter.vue.d.ts +0 -22
- package/dist/components/goo-filter/index.d.ts +0 -1
- package/dist/components/icon-chip/IconChip.vue.d.ts +0 -4
- package/dist/components/icon-chip/index.d.ts +0 -2
- package/dist/components/icon-chip/styles.css +0 -1
- package/dist/components/icon-chip/types.d.ts +0 -92
- package/dist/components/icon-tooltip/IconTooltip.vue.d.ts +0 -16
- package/dist/components/icon-tooltip/index.d.ts +0 -1
- package/dist/components/instrument-chassis/ChassisDivider.vue.d.ts +0 -30
- package/dist/components/metric-badge/MetricBadge.vue.d.ts +0 -40
- package/dist/components/metric-badge/index.d.ts +0 -2
- package/dist/components/metric-cell/MetricCell.vue.d.ts +0 -108
- package/dist/components/metric-cell/index.d.ts +0 -2
- package/dist/components/metric-stack/MetricRow.vue.d.ts +0 -120
- package/dist/components/metric-stack/MetricStack.vue.d.ts +0 -92
- package/dist/components/metric-stack/index.d.ts +0 -4
- package/dist/components/notification/Notification.vue.d.ts +0 -16
- package/dist/components/notification/index.d.ts +0 -1
- package/dist/components/progress/ProgressDefault.vue.d.ts +0 -9
- package/dist/components/progress/ProgressGradient.vue.d.ts +0 -26
- package/dist/components/progress/ProgressLiquid.vue.d.ts +0 -22
- package/dist/components/progress/valueMarks.css +0 -1
- package/dist/components/spa-view/SpaView.vue.d.ts +0 -50
- package/dist/components/spa-view/index.d.ts +0 -2
- package/dist/components/split-chars/SplitChars.vue.d.ts +0 -53
- package/dist/components/split-chars/index.d.ts +0 -1
- package/dist/components/tabs/composables/useEyeglassLive.d.ts +0 -17
- package/dist/components/toggle/Toggle.vue.d.ts +0 -29
- package/dist/components/toggle/index.d.ts +0 -26
- package/dist/composables/glass/webgl/shaders/glass-refract.glsl.d.ts +0 -36
- package/dist/composables/motion/curves.d.ts +0 -48
- package/dist/composables/motion/gooBarbellGeometry.d.ts +0 -79
- package/dist/composables/motion/morphSignatures.d.ts +0 -88
- package/dist/composables/motion/suite.d.ts +0 -2
- package/dist/composables/motion/useBloomUp.d.ts +0 -97
- package/dist/composables/motion/useCharStagger.d.ts +0 -44
- package/dist/composables/motion/useElementMorph.d.ts +0 -107
- package/dist/composables/motion/useGooMorph.d.ts +0 -72
- package/dist/composables/motion/usePrioritizedTask.d.ts +0 -41
- package/dist/composables/motion/useStaggerReveal.d.ts +0 -52
- package/dist/composables/motion/useViewTransition.d.ts +0 -81
- package/dist/composables/virtual/index.d.ts +0 -4
- package/dist/composables/virtual/useVirtualSectionWindow.d.ts +0 -72
- package/dist/composables/virtual/useWindowedStore.d.ts +0 -43
- package/dist/composables/virtual/virtualSectionLayout.d.ts +0 -103
- package/dist/controls.d.ts +0 -1
- package/dist/controls.js +0 -83
- package/dist/data-table-DveMdgBM.js +0 -629
- package/dist/dialog-BzQxKrUr.js +0 -281
- package/dist/dockContext-4S9qP0Z4.js +0 -13
- package/dist/dropdown-menu-DORIA52F.js +0 -378
- package/dist/focus-scope-DUTKveod.js +0 -23
- package/dist/focus-scope.d.ts +0 -1
- package/dist/focus-scope.js +0 -2
- package/dist/icon-chip-BWuxz1-u.js +0 -57
- package/dist/icon-chip.d.ts +0 -1
- package/dist/icon-chip.js +0 -2
- package/dist/icon-tooltip-CO6rw0dZ.js +0 -25
- package/dist/icon-tooltip.d.ts +0 -1
- package/dist/icon-tooltip.js +0 -2
- package/dist/instrument-chassis-Cvstg4_U.js +0 -65
- package/dist/label-Cj38tJKG.js +0 -36
- package/dist/menuItemVariants-D6AOzzND.js +0 -36
- package/dist/metric-badge.d.ts +0 -1
- package/dist/metric-badge.js +0 -79
- package/dist/metric-cell.d.ts +0 -1
- package/dist/metric-cell.js +0 -61
- package/dist/metric-stack.d.ts +0 -1
- package/dist/metric-stack.js +0 -113
- package/dist/motion-curves.d.ts +0 -1
- package/dist/motion-curves.js +0 -146
- package/dist/notification-DVs7ODMg.js +0 -52
- package/dist/notification.d.ts +0 -1
- package/dist/notification.js +0 -2
- package/dist/number-field-PvkGedHk.js +0 -140
- package/dist/popover-WMgyRSyN.js +0 -256
- package/dist/progress-C-HHuFZy.js +0 -192
- package/dist/resolveCanvasColor-yarP5bdk.js +0 -93
- package/dist/select-BIv4R3Ir.js +0 -326
- package/dist/separator-CBU94kTM.js +0 -62
- package/dist/slider-Cc_qw6GA.js +0 -166
- package/dist/spa-view.d.ts +0 -1
- package/dist/spa-view.js +0 -46
- package/dist/springPresets-h5VKJQqG.js +0 -58
- package/dist/styles/glass/progress-rail.css +0 -1
- package/dist/switch-Boj4Ucn5.js +0 -49
- package/dist/toast-kAbchIN2.js +0 -281
- package/dist/toggle-group-BPchFsns.js +0 -178
- package/dist/tooltip-BmOQJzh0.js +0 -111
- package/dist/useControlSize-CFfOk8I-.js +0 -9
- package/dist/useDockCtaReceive-CK-RLASa.js +0 -257
- package/dist/useDocumentVisibility-YeBDGqtI.js +0 -17
- package/dist/useDragMorph-7ygF9O0m.js +0 -93
- package/dist/useGooMorph-D1F6QJlH.js +0 -349
- package/dist/useLeadTrail-BYu8dq4G.js +0 -74
- package/dist/useLiquidPress-BYcwwGQV.js +0 -68
- package/dist/useMotionAxis-DCCXMC-i.js +0 -20
- package/dist/usePointerVelocityField-BdvnO0py.js +0 -122
- package/dist/useRAFLoop-BtwQ9DyY.js +0 -109
- package/dist/useRoutePointer-BDNMFN73.js +0 -52
- package/dist/useScrollProgress-DZI4nf4v.js +0 -35
- package/dist/useSelectionGroup-LDzBdR1Y.js +0 -215
- package/dist/useSpringMount-C6-DBx4e.js +0 -71
- package/dist/useSpringPress-BypV_KO-.js +0 -36
- package/dist/useSurfaceAxis-DudiZVOR.js +0 -10
- package/dist/useTabRovingFocus-DkLYwo4L.js +0 -143
- package/dist/vReveal-DZfWl9XI.js +0 -10
- package/dist/vSpecular-CQFmLNzA.js +0 -68
- package/src/fonts/README.md +0 -124
- package/src/fonts/fira-code/OFL.txt +0 -93
- package/src/fonts/fira-code/fira-code-latin-ext.woff2 +0 -0
- package/src/fonts/fira-code/fira-code-latin.woff2 +0 -0
- package/src/fonts/plus-jakarta-sans/OFL.txt +0 -93
- package/src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2 +0 -0
- package/src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2 +0 -0
- package/src/styles/accessibility.css +0 -48
- package/src/styles/animations.css +0 -468
- package/src/styles/draw-in.css +0 -89
- package/src/styles/fonts.css +0 -143
- package/src/styles/glass/a11y-fallback.css +0 -188
- package/src/styles/glass/accent-tone.css +0 -66
- package/src/styles/glass/control-surfaces.css +0 -171
- package/src/styles/glass/deep.css +0 -114
- package/src/styles/glass/defined.css +0 -88
- package/src/styles/glass/glass-atom.css +0 -247
- package/src/styles/glass/glass-capsule.css +0 -175
- package/src/styles/glass/glass-chip.css +0 -211
- package/src/styles/glass/grain-overlay.css +0 -79
- package/src/styles/glass/ladder-undershadow.css +0 -61
- package/src/styles/glass/ladder.css +0 -452
- package/src/styles/glass/liquid-enter.css +0 -240
- package/src/styles/glass/liquid-fill.css +0 -65
- package/src/styles/glass/material-roles.css +0 -18
- package/src/styles/glass/material.css +0 -500
- package/src/styles/glass/progress-rail.css +0 -78
- package/src/styles/glass/reveal.css +0 -333
- package/src/styles/glass/rim.css +0 -122
- package/src/styles/glass/squircle.css +0 -58
- package/src/styles/glass/surface-axis.css +0 -136
- package/src/styles/glass/surfaces-pager.css +0 -79
- package/src/styles/glass/surfaces.css +0 -434
- package/src/styles/glass-refract.css +0 -112
- package/src/styles/glass-specular-track.css +0 -74
- package/src/styles/glass.css +0 -110
- package/src/styles/index.css +0 -288
- package/src/styles/paper.css +0 -187
- package/src/styles/scroll-choreography.css +0 -294
- package/src/styles/scroll-chrome.css +0 -123
- package/src/styles/scroll-driven.css +0 -123
- package/src/styles/theme/bridges.css +0 -380
- package/src/styles/theme/dark.css +0 -7
- package/src/styles/theme/literals.css +0 -104
- package/src/styles/theme/radius.css +0 -148
- package/src/styles/theme.css +0 -33
- package/src/styles/tokens/color-radius.css +0 -308
- package/src/styles/tokens/dark-arm-glass.css +0 -55
- package/src/styles/tokens/dark-arm.css +0 -455
- package/src/styles/tokens/glass-deep.css +0 -126
- package/src/styles/tokens/glass-fx.css +0 -480
- package/src/styles/tokens/glass.css +0 -477
- package/src/styles/tokens/light-dark.css +0 -216
- package/src/styles/tokens/motion-registers.css +0 -93
- package/src/styles/tokens/offsets.css +0 -142
- package/src/styles/tokens/on-glass-fg.css +0 -39
- package/src/styles/tokens/property-regs-specular.css +0 -160
- package/src/styles/tokens/property-regs.css +0 -448
- package/src/styles/tokens/scale-paper.css +0 -495
- package/src/styles/tokens/scheme-motion.css +0 -425
- package/src/styles/tokens/scheme-spring.css +0 -282
- package/src/styles/tokens/scroll-tokens.css +0 -137
- package/src/styles/tokens/shadow.css +0 -206
- package/src/styles/tokens/sizing-config.css +0 -110
- package/src/styles/tokens/sizing.css +0 -505
- package/src/styles/tokens.css +0 -68
- package/src/styles/tokens.ts +0 -58
- package/src/styles/transitions.css +0 -228
- package/src/styles/typography/scale.css +0 -166
- package/src/styles/typography/semantic.css +0 -233
- package/src/styles/typography/utilities.css +0 -197
- package/src/styles/typography.css +0 -46
- package/src/styles/utilities/a11y-overrides.css +0 -184
- package/src/styles/utilities/base-misc.css +0 -307
- package/src/styles/utilities/base.css +0 -337
- package/src/styles/utilities/btn.css +0 -306
- package/src/styles/utilities/components.css +0 -337
- package/src/styles/utilities/metal.css +0 -272
- package/src/styles/utilities.css +0 -24
- package/src/styles/view-transition.css +0 -67
- package/src/styles/viz-reveal.css +0 -63
- /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-B3ysoDQm.js} +0 -0
- /package/dist/{compile-DK3Fri1B.js → compile-D7VYG3gi.js} +0 -0
- /package/dist/composables/glass/{webgl/shaders/procedural-color.glsl.d.ts → procedural/color.glsl.d.ts} +0 -0
- /package/dist/{components/aurora/constants/shaders/procedural-color.wgsl.d.ts → composables/glass/procedural/color.wgsl.d.ts} +0 -0
- /package/dist/composables/motion/{motionTempo.d.ts → core/motionTempo.d.ts} +0 -0
- /package/dist/composables/motion/{useIntersectionPause.d.ts → core/useIntersectionPause.d.ts} +0 -0
- /package/dist/composables/motion/{useRAFLoop.d.ts → core/useRAFLoop.d.ts} +0 -0
- /package/dist/composables/motion/{useYieldToMain.d.ts → core/useYieldToMain.d.ts} +0 -0
- /package/dist/composables/motion/{useAnimatedNumber.d.ts → number/useAnimatedNumber.d.ts} +0 -0
- /package/dist/composables/motion/{useAnimatedNumberMap.d.ts → number/useAnimatedNumberMap.d.ts} +0 -0
- /package/dist/composables/motion/{useCountup.d.ts → number/useCountup.d.ts} +0 -0
- /package/dist/composables/motion/{useRoutePointer.d.ts → pointer/useRoutePointer.d.ts} +0 -0
- /package/dist/composables/motion/{useTextHighlight.d.ts → reveal/useTextHighlight.d.ts} +0 -0
- /package/dist/composables/motion/{vReveal.d.ts → reveal/vReveal.d.ts} +0 -0
- /package/dist/composables/motion/{scrollReader.d.ts → scroll/scrollReader.d.ts} +0 -0
- /package/dist/composables/motion/{supportsCssTimeline.d.ts → scroll/supportsCssTimeline.d.ts} +0 -0
- /package/dist/composables/motion/{useScrollPin.d.ts → scroll/useScrollPin.d.ts} +0 -0
- /package/dist/composables/motion/{useScrollScene.d.ts → scroll/useScrollScene.d.ts} +0 -0
- /package/dist/composables/motion/{useScrollTrigger.d.ts → scroll/useScrollTrigger.d.ts} +0 -0
- /package/dist/composables/motion/{useSpringPress.d.ts → spring/useSpringPress.d.ts} +0 -0
- /package/dist/{createContext-FU0n5MGK.js → createContext-BhkE9mLH.js} +0 -0
- /package/dist/{dark-DIH-blY1.js → dark-z_P5QwqI.js} +0 -0
- /package/dist/{motionTempo-CMS5b0Vu.js → motionTempo-tscp92Nm.js} +0 -0
- /package/dist/{prng-Dz2_9RJu.js → prng-2uS6J_A1.js} +0 -0
- /package/dist/{rendererStatus-C2-zC2Q-.js → rendererStatus-BxUlBLVy.js} +0 -0
- /package/dist/{useDragVelocity-CbMZEBaC.js → useDragVelocity-6ONX0sr0.js} +0 -0
- /package/dist/{useFuzzySearch-BOgep7RE.js → useFuzzySearch-CUnZknpm.js} +0 -0
- /package/dist/{useResizeObserver-BcUTquV7.js → useResizeObserver-CdUlm2QZ.js} +0 -0
- /package/dist/{useResolveTokenColor-C07e-qaT.js → useResolveTokenColor-B2FfJnd9.js} +0 -0
- /package/dist/{useTimer-D8koDvJS.js → useTimer-C3yfti4C.js} +0 -0
- /package/dist/{useUserInvalidAria-Cr4nR3tu.js → useUserInvalidAria-0GNrddMX.js} +0 -0
- /package/dist/{valueDomain-B8L04u3U.js → valueDomain-SbVzoHMH.js} +0 -0
- /package/dist/{writeVelocityWeight-D_AcvTsE.js → writeVelocityWeight-DoGOCW3e.js} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type Ref } from "vue";
|
|
2
2
|
import { type BackgroundCanvasSource } from "./backdropLuminanceSample";
|
|
3
|
-
/** The discrete bucket
|
|
3
|
+
/** The discrete backdrop bucket derived and written by the observer. */
|
|
4
4
|
export type GlassBackdropBucket = "light" | "dark";
|
|
5
5
|
export interface UseGlassBackdropLuminanceOptions {
|
|
6
6
|
/**
|
|
7
7
|
* The KNOWN background-layer source for the ANIMATED case — an HTMLCanvasElement
|
|
8
|
-
* (or a getter
|
|
8
|
+
* (or a getter, a CSS selector resolved against the document). When present, the
|
|
9
9
|
* observer downsamples this canvas under the surface's bounding box each settle
|
|
10
10
|
* instead of the static `elementsFromPoint` stack-walk. The aurora/blob `<canvas>`
|
|
11
11
|
* the surface floats over.
|
|
@@ -26,8 +26,7 @@ export interface UseGlassBackdropLuminanceOptions {
|
|
|
26
26
|
lightThreshold?: number;
|
|
27
27
|
/**
|
|
28
28
|
* Minimum milliseconds between samples on the live loop (the ≤ 4 Hz throttle floor).
|
|
29
|
-
* Default 250 (4 Hz)
|
|
30
|
-
* C5-9 frame-budget risk the H3 arm-(a) default-on profile must hold).
|
|
29
|
+
* Default 250 (4 Hz) and bounded to at least 250ms.
|
|
31
30
|
*/
|
|
32
31
|
minSampleIntervalMs?: number;
|
|
33
32
|
/**
|
|
@@ -37,10 +36,10 @@ export interface UseGlassBackdropLuminanceOptions {
|
|
|
37
36
|
*/
|
|
38
37
|
writeBucket?: boolean;
|
|
39
38
|
/**
|
|
40
|
-
*
|
|
39
|
+
* mark this as the SHARED per-ROUTE observer. It stamps
|
|
41
40
|
* `GLASS_BACKDROP_SHARED_ATTR` on its target (the route/stage scope) so descendant
|
|
42
41
|
* glass surfaces (docks) DETECT the coverage and STAND DOWN — inheriting the route's
|
|
43
|
-
* `--glass-backdrop-luma
|
|
42
|
+
* `--glass-backdrop-luma`, `--glass-backdrop`, `--glass-ambient-*` via the cascade
|
|
44
43
|
* rather than each mounting its own readback loop (12 per-dock observers over ONE
|
|
45
44
|
* aurora → ONE per-route readback). Default false: a per-SURFACE observer, which
|
|
46
45
|
* stands down when a shared ancestor covers it and self-samples as the honest floor
|
|
@@ -90,23 +89,16 @@ export interface GlassBackdropTargetRect {
|
|
|
90
89
|
height: number;
|
|
91
90
|
}
|
|
92
91
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
* `--glass-ambient-*` via the registered inheriting @property cascade instead of
|
|
98
|
-
* mounting its OWN `drawImage + getImageData` readback loop (the 12 per-dock observers
|
|
99
|
-
* over ONE DockStage aurora collapse to ONE per-route readback — PERF-6/FAM-5). A DOM
|
|
100
|
-
* marker, NOT provide/inject: provide/inject does not cross the `<slot>` boundary (the
|
|
101
|
-
* DockStage renders `<slot>`, the docks are slotted from the route, so the slotted
|
|
102
|
-
* content's instance-parent is the slot OWNER not the stage), and the marker rides the
|
|
103
|
-
* SAME DOM ancestry the inheriting custom property itself cascades over.
|
|
92
|
+
* Shared-coverage marker. A route observer stamps this on its target; descendant
|
|
93
|
+
* surface observers stand down and inherit its custom properties. A DOM marker is
|
|
94
|
+
* required because provide/inject does not follow the rendered slot ancestry that
|
|
95
|
+
* the custom properties use.
|
|
104
96
|
*/
|
|
105
97
|
export declare const GLASS_BACKDROP_SHARED_ATTR = "data-glass-backdrop-shared";
|
|
106
98
|
/**
|
|
107
99
|
* The sampled-luminance observer. Wire it on a glass surface (the dock root, a
|
|
108
|
-
* content-glass panel) to write a
|
|
109
|
-
*
|
|
100
|
+
* content-glass panel) to write a dynamic backdrop-luminance signal that refines the
|
|
101
|
+
* declarative bucket. Default on for Dock; a dark-substrate consumer
|
|
110
102
|
* opts out by setting `--glass-tint-strength: 0%` on the surface (the declarative floor
|
|
111
103
|
* stays the guarantee — the observer only refines).
|
|
112
104
|
*
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { type ComputedRef, type CSSProperties, type MaybeRefOrGetter } from "vue";
|
|
2
2
|
/**
|
|
3
|
-
* `useSpecularPointer` — the EVOLUTION of `useSpecularTracking
|
|
3
|
+
* `useSpecularPointer` — the EVOLUTION of `useSpecularTracking`. It
|
|
4
4
|
* writes the catch-light POSITION (`--mouse-x`/`--mouse-y`, as today) PLUS the
|
|
5
5
|
* `--specular-angle` channel — the pointer's angle-from-center the EDGE-glint conic
|
|
6
6
|
* sweep reads (the `.glass-material::before` recipe, material.css). The angle feed is
|
|
7
7
|
* what turns the centered disc into a motion-reactive RIM glint (the glass-THICKNESS
|
|
8
8
|
* read); the leaf is the ONE shared specular source the hover/button waves consume.
|
|
9
9
|
*
|
|
10
|
-
* SINGLE-SOURCE (the
|
|
10
|
+
* SINGLE-SOURCE (the reconcile, EXTENDED here — NOT a fork). There is
|
|
11
11
|
* exactly ONE position-write core: `createSpecularWriter` (useSpecularTracking.ts) —
|
|
12
12
|
* the rAF-coalesced, cached-PRM, scope-dispose seam. This composable WRAPS that core;
|
|
13
13
|
* the angle is DERIVED in the sink from the SAME `(x, y)` percentage the core already
|
|
14
14
|
* computes (`angle = atan2(y - 50, x - 50)`), so there is NO duplicate
|
|
15
|
-
* `getBoundingClientRect
|
|
15
|
+
* `getBoundingClientRect`, `--mouse-x` write — the core owns the layout read + the
|
|
16
16
|
* coordinate math, this leaf only adds the angle derivation onto the existing sink.
|
|
17
17
|
* `useSpecularTracking` (the position-only delivery) STAYS for the bare-position call
|
|
18
18
|
* sites; `useSpecularPointer` is the angle-adding delivery for an edge-glint consumer.
|
|
@@ -24,8 +24,8 @@ import { type ComputedRef, type CSSProperties, type MaybeRefOrGetter } from "vue
|
|
|
24
24
|
* disposes the core (cancel the pending rAF + drop the cached PRM listener) on scope
|
|
25
25
|
* teardown.
|
|
26
26
|
*
|
|
27
|
-
*
|
|
28
|
-
* A consumer may pass `press` (a 0..1 press scalar — a `
|
|
27
|
+
* The optional press coupling.
|
|
28
|
+
* A consumer may pass `press` (a 0..1 press scalar — a `useLiquidPress` `.value`, or
|
|
29
29
|
* any press signal); it is folded reactively into the emitted style as the ONE
|
|
30
30
|
* `--glass-btn-press-t` channel the `.glass-material::before` specular magnitude reads
|
|
31
31
|
* (material.css). Reusing the SINGLE press channel (never a forked `--*-press-t`) keeps
|
|
@@ -33,7 +33,7 @@ import { type ComputedRef, type CSSProperties, type MaybeRefOrGetter } from "vue
|
|
|
33
33
|
* a `computed` so the press tracks the spring INDEPENDENTLY of pointer moves (a press
|
|
34
34
|
* settles while the pointer is still). SOFT-GATED: when `press` is OMITTED the emitted
|
|
35
35
|
* style carries NO press channel (the CSS `--glass-btn-press-t` default 0 holds — no
|
|
36
|
-
* hard
|
|
36
|
+
* hard press dependency), and the position/angle write is unchanged.
|
|
37
37
|
*/
|
|
38
38
|
export interface UseSpecularPointerOptions {
|
|
39
39
|
/** Optional 0..1 press scalar (soft-gated) folded into `--glass-btn-press-t`. */
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { ref, type CSSProperties } from "vue";
|
|
2
2
|
/**
|
|
3
|
-
* `useSpecularTracking`
|
|
4
|
-
*
|
|
5
|
-
* hand-copied VERBATIM in `Card.vue` and `DockControl.vue`.
|
|
3
|
+
* `useSpecularTracking` is the pointer-anchored moving-specular writer shared by
|
|
4
|
+
* Card and DockControl.
|
|
6
5
|
*
|
|
7
6
|
* On pointer-move it writes the cursor position (`--mouse-x`/`--mouse-y`, as
|
|
8
7
|
* percentages of the host box) onto the host's inline style; the unified
|
|
9
8
|
* `.glass-material::before` recipe (`glass.css`) MAPS that host write onto its
|
|
10
9
|
* typed `--specular-x`/`--specular-y` channel and paints the travelling glow.
|
|
11
10
|
*
|
|
12
|
-
* VOCAB
|
|
11
|
+
* VOCAB: `--mouse-x`/`--mouse-y` is the HOST WRITE this seam
|
|
13
12
|
* owns; `--specular-x`/`--specular-y` is the CSS-internal MAPPED channel the
|
|
14
13
|
* recipe reads. The host writes `--mouse-x/y`; the recipe maps it.
|
|
15
14
|
*
|
|
@@ -21,20 +20,18 @@ import { ref, type CSSProperties } from "vue";
|
|
|
21
20
|
*
|
|
22
21
|
* PRM-aware: under `prefers-reduced-motion: reduce` the seam DOES NOT write the
|
|
23
22
|
* position (the CSS half pins the catch-light static at the centred `50%`
|
|
24
|
-
* fallback). The PRM signal
|
|
25
|
-
*
|
|
26
|
-
* the AV.W7 `useWebGLCanvas` substrate pattern.
|
|
23
|
+
* fallback). The PRM signal comes from the shared reduced-motion authority, never a
|
|
24
|
+
* fresh `matchMedia` read per pointer event.
|
|
27
25
|
*
|
|
28
|
-
*
|
|
26
|
+
* The pointer write is rAF-coalesced: `onPointerMove` only
|
|
29
27
|
* stashes the raw event + schedules ONE `requestAnimationFrame`; the rAF callback
|
|
30
28
|
* does the single `getBoundingClientRect()` + style write, so a 120–1000 Hz pointer
|
|
31
29
|
* collapses to ONE batched layout read + ONE style write per animation frame (under
|
|
32
|
-
*
|
|
33
|
-
* event). The composable cancels the pending rAF +
|
|
30
|
+
* each blurred-surface repaint is amortized to the frame rather than the
|
|
31
|
+
* event). The composable cancels the pending rAF + its shared-preference watch on
|
|
34
32
|
* scope dispose (cleanup discipline).
|
|
35
33
|
*
|
|
36
|
-
*
|
|
37
|
-
* `createSpecularWriter()`, the SINGLE position-write core. The composable below wraps
|
|
34
|
+
* `createSpecularWriter()` owns rAF coalescing, cached PRM, and cleanup. The composable wraps
|
|
38
35
|
* it for the Vue `:style`-ref case (Card's prop-gated `specular` opt-in); the
|
|
39
36
|
* tier-root auto-arm (`vSpecular`) wraps the SAME core to write directly on the
|
|
40
37
|
* directive host's `el.style` (the zero-wiring delivery). ONE position-write source,
|
|
@@ -47,12 +44,12 @@ export interface UseSpecularTracking {
|
|
|
47
44
|
onPointerMove: (event: PointerEvent) => void;
|
|
48
45
|
}
|
|
49
46
|
/**
|
|
50
|
-
* The SINGLE position-write core
|
|
47
|
+
* The SINGLE position-write core — the rAF-coalesced,
|
|
51
48
|
* PRM-aware `--mouse-x/y` write seam, sink-agnostic. `sink(x, y)` receives the
|
|
52
49
|
* percentage position once per animation frame; the composable sinks into its
|
|
53
50
|
* `specularStyle` ref, the `vSpecular` directive sinks into `el.style.setProperty`.
|
|
54
|
-
* Returns the event handler + a `dispose` (cancel the pending rAF +
|
|
55
|
-
*
|
|
51
|
+
* Returns the event handler + a `dispose` (cancel the pending rAF + preference watch)
|
|
52
|
+
* so BOTH deliveries share ONE cleanup discipline.
|
|
56
53
|
*/
|
|
57
54
|
export interface SpecularWriter {
|
|
58
55
|
onPointerMove: (event: PointerEvent) => void;
|
|
@@ -57,7 +57,7 @@ export declare function cellTwist(curlFn: (p: Vec2) => Vec2, g: Vec2, cellSize:
|
|
|
57
57
|
/**
|
|
58
58
|
* The sheet displacement at a cell center `cc` — the EXACT traveling-wave scalar the twist
|
|
59
59
|
* rides (`travelingEnvelope · amp`), surfaced as a named leaf fn so the face reads ONE
|
|
60
|
-
* envelope. Range [0,1]·amp: ~0 ahead of
|
|
60
|
+
* envelope. Range [0,1]·amp: ~0 ahead of, behind the crest, ~amp at the crest. `cellTwist`
|
|
61
61
|
* (via `cellDriver`) calls this, so a sign drift reds the numeric parity gate everywhere.
|
|
62
62
|
*/
|
|
63
63
|
export declare function cellHeight(cc: Vec2, t: number, waveDir: Vec2, waveK: number, waveOmega: number, waveSigma: number, amp: number): number;
|
|
@@ -100,7 +100,7 @@ export declare const WAVE_FLOW_SECOND_RATIO = 1.833333;
|
|
|
100
100
|
* the wave passes OVER and THROUGH them, with NO cell-boundary discontinuity. Returns the
|
|
101
101
|
* warped coordinate.
|
|
102
102
|
*
|
|
103
|
-
*
|
|
103
|
+
* the LOCALLY-AFFINE frequency law. `warpFreq` is the HOST-supplied spatial
|
|
104
104
|
* frequency (in the caller's OWN coordinate units) at which the curl-flow potential is sampled.
|
|
105
105
|
* The caller passes a frequency an ORDER OF MAGNITUDE BELOW its own grid/contour frequency, so
|
|
106
106
|
* the warp-displacement gradient is ~constant across any ONE cell (the warp Jacobian is locally
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WAVE_FIELD_GLSL = "\n#ifndef WAVE_FIELD_TAU\n#define WAVE_FIELD_TAU 6.283185307179586\n#endif\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfloat travelingEnvelope(vec2 pivot, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma) {\n float coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n float crest = fract(coord / WAVE_FIELD_TAU);\n float z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfloat curlScalar(vec2 cc, float t) {\n vec2 f = curlFBM(vec2(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\n#ifndef WAVE_FIELD_TWIST_FLOOR\n#define WAVE_FIELD_TWIST_FLOOR 0.62\n#endif\nfloat directedTwist(float s, float floorMag) {\n float mag = max(floorMag, abs(s));\n float sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// Defined ABOVE cellTwist: cellTwist rides cellHeight via the driver so twist + face read ONE\n// envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfloat cellHeight(vec2 cc, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma, float amp) {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (floor(twisted_g) at the\n// crest lights a
|
|
1
|
+
export declare const WAVE_FIELD_GLSL = "\n#ifndef WAVE_FIELD_TAU\n#define WAVE_FIELD_TAU 6.283185307179586\n#endif\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfloat travelingEnvelope(vec2 pivot, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma) {\n float coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n float crest = fract(coord / WAVE_FIELD_TAU);\n float z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfloat curlScalar(vec2 cc, float t) {\n vec2 f = curlFBM(vec2(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\n#ifndef WAVE_FIELD_TWIST_FLOOR\n#define WAVE_FIELD_TWIST_FLOOR 0.62\n#endif\nfloat directedTwist(float s, float floorMag) {\n float mag = max(floorMag, abs(s));\n float sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// Defined ABOVE cellTwist: cellTwist rides cellHeight via the driver so twist + face read ONE\n// envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfloat cellHeight(vec2 cc, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma, float amp) {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (floor(twisted_g) at the\n// crest lights a neighbouring cell). cc is in .xy and env in .z.\nvec3 cellDriver(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float cs = max(cellSize, 1e-3);\n vec2 cc = (floor(g / cs) + 0.5) * cs;\n float env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5\u00B7cellSize) \u2014 derivative-\n// FREE (NO dFdx on the height) \u2192 Safari WebGL2-safe. Returns \u2207H.\nvec2 faceRelief(vec2 cc, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float eps = max(cellSize, 1e-3) * 0.5;\n float hxp = cellHeight(cc + vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hxm = cellHeight(cc - vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hyp = cellHeight(cc + vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hym = cellHeight(cc - vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell \u2014 the filled FACE plateau. d is the distance\n// into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats as it grows\n// (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfloat facePlateau(vec2 g, float inset, vec2 uvDeriv) {\n vec2 tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n float d = min(tri.x, tri.y);\n float aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nvec2 cellTwist(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float twistMax, float shearMax, float amp) {\n vec3 drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n vec2 cc = drv.xy;\n float env = drv.z;\n float floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n float theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n float shear = shearMax * env * directedTwist(curlScalar(cc + vec2(17.3, 9.1), t), floorMag);\n vec2 local = g - cc;\n float ct = cos(theta);\n float st = sin(theta);\n vec2 rot = vec2(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x += shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp \u2014 the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// warpFreq is the host-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as one smooth curve, no sub-cell crackle). LiquidGrid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged \u2014 curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nvec2 waveFlow(vec2 g, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma,\n float twistMax, float amp, float warpFreq) {\n float env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n vec2 f = curlFBM(vec2(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n float wf2 = warpFreq * 1.833333;\n vec2 f2 = curlFBM(vec2(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n float k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl \u2014 the finger twists the cells around it (re-aimed cursorBulge).\nvec2 cursorSwirl(vec2 g, vec2 cursor, float strength, float radius) {\n vec2 to = g - cursor;\n float d2 = dot(to, to);\n float r = max(radius, 1e-4);\n float theta = strength * exp(-d2 / (2.0 * r * r));\n float ct = cos(theta);\n float st = sin(theta);\n return cursor + vec2(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography \u2014 the scalar field concentric extracts contours of.\nfloat heightField(vec2 p, float octavesF, float seed) {\n float v = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n float px = p.x + seed;\n float py = p.y - seed;\n int n = int(clamp(octavesF, 1.0, 6.0));\n for (int i = 0; i < 6; i++) {\n if (i >= n) break;\n v += amp * valueNoise(px * freq, py * freq);\n float rx = 0.8 * px - 0.6 * py;\n float ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq *= 2.0;\n amp *= 0.5;\n }\n return v;\n}\n\n// The \u03C9=\u221A(g\u00B7k) breathing swell \u2014 basins inflate/deflate with weight.\nfloat waveSwell(float t, float phase) {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WAVE_FIELD_WGSL = "\nconst WAVE_FIELD_TAU: f32 = 6.283185307179586;\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfn travelingEnvelope(pivot: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32) -> f32 {\n let coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n let crest = fract(coord / WAVE_FIELD_TAU);\n let z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfn curlScalar(cc: vec2f, t: f32) -> f32 {\n let f = curlFBM(vec2f(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\nconst WAVE_FIELD_TWIST_FLOOR: f32 = 0.62;\nfn directedTwist(s: f32, floorMag: f32) -> f32 {\n let mag = max(floorMag, abs(s));\n let sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// DECLARED ABOVE cellTwist (no WGSL forward declaration): cellTwist rides cellHeight via the\n// driver so twist + face read ONE envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfn cellHeight(cc: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32, amp: f32) -> f32 {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (the crest twist crosses\n// the cell boundary \u2192 floor(twisted_g) would light a
|
|
1
|
+
export declare const WAVE_FIELD_WGSL = "\nconst WAVE_FIELD_TAU: f32 = 6.283185307179586;\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfn travelingEnvelope(pivot: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32) -> f32 {\n let coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n let crest = fract(coord / WAVE_FIELD_TAU);\n let z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfn curlScalar(cc: vec2f, t: f32) -> f32 {\n let f = curlFBM(vec2f(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\nconst WAVE_FIELD_TWIST_FLOOR: f32 = 0.62;\nfn directedTwist(s: f32, floorMag: f32) -> f32 {\n let mag = max(floorMag, abs(s));\n let sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// DECLARED ABOVE cellTwist (no WGSL forward declaration): cellTwist rides cellHeight via the\n// driver so twist + face read ONE envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfn cellHeight(cc: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32, amp: f32) -> f32 {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (the crest twist crosses\n// the cell boundary \u2192 floor(twisted_g) would light a neighbouring cell). cc is in .xy and env in .z.\nfn cellDriver(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, amp: f32) -> vec3f {\n let cs = max(cellSize, 1e-3);\n let cc = (floor(g / cs) + 0.5) * cs;\n let env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3f(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5\u00B7cellSize) \u2014 derivative-\n// FREE (NO dFdx on the height) \u2192 Safari WebGL2-safe. Returns \u2207H.\nfn faceRelief(cc: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, amp: f32) -> vec2f {\n let eps = max(cellSize, 1e-3) * 0.5;\n let hxp = cellHeight(cc + vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hxm = cellHeight(cc - vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hyp = cellHeight(cc + vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hym = cellHeight(cc - vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2f((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell \u2014 the filled FACE plateau. d is the\n// distance into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats\n// as it grows (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfn facePlateau(g: vec2f, inset: f32, uvDeriv: vec2f) -> f32 {\n let tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n let d = min(tri.x, tri.y);\n let aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nfn cellTwist(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, twistMax: f32, shearMax: f32, amp: f32) -> vec2f {\n let drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n let cc = drv.xy;\n let env = drv.z;\n let floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n let theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n let shear = shearMax * env * directedTwist(curlScalar(cc + vec2f(17.3, 9.1), t), floorMag);\n let local = g - cc;\n let ct = cos(theta);\n let st = sin(theta);\n var rot = vec2f(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x = rot.x + shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp \u2014 the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// warpFreq is the host-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as one smooth curve, no sub-cell crackle). LiquidGrid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged \u2014 curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nfn waveFlow(g: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32,\n twistMax: f32, amp: f32, warpFreq: f32) -> vec2f {\n let env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n let f = curlFBM(vec2f(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n let wf2 = warpFreq * 1.833333;\n let f2 = curlFBM(vec2f(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n let k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl \u2014 the finger twists the cells around it (re-aimed cursorBulge).\nfn cursorSwirl(g: vec2f, cursor: vec2f, strength: f32, radius: f32) -> vec2f {\n let to = g - cursor;\n let d2 = dot(to, to);\n let r = max(radius, 1e-4);\n let theta = strength * exp(-d2 / (2.0 * r * r));\n let ct = cos(theta);\n let st = sin(theta);\n return cursor + vec2f(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography \u2014 the scalar field concentric extracts contours of.\nfn heightField(p: vec2f, octavesF: f32, seed: f32) -> f32 {\n var v = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n var px = p.x + seed;\n var py = p.y - seed;\n let n = i32(clamp(octavesF, 1.0, 6.0));\n for (var i = 0; i < 6; i = i + 1) {\n if (i >= n) { break; }\n v = v + amp * valueNoise(px * freq, py * freq);\n let rx = 0.8 * px - 0.6 * py;\n let ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq = freq * 2.0;\n amp = amp * 0.5;\n }\n return v;\n}\n\n// The \u03C9=\u221A(g\u00B7k) breathing swell \u2014 basins inflate/deflate with weight.\nfn waveSwell(t: f32, phase: f32) -> f32 {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n";
|
|
@@ -21,24 +21,21 @@ export type DprPolicy = number | ((box: {
|
|
|
21
21
|
h: number;
|
|
22
22
|
}) => number);
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* The canonical backing-store sizer.
|
|
25
25
|
*
|
|
26
|
-
*
|
|
27
|
-
* (DRY) instead of in N drifted consumer `resize()` closures (the three incompatible
|
|
28
|
-
* `clientWidth || 320` / `clientWidth || canvasSize` / one-parent-gBCR conventions the
|
|
29
|
-
* DELTA-ASSAY reproduced as the live 300×150 stuck-canvas).
|
|
26
|
+
* The shared ancestor-aware sizer replaces per-consumer `resize()` conventions.
|
|
30
27
|
*
|
|
31
28
|
* Measures the LAID-OUT border-box via `getBoundingClientRect` — NOT `clientWidth`,
|
|
32
29
|
* which reads 0 under a `content-visibility:auto` skip (the born-skipped trap). Walks
|
|
33
30
|
* ancestors ONLY when our own rect is still zero (truly un-laid-out), and the walk is
|
|
34
|
-
*
|
|
35
|
-
*
|
|
31
|
+
* Bounded: cap depth at 3 and stop at the first sized, contained, container-positioned
|
|
32
|
+
* ancestor — never an unbounded gBCR walk to `<body>` (O(depth) reflow per
|
|
36
33
|
* tick), never an over-recovered wide flex/grid grandparent that sizes the backing to
|
|
37
34
|
* the viewport. Idempotent: the realloc (which CLEARS the drawing buffer) is skipped
|
|
38
35
|
* when the buffer already matches the box.
|
|
39
36
|
*
|
|
40
37
|
* Pure CSS-geometry — ZERO dependency on which GPU API is live, so it runs SYNCHRONOUSLY
|
|
41
|
-
* at mount before the async WebGPU device resolves
|
|
38
|
+
* at mount before the async WebGPU device resolves. Engine-identical in Chromium and
|
|
42
39
|
* WebKit (gBCR reflects the real box across a CV skip in both).
|
|
43
40
|
*/
|
|
44
41
|
export declare function sizeBacking(canvas: HTMLCanvasElement, dprPolicy: DprPolicy): BackingSize;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared WebGL2 shader compile/link pair
|
|
2
|
+
* Shared WebGL2 shader compile/link pair: the single error-checked
|
|
3
3
|
* source the aurora GL setup (`glSetup.ts`) and the goo-blob renderer
|
|
4
4
|
* (`useMetaballRenderer.ts`) both build their program from. Each consumer was
|
|
5
5
|
* hand-rolling a byte-identical `compile`/`link` differing only in the error
|
|
@@ -19,36 +19,32 @@ export interface CanvasLifecycleOptions {
|
|
|
19
19
|
respectReducedMotion?: boolean;
|
|
20
20
|
/**
|
|
21
21
|
* Acquire the backend context + build the per-frame hooks. Called on `arm()` AND
|
|
22
|
-
* on a backend context-restore. Throws on backend-unavailable
|
|
22
|
+
* on a backend context-restore. Throws on backend-unavailable, setup failure.
|
|
23
23
|
*/
|
|
24
24
|
buildContext: () => CanvasFrameHooks;
|
|
25
25
|
/**
|
|
26
26
|
* Upload the backing geometry to the viewport/uniforms.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
28
|
+
* The leaf measures and sizes the backing store via
|
|
29
29
|
* `sizeBacking`, the ONE sizer) and passes the freshly-computed `BackingSize` here so
|
|
30
30
|
* the consumer can never re-derive a wrong one. When the leaf owns sizing (`dprPolicy`
|
|
31
31
|
* provided) the buffer is already correct on entry — the consumer body is UPLOAD-ONLY,
|
|
32
|
-
* shrinking to `gl.viewport(0,0,s.w,s.h)
|
|
32
|
+
* shrinking to `gl.viewport(0,0,s.w,s.h)`, `uploadResolution` (a WGPU swap-chain leg
|
|
33
33
|
* is a no-op — it auto-resizes to the backing the leaf set).
|
|
34
34
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* self-size). The arg stays optional ONLY for the un-migrated `useCanvas2D` leg + the
|
|
39
|
-
* substrate contract tests; dropping the `?` (the flag-day) is booked to their adopt.
|
|
35
|
+
* Procedural scenes, including Canvas2D, pass `dprPolicy` and use this upload-only
|
|
36
|
+
* size. The optional argument remains only for direct legacy WebGL/WebGPU callers
|
|
37
|
+
* that omit a DPR policy.
|
|
40
38
|
*/
|
|
41
39
|
resize: (s?: BackingSize) => void;
|
|
42
40
|
/**
|
|
43
41
|
* The consumer's DPR policy, handed to the leaf's `sizeBacking`. When PRESENT the
|
|
44
|
-
* leaf owns
|
|
42
|
+
* leaf owns backing-store measurement and sizing, and the live
|
|
45
43
|
* `BackingSize` rides every `resize` call. When ABSENT the leaf falls back to the
|
|
46
44
|
* legacy behaviour (the consumer's `resize()` self-measures) — the migration seam.
|
|
47
45
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* budget DPR here (`resolveBudgetDpr` / `resolveAuroraWashDpr`), so the STANDARD is
|
|
51
|
-
* `dprPolicy`-present; the ABSENT branch survives only for `useCanvas2D`.
|
|
46
|
+
* Procedural scenes use the present branch. The absent branch remains for direct
|
|
47
|
+
* legacy WebGL/WebGPU callers.
|
|
52
48
|
*/
|
|
53
49
|
dprPolicy?: DprPolicy;
|
|
54
50
|
/**
|
|
@@ -59,8 +55,12 @@ export interface CanvasLifecycleOptions {
|
|
|
59
55
|
*/
|
|
60
56
|
bindContextEvents?: (rebuild: () => void, markContextLost: () => void) => void;
|
|
61
57
|
unbindContextEvents?: () => void;
|
|
58
|
+
/** Project the lifecycle's existing loss/rebuild state without creating a second clock. */
|
|
59
|
+
onContextStateChange?: (state: "lost" | "restored") => void;
|
|
60
|
+
/** Surface a failed restore or a bounded context-loss storm to the owner. */
|
|
61
|
+
onContextError?: (error: Error) => void;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* Compose the IntersectionObserver park detector
|
|
64
64
|
* at the leaf (DRY) so a consumer inherits the off-screen IO-park ORed with the
|
|
65
65
|
* content-visibility park, with NO per-viz `useIntersectionPause` wiring. The leaf
|
|
66
66
|
* wires a plain (scope-free, reactivity-free) IO observing the canvas, writing the
|
|
@@ -73,16 +73,16 @@ export interface CanvasLifecycleOptions {
|
|
|
73
73
|
* defaulting on would DOUBLE-WRITE that reason and breach the one-writer invariant.
|
|
74
74
|
* The atomic retirement of those per-consumer calls (so the leaf IO becomes the sole
|
|
75
75
|
* writer, default-on) lands in the viz lanes. Until then a viz with NO IO wiring
|
|
76
|
-
* (concentric
|
|
76
|
+
* (concentric, fourier, dot-flow — the live PARK gap) opts IN to inherit the park.
|
|
77
77
|
*/
|
|
78
78
|
composeIntersectionPark?: boolean;
|
|
79
|
-
/** `rootMargin` for the leaf-composed IO park
|
|
79
|
+
/** `rootMargin` for the leaf-composed IO park. Default `"256px"` for pre-warm. */
|
|
80
80
|
intersectionRootMargin?: string;
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
82
|
+
* the one-shot cold-first-VISIBLE entrance bloom. When set,
|
|
83
83
|
* the leaf sets a one-shot `data-substrate-reveal` ATTRIBUTE on the canvas at the
|
|
84
84
|
* moment it FIRST becomes visible (a dedicated one-shot IntersectionObserver — NOT
|
|
85
|
-
* at `arm()`, which a content-skipped
|
|
85
|
+
* at `arm()`, which a content-skipped, below-fold viz would burn on an invisible
|
|
86
86
|
* paint). The CANVAS-targeted CSS `@keyframes substrate-reveal-bloom` (`viz-reveal.css`)
|
|
87
87
|
* then ramps `filter: brightness()/saturate()` from a dim floor, OVERSHOOTS past 1.0
|
|
88
88
|
* on the `--ease-cartoon-punch` linear() curve (the EFFECTS-channel sanctioned
|
|
@@ -99,7 +99,7 @@ export interface CanvasLifecycleOptions {
|
|
|
99
99
|
export interface CanvasLifecycleHandle {
|
|
100
100
|
arm: () => void;
|
|
101
101
|
/**
|
|
102
|
-
*
|
|
102
|
+
* Size the backing store and start the leaf RO
|
|
103
103
|
* SYNCHRONOUSLY, decoupled from the (async) context acquire. The WebGPU backend
|
|
104
104
|
* calls this BEFORE `armAsync`'s device request so the canvas is sharp from frame 0
|
|
105
105
|
* while the device resolves behind it (the ≤6s blurry-flash close). Idempotent: a
|
|
@@ -116,7 +116,7 @@ export interface CanvasLifecycleHandle {
|
|
|
116
116
|
readonly running: boolean;
|
|
117
117
|
readonly reducedMotion: boolean;
|
|
118
118
|
/**
|
|
119
|
-
*
|
|
119
|
+
* the circuit-breaker has tripped: the surface lost-and-restored
|
|
120
120
|
* its context more than N times within T ms (a real eviction storm), so the lifecycle
|
|
121
121
|
* is HOLDING the parked state without re-arming (no throw). Resets once the loss window
|
|
122
122
|
* passes quiet; a healthy single loss never trips it.
|
|
@@ -1,36 +1,20 @@
|
|
|
1
1
|
import { type BackingSize, type DprPolicy } from "./createCanvasLifecycle";
|
|
2
2
|
export type { BackingSize, DprPolicy } from "./createCanvasLifecycle";
|
|
3
3
|
/**
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* so a consumer feature-detecting WebGL2 / reading the unmasked renderer string
|
|
4
|
+
* The one `getContext("webgl2")` capability probe. A throwaway WebGL2 context is
|
|
5
|
+
* created here in the substrate,
|
|
6
|
+
* so a consumer feature-detecting WebGL2, reading the unmasked renderer string
|
|
8
7
|
* NEVER creates a second context of its own. The probe canvas is detached, its
|
|
9
8
|
* context released via `WEBGL_lose_context` under the per-page context cap; the
|
|
10
9
|
* read is one-shot (a mount-time device-tier decision, not a reactive one).
|
|
11
10
|
*
|
|
12
11
|
* Returns the lower-cased `UNMASKED_RENDERER_WEBGL` string (e.g.
|
|
13
|
-
* `"google swiftshader"`), or `null` when WebGL2
|
|
12
|
+
* `"google swiftshader"`), or `null` when WebGL2, the debug-renderer extension
|
|
14
13
|
* is unavailable or the probe throws — the caller treats `null` as "cannot prove"
|
|
15
14
|
* (the conservative-but-lossy fall-back). SSR-safe (returns `null` with no
|
|
16
15
|
* `document`).
|
|
17
16
|
*/
|
|
18
17
|
export declare function probeWebGL2Renderer(): string | null;
|
|
19
|
-
/**
|
|
20
|
-
* The WebGPU→WebGL2 fall POISON test — can THIS specific canvas still host WebGL2?
|
|
21
|
-
* (BD.W-VIZ-BROKEN-FIX — the single-bootstrap home for the probe.) Once `getContext("webgpu")`
|
|
22
|
-
* has run on a canvas, the HTML one-context-type rule locks it to `webgpu` forever and
|
|
23
|
-
* `getContext("webgl2")` returns `null`. The picker's fall-to-WebGL2 path probes this to
|
|
24
|
-
* decide whether it must clone+swap the canvas (genuinely poisoned) or can keep the original
|
|
25
|
-
* (a fall that ran BEFORE any `getContext("webgpu")` — no-adapter / device-reject / acquire-
|
|
26
|
-
* timeout — never poisoned it; reusing it avoids orphaning the consumer's captured canvas
|
|
27
|
-
* reference). The `getContext("webgl2")` bootstrap stays in THIS substrate (the sole webgl2-
|
|
28
|
-
* creating module per `proof:webgl-substrate-single` clause B); the picker composes this
|
|
29
|
-
* helper rather than calling `getContext("webgl2")` itself. `getContext` is idempotent for
|
|
30
|
-
* the same type, so on a clean canvas the probe returns the very context the net re-acquires
|
|
31
|
-
* (no extra cost). Returns `true` if the canvas can host WebGL2, `false` if poisoned/unable.
|
|
32
|
-
*/
|
|
33
|
-
export declare function canvasCanHostWebGL2(canvas: HTMLCanvasElement): boolean;
|
|
34
18
|
export type WebGLSuspendReason = "tab-hidden" | "off-screen" | "off-screen-io" | "manual";
|
|
35
19
|
/** The per-frame hooks a consumer's `setup(gl)` returns. */
|
|
36
20
|
export interface WebGLCanvasFrame {
|
|
@@ -39,7 +23,7 @@ export interface WebGLCanvasFrame {
|
|
|
39
23
|
/** Demand-gate: is there live motion to render next frame? `false` → park. */
|
|
40
24
|
shouldContinue: () => boolean;
|
|
41
25
|
/**
|
|
42
|
-
* Upload the backing geometry to the viewport/uniforms
|
|
26
|
+
* Upload the backing geometry to the viewport/uniforms.:
|
|
43
27
|
* when a `dprPolicy` is supplied the leaf MEASURES + sizes the backing and passes
|
|
44
28
|
* the live `BackingSize` here (the consumer body shrinks to
|
|
45
29
|
* `gl.viewport(0,0,s.w,s.h)`); the arg is optional so a legacy self-measuring
|
|
@@ -66,37 +50,41 @@ export interface WebGLCanvasOptions {
|
|
|
66
50
|
*/
|
|
67
51
|
respectReducedMotion?: boolean;
|
|
68
52
|
/**
|
|
69
|
-
*
|
|
53
|
+
* The consumer's DPR policy. When present the
|
|
70
54
|
* leaf owns the backing-store measurement + sizing (the ONE sizer, sized
|
|
71
55
|
* synchronously at mount before any acquire) and hands the live `BackingSize` to
|
|
72
56
|
* `resize(s)`. When ABSENT the legacy path runs (the consumer self-measures).
|
|
73
57
|
*/
|
|
74
58
|
dprPolicy?: DprPolicy;
|
|
75
|
-
/** Compose the leaf IO park
|
|
59
|
+
/** Compose the leaf IO park. Default `false`; see createCanvasLifecycle. */
|
|
76
60
|
composeIntersectionPark?: boolean;
|
|
77
|
-
/** `rootMargin` for the leaf IO park
|
|
61
|
+
/** `rootMargin` for the leaf IO park. */
|
|
78
62
|
intersectionRootMargin?: string;
|
|
79
|
-
/** Fire the one-shot cold-first-
|
|
63
|
+
/** Fire the one-shot cold-first-visible entrance bloom via `data-substrate-reveal`. Default `false`. */
|
|
80
64
|
revealBloom?: boolean;
|
|
81
65
|
/**
|
|
82
66
|
* Build the program + geometry on a fresh context. Called on `arm()` AND on
|
|
83
67
|
* every `webglcontextrestored`. Returns the per-frame hooks.
|
|
84
68
|
*/
|
|
85
69
|
setup: (gl: WebGL2RenderingContext) => WebGLCanvasFrame;
|
|
70
|
+
/** Internal lifecycle projection used by the shared renderer-status owner. */
|
|
71
|
+
onContextStateChange?: (state: "lost" | "restored") => void;
|
|
72
|
+
/** Surface a failed context restore or a bounded loss storm. */
|
|
73
|
+
onContextError?: (error: Error) => void;
|
|
86
74
|
}
|
|
87
75
|
export interface WebGLCanvasHandle {
|
|
88
76
|
/** Run the expensive init (context + `setup` + arm the loop). Idempotent; no-op post-dispose. */
|
|
89
77
|
arm: () => void;
|
|
90
|
-
/**
|
|
78
|
+
/** Size the backing and start the leaf RO synchronously before acquire. */
|
|
91
79
|
presize: () => void;
|
|
92
80
|
suspend: (reason?: WebGLSuspendReason) => void;
|
|
93
81
|
resume: (reason?: WebGLSuspendReason) => void;
|
|
94
82
|
/** Re-arm a parked loop (a setter that re-introduced motion calls this). */
|
|
95
83
|
wake: () => void;
|
|
96
|
-
/** Draw one frame at `timeSec` out-of-loop (capture
|
|
84
|
+
/** Draw one frame at `timeSec` out-of-loop (capture, thumbnail). */
|
|
97
85
|
renderAt: (timeSec: number) => void;
|
|
98
86
|
dispose: () => void;
|
|
99
|
-
/** The live context (null before arm
|
|
87
|
+
/** The live context (null before arm, after dispose, mid-loss). */
|
|
100
88
|
readonly gl: WebGL2RenderingContext | null;
|
|
101
89
|
/**
|
|
102
90
|
* The live `prefers-reduced-motion: reduce` state. The shared lifecycle core
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CanvasSuspendReason } from "./createCanvasLifecycle";
|
|
2
2
|
/**
|
|
3
3
|
* The scheduler seam the observers drive. Each observer writes a DISTINCT suspend
|
|
4
|
-
* reason (`tab-hidden
|
|
4
|
+
* reason (`tab-hidden`, `off-screen`, `off-screen-io`) — the one-writer-per-reason
|
|
5
5
|
* invariant — and reads the scheduler's live `armed`/`hooks`/`disposed`/`reducedMotion`
|
|
6
6
|
* state through the getters (never a shared closure var, so the two files stay decoupled).
|
|
7
7
|
*/
|
|
@@ -21,7 +21,7 @@ export interface CanvasVisibilityDeps {
|
|
|
21
21
|
}
|
|
22
22
|
export interface CanvasVisibility {
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Size the backing store and start the leaf RO
|
|
25
25
|
* SYNCHRONOUSLY, decoupled from the (async) context acquire. Idempotent: a no-op
|
|
26
26
|
* once it has run. The WebGPU backend calls this BEFORE its async device request so
|
|
27
27
|
* the canvas is sharp from frame 0 while the device resolves.
|
|
@@ -36,7 +36,6 @@ export interface CanvasVisibility {
|
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* The canvas visibility observers. Constructing this binds the tab-visibility owner +
|
|
39
|
-
* seeds the initial `document.hidden` suspend (the pre-arm seed)
|
|
40
|
-
* inline behaviour byte-for-byte.
|
|
39
|
+
* seeds the initial `document.hidden` suspend (the pre-arm seed).
|
|
41
40
|
*/
|
|
42
41
|
export declare function createCanvasVisibility(deps: CanvasVisibilityDeps): CanvasVisibility;
|
|
@@ -20,7 +20,7 @@ export interface GpuSubstrateOptions {
|
|
|
20
20
|
/** The GLSL program builder (the WebGL2 fallback path — always required). */
|
|
21
21
|
setupGL: WebGLCanvasOptions["setup"];
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* The consumer's DPR policy: a flat multiplier
|
|
24
24
|
* or a box-aware resolver). When PRESENT the leaf owns the backing-store measurement
|
|
25
25
|
* + sizes it SYNCHRONOUSLY at mount (the ONE sizer; before the async acquire on the
|
|
26
26
|
* WebGPU path), handing the live `BackingSize` to each `setup`'s `resize(s)`. When
|
|
@@ -29,17 +29,17 @@ export interface GpuSubstrateOptions {
|
|
|
29
29
|
*/
|
|
30
30
|
dprPolicy?: DprPolicy;
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* Compose the leaf IntersectionObserver park so a consumer inherits the
|
|
33
33
|
* off-screen IO-park ORed with content-visibility, no per-viz `useIntersectionPause`
|
|
34
34
|
* wiring). Default `false` (OPT-IN): several consumers already write `"off-screen-io"`
|
|
35
35
|
* from their own `useIntersectionPause` and a leaf IO default-on would double-write
|
|
36
36
|
* that reason. A viz with NO IO wiring (concentric/fourier/dot-flow) opts IN.
|
|
37
37
|
*/
|
|
38
38
|
composeIntersectionPark?: boolean;
|
|
39
|
-
/** `rootMargin` for the leaf IO park
|
|
39
|
+
/** `rootMargin` for the leaf IO park. Default `"256px"`. */
|
|
40
40
|
intersectionRootMargin?: string;
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* fire the one-shot cold-first-VISIBLE entrance bloom (a
|
|
43
43
|
* one-shot `data-substrate-reveal` attr on the canvas the CSS `@keyframes
|
|
44
44
|
* substrate-reveal-bloom` reads to ramp `filter: brightness()` from a dim floor,
|
|
45
45
|
* overshoot past 1.0 on `--ease-cartoon-punch`, then settle). Fires at first-visible,
|
|
@@ -53,7 +53,7 @@ export interface GpuSubstrateOptions {
|
|
|
53
53
|
deviceDescriptor?: WebGPUCanvasOptions["deviceDescriptor"];
|
|
54
54
|
/** WebGL2 `getContext("webgl2", …)` attributes. */
|
|
55
55
|
contextAttrs?: WebGLCanvasOptions["contextAttrs"];
|
|
56
|
-
/** Surface a device-init
|
|
56
|
+
/** Surface a device-init, validation failure (the WebGPU path). */
|
|
57
57
|
onInitError?: WebGPUCanvasOptions["onInitError"];
|
|
58
58
|
/**
|
|
59
59
|
* Notified when the picker FALLS from WebGPU to the WebGL2 net (the invisible
|
|
@@ -88,7 +88,7 @@ export interface GpuSubstrateHandle {
|
|
|
88
88
|
/** Synchronous arm (the WebGL2 net arms immediately; the WebGPU path is a no-op until the device resolves). */
|
|
89
89
|
arm: () => void;
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* Size the backing store and start the leaf RO
|
|
92
92
|
* SYNCHRONOUSLY, decoupled from the (async) backend acquire. Call it the instant the
|
|
93
93
|
* canvas is in the DOM so the field is sharp from frame 0 while the device resolves
|
|
94
94
|
* (the ≤6s blurry-flash close). `armAsync` already calls it internally on both legs;
|
|
@@ -107,10 +107,10 @@ export interface GpuSubstrateHandle {
|
|
|
107
107
|
* Pick the backend + return the uniform handle. WebGPU-first (`supportsWebGPU()` AND a
|
|
108
108
|
* `setupWGPU` callback is provided); otherwise the WebGL2 net. The decision is NO
|
|
109
109
|
* LONGER committed at construction off a presence check — `armAsync()` ATTEMPTS the
|
|
110
|
-
* WebGPU init and
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
110
|
+
* WebGPU init and falls to WebGL2 only for recognized acquisition failures that occur
|
|
111
|
+
* before a WebGPU context is acquired. Setup/pipeline validation stays an explicit
|
|
112
|
+
* WebGPU error. The WebGL2 leaf is built lazily, so a Baseline host pays no fallback
|
|
113
|
+
* context cost.
|
|
114
114
|
*/
|
|
115
115
|
export declare function createGpuSubstrate(canvas: HTMLCanvasElement, options: GpuSubstrateOptions): GpuSubstrateHandle;
|
|
116
116
|
export type { WebGPUCanvasFrame, WebGLCanvasFrame };
|
|
@@ -6,7 +6,7 @@ import type { WebGPUCanvasOptions, WebGPUCanvasHandle } from "./webgpuCanvasType
|
|
|
6
6
|
* The ONE `navigator.gpu` capability probe (the single-bootstrap rule — mirrors
|
|
7
7
|
* `probeWebGL2Renderer`). SSR-safe (returns `false` with no `navigator`). The picker
|
|
8
8
|
* (`useGpuSubstrate`) reads it to decide the backend; a consumer NEVER touches
|
|
9
|
-
* `navigator.gpu` directly
|
|
9
|
+
* `navigator.gpu` directly because it composes the substrate
|
|
10
10
|
* clause A reds a direct call).
|
|
11
11
|
*/
|
|
12
12
|
export declare function supportsWebGPU(): boolean;
|