@mkbabb/glass-ui 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/CardAction-8whJrLWt.js +268 -0
- package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
- package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
- package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
- package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
- package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
- package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
- package/dist/DialogFooter-9phqcRIS.js +80 -0
- package/dist/DialogScrollContent-TTuovQst.js +93 -0
- package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
- package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
- package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
- package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
- package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
- package/dist/Input-Cg9DF62r.js +57 -0
- package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-CphK7AAm.js +43 -0
- package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
- package/dist/PagerDots-Cjx96la-.js +98 -0
- package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
- package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
- package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
- package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
- package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
- package/dist/Separator-DQcwC2TR.js +44 -0
- package/dist/Switch-B8RscmRu.js +49 -0
- package/dist/Toaster-D9qIHjBI.js +274 -0
- package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
- package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +21 -33
- package/dist/api/types-extra.d.ts +37 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +1231 -260
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +98 -0
- package/dist/button-5dY1Dvhd.js +125 -0
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -3
- package/dist/card.js +2 -2
- package/dist/carousel.js +93 -110
- package/dist/collapsible.js +1 -1
- package/dist/color-Cs0-oxYL.js +116 -0
- package/dist/color.js +2 -2
- package/dist/command.js +1 -1
- package/dist/compile-nZ1xVYTp.js +19 -0
- package/dist/completion-seal.d.ts +1 -0
- package/dist/completion-seal.js +89 -0
- package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
- package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
- package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
- package/dist/components/custom/aurora/composables/color.d.ts +13 -0
- package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
- package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
- package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
- package/dist/components/custom/aurora/index.d.ts +2 -1
- package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
- package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -0
- package/dist/components/custom/border-progress/constants.d.ts +59 -0
- package/dist/components/custom/border-progress/index.d.ts +4 -0
- package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
- package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
- package/dist/components/custom/completion-seal/constants.d.ts +46 -0
- package/dist/components/custom/completion-seal/index.d.ts +4 -0
- package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +18 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
- package/dist/components/custom/concentric/constants.d.ts +67 -0
- package/dist/components/custom/concentric/index.d.ts +5 -0
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
- package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
- package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
- package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
- package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
- package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
- package/dist/components/custom/constellation/constants.d.ts +33 -0
- package/dist/components/custom/constellation/constellationField.d.ts +31 -1
- package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
- package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
- package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
- package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
- package/dist/components/custom/constellation/index.d.ts +5 -5
- package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
- package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
- package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
- package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
- package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
- package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
- package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
- package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
- package/dist/components/custom/deck/constants.d.ts +14 -0
- package/dist/components/custom/deck/index.d.ts +8 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
- package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
- package/dist/components/custom/dock/composables/index.d.ts +2 -0
- package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
- package/dist/components/custom/dock/constants.d.ts +18 -14
- package/dist/components/custom/dock/index.d.ts +5 -2
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
- package/dist/components/custom/dot-flow-field/constants.d.ts +69 -0
- package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
- package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
- package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
- package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
- package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
- package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
- package/dist/components/custom/dot-matrix/index.d.ts +5 -0
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
- package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
- package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
- package/dist/components/custom/easing/composables/useEasingPicker.d.ts +80 -0
- package/dist/components/custom/easing/constants.d.ts +28 -0
- package/dist/components/custom/easing/index.d.ts +3 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
- package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
- package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
- package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
- package/dist/components/custom/fourier-field/constants.d.ts +64 -0
- package/dist/components/custom/fourier-field/index.d.ts +23 -18
- package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
- package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/constants.d.ts +1 -1
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/types.d.ts +36 -0
- package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
- package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
- package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
- package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
- package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
- package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
- package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
- package/dist/components/custom/icon-chip/types.d.ts +11 -1
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -0
- package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
- package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
- package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
- package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
- package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
- package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
- package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
- package/dist/components/custom/paper-grid/constants.d.ts +57 -0
- package/dist/components/custom/paper-grid/index.d.ts +5 -0
- package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
- package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
- package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
- package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
- package/dist/components/custom/search/index.d.ts +2 -0
- package/dist/components/custom/search/searchVariants.d.ts +19 -0
- package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
- package/dist/components/custom/selectable-chip/index.d.ts +2 -0
- package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
- package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
- package/dist/components/custom/spa-view/index.d.ts +2 -0
- package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
- package/dist/components/custom/split-chars/index.d.ts +1 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/tabs/constants.d.ts +20 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
- package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
- package/dist/components/ui/badge/index.d.ts +1 -1
- package/dist/components/ui/button/Button.vue.d.ts +5 -2
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/card/Card.vue.d.ts +79 -4
- package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
- package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
- package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
- package/dist/components/ui/card/index.d.ts +3 -1
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
- package/dist/components/ui/command/Command.vue.d.ts +1 -1
- package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
- package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
- package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
- package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
- package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
- package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
- package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
- package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
- package/dist/components/ui/drawer/constants.d.ts +45 -0
- package/dist/components/ui/drawer/index.d.ts +23 -15
- package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
- package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
- package/dist/components/ui/focus-scope/index.d.ts +2 -0
- package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/input/Input.vue.d.ts +3 -0
- package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
- package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
- package/dist/components/ui/toast/use-toast.d.ts +14 -0
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
- package/dist/composables/color/index.d.ts +2 -0
- package/dist/composables/color/useAccentTone.d.ts +34 -0
- package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
- package/dist/composables/glass/index.d.ts +5 -2
- package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
- package/dist/composables/glass/useVizChoreography.d.ts +123 -0
- package/dist/composables/glass/vSpecular.d.ts +2 -0
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
- package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
- package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
- package/dist/composables/glass/webgpu/index.d.ts +2 -0
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +75 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
- package/dist/composables/motion/core/index.d.ts +4 -0
- package/dist/composables/motion/index.d.ts +4 -0
- package/dist/composables/motion/scrollReader.d.ts +25 -0
- package/dist/composables/motion/springPresets.d.ts +20 -1
- package/dist/composables/motion/useCharStagger.d.ts +44 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +84 -0
- package/dist/composables/motion/useDragMorph.d.ts +77 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
- package/dist/composables/motion/useLiquidPress.d.ts +71 -0
- package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
- package/dist/composables/motion/useNumericTransition.d.ts +3 -3
- package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
- package/dist/composables/motion/useScrollChrome.d.ts +58 -0
- package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
- package/dist/composables/motion/useSpringPress.d.ts +5 -5
- package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
- package/dist/composables/sidebar/index.d.ts +4 -1
- package/dist/composables/sidebar/types.d.ts +68 -3
- package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
- package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
- package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
- package/dist/composables/virtual/index.d.ts +4 -0
- package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
- package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
- package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
- package/dist/concentric.d.ts +1 -0
- package/dist/concentric.js +836 -0
- package/dist/configurator.js +3 -2
- package/dist/confirm-dialog.js +62 -49
- package/dist/constellation.js +635 -235
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +2 -2
- package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck.d.ts +1 -0
- package/dist/deck.js +105 -0
- package/dist/dialog.js +4 -3
- package/dist/dock.js +819 -568
- package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
- package/dist/dom.js +5 -5
- package/dist/dot-flow-field.d.ts +1 -0
- package/dist/dot-flow-field.js +894 -0
- package/dist/dot-matrix.d.ts +1 -0
- package/dist/dot-matrix.js +630 -0
- package/dist/dotMatrixField-D_x9_1qq.js +48 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +380 -0
- package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.d.ts +1 -0
- package/dist/easing.js +475 -0
- package/dist/expandable-container.js +46 -21
- package/dist/fading-scroll.js +1 -1
- package/dist/flow.glsl-B2P7e0MT.js +4 -0
- package/dist/focus-scope.d.ts +1 -0
- package/dist/focus-scope.js +23 -0
- package/dist/forms.js +65 -63
- package/dist/fourier-field.js +831 -172
- package/dist/fourier-math.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +187 -338
- package/dist/goo-blob.js +241 -692
- package/dist/goo-dot-matrix.d.ts +1 -0
- package/dist/goo-dot-matrix.js +591 -0
- package/dist/handmark.js +2 -2
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-chip.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +70 -60
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +14 -9
- package/dist/motion-core.js +58 -36
- package/dist/motion-curves.js +11 -1
- package/dist/motion.js +90 -53
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +2 -91
- package/dist/paper-backdrop.js +1 -1
- package/dist/paper-grid.d.ts +1 -0
- package/dist/paper-grid.js +788 -0
- package/dist/popover.js +1 -1
- package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
- package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
- package/dist/progress.js +1 -1
- package/dist/pulse.js +2 -2
- package/dist/reactive.js +1 -1
- package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
- package/dist/scrollReader-DI1NWxUw.js +42 -0
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +162 -308
- package/dist/select.js +3 -3
- package/dist/selectable-chip.d.ts +1 -0
- package/dist/selectable-chip.js +65 -0
- package/dist/separator.js +1 -1
- package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
- package/dist/sheet.js +1 -1
- package/dist/sidebar.js +216 -114
- package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/spa-view.d.ts +1 -0
- package/dist/spa-view.js +46 -0
- package/dist/spectrum-walk-BVzA7Biz.js +33 -0
- package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
- package/dist/styles/animations.css +46 -12
- package/dist/styles/border-progress.css +109 -0
- package/dist/styles/cards.css +145 -0
- package/dist/styles/completion-seal.css +131 -0
- package/dist/styles/components.css +2 -3
- package/dist/styles/configurator.css +55 -0
- package/dist/styles/critical-partition.mjs +162 -0
- package/dist/styles/critical.css +12 -0
- package/dist/styles/deferred.css +33 -0
- package/dist/styles/dock/cta-seat.css +87 -0
- package/dist/styles/dock/density.css +198 -0
- package/dist/styles/dock/layers.css +101 -29
- package/dist/styles/dock/morph-bridge.css +54 -18
- package/dist/styles/dock/morph.css +132 -7
- package/dist/styles/dock/overflow.css +28 -2
- package/dist/styles/dock/search.css +68 -0
- package/dist/styles/dock/shape.css +124 -0
- package/dist/styles/dock/shell.css +77 -21
- package/dist/styles/dock/stack-rail.css +264 -0
- package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
- package/dist/styles/dock-controls/icon-button.css +14 -0
- package/dist/styles/dock.css +43 -1
- package/dist/styles/drawer.css +81 -35
- package/dist/styles/glass/accent-tone.css +66 -0
- package/dist/styles/glass/control-surfaces.css +167 -0
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +147 -41
- package/dist/styles/glass/material.css +78 -15
- package/dist/styles/glass/reveal.css +136 -0
- package/dist/styles/glass/rim.css +110 -0
- package/dist/styles/glass/surfaces.css +148 -129
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +13 -0
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +77 -15
- package/dist/styles/index.css +36 -9
- package/dist/styles/instrument-chassis.css +66 -3
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/scroll-chrome.css +123 -0
- package/dist/styles/scroll-driven.css +38 -0
- package/dist/styles/segmented-tabs.css +81 -14
- package/dist/styles/theme/bridges.css +33 -0
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +24 -2
- package/dist/styles/tokens/color-radius.css +13 -3
- package/dist/styles/tokens/dark-arm.css +137 -32
- package/dist/styles/tokens/glass-deep.css +100 -0
- package/dist/styles/tokens/glass-fx.css +376 -0
- package/dist/styles/tokens/glass.css +131 -351
- package/dist/styles/tokens/light-dark.css +16 -3
- package/dist/styles/tokens/offsets.css +143 -0
- package/dist/styles/tokens/on-glass-fg.css +39 -0
- package/dist/styles/tokens/property-regs.css +260 -0
- package/dist/styles/tokens/scale-paper.css +168 -96
- package/dist/styles/tokens/scheme-motion.css +114 -38
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/sizing-config.css +110 -0
- package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
- package/dist/styles/tokens.css +14 -3
- package/dist/styles/typography/semantic.css +26 -13
- package/dist/styles/typography/utilities.css +22 -7
- package/dist/styles/utilities/a11y-overrides.css +20 -5
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +307 -0
- package/dist/styles/utilities/base.css +47 -261
- package/dist/styles/utilities/btn.css +17 -4
- package/dist/styles/utilities/components.css +31 -6
- package/dist/styles/utilities/metal.css +215 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/switch.js +1 -1
- package/dist/tabs.js +220 -107
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +10 -10
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +2 -2
- package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
- package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
- package/dist/useConfiguratorState-4xblKfwd.js +162 -0
- package/dist/useControlSize-SH1UmJCi.js +9 -0
- package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
- package/dist/useDragMorph-BUgAC-zK.js +102 -0
- package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
- package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
- package/dist/useLiquidPress-BooG97RY.js +39 -0
- package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
- package/dist/useScrollChrome-D66AVP7C.js +258 -0
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-BWDnKIwh.js +71 -0
- package/dist/useSpringPress-B1-Czp-V.js +36 -0
- package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/useViewTransition-CUI1nAgn.js +95 -0
- package/dist/vSpecular-EX7loENl.js +68 -0
- package/dist/vendor-B2qOlYY3.js +239 -0
- package/dist/virtual.d.ts +1 -0
- package/dist/virtual.js +225 -0
- package/dist/watercolor-dot.js +117 -74
- package/package.json +252 -28
- package/src/styles/animations.css +46 -12
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +145 -0
- package/src/styles/completion-seal.css +131 -0
- package/src/styles/configurator.css +55 -0
- package/src/styles/critical-partition.mjs +162 -0
- package/src/styles/dock/cta-seat.css +87 -0
- package/src/styles/dock/density.css +198 -0
- package/src/styles/dock/layers.css +101 -29
- package/src/styles/dock/morph-bridge.css +54 -18
- package/src/styles/dock/morph.css +132 -7
- package/src/styles/dock/overflow.css +28 -2
- package/src/styles/dock/search.css +68 -0
- package/src/styles/dock/shape.css +124 -0
- package/src/styles/dock/shell.css +77 -21
- package/src/styles/dock/stack-rail.css +264 -0
- package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
- package/src/styles/dock-controls/icon-button.css +14 -0
- package/src/styles/dock.css +43 -1
- package/src/styles/drawer.css +81 -35
- package/src/styles/glass/accent-tone.css +66 -0
- package/src/styles/glass/control-surfaces.css +167 -0
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +147 -41
- package/src/styles/glass/material.css +78 -15
- package/src/styles/glass/reveal.css +136 -0
- package/src/styles/glass/rim.css +110 -0
- package/src/styles/glass/surfaces.css +148 -129
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +13 -0
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +77 -15
- package/src/styles/index.css +27 -0
- package/src/styles/instrument-chassis.css +66 -3
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/scroll-chrome.css +123 -0
- package/src/styles/scroll-driven.css +38 -0
- package/src/styles/segmented-tabs.css +81 -14
- package/src/styles/theme/bridges.css +33 -0
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +24 -2
- package/src/styles/tokens/color-radius.css +13 -3
- package/src/styles/tokens/dark-arm.css +137 -32
- package/src/styles/tokens/glass-deep.css +100 -0
- package/src/styles/tokens/glass-fx.css +376 -0
- package/src/styles/tokens/glass.css +131 -351
- package/src/styles/tokens/light-dark.css +16 -3
- package/src/styles/tokens/offsets.css +143 -0
- package/src/styles/tokens/on-glass-fg.css +39 -0
- package/src/styles/tokens/property-regs.css +260 -0
- package/src/styles/tokens/scale-paper.css +168 -96
- package/src/styles/tokens/scheme-motion.css +114 -38
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/sizing-config.css +110 -0
- package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
- package/src/styles/tokens.css +14 -3
- package/src/styles/typography/semantic.css +26 -13
- package/src/styles/typography/utilities.css +22 -7
- package/src/styles/utilities/a11y-overrides.css +20 -5
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +307 -0
- package/src/styles/utilities/base.css +47 -261
- package/src/styles/utilities/btn.css +17 -4
- package/src/styles/utilities/components.css +31 -6
- package/src/styles/utilities/metal.css +215 -0
- package/src/styles/utilities.css +14 -7
- package/dist/CardAction-XH4YBVEK.js +0 -158
- package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
- package/dist/DialogFooter-8eZbdmPc.js +0 -165
- package/dist/HoverCardContent-DkMaQzH5.js +0 -83
- package/dist/Input-DVG_J0ne.js +0 -55
- package/dist/Notification-DKjKsQq8.js +0 -100
- package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
- package/dist/Separator-BArl4OaB.js +0 -37
- package/dist/Switch-Dr--uLGH.js +0 -47
- package/dist/Toaster-Bm_HQSpc.js +0 -263
- package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
- package/dist/TooltipProvider-B3MkB_8P.js +0 -104
- package/dist/button-BNDWhAZb.js +0 -81
- package/dist/check-njhk-vfu.js +0 -7
- package/dist/chevron-down-DKkxb4VV.js +0 -7
- package/dist/chevron-right-CPXbqQQz.js +0 -7
- package/dist/chevron-up-n_24SqI-.js +0 -7
- package/dist/color-DweYl7pE.js +0 -86
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
- package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
- package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
- package/dist/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/styles/dock/rail-extend.css +0 -397
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-kiIlun8I.js +0 -303
- package/dist/useRAFLoop-CdwJ7284.js +0 -109
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CvopqiFr.js +0 -108
- package/dist/useViewTransition-COsPjQVZ.js +0 -47
- package/dist/x-BUwTKe50.js +0 -10
- package/src/styles/dock/rail-extend.css +0 -397
- /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.js} +0 -0
- /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-CqwjnfLv.js} +0 -0
- /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
- /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
- /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
- /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
- /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
- /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
- /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.js} +0 -0
- /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
- /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
- /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/* dock/cta-seat.css — the `[data-cta-pending]` CTA-receive landing SEAT (BC.W-AX-DOCK-
|
|
2
|
+
* CTA-SEAT; the speedtest-AX BC-W2 + BC-W3 fold).
|
|
3
|
+
*
|
|
4
|
+
* THE MOVE. `useDockCtaReceive` (the BB.B2 morph half) flies an EXTERNAL CTA onto a
|
|
5
|
+
* dock control's rect; this partial makes the control it lands on a SEAT that was
|
|
6
|
+
* visibly RESERVED for it. While the CTA is in flight (or pending), the target dock
|
|
7
|
+
* control carries `data-cta-pending` (written by `setPending()` on the
|
|
8
|
+
* `useDockCtaReceive` return): the control shows a quiet dim GHOST (a placeholder
|
|
9
|
+
* awaiting its arrival) AND reserves its resting footprint from frame 0 so the dock
|
|
10
|
+
* box does NOT jump when the CTA lands. On `clearPending()` (the default hand-off
|
|
11
|
+
* fires it as the CTA lands) the attribute is removed and the seat REVEALS its real
|
|
12
|
+
* content with a plain `transition: opacity` FLIP.
|
|
13
|
+
*
|
|
14
|
+
* THE NO-BOX-JUMP (T2). The reserve is a STATIC `min-inline-size`/`min-block-size`
|
|
15
|
+
* keyed off `--dock-control-size`/`--dock-layer-height` (the control's resting box) —
|
|
16
|
+
* a ONE-TIME reservation set the instant `setPending()` fires, NEVER an animated
|
|
17
|
+
* dimension (the W-DESKTOP-RESERVE static-frame-0 precedent). The dock's shrink-wrap
|
|
18
|
+
* is already at the seated width, so the CTA lands into an already-sized hole; the box
|
|
19
|
+
* never grows on reveal. `proof:no-layout-animation` holds — no `transition: width`/
|
|
20
|
+
* animated min-* anywhere here.
|
|
21
|
+
*
|
|
22
|
+
* THE FLIP REVEAL (T3). The seat is a CONTENT swap on an already-sized box, NOT a box
|
|
23
|
+
* morph — so the reveal is a PLAIN `transition: opacity` on the `--ease-out`
|
|
24
|
+
* no-overshoot register (a content reveal must not overshoot — W-MOTION-CANON P2). It
|
|
25
|
+
* does NOT ride the dock collapse/expand morph-stagger (`--dock-expand-t`/the child
|
|
26
|
+
* stagger); re-using the morph clock would read as a janky stagger-restart on a
|
|
27
|
+
* content reveal.
|
|
28
|
+
*
|
|
29
|
+
* RECT-DRIVEN, LAYOUT-AGNOSTIC (Gate-1 Q5). The seat targets `[data-cta-pending]` on
|
|
30
|
+
* ANY dock control — it makes NO assumption about a skip-arrow affordance (a
|
|
31
|
+
* consumer-side functional skip control that may or may not be present). The reserve
|
|
32
|
+
* is the control's own resting footprint; the seat works with or without arrows.
|
|
33
|
+
*
|
|
34
|
+
* COMPOSITOR-ONLY. `setPending`/`clearPending` toggle the data attribute; this partial
|
|
35
|
+
* paints with `opacity` + the static reserve. No layout property is animated. The
|
|
36
|
+
* `--cta-seat-*` knobs are the consumer retune seam.
|
|
37
|
+
*
|
|
38
|
+
* @import-ed by dock.css in the dock partial cascade, in the SAME `@layer components`. */
|
|
39
|
+
|
|
40
|
+
@layer components {
|
|
41
|
+
/* The armed seat — the control is RESERVED. The static min-*-size locks the resting
|
|
42
|
+
footprint from frame 0 (the no-box-jump); the dim opacity is the placeholder
|
|
43
|
+
ghost awaiting the CTA's arrival. The `transition: opacity` is declared HERE (not
|
|
44
|
+
only on the cleared state) so the GHOST→content reveal is a smooth fade in BOTH
|
|
45
|
+
directions on the SAME compositor-safe register — the box is already sized, only
|
|
46
|
+
the opacity moves. */
|
|
47
|
+
[data-cta-pending] {
|
|
48
|
+
/* The STATIC resting-geometry reserve (T2) — a one-time min-*-size off the
|
|
49
|
+
control's own resting box. NEVER transitioned (an animated dimension
|
|
50
|
+
CLS-storms — the proof:no-layout-animation floor). */
|
|
51
|
+
min-inline-size: var(--dock-control-size, var(--size-icon-btn));
|
|
52
|
+
min-block-size: var(
|
|
53
|
+
--dock-layer-height,
|
|
54
|
+
var(--dock-control-size, var(--size-icon-btn))
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
/* The dim GHOST placeholder — the control awaits its arrival (T3). */
|
|
58
|
+
opacity: var(--cta-seat-ghost-opacity, 0.35);
|
|
59
|
+
|
|
60
|
+
/* The FLIP reveal register — a PLAIN opacity transition on --ease-out
|
|
61
|
+
(no-overshoot). Default duration tracks the snappy spring envelope so the
|
|
62
|
+
reveal reads as the same family as the morph that lands the CTA. */
|
|
63
|
+
transition: opacity
|
|
64
|
+
var(--cta-seat-reveal-duration, var(--spring-snappy-duration))
|
|
65
|
+
var(--ease-out);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* The seated CONTENT also dims while pending — the icon/label is the thing that
|
|
69
|
+
fades back in on reveal. Direct-child targeting keeps the seat layout-agnostic
|
|
70
|
+
(it does not name a control class — Q5). */
|
|
71
|
+
[data-cta-pending] > * {
|
|
72
|
+
opacity: var(--cta-seat-ghost-opacity, 0.35);
|
|
73
|
+
transition: opacity
|
|
74
|
+
var(--cta-seat-reveal-duration, var(--spring-snappy-duration))
|
|
75
|
+
var(--ease-out);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* PRM — the reveal is an INSTANT opacity swap (the vestibular floor; the seat snaps
|
|
79
|
+
to its content, zero transition frames). The reserve is unchanged (it is static,
|
|
80
|
+
not a motion). The gesture completes; the animation is off. */
|
|
81
|
+
@media (prefers-reduced-motion: reduce) {
|
|
82
|
+
[data-cta-pending],
|
|
83
|
+
[data-cta-pending] > * {
|
|
84
|
+
transition: none;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -11,6 +11,89 @@
|
|
|
11
11
|
* @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
|
|
12
12
|
* carve is isomorphic (same layer, same source order → ZERO visual delta). */
|
|
13
13
|
|
|
14
|
+
/* ── BB.W-HIERARCHY2 — the CONTENT-side anti-collision gutter ───────────────────
|
|
15
|
+
`--dock-content-safe-inset` is the structural CONTENT-side counterpart to the
|
|
16
|
+
dock-collision SEAT fix (W-CHIP-GRAZE + W-DOCK-RAIL-SEAT-FINAL own the chip-fan
|
|
17
|
+
SEAT — the chips fan off-canvas into the rail's dead gutter, chipOverMain:false on
|
|
18
|
+
EVERY route by topology). This token reserves a guaranteed safe-inset gutter on the
|
|
19
|
+
CONTENT column so the page-title band is structurally clear of any chip reach even
|
|
20
|
+
on a route added WITHOUT a per-route audit (the anti-gameability the gestalt gate
|
|
21
|
+
wants). It is keyed to the dock reach (`--dock-rail-extend-length`, the rail's
|
|
22
|
+
beyond-edge overrun) so the content gutter tracks the dock geometry in lockstep,
|
|
23
|
+
and it rides `--dock-scale` transitively through that reach token.
|
|
24
|
+
|
|
25
|
+
THE DE-OVERLOAD IS BINDING (distinct geometry concerns, distinct tokens):
|
|
26
|
+
`--dock-control-safe-inset` (per-density, below) is the dock CONTROL plate-clearance
|
|
27
|
+
inset (the painted plate floors a notch below its track cell — BA.W-DOCK-GEOMETRY,
|
|
28
|
+
owned by proof:dock-plate-clearance); `--dock-content-safe-inset` is the CONTENT-band
|
|
29
|
+
gutter (the content column reserves dead inline space the chips can never share).
|
|
30
|
+
The two close the collision from BOTH sides — the chip seat (the SEAT waves) AND the
|
|
31
|
+
content gutter (this token) — coordinated on the SAME dead inline gutter: the content
|
|
32
|
+
gutter is the RESERVE, the gutter-fan lands the chips in it (ONE gutter, two
|
|
33
|
+
consumers). NEVER re-point this AT --dock-control-safe-inset (the de-overload). */
|
|
34
|
+
:root {
|
|
35
|
+
--dock-content-safe-inset: var(--dock-rail-extend-length, 2.5rem);
|
|
36
|
+
|
|
37
|
+
/* ── BC.W-DOCK-ARBITRARY — the arbitrary-shape morph tokens ─────────────────
|
|
38
|
+
The dock morph is no longer locked to circle↔pill. The shape is now a SCALAR
|
|
39
|
+
PARAMETER: a `--dock-shape-from`/`--dock-shape-to` corner-radius pair the chrome
|
|
40
|
+
radius arm interpolates on `--dock-morph-t`, an OPT-IN `--dock-shape-clip-from`/
|
|
41
|
+
`--dock-shape-clip-to` clip-path silhouette pair (compositor-only, no layout),
|
|
42
|
+
and a `--dock-morph-max-stretch` squish cap. The library DEFAULTS preserve the
|
|
43
|
+
collapsed-perfect-circle ↔ expanded-pill identity (CLAUDE.md `aspect-ratio: 1` +
|
|
44
|
+
`--radius-dock` 9999px), so the common case needs no consumer override; a consumer
|
|
45
|
+
sets these to morph to an arbitrary silhouette (a wide bar, a teardrop, a tall
|
|
46
|
+
rail). Clean break (MEMORY: no backwards compat) — the prior hardcoded circle/pill
|
|
47
|
+
endpoints become these token DEFAULTS, no `--dock-radius-legacy`. */
|
|
48
|
+
|
|
49
|
+
/* The corner profile span — the `from`-radius (the collapsed perfect circle, a
|
|
50
|
+
9999px pill that rounds the height-pinned square into a circle) ↔ the `to`-radius
|
|
51
|
+
(the expanded pill, `--radius-dock`). Consumer-targetable: set either to any
|
|
52
|
+
radius to morph to an arbitrary corner profile. */
|
|
53
|
+
--dock-shape-from: var(--radius-dock, 9999px);
|
|
54
|
+
--dock-shape-to: var(--radius-dock, 9999px);
|
|
55
|
+
|
|
56
|
+
/* The arbitrary-silhouette span — an OPT-IN `clip-path` pair (a compositor property,
|
|
57
|
+
NO layout). DEFAULT-OFF: `none`/`none` means the rectangle/pill morph (the common
|
|
58
|
+
case) needs no clip. A consumer opts into a teardrop/blob silhouette by setting the
|
|
59
|
+
clip-from/to to two `inset()`/`path()`/`shape()` values the morph LERPS between on
|
|
60
|
+
`--dock-morph-t`. */
|
|
61
|
+
--dock-shape-clip-from: none;
|
|
62
|
+
--dock-shape-clip-to: none;
|
|
63
|
+
|
|
64
|
+
/* The squish cap — the LOW volume-preserving `--stretch` ceiling for the shape-morph
|
|
65
|
+
deformation, mirroring the tab-indicator's iOS-segmented register (the
|
|
66
|
+
`DEFAULT_INDICATOR_MAX_STRETCH` 1.08). A fast morph swells the plate then caps —
|
|
67
|
+
a lively settle, never a taffy-pull. */
|
|
68
|
+
--dock-morph-max-stretch: 1.08;
|
|
69
|
+
|
|
70
|
+
/* ── BC.W-LIQUID-MORPH — the reserve floor (the white morph can never paint) ──
|
|
71
|
+
The morph box reserves `inline-size`/`block-size: max(var(--dock-morph-to),
|
|
72
|
+
var(--dock-morph-min))` (layers.css). A degenerate `to:0` measurement (the
|
|
73
|
+
BA-VJS-1 nested-group race, glass-dock-codebase.md §2.2) would otherwise reserve
|
|
74
|
+
a ZERO-width footprint → `overflow: clip` blanks the content → the white/invisible
|
|
75
|
+
morph the user reports. The floor seats it at the collapsed-pill minimum (~44px,
|
|
76
|
+
the WCAG touch floor / `--dock-control-floor`), so a missed measurement degrades to
|
|
77
|
+
"visible at the floor," never "white." A SAFETY NET: on every healthy measurement
|
|
78
|
+
the `max()` resolves to the real `to` (inert above the floor); it fires ONLY on the
|
|
79
|
+
degenerate race. Density-scaled, riding `--dock-scale` transitively. */
|
|
80
|
+
--dock-morph-min: max(2.75rem, var(--dock-control-floor, 0px));
|
|
81
|
+
|
|
82
|
+
/* ── BC.W-DOCK-SEARCH — the collapse-on-scroll trigger-points ─────────────────
|
|
83
|
+
The dock-search optional shrink-on-scroll (composing useScrollChrome — the
|
|
84
|
+
native dual-path reader, persistent-default) reads these two tunable px
|
|
85
|
+
trigger-points: the shrink BEGINS at `--dock-search-shrink-start` of scroll and
|
|
86
|
+
reaches the compact form at `--dock-search-shrink-end` (the words
|
|
87
|
+
`scrollInflectionPoint` generalized into dock-scoped tokens). They ride
|
|
88
|
+
`--dock-scale` transitively (a coarse-pointer dock's trigger-points scale with
|
|
89
|
+
its geometry), and a consumer retunes the inflection in ONE write. NOTE the
|
|
90
|
+
PERSISTENT default — these are inert unless the consumer opts in via
|
|
91
|
+
`collapseOnScroll`; the morph itself NEVER fires on a passive scroll (the
|
|
92
|
+
iOS-27 lesson — the scroll path is the distinct compositor shrink). */
|
|
93
|
+
--dock-search-shrink-start: calc(0rem * var(--dock-scale));
|
|
94
|
+
--dock-search-shrink-end: calc(7.25rem * var(--dock-scale));
|
|
95
|
+
}
|
|
96
|
+
|
|
14
97
|
@layer components {
|
|
15
98
|
/* AX.W45 — the density cascade is threaded by the ONE `--dock-scale`
|
|
16
99
|
multiplier (default 1, lifted to `--dock-mobile-scale` on coarse pointers).
|
|
@@ -222,6 +305,121 @@
|
|
|
222
305
|
);
|
|
223
306
|
}
|
|
224
307
|
|
|
308
|
+
/* ── BC.W-AX-DOCK-COCKPIT — the `cockpit` geometry PRESET ─────────────────────
|
|
309
|
+
The tight instrument-cockpit register: a FIXED `2.75rem` control floor (the
|
|
310
|
+
Gate-1 Q6 fixed value — NOT a range) with COMPACT-tight chrome (the tightest
|
|
311
|
+
padding/gap/tile-pad, distinct from `spacious`'s LOOSE chrome at the SAME
|
|
312
|
+
2.75rem control). It closes the dock-oversize chronic (speedtest A-9): a
|
|
313
|
+
consumer opts into a dense, proportioned instrument strip — `2.75rem` control,
|
|
314
|
+
compact chrome, the label tracking the control by `--dock-label-ratio` (so the
|
|
315
|
+
label never reads OVERSIZE on the tight pill).
|
|
316
|
+
|
|
317
|
+
It is a NAMED preset, NOT a 5th density rung — the density axis stays FOUR rungs
|
|
318
|
+
(`proof:dock-unify`'s density census is unaffected). The preset is a geometry
|
|
319
|
+
OVERRIDE composing WITH a `data-density` base: `[data-preset="cockpit"]` wins the
|
|
320
|
+
control-size/layer-height/chrome by source-order (this block comes AFTER the rungs),
|
|
321
|
+
so a `<GlassDock data-density="comfortable" data-preset="cockpit">` resolves the
|
|
322
|
+
cockpit geometry. An ancestor `[data-preset="cockpit"]` scope re-declares these
|
|
323
|
+
tokens too (the substitution-vs-inheritance discipline) so descendant docks inherit.
|
|
324
|
+
|
|
325
|
+
The control floor rides the SAME `* var(--dock-scale)` thread + the `max(…,
|
|
326
|
+
--dock-control-floor)` WCAG 2.5.5 clamp as the rungs — the cockpit is tight, but
|
|
327
|
+
the coarse-pointer touch target NEVER drops below the 44px floor. */
|
|
328
|
+
.glass-dock[data-preset="cockpit"] {
|
|
329
|
+
/* The FIXED 2.75rem control floor (Q6) — the cockpit register, riding
|
|
330
|
+
`--dock-scale` + the 44px clamp. NOT a `clamp(2.5rem, …, 3rem)` range. */
|
|
331
|
+
--dock-control-size: max(
|
|
332
|
+
calc(2.75rem * var(--dock-scale)),
|
|
333
|
+
var(--dock-control-floor, 0px)
|
|
334
|
+
);
|
|
335
|
+
--dock-layer-height: max(
|
|
336
|
+
calc(2.75rem * var(--dock-scale)),
|
|
337
|
+
var(--dock-control-floor, 0px)
|
|
338
|
+
);
|
|
339
|
+
/* The TIGHT chrome — the COMPACT-rung tightness (the cockpit is a dense
|
|
340
|
+
instrument strip, NOT the spacious loosening). This is the distinction
|
|
341
|
+
from `spacious` (same control, LOOSE chrome). */
|
|
342
|
+
--dock-padding-block: calc(
|
|
343
|
+
var(--dock-density-compact-padding-block, 0.25rem) * var(--dock-scale)
|
|
344
|
+
);
|
|
345
|
+
--dock-padding-inline: calc(
|
|
346
|
+
var(--dock-density-compact-padding-inline, 0.375rem) * var(--dock-scale)
|
|
347
|
+
);
|
|
348
|
+
--dock-layer-gap: calc(
|
|
349
|
+
var(--dock-density-compact-gap, 0.25rem) * var(--dock-scale)
|
|
350
|
+
);
|
|
351
|
+
/* BA.W-DOCK-GEOMETRY — the control-plate clearance inset, in lockstep with
|
|
352
|
+
the rungs (the 10%-per-side painted-plate inset). */
|
|
353
|
+
--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
|
|
354
|
+
--dock-tile-min: calc(
|
|
355
|
+
var(--dock-control-size) + var(--dock-tile-pad, 1rem) * var(--dock-scale)
|
|
356
|
+
);
|
|
357
|
+
--dock-trigger-padding-block: calc(
|
|
358
|
+
var(--dock-density-compact-trigger-padding-block, 0.1875rem) *
|
|
359
|
+
var(--dock-scale)
|
|
360
|
+
);
|
|
361
|
+
--dock-trigger-padding-inline: calc(
|
|
362
|
+
var(--dock-density-compact-trigger-padding-inline, 0.4375rem) *
|
|
363
|
+
var(--dock-scale)
|
|
364
|
+
);
|
|
365
|
+
--dock-tab-padding-block: calc(
|
|
366
|
+
var(--dock-density-compact-tab-padding-block, 0.3125rem) *
|
|
367
|
+
var(--dock-scale)
|
|
368
|
+
);
|
|
369
|
+
--dock-tab-padding-inline: calc(
|
|
370
|
+
var(--dock-density-compact-tab-padding-inline, 0.625rem) *
|
|
371
|
+
var(--dock-scale)
|
|
372
|
+
);
|
|
373
|
+
--dock-tab-h: calc(32px * var(--dock-scale));
|
|
374
|
+
/* The cockpit-tight label ratio — the label reads EVEN tighter relative to
|
|
375
|
+
its control than the `:root` default (the A-9 close). The `dock-label`
|
|
376
|
+
font-size is `calc(--dock-control-size * --dock-label-ratio)`; the cockpit
|
|
377
|
+
tunes the ratio DOWN so a 2.75rem cockpit control carries a label sized for
|
|
378
|
+
the dense strip, not the comfortable-default proportion. */
|
|
379
|
+
--dock-label-ratio: 0.42;
|
|
380
|
+
/* RE-RESOLVE the density-painted glyph tokens against the cockpit
|
|
381
|
+
`--dock-layer-height` (the same substitution-vs-inheritance trap the
|
|
382
|
+
`.glass-dock[data-density]` re-resolve below fixes — a `[data-preset]`
|
|
383
|
+
scope paints its OWN `--dock-layer-height`, so the `:root`-derived glyph
|
|
384
|
+
would freeze at the fallback). Identical formula to the density re-resolve;
|
|
385
|
+
only the resolution element moves so the cockpit height flows into the glyph. */
|
|
386
|
+
--dock-icon-glyph: max(
|
|
387
|
+
calc(var(--dock-layer-height) * var(--dock-icon-glyph-ratio)),
|
|
388
|
+
var(--dock-icon-glyph-floor)
|
|
389
|
+
);
|
|
390
|
+
--dock-control-glyph-size: var(--dock-icon-glyph);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/* BB.W-PERF-PRODUCER A′-6 — RE-RESOLVE the glyph token inside the density-painted
|
|
394
|
+
scope. `--dock-icon-glyph` (offsets-sizing.css) is a RATIO of
|
|
395
|
+
`--dock-layer-height`, but density.css paints `--dock-layer-height` ONLY on
|
|
396
|
+
`.glass-dock[data-density]` — the `:root` `--dock-icon-glyph` definition reads
|
|
397
|
+
`--dock-layer-height` at `:root` (the inline fallback ladder), so it would
|
|
398
|
+
FREEZE at the fallback rather than track the per-rung painted height (the SAME
|
|
399
|
+
substitution-vs-inheritance trap the R5-1 sweep fixed for
|
|
400
|
+
`--dock-collapsed-summary-min-size` in overflow.css). Re-resolving it HERE, on
|
|
401
|
+
the element that paints `--dock-layer-height`, lets the per-density height flow
|
|
402
|
+
into the glyph so a `spacious` dock's glyph grows in lockstep with the shelf
|
|
403
|
+
(the value.js D5-1 defect). The formula is IDENTICAL to the `:root` definition;
|
|
404
|
+
only the resolution element moves. The WCAG floor + the `--dock-icon-glyph-ratio`
|
|
405
|
+
knob ride through unchanged; the `.dark-mode-toggle-button > svg` mirror reads
|
|
406
|
+
the same re-resolved token so both glyphs track the density axis. */
|
|
407
|
+
.glass-dock[data-density] {
|
|
408
|
+
--dock-icon-glyph: max(
|
|
409
|
+
calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
|
|
410
|
+
var(--dock-icon-glyph-floor)
|
|
411
|
+
);
|
|
412
|
+
/* BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — RE-RESOLVE the in-dock
|
|
413
|
+
control-glyph knob against the density-painted `--dock-icon-glyph` (the
|
|
414
|
+
same substitution-vs-inheritance trap as the glyph above: a `:root`-only
|
|
415
|
+
`--dock-control-glyph-size` would freeze at the `:root` glyph while
|
|
416
|
+
`--dock-icon-glyph` lifts per density). Re-declaring it HERE keeps the
|
|
417
|
+
docked dark-toggle glyph + its inset pad on the density axis with the nav
|
|
418
|
+
glyphs. Identical to the `:root` default; only the resolution element
|
|
419
|
+
moves so the density-painted glyph flows in. */
|
|
420
|
+
--dock-control-glyph-size: var(--dock-icon-glyph);
|
|
421
|
+
}
|
|
422
|
+
|
|
225
423
|
/* Density-audacious narrow-box carve (AV.W16 TW3) — when the dock's OWN
|
|
226
424
|
box is narrow the audacious-dock label glyphs compress so the chrome
|
|
227
425
|
doesn't overflow its host (≤14px below 30rem, 15px 30–45rem). Keyed off
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Carved from the dock.css god-module (slice 25). This partial owns the dock's
|
|
5
5
|
* layer model: the `.dock-layers` grid container + the FLIP-driven box-size morph
|
|
6
|
-
* (
|
|
6
|
+
* (BB.W-DOCK-MORPH-FAMILY — a `transform: scale()` over a reserved settled `to`
|
|
7
|
+
* footprint, the live `--dock-morph-scale` derived off the ONE `--dock-morph-t`
|
|
8
|
+
* scalar; NO per-frame layout-axis lerp), the unified
|
|
7
9
|
* `.is-active` / `.is-leaving` 3-state crossfade + hit-test contract (the
|
|
8
10
|
* a11y-006 anchor), the per-child reveal stagger (the `--dock-stagger-*` ramp),
|
|
9
11
|
* and the `layout="grid"` 2D tile-grid arrangement. The `.dock-layer-group` /
|
|
@@ -37,46 +39,114 @@
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
|
|
40
|
-
/*
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
on the
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
`
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
42
|
+
/* BB.W-DOCK-MORPH-FAMILY (a)/(b) — the box morph is now a COMPOSITOR TRANSFORM
|
|
43
|
+
over a RESERVED SETTLED footprint, NOT a per-frame `inline-size` lerp (the C3
|
|
44
|
+
"too slow and laggy" relayout-every-frame defect). `useLayerTransition` /
|
|
45
|
+
the orchestrator still measure the from→to size ONCE per swap (the allowed
|
|
46
|
+
one-time FLIP measurement) and write `--dock-morph-from`/`--dock-morph-to` px
|
|
47
|
+
on the morphing element — but the layout axis is set to the SETTLED `to`
|
|
48
|
+
value (ONE layout solve, the box reserves its end footprint from frame 0), and
|
|
49
|
+
the live `--dock-morph-t` scalar drives a `transform: scale()` between the
|
|
50
|
+
from/to RATIO and 1. The content lays out COMPLETE at `to` behind the
|
|
51
|
+
`overflow: clip` aperture (shell.css), and the scaled-down box reads as the
|
|
52
|
+
smaller in-flight footprint (the clip uncovers the scaled box, never a
|
|
53
|
+
half-painted growing layout — the reveal-seat (b) fix). `--dock-morph-ratio`
|
|
54
|
+
is `from/to` (guarded: `to:0` → ratio 0); `--dock-morph-scale` runs
|
|
55
|
+
`ratio → 1` as `t: 0 → 1`. `transform-origin` anchors the pinned edge
|
|
56
|
+
(inline-start for the horizontal aperture) so the box grows from the correct
|
|
57
|
+
side. NO `inline-size`/`block-size` reads the live scalar — the CDP Layout
|
|
58
|
+
track stays FLAT through the morph (the F1 compositor-bound floor). */
|
|
53
59
|
.glass-dock[data-morphing] .dock-layers,
|
|
54
60
|
.glass-dock[data-morphing] .dock-layer-stack {
|
|
55
|
-
--dock-morph-
|
|
56
|
-
var(--dock-morph-from, 0px)
|
|
57
|
-
|
|
61
|
+
--dock-morph-ratio: calc(
|
|
62
|
+
var(--dock-morph-from, 0px) / max(var(--dock-morph-to, 1px), 1px)
|
|
63
|
+
);
|
|
64
|
+
/* BC.W-LIQUID-MORPH — the SCALE FLOOR (the white morph can never paint). A
|
|
65
|
+
degenerate `from:0`/`to:0` measurement (the BA-VJS-1 nested-group race)
|
|
66
|
+
drives `--dock-morph-ratio` to 0 → `scaleX(0)` at t=0 → the zero-width void
|
|
67
|
+
`overflow: clip` blanks (the white/invisible morph, glass-dock-codebase.md
|
|
68
|
+
§2.2 fix (2)). Flooring the scale at ~6% bottoms a degenerate ratio at a
|
|
69
|
+
thin-but-VISIBLE glass sliver (clipped, but never white), recovered by the
|
|
70
|
+
next correct measurement one frame later. A SAFETY NET: a real measurement is
|
|
71
|
+
always well above 6%, so the `max()` is inert on the healthy path (the
|
|
72
|
+
gestalt of a healthy morph is byte-unchanged). */
|
|
73
|
+
--dock-morph-scale: max(
|
|
74
|
+
calc(
|
|
75
|
+
var(--dock-morph-ratio) +
|
|
76
|
+
(1 - var(--dock-morph-ratio)) * var(--dock-morph-t, 0)
|
|
77
|
+
),
|
|
78
|
+
0.06
|
|
79
|
+
);
|
|
80
|
+
/* The box RESERVES its settled `to` footprint — a single layout solve, NOT
|
|
81
|
+
the live scalar calc. The transform composites over it.
|
|
82
|
+
BC.W-LIQUID-MORPH — the RESERVE FLOOR: `max(var(--dock-morph-to),
|
|
83
|
+
var(--dock-morph-min))` so a `to:0` measurement reserves the collapsed-pill
|
|
84
|
+
minimum (~44px), never a zero-width box (the white morph root). Inert above
|
|
85
|
+
the floor on every healthy measurement. */
|
|
86
|
+
inline-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
|
|
87
|
+
transform: scaleX(var(--dock-morph-scale));
|
|
88
|
+
transform-origin: left center;
|
|
89
|
+
will-change: transform;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* BC.W-DOCK-ROOT-MORPH — the ROOT box rides the scalar (THE snap fix). The inner
|
|
93
|
+
`.dock-layers` above reserves its settled `to` + morphs via `scaleX()` (paint-
|
|
94
|
+
only), so the root `.glass-dock` (inline-flex) shrink-wraps to that reserved full
|
|
95
|
+
`to` and SNAPS on frame 0 while the inner scales smoothly — yet the gate + the
|
|
96
|
+
page reflow both read the ROOT box. The orchestrator (dockMorphContext.ts)
|
|
97
|
+
measures + writes the root's own `--dock-root-morph-{from,to}` px span; this
|
|
98
|
+
drives the morph-axis size as a `calc()` of the SAME `--dock-morph-t` scalar the
|
|
99
|
+
spring glides — NOT a `transition: width` (proof:no-layout-animation stays GREEN;
|
|
100
|
+
a `calc()` over the scalar is not a transition). The span is armed inline ONLY by
|
|
101
|
+
the outer collapse↔expand swap; a nested-only pane-swap leaves it unset → the
|
|
102
|
+
fallback-less `var()` invalidates the rule → the box returns to its at-rest
|
|
103
|
+
shrink-wrap (the inert path). Horizontal morphs `inline-size`, vertical morphs
|
|
104
|
+
`block-size` (matching the orchestrator's `morphAxisProp` axis pick). */
|
|
105
|
+
.glass-dock[data-morphing]:not(.vertical) {
|
|
106
|
+
inline-size: calc(
|
|
107
|
+
var(--dock-root-morph-from) +
|
|
108
|
+
(var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
|
|
109
|
+
var(--dock-morph-t, 0)
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
.glass-dock[data-morphing].vertical {
|
|
113
|
+
block-size: calc(
|
|
114
|
+
var(--dock-root-morph-from) +
|
|
115
|
+
(var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
|
|
58
116
|
var(--dock-morph-t, 0)
|
|
59
117
|
);
|
|
60
|
-
inline-size: var(--dock-morph-size);
|
|
61
118
|
}
|
|
62
119
|
|
|
63
120
|
/* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
|
|
64
121
|
BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
|
|
65
122
|
measures/writes the same `--dock-morph-from/to` span on the block axis
|
|
66
123
|
(`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
|
|
67
|
-
vertical→`block-size`)
|
|
68
|
-
|
|
69
|
-
|
|
124
|
+
vertical→`block-size`).
|
|
125
|
+
BB.W-DOCK-MORPH-FAMILY (a)/(b) — the vertical box reserves its settled `to`
|
|
126
|
+
BLOCK footprint + composites a `scaleY()` over it on the SAME `--dock-morph-t`
|
|
127
|
+
scalar (the inverse axis of the horizontal `scaleX`), `transform-origin` at the
|
|
128
|
+
block-start pinned edge. NO live-scalar `block-size` calc → no per-frame
|
|
129
|
+
relayout on the vertical axis either. */
|
|
70
130
|
.glass-dock.vertical[data-morphing] .dock-layers {
|
|
71
131
|
inline-size: auto;
|
|
72
|
-
|
|
132
|
+
/* BC.W-LIQUID-MORPH — the vertical RESERVE FLOOR (the inverse axis twin of the
|
|
133
|
+
horizontal floor above): a `to:0` block measurement reserves the collapsed-pill
|
|
134
|
+
minimum, never a zero-height void. Inert above the floor on every healthy read. */
|
|
135
|
+
block-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
|
|
136
|
+
transform: scaleY(var(--dock-morph-scale));
|
|
137
|
+
transform-origin: center top;
|
|
138
|
+
will-change: transform;
|
|
73
139
|
}
|
|
74
140
|
|
|
75
|
-
/* A vertical inner group morphs the BLOCK axis — the same
|
|
76
|
-
|
|
141
|
+
/* A vertical inner group morphs the BLOCK axis — the same settled-footprint
|
|
142
|
+
reserve + `scaleY()` composite over it. */
|
|
77
143
|
.glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
|
|
78
144
|
inline-size: auto;
|
|
79
|
-
|
|
145
|
+
/* BC.W-LIQUID-MORPH — the nested vertical group's reserve is floored too. */
|
|
146
|
+
block-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
|
|
147
|
+
transform: scaleY(var(--dock-morph-scale));
|
|
148
|
+
transform-origin: center top;
|
|
149
|
+
will-change: transform;
|
|
80
150
|
}
|
|
81
151
|
|
|
82
152
|
/* The inner DockLayerGroup stack has no collapsed/expanded class, so its
|
|
@@ -311,10 +381,12 @@
|
|
|
311
381
|
from these state rules; they keep only their non-overflow concerns.
|
|
312
382
|
|
|
313
383
|
AX.W01 — `:not([data-morphing])` gate: at REST expanded the layers fill the
|
|
314
|
-
box (`width:100%`), but DURING the morph the
|
|
315
|
-
|
|
316
|
-
here would win on specificity and
|
|
317
|
-
hands the
|
|
384
|
+
box (`width:100%`), but DURING the morph the reserved `to`-footprint +
|
|
385
|
+
`transform: scale()` (BB.W-DOCK-MORPH-FAMILY, above) is the SOLE size
|
|
386
|
+
authority — a `width:100%` here would win on specificity and fight the
|
|
387
|
+
reserved footprint. The gate hands the box to the transform for the morph and
|
|
388
|
+
back to 100% on settle (the transform/reserve vanish when `[data-morphing]`
|
|
389
|
+
clears). */
|
|
318
390
|
.glass-dock.expanded:not(.fit-content):not([data-morphing]) .dock-layers {
|
|
319
391
|
width: 100%;
|
|
320
392
|
}
|
|
@@ -76,36 +76,72 @@
|
|
|
76
76
|
color-mix(in oklab, var(--card), var(--foreground) 6%) 100%
|
|
77
77
|
);
|
|
78
78
|
border-radius: 999px;
|
|
79
|
-
/*
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
/* BC.W-GLASS-GLOW-FIX (Atlas A-8 root, CANDIDATE 4) — BOUND the 120%×120% radial
|
|
80
|
+
to the plate box. The gradient SIZE (120%) reaches past the plate's content box
|
|
81
|
+
so the domed droplet would over-paint were the silhouette ever un-clipped;
|
|
82
|
+
`overflow: clip` keeps the radial fill inside the teardrop silhouette (the
|
|
83
|
+
`border-radius: 999px` capsule), so the oversized radial can NEVER paint a giant
|
|
84
|
+
cream blob past the plate. The domed-droplet read is PRESERVED — the radial still
|
|
85
|
+
fills the plate; only the past-bounds escape is killed. Defensive, structural,
|
|
86
|
+
zero visual change (the border-radius already clips the fill — this makes the
|
|
87
|
+
bound explicit so the leak-class gate holds). */
|
|
88
|
+
overflow: clip;
|
|
89
|
+
/* BC.W-LIQUID-MORPH — the teardrop silhouette is the COMPOSITOR `clip-path`
|
|
90
|
+
inset (NOT a per-frame `width`/`height` — the layout-jank root, glass-dock-
|
|
91
|
+
codebase.md §2.2 fix (3)). Each plate RESERVES its MAX footprint (a single
|
|
92
|
+
layout solve, the settled box) and the silhouette necks via a `clip-path:
|
|
93
|
+
inset()` interpolated on `--dock-morph-t`. The volume-preserving squish reads
|
|
94
|
+
`--stretch` (the liquid-flex derivative) on `scale`. NO `width`/`height`
|
|
95
|
+
animation — only `clip-path`/`scale`/`opacity` (compositor/paint), so the
|
|
96
|
+
CDP Layout track stays FLAT across the morph (proof:no-layout-animation +
|
|
97
|
+
proof:liquid-morph M4). will-change promotes the compositor channels ONLY. */
|
|
98
|
+
will-change: clip-path, transform, opacity;
|
|
83
99
|
}
|
|
84
100
|
|
|
85
|
-
/* The VERTICAL plate — a tall capsule (the t=0 silhouette). It
|
|
86
|
-
|
|
87
|
-
|
|
101
|
+
/* The VERTICAL plate — a tall capsule (the t=0 silhouette). It RESERVES its full
|
|
102
|
+
tall footprint (a one-time layout solve, NOT a per-frame height lerp) and necks
|
|
103
|
+
its silhouette toward the center via a `clip-path: inset()` whose block insets
|
|
104
|
+
GROW as t: 0 → 0.5 (the tall capsule collapses to a thin neck at the midpoint
|
|
105
|
+
where the goo merges, gone by t=1). `--dock-bridge-v-neck` is the inset travel:
|
|
106
|
+
0 at t=0 (full height shows) → ~half the reserved height by t=0.5 (necked to a
|
|
107
|
+
circle ~the width). The box footprint is static; the clip carves the silhouette
|
|
108
|
+
on the compositor. */
|
|
88
109
|
.dock-morph-bridge-plate--vertical {
|
|
89
110
|
width: var(--dock-bridge-v-w, 3.25rem);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
111
|
+
height: var(--dock-bridge-v-h, 16rem);
|
|
112
|
+
/* the block-axis inset travel: 0 → (half the reserved height − half the width)
|
|
113
|
+
so the necked silhouette is ~a circle (the width) at t=0.5. */
|
|
114
|
+
--dock-bridge-v-neck: calc(
|
|
115
|
+
(var(--dock-bridge-v-h, 16rem) - var(--dock-bridge-v-w, 3.25rem)) / 2 *
|
|
116
|
+
clamp(0, calc(var(--dock-morph-t, 0) * 2), 1)
|
|
117
|
+
);
|
|
118
|
+
clip-path: inset(
|
|
119
|
+
var(--dock-bridge-v-neck) 0 var(--dock-bridge-v-neck) 0 round 999px
|
|
95
120
|
);
|
|
96
121
|
opacity: calc(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1));
|
|
97
122
|
/* squish Y on travel (the tall plate stretches along its collapse axis) */
|
|
98
123
|
scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
|
|
99
124
|
}
|
|
100
125
|
|
|
101
|
-
/* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It
|
|
102
|
-
|
|
103
|
-
|
|
126
|
+
/* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It RESERVES its full
|
|
127
|
+
wide footprint (a one-time layout solve) and grows its silhouette from the center
|
|
128
|
+
via a `clip-path: inset()` whose inline insets SHRINK as t: 0.5 → 1 (a thin neck
|
|
129
|
+
at the midpoint → the full wide bar at t=1). `--dock-bridge-h-neck` is the inset
|
|
130
|
+
travel: ~half the reserved width − half the height at t=0.5 (necked to a circle)
|
|
131
|
+
→ 0 at t=1 (full width shows). NO per-frame width — the clip carves the silhouette
|
|
132
|
+
on the compositor. */
|
|
104
133
|
.dock-morph-bridge-plate--horizontal {
|
|
134
|
+
width: var(--dock-bridge-h-w, 18rem);
|
|
105
135
|
height: var(--dock-bridge-h-h, 3.25rem);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
136
|
+
/* the inline-axis inset travel: (half the reserved width − half the height) at
|
|
137
|
+
t=0.5 → 0 at t=1, so the necked silhouette is ~a circle (the height) at the
|
|
138
|
+
midpoint and the full bar at t=1. */
|
|
139
|
+
--dock-bridge-h-neck: calc(
|
|
140
|
+
(var(--dock-bridge-h-w, 18rem) - var(--dock-bridge-h-h, 3.25rem)) / 2 *
|
|
141
|
+
(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1))
|
|
142
|
+
);
|
|
143
|
+
clip-path: inset(
|
|
144
|
+
0 var(--dock-bridge-h-neck) 0 var(--dock-bridge-h-neck) round 999px
|
|
109
145
|
);
|
|
110
146
|
opacity: clamp(0, calc(var(--dock-morph-t, 0) * 2), 1);
|
|
111
147
|
/* squish X on travel (the wide plate stretches along its growth axis) */
|