@mkbabb/glass-ui 4.0.1 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CardAction-CW7a0m8M.js → CardAction-8whJrLWt.js} +23 -8
- package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-D3yxgHNn.js} +23 -12
- package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-CaP7U3ZA.js} +11 -11
- package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
- package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DDRID3qC.js} +15 -15
- package/dist/{DataTable-CuKwF7wr.js → DataTable-Bc9kUtu_.js} +2 -2
- package/dist/{DialogContent-DcKK8k9i.js → DialogContent-6JtTB5x2.js} +8 -5
- package/dist/DialogFooter-9phqcRIS.js +80 -0
- package/dist/DialogScrollContent-TTuovQst.js +93 -0
- package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
- package/dist/{IconChip-BTD-nay5.js → IconChip-DhbdGdFQ.js} +1 -1
- package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-B0zimd2H.js} +1 -1
- package/dist/Input-Cg9DF62r.js +57 -0
- package/dist/{Notification-VUwexFUf.js → Notification-CphK7AAm.js} +3 -3
- package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
- package/dist/PagerDots-Cjx96la-.js +98 -0
- package/dist/{SelectScrollDownButton-CrA8F0iV.js → SelectScrollDownButton-DAKCBEdW.js} +62 -57
- package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-C2UGOkXF.js} +1 -1
- package/dist/Separator-DQcwC2TR.js +44 -0
- package/dist/Switch-B8RscmRu.js +49 -0
- package/dist/{Toaster-Bw4xR8xV.js → Toaster-D9qIHjBI.js} +1 -1
- package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BLtr3TJq.js} +2 -2
- package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
- package/dist/animated-digit.js +1 -1
- package/dist/api/index.d.ts +15 -32
- package/dist/api/types-extra.d.ts +31 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +579 -251
- package/dist/border-progress.js +49 -57
- package/dist/{button-DYCUa-tH.js → button-5dY1Dvhd.js} +13 -14
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -3
- package/dist/card.js +1 -1
- package/dist/carousel.js +20 -20
- package/dist/color-Cs0-oxYL.js +116 -0
- package/dist/color.js +2 -2
- package/dist/command.js +1 -1
- package/dist/completion-seal.d.ts +1 -0
- package/dist/completion-seal.js +89 -0
- package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
- package/dist/components/custom/aurora/composables/color.d.ts +13 -0
- package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +11 -2
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +18 -0
- package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
- package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
- package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
- package/dist/components/custom/border-progress/index.d.ts +1 -1
- package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
- package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
- package/dist/components/custom/completion-seal/constants.d.ts +46 -0
- package/dist/components/custom/completion-seal/index.d.ts +4 -0
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +7 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +9 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +57 -16
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +2 -1
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +4 -4
- package/dist/components/custom/concentric/constants.d.ts +30 -6
- package/dist/components/custom/concentric/index.d.ts +2 -2
- package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
- package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
- package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
- package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
- package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
- package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
- package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
- package/dist/components/custom/constellation/constants.d.ts +33 -0
- package/dist/components/custom/constellation/constellationField.d.ts +31 -1
- package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
- package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
- package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
- package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
- package/dist/components/custom/constellation/index.d.ts +5 -5
- package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
- package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
- package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
- package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
- package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
- package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
- package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
- package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
- package/dist/components/custom/deck/constants.d.ts +14 -0
- package/dist/components/custom/deck/index.d.ts +8 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +12 -0
- package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
- package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +80 -0
- package/dist/components/custom/dock/composables/index.d.ts +2 -0
- package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
- package/dist/components/custom/dock/constants.d.ts +18 -14
- package/dist/components/custom/dock/index.d.ts +5 -2
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +48 -6
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +23 -8
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -5
- package/dist/components/custom/dot-flow-field/constants.d.ts +42 -21
- package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
- package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
- package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -20
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -1
- package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
- package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
- package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
- package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
- package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
- package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
- package/dist/components/custom/dot-matrix/index.d.ts +5 -0
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
- package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
- package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
- package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +40 -47
- package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
- package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
- package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +40 -37
- package/dist/components/custom/fourier-field/constants.d.ts +61 -4
- package/dist/components/custom/fourier-field/index.d.ts +23 -18
- package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
- package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
- package/dist/components/custom/goo-blob/constants.d.ts +1 -1
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
- package/dist/components/custom/goo-blob/types.d.ts +36 -0
- package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
- package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
- package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
- package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
- package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
- package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
- package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
- package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
- package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -0
- package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
- package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
- package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
- package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
- package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
- package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
- package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
- package/dist/components/custom/paper-grid/constants.d.ts +57 -0
- package/dist/components/custom/paper-grid/index.d.ts +5 -0
- package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
- package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
- package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
- package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
- package/dist/components/custom/search/index.d.ts +2 -0
- package/dist/components/custom/search/searchVariants.d.ts +19 -0
- package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
- package/dist/components/custom/selectable-chip/index.d.ts +2 -0
- package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
- package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
- package/dist/components/custom/split-chars/index.d.ts +1 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
- package/dist/components/custom/tabs/constants.d.ts +20 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +29 -16
- package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
- package/dist/components/ui/button/index.d.ts +1 -1
- package/dist/components/ui/card/Card.vue.d.ts +45 -0
- package/dist/components/ui/card/index.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
- package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
- package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
- package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
- package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
- package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
- package/dist/components/ui/input/Input.vue.d.ts +3 -0
- package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
- package/dist/components/ui/select/SelectContent.vue.d.ts +3 -0
- package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
- package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
- package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
- package/dist/composables/color/index.d.ts +2 -0
- package/dist/composables/color/useAccentTone.d.ts +34 -0
- package/dist/composables/glass/useVizChoreography.d.ts +123 -0
- package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
- package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
- package/dist/composables/glass/webgpu/index.d.ts +1 -1
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +28 -7
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -0
- package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
- package/dist/composables/motion/core/index.d.ts +3 -0
- package/dist/composables/motion/scrollReader.d.ts +25 -0
- package/dist/composables/motion/springPresets.d.ts +20 -1
- package/dist/composables/motion/useCharStagger.d.ts +44 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +31 -6
- package/dist/composables/motion/useScrollChrome.d.ts +58 -0
- package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
- package/dist/composables/motion/useSpringPress.d.ts +5 -5
- package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
- package/dist/composables/sidebar/index.d.ts +4 -1
- package/dist/composables/sidebar/types.d.ts +68 -3
- package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
- package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
- package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
- package/dist/composables/virtual/index.d.ts +4 -0
- package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
- package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
- package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
- package/dist/concentric.js +495 -221
- package/dist/configurator.js +2 -2
- package/dist/confirm-dialog.js +62 -47
- package/dist/constellation.js +635 -235
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +1 -1
- package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck.d.ts +1 -0
- package/dist/deck.js +105 -0
- package/dist/dialog.js +4 -3
- package/dist/dock.js +602 -458
- package/dist/dot-flow-field.js +580 -290
- package/dist/dot-matrix.d.ts +1 -0
- package/dist/dot-matrix.js +630 -0
- package/dist/dotMatrixField-D_x9_1qq.js +48 -0
- package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-aJmV5SqE.js} +83 -79
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.js +188 -176
- package/dist/expandable-container.js +42 -20
- package/dist/fading-scroll.js +1 -1
- package/dist/flow.glsl-B2P7e0MT.js +4 -0
- package/dist/forms.js +62 -60
- package/dist/fourier-field.js +825 -178
- package/dist/fourier-math.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +145 -104
- package/dist/goo-blob.js +171 -1228
- package/dist/goo-dot-matrix.d.ts +1 -0
- package/dist/goo-dot-matrix.js +591 -0
- package/dist/handmark.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-chip.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +70 -60
- package/dist/metric-cell.js +1 -1
- package/dist/metric-stack.js +11 -2
- package/dist/motion-core.js +54 -32
- package/dist/motion-curves.js +11 -1
- package/dist/motion.js +46 -111
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +2 -91
- package/dist/paper-backdrop.js +1 -1
- package/dist/paper-grid.d.ts +1 -0
- package/dist/paper-grid.js +788 -0
- package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
- package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-m7Zgv35j.js} +2 -2
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +1 -1
- package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-yPyIpJt9.js} +12 -2
- package/dist/scrollReader-DI1NWxUw.js +42 -0
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +160 -304
- package/dist/select.js +3 -3
- package/dist/selectable-chip.d.ts +1 -0
- package/dist/selectable-chip.js +65 -0
- package/dist/separator.js +1 -1
- package/dist/{sheet-tZMg0E0w.js → sheet-B2flBfLH.js} +2 -2
- package/dist/sheet.js +1 -1
- package/dist/sidebar.js +216 -114
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +1 -1
- package/dist/spectrum-walk-BVzA7Biz.js +33 -0
- package/dist/{springPresets-CFQGQfdl.js → springPresets-Ce7OYCm9.js} +12 -6
- package/dist/styles/animations.css +13 -3
- package/dist/styles/cards.css +69 -0
- package/dist/styles/completion-seal.css +131 -0
- package/dist/styles/components.css +2 -3
- package/dist/styles/configurator.css +55 -0
- package/dist/styles/critical-partition.mjs +33 -11
- package/dist/styles/deferred.css +2 -0
- package/dist/styles/dock/cta-seat.css +87 -0
- package/dist/styles/dock/density.css +153 -0
- package/dist/styles/dock/layers.css +55 -7
- package/dist/styles/dock/morph-bridge.css +54 -18
- package/dist/styles/dock/morph.css +41 -33
- package/dist/styles/dock/overflow.css +12 -0
- package/dist/styles/dock/search.css +68 -0
- package/dist/styles/dock/shape.css +124 -0
- package/dist/styles/dock/shell.css +23 -5
- package/dist/styles/dock/stack-rail.css +264 -0
- package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
- package/dist/styles/dock-controls/icon-button.css +14 -0
- package/dist/styles/dock.css +11 -1
- package/dist/styles/glass/accent-tone.css +66 -0
- package/dist/styles/glass/control-surfaces.css +167 -0
- package/dist/styles/glass/ladder.css +67 -17
- package/dist/styles/glass/rim.css +19 -9
- package/dist/styles/glass/surfaces.css +69 -148
- package/dist/styles/glass.css +10 -0
- package/dist/styles/index.css +15 -0
- package/dist/styles/scroll-chrome.css +123 -0
- package/dist/styles/scroll-driven.css +38 -0
- package/dist/styles/segmented-tabs.css +50 -14
- package/dist/styles/theme/bridges.css +22 -0
- package/dist/styles/theme/radius.css +18 -1
- package/dist/styles/tokens/color-radius.css +13 -3
- package/dist/styles/tokens/dark-arm.css +39 -6
- package/dist/styles/tokens/glass-deep.css +28 -3
- package/dist/styles/tokens/glass-fx.css +44 -1
- package/dist/styles/tokens/glass.css +91 -31
- package/dist/styles/tokens/light-dark.css +1 -1
- package/dist/styles/tokens/offsets.css +27 -0
- package/dist/styles/tokens/property-regs.css +133 -0
- package/dist/styles/tokens/scale-paper.css +73 -29
- package/dist/styles/tokens/scheme-motion.css +44 -6
- package/dist/styles/tokens/sizing-config.css +110 -0
- package/dist/styles/tokens/sizing.css +55 -104
- package/dist/styles/tokens.css +5 -0
- package/dist/styles/typography/semantic.css +18 -5
- package/dist/styles/utilities/a11y-overrides.css +20 -5
- package/dist/styles/utilities/base-misc.css +52 -0
- package/dist/styles/utilities/btn.css +14 -3
- package/dist/styles/utilities/components.css +31 -6
- package/dist/styles/utilities/metal.css +26 -0
- package/dist/switch.js +1 -1
- package/dist/tabs.js +8 -8
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +10 -10
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
- package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-CLrxicG9.js} +1 -1
- package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-4xblKfwd.js} +25 -24
- package/dist/useControlSize-SH1UmJCi.js +9 -0
- package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
- package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-BUgAC-zK.js} +4 -4
- package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
- package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
- package/dist/{useLiquidPress-kfb4KX79.js → useLiquidPress-BooG97RY.js} +2 -2
- package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
- package/dist/useScrollChrome-D66AVP7C.js +258 -0
- package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-BWDnKIwh.js} +1 -1
- package/dist/useSpringPress-B1-Czp-V.js +36 -0
- package/dist/useViewTransition-CUI1nAgn.js +95 -0
- package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
- package/dist/virtual.d.ts +1 -0
- package/dist/virtual.js +225 -0
- package/dist/watercolor-dot.js +116 -73
- package/package.json +127 -7
- package/src/styles/animations.css +13 -3
- package/src/styles/cards.css +69 -0
- package/src/styles/completion-seal.css +131 -0
- package/src/styles/configurator.css +55 -0
- package/src/styles/critical-partition.mjs +33 -11
- package/src/styles/dock/cta-seat.css +87 -0
- package/src/styles/dock/density.css +153 -0
- package/src/styles/dock/layers.css +55 -7
- package/src/styles/dock/morph-bridge.css +54 -18
- package/src/styles/dock/morph.css +41 -33
- package/src/styles/dock/overflow.css +12 -0
- package/src/styles/dock/search.css +68 -0
- package/src/styles/dock/shape.css +124 -0
- package/src/styles/dock/shell.css +23 -5
- package/src/styles/dock/stack-rail.css +264 -0
- package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
- package/src/styles/dock-controls/icon-button.css +14 -0
- package/src/styles/dock.css +11 -1
- package/src/styles/glass/accent-tone.css +66 -0
- package/src/styles/glass/control-surfaces.css +167 -0
- package/src/styles/glass/ladder.css +67 -17
- package/src/styles/glass/rim.css +19 -9
- package/src/styles/glass/surfaces.css +69 -148
- package/src/styles/glass.css +10 -0
- package/src/styles/index.css +15 -0
- package/src/styles/scroll-chrome.css +123 -0
- package/src/styles/scroll-driven.css +38 -0
- package/src/styles/segmented-tabs.css +50 -14
- package/src/styles/theme/bridges.css +22 -0
- package/src/styles/theme/radius.css +18 -1
- package/src/styles/tokens/color-radius.css +13 -3
- package/src/styles/tokens/dark-arm.css +39 -6
- package/src/styles/tokens/glass-deep.css +28 -3
- package/src/styles/tokens/glass-fx.css +44 -1
- package/src/styles/tokens/glass.css +91 -31
- package/src/styles/tokens/light-dark.css +1 -1
- package/src/styles/tokens/offsets.css +27 -0
- package/src/styles/tokens/property-regs.css +133 -0
- package/src/styles/tokens/scale-paper.css +73 -29
- package/src/styles/tokens/scheme-motion.css +44 -6
- package/src/styles/tokens/sizing-config.css +110 -0
- package/src/styles/tokens/sizing.css +55 -104
- package/src/styles/tokens.css +5 -0
- package/src/styles/typography/semantic.css +18 -5
- package/src/styles/utilities/a11y-overrides.css +20 -5
- package/src/styles/utilities/base-misc.css +52 -0
- package/src/styles/utilities/btn.css +14 -3
- package/src/styles/utilities/components.css +31 -6
- package/src/styles/utilities/metal.css +26 -0
- package/dist/ContextMenuContent-uWnVxDab.js +0 -85
- package/dist/DialogFooter-BZNX5aVr.js +0 -165
- package/dist/HoverCardContent-b2uaAMRR.js +0 -83
- package/dist/Input-h9v5LeXf.js +0 -55
- package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
- package/dist/Separator-pKF0oA4M.js +0 -37
- package/dist/Switch-CwYNf8bo.js +0 -47
- package/dist/TooltipProvider-rzvnXz60.js +0 -104
- package/dist/color-DweYl7pE.js +0 -86
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
- package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
- package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
- package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
- package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
- package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
- package/dist/styles/dock/rail-extend.css +0 -397
- package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
- package/dist/useRAFLoop-UYa4zoiN.js +0 -109
- package/dist/useSpringPress-BsqPr7FJ.js +0 -34
- package/src/styles/dock/rail-extend.css +0 -397
- /package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-DLRbH5Xr.js} +0 -0
- /package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-BcIxvyqZ.js} +0 -0
- /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-CxsHSyMj.js} +0 -0
- /package/dist/{PaperBackdrop-Vf3tlpvd.js → PaperBackdrop-CqwjnfLv.js} +0 -0
- /package/dist/{Progress-DctG61iZ.js → Progress-CnqB7gLm.js} +0 -0
- /package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-CTZbA_cG.js} +0 -0
- /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-BFiod7X2.js} +0 -0
- /package/dist/{compile-CQEFRTmx.js → compile-nZ1xVYTp.js} +0 -0
- /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
- /package/dist/{math-BINYmg5z.js → math-Eb0w3LqU.js} +0 -0
- /package/dist/{prng-Za0Rmgag.js → prng-B-d9eYX8.js} +0 -0
- /package/dist/{slider-DVb4HXU-.js → slider-2A0rPn79.js} +0 -0
- /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
- /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
- /package/dist/{useInterval-CvK1mL92.js → useInterval-CNdua40W.js} +0 -0
- /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
- /package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-UmA6LMZu.js} +0 -0
- /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
- /package/dist/{useSortable-DHjtZSEd.js → useSortable-BVqlJRBR.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
- /package/dist/{vReveal-Czsb7zQC.js → vReveal-D9k0jADx.js} +0 -0
- /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
|
@@ -262,6 +262,18 @@
|
|
|
262
262
|
calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
|
|
263
263
|
var(--dock-icon-glyph-floor)
|
|
264
264
|
);
|
|
265
|
+
/* BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — RE-DECLARE the in-dock
|
|
266
|
+
toggle glyph knob on coarse beside `--dock-icon-glyph`. Its `:root`
|
|
267
|
+
default tracks `--dock-icon-glyph`, but a `:root`-only default would
|
|
268
|
+
freeze at the `:root` `--dock-scale` (the identity 1) while the coarse
|
|
269
|
+
`--dock-icon-glyph` above lifts — the AZ.R5-TOKENS substitution-vs-
|
|
270
|
+
inheritance dead-knob (the SAME trap the dock-scale re-declare closed,
|
|
271
|
+
mirrored for the toggle glyph). Re-declaring it HERE, against the
|
|
272
|
+
coarse-re-resolved `--dock-icon-glyph`, keeps the in-dock dark-toggle
|
|
273
|
+
glyph optically uniform with the nav glyphs on coarse AND fine pointer.
|
|
274
|
+
The `--dark-mode-toggle-padding` clamp (dark-mode-toggle.css) subtracts
|
|
275
|
+
THIS knob, so the box pad re-resolves in lockstep too. */
|
|
276
|
+
--dock-control-glyph-size: var(--dock-icon-glyph);
|
|
265
277
|
--dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
|
|
266
278
|
--dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
|
|
267
279
|
/* --dock-collapsed-summary-min-size derives from --dock-layer-height (the
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/* dock/search.css — the dock-as-native-dynamic-search-bar field surface (BC.W-DOCK-SEARCH).
|
|
2
|
+
*
|
|
3
|
+
* The active dock-search field + its placeholder + the result rows read CLEARLY forward
|
|
4
|
+
* over whatever backdrop the dock floats on (≥4.5:1, the W55 darken seam) — never the
|
|
5
|
+
* pale-ghost-fading-into-content trap (the NN/g defect, WWDC §219 "buttons remain
|
|
6
|
+
* legible"). The field surface composes the W55 `--glass-tint-strength-aa` bright-bucket
|
|
7
|
+
* darken at the ELEMENT level (the `color-mix(in oklab, <rung>, var(--glass-tint-source)
|
|
8
|
+
* var(--glass-tint-strength))` seam glass/ladder.css + morph.css already compose) — NOT
|
|
9
|
+
* the RAW pre-substituted `--glass-bg-dock` token (the substitution-vs-inheritance trap
|
|
10
|
+
* the dock surfaces already hit: a surface reading the pre-baked `--glass-bg-dock` baked
|
|
11
|
+
* at `:root` 0% strength does NOT darken — the pale-fade). At the 0%/floor default the
|
|
12
|
+
* inner oklab mix is a no-op (byte-identical to the un-tinted rung); under the bright
|
|
13
|
+
* bucket it darkens-over-light (and lifts-over-dark per W-DARK-MATERIAL).
|
|
14
|
+
*
|
|
15
|
+
* The result rows ride `.glass-menu-row` (the glass-quiet hover-lift, BA.W-MENU-GLASS —
|
|
16
|
+
* CONSUMED here, the glassify is BC.W-SEARCH-CUSTOM's). The customization-surface axes
|
|
17
|
+
* (size/surface/variant) are BC.W-SEARCH-CUSTOM's — this partial only seats the field +
|
|
18
|
+
* the legibility seam. The morph itself is the dock's OWN `--dock-morph-t` + the
|
|
19
|
+
* byte-untouched `morph-bridge.css` metaball (READ-ONLY — bound, never edited). */
|
|
20
|
+
|
|
21
|
+
@layer components {
|
|
22
|
+
/* The search-field region inside the morph aperture. The consumer slots its
|
|
23
|
+
<SearchBar>/<FuzzySearch> here; this rule owns the legibility seam + the layout
|
|
24
|
+
inside the aperture (a column: the field over its dropdown). It is present ONLY on
|
|
25
|
+
a `[data-search]` dock (additive — a non-search dock never carries it). */
|
|
26
|
+
.glass-dock[data-search] .dock-search-field {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
inline-size: 100%;
|
|
30
|
+
min-inline-size: 0;
|
|
31
|
+
gap: var(--dock-search-field-gap, 0.375rem);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* The ACTIVE field surface — the W55 element-level oklab tint (NOT the raw
|
|
35
|
+
`--glass-bg-dock`). The field reads the floating rung darkened toward the warm-ink
|
|
36
|
+
at the bright-bucket strength, so it reads ≥4.5:1 over a busy backdrop. The
|
|
37
|
+
`--glass-tint-source`/`--glass-tint-strength` are the SAME element-level customs
|
|
38
|
+
the dock plate self-engages (morph.css's `:where(.glass-dock)` rule re-points them
|
|
39
|
+
under the bright bucket); this field rides that lockstep, never a field-local
|
|
40
|
+
recipe. The field TEXT is `--foreground` (the full warm ink); the
|
|
41
|
+
placeholder/muted caption is `--on-glass-muted` (5.76:1 vs the plate). */
|
|
42
|
+
.glass-dock[data-search] .dock-search-field .input-bar {
|
|
43
|
+
background: color-mix(
|
|
44
|
+
in oklab,
|
|
45
|
+
var(--glass-bg-floating),
|
|
46
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
47
|
+
);
|
|
48
|
+
color: var(--foreground);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* The placeholder + the autocomplete ghost-text + any muted caption inside the field
|
|
52
|
+
read the on-glass muted rung (NOT `--muted-foreground`, which is calibrated against
|
|
53
|
+
the opaque page and collapses on a translucent darkened plate). */
|
|
54
|
+
.glass-dock[data-search] .dock-search-field .input-bar-field::placeholder,
|
|
55
|
+
.glass-dock[data-search] .dock-search-field .dock-search-ghost,
|
|
56
|
+
.glass-dock[data-search] .dock-search-field .dock-search-result-meta {
|
|
57
|
+
color: var(--on-glass-muted);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* The dropdown result rows ride the shared `.glass-menu-row` glass-quiet hover-lift
|
|
61
|
+
(BA.W-MENU-GLASS — CONSUMED, not re-authored). The dock-search list applies
|
|
62
|
+
`.glass-menu-row` per row; this rule reaches the selected/highlighted row through
|
|
63
|
+
the SAME register the menu families use (no flat `bg-accent`/`bg-muted` fork). The
|
|
64
|
+
active result reads the data-highlighted state the menu recipe already paints. */
|
|
65
|
+
.glass-dock[data-search] .dock-search-field .dock-search-result {
|
|
66
|
+
color: var(--foreground);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/* dock/shape.css — BC.W-DOCK-ARBITRARY: the arbitrary-shape morph register.
|
|
2
|
+
*
|
|
3
|
+
* The dock is no longer locked to "a rectangle that grows wider/taller." Its SHAPE
|
|
4
|
+
* is a SCALAR PARAMETER on the ONE `--dock-morph-t` clock (the BC.W-DOCK-ENGINE
|
|
5
|
+
* buttery scalar): the corner profile LERPS between a `--dock-shape-from`/
|
|
6
|
+
* `--dock-shape-to` radius pair, an OPT-IN `clip-path` silhouette LERPS between a
|
|
7
|
+
* `--dock-shape-clip-from`/`--dock-shape-clip-to` pair, and a `useLiquidFlex`
|
|
8
|
+
* volume-preserving squish couples the deformation. So the dock FLOWS between
|
|
9
|
+
* arbitrary silhouettes — a circle, a pill, a wide bar, a tall rail, a teardrop —
|
|
10
|
+
* as one continuous liquid-glass surface (the iOS-27 control-center materialization,
|
|
11
|
+
* apple-ios27.md §3.1 "physically morphs from one shape to another").
|
|
12
|
+
*
|
|
13
|
+
* THE COMPOSITOR FLOOR (apple-ios27.md §3.1 + motion-canon P5): the shape morph
|
|
14
|
+
* animates ONLY `border-radius`/`clip-path`/`--*` — compositor/paint properties,
|
|
15
|
+
* ZERO per-frame layout. The footprint is reached by the reserved-`scale()` morph
|
|
16
|
+
* (layers.css, byte-untouched here), NEVER a per-frame size lerp. proof:dock-arbitrary
|
|
17
|
+
* + proof:no-layout-animation both hold.
|
|
18
|
+
*
|
|
19
|
+
* THE LIBRARY DEFAULT IS THE CIRCLE↔PILL IDENTITY (CLAUDE.md the collapsed-perfect-
|
|
20
|
+
* circle): `--dock-shape-from`/`--dock-shape-to` default to `--radius-dock` (9999px)
|
|
21
|
+
* on both endpoints — a no-op lerp byte-identical to the prior static
|
|
22
|
+
* `border-radius: var(--radius-dock)` — and the clip pair defaults `none`/`none`
|
|
23
|
+
* (the rectangle/pill common case needs no clip). The arbitrary teardrop/blob
|
|
24
|
+
* silhouette is OPT-IN: a consumer sets the shape tokens on the dock scope
|
|
25
|
+
* (presets-in-consumers). Clean break (MEMORY: no backwards compat) — the prior
|
|
26
|
+
* hardcoded circle/pill radius becomes the token DEFAULT, no `--dock-radius-legacy`.
|
|
27
|
+
*
|
|
28
|
+
* @import-ed by dock.css in cascade order, in the SAME `@layer components`. */
|
|
29
|
+
|
|
30
|
+
@layer components {
|
|
31
|
+
/* ── The corner-profile lerp (A1 — the shape is a scalar parameter) ───────────
|
|
32
|
+
The dock surface radius interpolates the `--dock-shape-from`/`--dock-shape-to`
|
|
33
|
+
token pair on the ONE `--dock-expand-t` scalar (the directional expanded-ness
|
|
34
|
+
the BC.W-DOCK-ENGINE chrome interp rides; at rest it resolves to the class
|
|
35
|
+
endpoint, 0 collapsed / 1 expanded, so the resting corner is exact). This
|
|
36
|
+
GENERALIZES the prior two hardcoded class endpoints into a consumer-targetable
|
|
37
|
+
parameter: `from` is the collapsed silhouette's corner (the perfect circle,
|
|
38
|
+
9999px), `to` is the expanded silhouette's corner (the pill / an arbitrary
|
|
39
|
+
profile). A consumer overrides either token on the dock scope to morph to an
|
|
40
|
+
arbitrary corner.
|
|
41
|
+
|
|
42
|
+
This is the SINGLE radius authority (shell.css's prior static `border-radius:
|
|
43
|
+
var(--radius-dock)` is GENERALIZED here — no dead static, no duplicate, clean
|
|
44
|
+
break). Both tokens default to `--radius-dock` (9999px) so the lerp is a NO-OP at
|
|
45
|
+
the library default — byte-identical to the prior static, the circle↔pill identity
|
|
46
|
+
preserved. The token-driven `border-radius` interp is a compositor/paint property
|
|
47
|
+
on the registered `--dock-expand-t` `<number>`, NOT a transition
|
|
48
|
+
(proof:no-layout-animation stays GREEN). shape.css is imported AFTER shell.css so
|
|
49
|
+
this rule is the cascade winner for the dock corner. */
|
|
50
|
+
.glass-dock {
|
|
51
|
+
border-radius: calc(
|
|
52
|
+
var(--dock-shape-from, var(--radius-dock)) +
|
|
53
|
+
(var(--dock-shape-to, var(--radius-dock)) -
|
|
54
|
+
var(--dock-shape-from, var(--radius-dock))) *
|
|
55
|
+
var(--dock-expand-t, 1)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ── The arbitrary silhouette — the OPT-IN `clip-path` lerp (A1) ──────────────
|
|
60
|
+
DEFAULT-OFF: at the library default `--dock-shape-clip-from`/`--dock-shape-clip-to`
|
|
61
|
+
are `none`, so this rule resolves `clip-path: none` (the rectangle/pill common
|
|
62
|
+
case needs no clip; the box-morph + corner lerp above is the whole shape). A
|
|
63
|
+
consumer opts into an arbitrary teardrop/blob silhouette by setting the clip
|
|
64
|
+
tokens to two compatible `inset()`/`path()`/`shape()` values; the silhouette then
|
|
65
|
+
LERPS between them on `--dock-morph-t` via the `from` * (1−t) + `to` * t weighting
|
|
66
|
+
below. `clip-path` is a compositor-friendly property — the silhouette morphs with
|
|
67
|
+
ZERO reflow (apple-ios27.md §3.1).
|
|
68
|
+
|
|
69
|
+
The lerp is expressed as a `clip-path` whose two endpoints carry per-endpoint
|
|
70
|
+
opacity-like weights via the scalar: the active silhouette is the `to`-clip once
|
|
71
|
+
the morph crosses, the `from`-clip before. The web platform cannot continuously
|
|
72
|
+
interpolate two arbitrary mismatched-topology `clip-path` functions, so the
|
|
73
|
+
opt-in consumer supplies TOPOLOGY-COMPATIBLE endpoints (two `inset()`s, or two
|
|
74
|
+
`path()`s with equal command counts) — the AX.W42 fold-7 topology limit is
|
|
75
|
+
RESPECTED (a mismatched-topology V↔H morph occludes its reflow in the goo-merge,
|
|
76
|
+
BC.W-LIQUID-MORPH, not a continuous clip morph THROUGH the change). The default
|
|
77
|
+
`none`/`none` opts the whole register off so the limit never bites the common
|
|
78
|
+
case. The custom property carries the consumer's interpolable pair; the engine
|
|
79
|
+
resolves it on the scalar only when set. */
|
|
80
|
+
.glass-dock {
|
|
81
|
+
--dock-shape-clip: var(--dock-shape-clip-to, none);
|
|
82
|
+
clip-path: var(--dock-shape-clip);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* While morphing, the opt-in silhouette LERPS: before the midpoint the `from`-clip
|
|
86
|
+
reads, after it the `to`-clip, so the silhouette flows from one to the other as
|
|
87
|
+
the box scales under it (the corner + footprint + silhouette all on the ONE
|
|
88
|
+
scalar). The `none`/`none` default makes this a no-op (`clip-path: none` both
|
|
89
|
+
sides), so the rectangle/pill morph never pays the clip cost; the arbitrary
|
|
90
|
+
register engages ONLY when a consumer sets the clip tokens. */
|
|
91
|
+
.glass-dock[data-morphing] {
|
|
92
|
+
--dock-shape-clip: var(--dock-shape-clip-from, none);
|
|
93
|
+
}
|
|
94
|
+
.glass-dock[data-morphing]:where(.expanded, .always-expanded) {
|
|
95
|
+
/* expanding (0→1): once past the midpoint the `to`-silhouette is the target */
|
|
96
|
+
--dock-shape-clip: var(--dock-shape-clip-to, none);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* ── The squish — the `useLiquidFlex` `--stretch` deformation (A4) ────────────
|
|
100
|
+
The shape morph couples the volume-preserving squish the tab-indicator +
|
|
101
|
+
useDockOrientationMorph already speak: `scale: var(--stretch) calc(1/var(--stretch))`
|
|
102
|
+
along the morph axis, capped LOW at `--dock-morph-max-stretch` (~1.08) by
|
|
103
|
+
useLiquidFlex itself (the ONE squish source — no forked deformation math). The
|
|
104
|
+
plate DEFORMS like liquid as it changes shape — a fast morph swells, a slow one
|
|
105
|
+
barely. The driver (useDockOrientationMorph) writes `--stretch` on the dock scope;
|
|
106
|
+
at rest `--stretch` is unset → 1/1 (no squish). The reciprocal pairing preserves
|
|
107
|
+
volume (stretch along travel, compress across). This is compositor-only (a
|
|
108
|
+
`scale` transform), composed WITH the reserved-footprint `scaleX/scaleY` morph
|
|
109
|
+
(layers.css) — the box scale rides `--dock-morph-scale`, the squish rides
|
|
110
|
+
`--stretch`, both transforms multiply on the compositor.
|
|
111
|
+
|
|
112
|
+
Scoped to `[data-morphing]` so the squish is a morph-transient (at rest the plate
|
|
113
|
+
is un-squished); the cross-axis is the morph axis's reciprocal. Horizontal docks
|
|
114
|
+
stretch X / compress Y; vertical stretch Y / compress X (the inverse-axis twin,
|
|
115
|
+
mirroring the bridge plates' per-orientation squish in morph-bridge.css). The
|
|
116
|
+
squish multiplies onto the dock's OWN transform box (the shell), distinct from the
|
|
117
|
+
inner `.dock-layers` reserved-scale box, so the two do not fight. */
|
|
118
|
+
.glass-dock[data-morphing]:not(.vertical) {
|
|
119
|
+
scale: var(--stretch, 1) calc(1 / var(--stretch, 1));
|
|
120
|
+
}
|
|
121
|
+
.glass-dock[data-morphing].vertical {
|
|
122
|
+
scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
host-constrained width it already has there. The default free-floating
|
|
130
130
|
dock shrink-wraps to its content (AV.W16 TW3 made this a default and
|
|
131
131
|
silently broke dock sizing for the common case). */
|
|
132
|
-
|
|
132
|
+
/* BC.W-DOCK-ARBITRARY — the base corner is the shape register's token lerp (dock/shape.css, the single radius authority generalizing the prior static). */
|
|
133
133
|
white-space: nowrap;
|
|
134
134
|
max-inline-size: var(--dock-max-inline-size);
|
|
135
135
|
padding: var(--dock-padding-block, 0.375rem) var(--dock-padding-inline, 0.5rem);
|
|
@@ -148,10 +148,13 @@
|
|
|
148
148
|
);
|
|
149
149
|
backdrop-filter: var(--dock-surface-blur);
|
|
150
150
|
border: 1.5px solid var(--glass-border-dock, var(--glass-border-resting));
|
|
151
|
-
/*
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
151
|
+
/* BC.W-BLACK-BAR D2 — the dock rim is the DIRECTIONAL pair (bright catch-light
|
|
152
|
+
on the TOP edge, faint warm under-shadow on the BOTTOM — glass-fx.css), the
|
|
153
|
+
leading inset layers of the dock shadow stack. RETIRES the omnidirectional
|
|
154
|
+
`--glass-edge-light` ring that fought the (now ≤4% α) `--glass-border-dock`
|
|
155
|
+
perimeter; the navigation band reads its rim from the SAME corrected token
|
|
156
|
+
source as cards/dialogs (no dock-local dark rim re-paste). */
|
|
157
|
+
box-shadow: var(--glass-rim-top), var(--glass-rim-bottom), var(--shadow-dock-override, var(--shadow-dock));
|
|
155
158
|
}
|
|
156
159
|
|
|
157
160
|
/* AW.W2 — the box IS the reveal aperture (clip-reveal one-clock morph).
|
|
@@ -311,6 +314,21 @@
|
|
|
311
314
|
scale var(--dock-motion-resize);
|
|
312
315
|
}
|
|
313
316
|
|
|
317
|
+
/* BC.W-DOCK-ENGINE move 2 — the rail polish transition is COMPOSITOR-PROMOTED
|
|
318
|
+
only while its hover/press/held state is ARMED (the transform/scale legs ride
|
|
319
|
+
the compositor channel; `will-change: transform` hints the layer for the
|
|
320
|
+
gesture). NEVER a resting `will-change` (a permanent promotion pins a wasted
|
|
321
|
+
compositor layer at rest — the motion-canon P5 no-resting-promotion floor):
|
|
322
|
+
the hint lives on the `:hover`/`:active`/`[data-held]` armed selectors and is
|
|
323
|
+
cleared the instant the state releases. PRM keeps no pinned layer either — the
|
|
324
|
+
universal a11y carve strips the spatial transform under reduce, and a
|
|
325
|
+
non-animating rail needs no promotion. */
|
|
326
|
+
.glass-dock.vertical:hover,
|
|
327
|
+
.glass-dock.vertical:active,
|
|
328
|
+
.glass-dock.vertical[data-held] {
|
|
329
|
+
will-change: transform;
|
|
330
|
+
}
|
|
331
|
+
|
|
314
332
|
/* AZ.W-DOCK-TAXONOMY — the vertical dock's surface plate (the prior
|
|
315
333
|
`.variant-rail` block; "rail-ness" is now `orientation="vertical"` + a
|
|
316
334
|
shape/density choice, not a variant). */
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/* dock/stack-rail.css — BC.W-DOCK-STACK-RAIL — the macOS hover-expand STACK rail
|
|
2
|
+
* (the clean-break rebuild; the divider-carousel chip-strip RETIRED).
|
|
3
|
+
*
|
|
4
|
+
* THE KEPT CHASSIS (glass-dock-codebase.md §2.5 — "that part STAYS"). The `.glass-dock`
|
|
5
|
+
* root carries `contain: paint` + `backdrop-filter` + (on a vertical dock) `overflow` —
|
|
6
|
+
* all three hard-clip every descendant to the dock's border box, so an `#rail` rendered
|
|
7
|
+
* as a dock CHILD could never paint beyond the edge. The escape: GlassDock renders the
|
|
8
|
+
* `#rail` as a SIBLING of `.glass-dock` inside the `.glass-dock-frame` (a `display:contents`
|
|
9
|
+
* shell that becomes a NON-clipping positioning context only when `data-has-rail`). The
|
|
10
|
+
* `.dock-hairline-slot` is `position: absolute` relative to THAT shell — outside the dock's
|
|
11
|
+
* containment — so the stack VISIBLY extends beyond the dock edge into its own gutter. No
|
|
12
|
+
* `contain`, no `backdrop-filter`, no `overflow` on the shell → nothing clips it. This is
|
|
13
|
+
* the load-bearing chassis the rebuild reuses; the box stays INVIOLATE (the slot feeds NO
|
|
14
|
+
* size into the dock's intrinsic box).
|
|
15
|
+
*
|
|
16
|
+
* THE STACK (the verbatim spec — rail-spec-contradicted-divider-carousel). A `<DockStack>`
|
|
17
|
+
* is one stack: a CORE anchor item (the always-visible dock(1) glyph) + N members. On
|
|
18
|
+
* hover/focus of the core, the members FAN OUT next to the rail — a column (vertical dock)
|
|
19
|
+
* / row (horizontal dock) of FULLY-VISIBLE glass icons springing open beside the line,
|
|
20
|
+
* each a `--glass-bg-floating` glass icon (NEVER a shadowed half-tucked chip). The fan-out
|
|
21
|
+
* is compositor-only (scale/translate/opacity/filter — the `proof:no-layout-animation`
|
|
22
|
+
* floor, NO animated width/height/inset), staggered by `--dock-stack-stagger * var(--i)`.
|
|
23
|
+
*
|
|
24
|
+
* CLEARS CONTENT BY TOPOLOGY (THE HEADLINE — ba-dock-shell-gestalt-fail-revoked +
|
|
25
|
+
* ba-chip-graze). The stack lives BEYOND the dock edge in its own gutter (the
|
|
26
|
+
* `chipOverMain: false` topology), the fan extending AWAY from content, never over
|
|
27
|
+
* `<main>` / the `<h1>` / a form field at any y. The chip-graze that revoked the dock/shell
|
|
28
|
+
* PASS cannot recur.
|
|
29
|
+
*
|
|
30
|
+
* @import-ed by dock.css into the SAME `@layer components` as the other partials. */
|
|
31
|
+
@layer components {
|
|
32
|
+
:root {
|
|
33
|
+
/* The beyond-edge extent — how far the stack reaches into the gutter past the dock
|
|
34
|
+
edge. Rides `--dock-scale` so it tracks the coarse-pointer density thread. (KEPT
|
|
35
|
+
token, re-conceived from the divider-carousel's symmetric overrun to the stack's
|
|
36
|
+
one-way gutter reach.) */
|
|
37
|
+
--dock-rail-extend-length: calc(2.5rem * var(--dock-scale, 1));
|
|
38
|
+
/* The macOS-stack tuning tokens (re-expressed via @theme — Tailwind-first, NEVER a
|
|
39
|
+
raw macOS-dock CSS paste). */
|
|
40
|
+
--dock-stack-stagger: 28ms; /* the per-member fan delay (× var(--i)) */
|
|
41
|
+
--dock-stack-gap: calc(0.375rem * var(--dock-scale, 1));
|
|
42
|
+
--dock-stack-member-size: calc(2rem * var(--dock-scale, 1));
|
|
43
|
+
--dock-stack-fold: 0.4; /* the at-rest fold scale (the members tuck behind the core) */
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* The dock-frame wrapper — KEPT. DEFAULT (`display: contents`) is layout-transparent
|
|
47
|
+
(byte-identical no-rail path). When a `#rail` is authored it lifts to a real
|
|
48
|
+
NON-clipping positioning context so the abs-positioned slot anchors to the dock box
|
|
49
|
+
yet escapes the dock's clip. */
|
|
50
|
+
.glass-dock-frame {
|
|
51
|
+
display: contents;
|
|
52
|
+
}
|
|
53
|
+
.glass-dock-frame[data-has-rail] {
|
|
54
|
+
display: inline-flex;
|
|
55
|
+
position: relative;
|
|
56
|
+
/* No containment, no overflow, no blur — the WHOLE point: the stack must paint
|
|
57
|
+
beyond the dock box. The wrapper shrink-wraps the dock (inline-flex) so its box
|
|
58
|
+
== the dock box and the rail anchors to the true edge. */
|
|
59
|
+
}
|
|
60
|
+
.glass-dock-frame[data-has-rail].vertical {
|
|
61
|
+
flex-direction: column;
|
|
62
|
+
align-items: stretch;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* The chrome-slot wrapper — a `position: absolute` sibling of `.glass-dock`, anchored
|
|
66
|
+
to the dock-frame (NOT the dock box), so the dock's clip never reaches it. It paints
|
|
67
|
+
nothing itself; `<DockStack>` owns the core + fan. The slot seats at the dock EDGE
|
|
68
|
+
(the `position` start/end), NOT a `[data-rail-anchor]` divider seam (the seam-locator
|
|
69
|
+
RETIRED). It is pass-through; the controls re-arm pointer events. */
|
|
70
|
+
.dock-hairline-slot {
|
|
71
|
+
position: absolute;
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
pointer-events: none;
|
|
76
|
+
z-index: 1;
|
|
77
|
+
}
|
|
78
|
+
.dock-hairline-slot > * {
|
|
79
|
+
pointer-events: auto;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* VERTICAL (column) dock — the stack hangs off the TRAILING (inline-end) edge in its
|
|
83
|
+
gutter, the core seated at the dock's block-end (the macOS-stack anchor: the
|
|
84
|
+
bottom-most member at the dock floor, the rest fanning up the rail). The slot starts
|
|
85
|
+
at the dock's trailing edge + the extend reach, clear of <main> (which is to the
|
|
86
|
+
inline-start). */
|
|
87
|
+
.glass-dock-frame[data-has-rail].vertical .dock-hairline-slot {
|
|
88
|
+
inset-inline-start: 100%;
|
|
89
|
+
inset-inline-end: auto;
|
|
90
|
+
inset-block-end: 0;
|
|
91
|
+
inset-block-start: auto;
|
|
92
|
+
inline-size: var(--dock-rail-extend-length);
|
|
93
|
+
block-size: 100%;
|
|
94
|
+
}
|
|
95
|
+
/* HORIZONTAL (row) dock — the stack rises off the TOP (block-start) edge in its gutter
|
|
96
|
+
(a viewport-bottom dock keeps the fan ON-SCREEN above the row), the core at the dock's
|
|
97
|
+
inline-end, the members fanning up. Clear of <main> (which is above the dock). */
|
|
98
|
+
.glass-dock-frame[data-has-rail]:not(.vertical) .dock-hairline-slot {
|
|
99
|
+
inset-block-end: 100%;
|
|
100
|
+
inset-block-start: auto;
|
|
101
|
+
inset-inline-end: 0;
|
|
102
|
+
inset-inline-start: auto;
|
|
103
|
+
block-size: var(--dock-rail-extend-length);
|
|
104
|
+
inline-size: 100%;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* ── The stack ────────────────────────────────────────────────────────────────── */
|
|
108
|
+
.dock-stack {
|
|
109
|
+
position: relative;
|
|
110
|
+
display: flex;
|
|
111
|
+
gap: var(--dock-stack-gap);
|
|
112
|
+
/* the core anchors at the gutter end nearest the dock; the fan extends AWAY into
|
|
113
|
+
the gutter (clear of content). */
|
|
114
|
+
}
|
|
115
|
+
/* Vertical dock — the stack is a ROW: core nearest the dock edge, members fanning out
|
|
116
|
+
(inline) into the trailing gutter. Anchored block-end (the bottom-most member at the
|
|
117
|
+
dock floor — the macOS-stack anchor topology). */
|
|
118
|
+
.dock-stack.vertical {
|
|
119
|
+
flex-direction: row;
|
|
120
|
+
align-items: flex-end;
|
|
121
|
+
}
|
|
122
|
+
/* Horizontal dock — the stack is a COLUMN: core nearest the dock edge (block-end),
|
|
123
|
+
members fanning UP into the gutter above the row. */
|
|
124
|
+
.dock-stack.horizontal {
|
|
125
|
+
flex-direction: column-reverse;
|
|
126
|
+
align-items: center;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* The CORE anchor — the always-visible dock(1) glyph. A floating glass plate (it is
|
|
130
|
+
chrome OUTSIDE the dock substrate, so it carries its OWN glass register, not the
|
|
131
|
+
transparent in-dock recipe). */
|
|
132
|
+
.dock-stack-core {
|
|
133
|
+
flex: 0 0 auto;
|
|
134
|
+
z-index: 1;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* The fanned members — the FadingScroll port (the one scroll-fade port). The fan's
|
|
138
|
+
main-axis extent caps at `--dock-stack-visible` members; an >visibleCount stack
|
|
139
|
+
scrolls (the port feathers the overflow). */
|
|
140
|
+
.dock-stack-fan {
|
|
141
|
+
display: flex;
|
|
142
|
+
gap: var(--dock-stack-gap);
|
|
143
|
+
/* scoped main-axis budget — the fan shows `--dock-stack-visible` members then
|
|
144
|
+
scrolls (the n-stack reachable by scrolling the rail, not the dock box). */
|
|
145
|
+
}
|
|
146
|
+
.dock-stack.vertical .dock-stack-fan {
|
|
147
|
+
flex-direction: row;
|
|
148
|
+
align-items: flex-end;
|
|
149
|
+
max-inline-size: calc(
|
|
150
|
+
var(--dock-stack-visible, 3) * var(--dock-stack-member-size) +
|
|
151
|
+
(var(--dock-stack-visible, 3) - 1) * var(--dock-stack-gap)
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
.dock-stack.horizontal .dock-stack-fan {
|
|
155
|
+
flex-direction: column-reverse;
|
|
156
|
+
align-items: center;
|
|
157
|
+
max-block-size: calc(
|
|
158
|
+
var(--dock-stack-visible, 3) * var(--dock-stack-member-size) +
|
|
159
|
+
(var(--dock-stack-visible, 3) - 1) * var(--dock-stack-gap)
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Each member — a FULLY-VISIBLE glass icon (the `--glass-bg-floating` tier + the
|
|
164
|
+
catch-light rim), NEVER a shadowed half-tucked chip (the "NOT shadowed" verbatim
|
|
165
|
+
ask). It composes the `.dock-icon-button` base; the stack-scoped surface override
|
|
166
|
+
(0,2,0) beats the base `.dock-icon-button` (0,1,0) on source-order tie without
|
|
167
|
+
`!important`. */
|
|
168
|
+
.dock-stack-fan .dock-stack-member {
|
|
169
|
+
flex: 0 0 auto;
|
|
170
|
+
inline-size: var(--dock-stack-member-size);
|
|
171
|
+
block-size: var(--dock-stack-member-size);
|
|
172
|
+
background: var(--glass-bg-floating);
|
|
173
|
+
backdrop-filter: var(--glass-blur-floating);
|
|
174
|
+
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
175
|
+
box-shadow:
|
|
176
|
+
var(--glass-edge-light),
|
|
177
|
+
var(--glass-specular),
|
|
178
|
+
0 2px 6px -2px color-mix(in srgb, var(--shadow-color) 22%, transparent);
|
|
179
|
+
border-radius: var(--radius-pill);
|
|
180
|
+
color: color-mix(in srgb, var(--dock-fg-on-aurora, var(--foreground)) 88%, transparent);
|
|
181
|
+
/* THE FAN-OUT — compositor-only (scale/translate/opacity/filter), NO animated
|
|
182
|
+
width/height/inset (proof:no-layout-animation). At rest each member is folded
|
|
183
|
+
behind the core: scaled-down, translated toward the rail (the dock edge),
|
|
184
|
+
transparent, and a slight materialize blur. The hover-expand springs them OUT
|
|
185
|
+
staggered by `--dock-stack-stagger * var(--i)` in reading order. */
|
|
186
|
+
opacity: 0;
|
|
187
|
+
scale: var(--dock-stack-fold);
|
|
188
|
+
filter: blur(1px);
|
|
189
|
+
transition:
|
|
190
|
+
opacity var(--duration-fast) var(--ease-out)
|
|
191
|
+
calc(var(--dock-stack-stagger) * var(--i, 0)),
|
|
192
|
+
scale var(--duration-normal) var(--spring-dock, var(--ease-out))
|
|
193
|
+
calc(var(--dock-stack-stagger) * var(--i, 0)),
|
|
194
|
+
translate var(--duration-normal) var(--spring-dock, var(--ease-out))
|
|
195
|
+
calc(var(--dock-stack-stagger) * var(--i, 0)),
|
|
196
|
+
filter var(--duration-fast) var(--ease-out)
|
|
197
|
+
calc(var(--dock-stack-stagger) * var(--i, 0)),
|
|
198
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
199
|
+
box-shadow var(--duration-fast) var(--ease-standard);
|
|
200
|
+
}
|
|
201
|
+
/* Vertical dock — at rest the members tuck toward the dock edge (inline-start). */
|
|
202
|
+
.dock-stack.vertical .dock-stack-member {
|
|
203
|
+
translate: calc(-1 * var(--dock-rail-extend-length)) 0;
|
|
204
|
+
}
|
|
205
|
+
/* Horizontal dock — at rest the members tuck DOWN toward the dock edge (block-end). */
|
|
206
|
+
.dock-stack.horizontal .dock-stack-member {
|
|
207
|
+
translate: 0 var(--dock-rail-extend-length);
|
|
208
|
+
}
|
|
209
|
+
/* EXPANDED — the members spring OUT to their fanned positions (full scale, in place,
|
|
210
|
+
opaque, crisp). The stagger lives in the per-member transition-delay. */
|
|
211
|
+
.dock-stack.is-expanded .dock-stack-member {
|
|
212
|
+
opacity: 1;
|
|
213
|
+
scale: 1;
|
|
214
|
+
translate: 0 0;
|
|
215
|
+
filter: blur(0);
|
|
216
|
+
}
|
|
217
|
+
.dark .dock-stack-fan .dock-stack-member {
|
|
218
|
+
box-shadow:
|
|
219
|
+
var(--glass-edge-light-dark),
|
|
220
|
+
var(--glass-specular-dark),
|
|
221
|
+
0 2px 6px -2px color-mix(in srgb, var(--shadow-color) 30%, transparent);
|
|
222
|
+
}
|
|
223
|
+
/* The hover/active register — the floating plate firms, the glyph wakes (NOT a
|
|
224
|
+
saturated brand hue; the selected-reads-as-glass tier, W-REGISTER-IOS). */
|
|
225
|
+
.dock-stack-fan .dock-stack-member:hover {
|
|
226
|
+
background: var(--dock-control-hover-bg, var(--glass-bg-resting));
|
|
227
|
+
color: var(--dock-fg-on-aurora, var(--foreground));
|
|
228
|
+
}
|
|
229
|
+
.dock-stack-fan .dock-stack-member.is-active {
|
|
230
|
+
background: var(--dock-control-active-bg, var(--glass-bg-floating));
|
|
231
|
+
color: var(--dock-fg-on-aurora, var(--foreground));
|
|
232
|
+
box-shadow:
|
|
233
|
+
var(--glass-edge-light),
|
|
234
|
+
var(--glass-specular),
|
|
235
|
+
0 0 0 1px color-mix(in srgb, var(--foreground) 12%, transparent),
|
|
236
|
+
0 3px 8px -2px color-mix(in srgb, var(--shadow-color) 28%, transparent);
|
|
237
|
+
}
|
|
238
|
+
.dark .dock-stack-fan .dock-stack-member.is-active {
|
|
239
|
+
box-shadow:
|
|
240
|
+
var(--glass-edge-light-dark),
|
|
241
|
+
var(--glass-specular-dark),
|
|
242
|
+
0 0 0 1px color-mix(in srgb, var(--foreground) 18%, transparent),
|
|
243
|
+
0 3px 8px -2px color-mix(in srgb, var(--shadow-color) 36%, transparent);
|
|
244
|
+
}
|
|
245
|
+
.dock-stack-fan .dock-stack-member svg {
|
|
246
|
+
inline-size: 0.875rem;
|
|
247
|
+
block-size: 0.875rem;
|
|
248
|
+
flex-shrink: 0;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* PRM — the fan SNAPS to terminal (the fade survives, the transform drops — P6 /
|
|
252
|
+
proof:no-layout-animation PRM carve). No spring travel, no stagger, no blur-settle. */
|
|
253
|
+
@media (prefers-reduced-motion: reduce) {
|
|
254
|
+
.dock-stack-fan .dock-stack-member {
|
|
255
|
+
transition:
|
|
256
|
+
opacity var(--duration-fast) linear,
|
|
257
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
258
|
+
box-shadow var(--duration-fast) var(--ease-standard);
|
|
259
|
+
scale: 1;
|
|
260
|
+
translate: 0 0;
|
|
261
|
+
filter: none;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
@@ -73,13 +73,26 @@
|
|
|
73
73
|
padding fell to `var(--dock-icon-padding, 0)` (the token is never defined →
|
|
74
74
|
0 pad → the glyph filled the whole 40px box edge-to-edge, ~2.5× the 16-20px
|
|
75
75
|
nav glyphs — the user's "too large" read). Pad the box by HALF the box↔glyph
|
|
76
|
-
difference so the `h-full` SVG lands at exactly `--dock-
|
|
77
|
-
`--dock-scale`-keyed size the nav icons
|
|
78
|
-
nav glyphs through the utility-win path,
|
|
76
|
+
difference so the `h-full` SVG lands at exactly `--dock-control-glyph-size`
|
|
77
|
+
(default `--dock-icon-glyph`, the `--dock-scale`-keyed size the nav icons
|
|
78
|
+
paint) — optically UNIFORM with the nav glyphs through the utility-win path,
|
|
79
|
+
not fighting it.
|
|
80
|
+
|
|
81
|
+
BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — the inset subtracts
|
|
82
|
+
`--dock-control-glyph-size`, the SAME ONE knob the SVG `width`/`height`
|
|
83
|
+
reads below, so the pad and the glyph stay LOCKED (a consumer retinting
|
|
84
|
+
`--dock-control-glyph-size` moves both in lockstep — no drift between the
|
|
85
|
+
box pad and the painted glyph). `--dock-control-size` AND
|
|
86
|
+
`--dock-control-glyph-size` both INHERIT from `.glass-dock[data-density]`,
|
|
87
|
+
where the coarse `--dock-scale` re-declare (overflow.css) re-resolves them
|
|
88
|
+
in lockstep — so the calc reads the coarse-scaled values on a coarse
|
|
89
|
+
pointer too (the AZ.R5-TOKENS substitution-vs-inheritance trap closed for
|
|
90
|
+
the toggle glyph: the var() resolves at the toggle button, reading the
|
|
91
|
+
coarse-re-resolved inherited tokens, never the frozen `:root` scale). */
|
|
79
92
|
--dark-mode-toggle-padding: calc(
|
|
80
93
|
(
|
|
81
94
|
var(--dock-control-size, var(--size-icon-btn)) -
|
|
82
|
-
var(--dock-icon-glyph, 1.25rem)
|
|
95
|
+
var(--dock-control-glyph-size, var(--dock-icon-glyph, 1.25rem))
|
|
83
96
|
) / 2
|
|
84
97
|
);
|
|
85
98
|
}
|
|
@@ -113,6 +113,20 @@
|
|
|
113
113
|
border: var(--dock-active-border);
|
|
114
114
|
box-shadow: var(--dock-active-shadow);
|
|
115
115
|
}
|
|
116
|
+
|
|
117
|
+
/* BC.W-DOCK-ENGINE cross-repo fold (fourier-M #10) — the `<DockIconButton
|
|
118
|
+
:active>` selectable register. The `data-active` hook the component stamps
|
|
119
|
+
reads the rail's "selected reads as glass" tier (`--dock-control-active-bg`,
|
|
120
|
+
default `--glass-bg-floating` — a GLASS tier ABOVE the rest fill, NEVER a
|
|
121
|
+
saturated brand hue, per W-REGISTER-IOS). Distinct from the consumer
|
|
122
|
+
`--dock-active-*` cohort above (a parent-scoped audacious override): this is
|
|
123
|
+
the library's default selected glass, ergonomic sugar over the shipped
|
|
124
|
+
register so a selectable dock control needs no hand-rolled active paint. The
|
|
125
|
+
glyph/label firm to the full warm-ink, mirroring the rail's `.is-active`. */
|
|
126
|
+
&[data-active] {
|
|
127
|
+
background: var(--dock-control-active-bg, var(--glass-bg-floating));
|
|
128
|
+
color: var(--dock-fg-on-aurora, var(--foreground));
|
|
129
|
+
}
|
|
116
130
|
}
|
|
117
131
|
|
|
118
132
|
/* focus-visible ring + disabled paint hoisted to the shared `:where()`
|
package/dist/styles/dock.css
CHANGED
|
@@ -37,12 +37,22 @@
|
|
|
37
37
|
@import "./dock/shell.css";
|
|
38
38
|
@import "./dock/morph.css";
|
|
39
39
|
@import "./dock/density.css";
|
|
40
|
+
@import "./dock/shape.css";
|
|
40
41
|
@import "./dock/layers.css";
|
|
41
42
|
@import "./dock/layer-group.css";
|
|
42
43
|
@import "./dock/overflow.css";
|
|
43
|
-
@import "./dock/rail
|
|
44
|
+
@import "./dock/stack-rail.css";
|
|
44
45
|
@import "./dock/section.css";
|
|
45
46
|
@import "./dock/morph-bridge.css";
|
|
47
|
+
/* BC.W-AX-DOCK-CTA-SEAT — the [data-cta-pending] CTA-receive landing seat (the static
|
|
48
|
+
resting-geometry reserve + the plain transition:opacity FLIP reveal). Last in the
|
|
49
|
+
dock cascade — a net-new surface around the byte-untouched useDockCtaReceive morph. */
|
|
50
|
+
@import "./dock/cta-seat.css";
|
|
51
|
+
/* BC.W-DOCK-SEARCH — the dock-as-native-dynamic-search-bar field surface (the W55
|
|
52
|
+
active-field tint legibility seam + the `.glass-menu-row` result rows). A net-new
|
|
53
|
+
surface on a `[data-search]` dock around the byte-untouched morph-bridge metaball;
|
|
54
|
+
CONSUMES the W55 tint seam + the menu-row recipe, re-authors neither. */
|
|
55
|
+
@import "./dock/search.css";
|
|
46
56
|
|
|
47
57
|
/* AX.W01 — the SINGLE morph scalar. `useLayerTransition` writes it once per frame
|
|
48
58
|
to the `.glass-dock` root; EVERY morph axis (box size, padding, radius, scale,
|