@mkbabb/glass-ui 3.13.0 → 4.0.1
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-CW7a0m8M.js +253 -0
- package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
- package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
- package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
- package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
- package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
- package/dist/DialogContent-DcKK8k9i.js +103 -0
- package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
- package/dist/FadingScroll-DI6hQhT9.js +76 -0
- package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
- package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
- package/dist/IconChip-BTD-nay5.js +55 -0
- package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
- package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
- package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
- package/dist/Notification-VUwexFUf.js +43 -0
- package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
- package/dist/PopoverContent-DL7E6vJP.js +127 -0
- package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
- package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
- package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
- package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
- package/dist/Toaster-Bw4xR8xV.js +274 -0
- package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
- package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +16 -8
- package/dist/api/types-extra.d.ts +6 -0
- package/dist/api.js +2 -2
- package/dist/aurora.js +888 -230
- package/dist/badge.js +1 -1
- package/dist/border-progress.d.ts +1 -0
- package/dist/border-progress.js +106 -0
- package/dist/button-DYCUa-tH.js +126 -0
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +2 -2
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +90 -151
- package/dist/collapsible.js +1 -1
- package/dist/color-swatch.d.ts +1 -0
- package/dist/color-swatch.js +47 -0
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/compile-CQEFRTmx.js +19 -0
- 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/runtime.d.ts +19 -0
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
- package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
- package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
- package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
- package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
- 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 +3 -2
- package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
- package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -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/color-swatch/ColorSwatch.vue.d.ts +22 -0
- package/dist/components/custom/color-swatch/index.d.ts +1 -0
- package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
- package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
- package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
- package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
- package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
- package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
- package/dist/components/custom/concentric/constants.d.ts +43 -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/configurator/Configurator.vue.d.ts +19 -8
- package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
- package/dist/components/custom/constellation/constellationField.d.ts +2 -369
- package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
- package/dist/components/custom/constellation/index.d.ts +1 -1
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
- package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
- package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
- package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
- package/dist/components/custom/dock/constants.d.ts +35 -0
- package/dist/components/custom/dock/index.d.ts +2 -0
- package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
- package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
- package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
- package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
- package/dist/components/custom/dot-flow-field/constants.d.ts +48 -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 +20 -0
- package/dist/components/custom/dot-flow-field/shaders/flow-field.render.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 +75 -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 +10 -0
- package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
- package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
- package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
- package/dist/components/custom/fading-scroll/index.d.ts +2 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
- package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
- package/dist/components/custom/fourier-field/constants.d.ts +7 -0
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -1
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
- package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
- package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
- package/dist/components/custom/goo-blob/constants.d.ts +6 -1
- package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +269 -0
- package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
- package/dist/components/custom/handmark/constants.d.ts +39 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +52 -0
- package/dist/components/custom/handmark/index.d.ts +27 -0
- package/dist/components/custom/handmark/ink.d.ts +11 -0
- package/dist/components/custom/handmark/texture.d.ts +39 -0
- package/dist/components/custom/handmark/types.d.ts +62 -0
- package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
- package/dist/components/custom/icon-chip/index.d.ts +2 -0
- package/dist/components/custom/icon-chip/types.d.ts +82 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
- package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -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/tabs/SegmentedTabs.vue.d.ts +29 -24
- package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
- package/dist/components/custom/tabs/constants.d.ts +9 -3
- package/dist/components/custom/tabs/index.d.ts +1 -1
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
- package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -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 +34 -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 +2 -0
- 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/carousel/index.d.ts +0 -1
- package/dist/components/ui/command/Command.vue.d.ts +4 -1
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -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/focus-scope/FocusScope.vue.d.ts +20 -0
- package/dist/components/ui/focus-scope/index.d.ts +2 -0
- package/dist/components/ui/index.d.ts +1 -1
- package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
- package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- 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/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +23 -1
- 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/vSpecular.d.ts +2 -0
- package/dist/composables/glass/webgl/shaders/flow.glsl.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 +54 -0
- package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +4 -0
- package/dist/composables/motion/useDockCtaReceive.d.ts +59 -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/useViewTransition.d.ts +36 -1
- package/dist/concentric.d.ts +1 -0
- package/dist/concentric.js +562 -0
- package/dist/configurator.js +3 -2
- package/dist/confirm-dialog.js +22 -24
- package/dist/constellation.js +93 -95
- package/dist/context-menu.js +3 -3
- package/dist/controls.js +10 -4
- package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +738 -442
- package/dist/{dockContext-BegmJVmx.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 +604 -0
- package/dist/drawer.d.ts +1 -0
- package/dist/drawer.js +380 -0
- package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
- package/dist/dropdown-menu.js +1 -1
- package/dist/easing.d.ts +1 -0
- package/dist/easing.js +463 -0
- package/dist/expandable-container.js +45 -38
- package/dist/fading-scroll.d.ts +1 -0
- package/dist/fading-scroll.js +2 -0
- package/dist/focus-scope.d.ts +1 -0
- package/dist/focus-scope.js +23 -0
- package/dist/forms.js +7 -7
- package/dist/fourier-field.js +135 -122
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +39 -36
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +154 -362
- package/dist/goo-blob.js +838 -227
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +707 -0
- 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.d.ts +1 -0
- package/dist/icon-chip.js +2 -0
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +6 -6
- package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
- package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +25 -22
- package/dist/metric-stack.js +4 -8
- package/dist/motion-core.js +36 -35
- package/dist/motion-curves.js +1 -1
- package/dist/motion.js +157 -55
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.d.ts +1 -0
- package/dist/pager-dots.js +91 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
- package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
- package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +10 -12
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet-tZMg0E0w.js +218 -0
- package/dist/sheet.js +1 -1
- package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/spa-view.d.ts +1 -0
- package/dist/spa-view.js +46 -0
- package/dist/styles/animations.css +40 -31
- package/dist/styles/border-progress.css +109 -0
- package/dist/styles/cards.css +76 -0
- package/dist/styles/components.css +1 -1
- package/dist/styles/configurator.css +35 -0
- package/dist/styles/critical-partition.mjs +140 -0
- package/dist/styles/critical.css +12 -0
- package/dist/styles/deferred.css +31 -0
- package/dist/styles/dock/density.css +64 -0
- package/dist/styles/dock/layers.css +54 -30
- package/dist/styles/dock/morph.css +124 -7
- package/dist/styles/dock/overflow.css +31 -2
- package/dist/styles/dock/rail-extend.css +168 -71
- package/dist/styles/dock/section.css +59 -0
- package/dist/styles/dock/shell.css +83 -16
- package/dist/styles/dock-controls/icon-button.css +11 -1
- package/dist/styles/dock-controls/tab-button.css +24 -83
- package/dist/styles/dock-controls/triggers.css +7 -0
- package/dist/styles/dock.css +38 -3
- package/dist/styles/drawer.css +127 -35
- package/dist/styles/feedback-tone.css +104 -0
- package/dist/styles/glass/deep.css +44 -0
- package/dist/styles/glass/ladder.css +154 -52
- package/dist/styles/glass/material.css +78 -15
- package/dist/styles/glass/reveal.css +136 -0
- package/dist/styles/glass/rim.css +100 -0
- package/dist/styles/glass/surface-axis.css +113 -0
- package/dist/styles/glass/surfaces.css +189 -15
- package/dist/styles/glass-refract.css +96 -44
- package/dist/styles/glass-specular-track.css +7 -0
- package/dist/styles/glass.css +8 -2
- package/dist/styles/hover-popover.css +7 -6
- package/dist/styles/icon-chip.css +211 -0
- package/dist/styles/index.css +78 -4
- package/dist/styles/instrument-chassis.css +107 -2
- package/dist/styles/menu.css +127 -0
- package/dist/styles/scroll-choreography.css +300 -0
- package/dist/styles/segmented-tabs.css +188 -86
- package/dist/styles/select.css +50 -0
- package/dist/styles/theme/bridges.css +22 -1
- package/dist/styles/theme/literals.css +11 -2
- package/dist/styles/theme/radius.css +6 -1
- package/dist/styles/tokens/color-radius.css +40 -13
- package/dist/styles/tokens/dark-arm.css +200 -20
- package/dist/styles/tokens/glass-deep.css +75 -0
- package/dist/styles/tokens/glass-fx.css +333 -0
- package/dist/styles/tokens/glass.css +95 -315
- package/dist/styles/tokens/light-dark.css +64 -22
- package/dist/styles/tokens/offsets.css +116 -0
- package/dist/styles/tokens/on-glass-fg.css +39 -0
- package/dist/styles/tokens/property-regs.css +130 -10
- package/dist/styles/tokens/scale-paper.css +155 -84
- package/dist/styles/tokens/scheme-motion.css +102 -46
- package/dist/styles/tokens/scroll-tokens.css +123 -0
- package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
- package/dist/styles/tokens.css +9 -3
- package/dist/styles/transitions.css +7 -7
- package/dist/styles/typography/scale.css +153 -0
- package/dist/styles/typography/semantic.css +220 -0
- package/dist/styles/typography/utilities.css +174 -0
- package/dist/styles/typography.css +23 -507
- package/dist/styles/utilities/a11y-overrides.css +33 -4
- package/dist/styles/utilities/animate.css +27 -24
- package/dist/styles/utilities/base-misc.css +255 -0
- package/dist/styles/utilities/base.css +100 -138
- package/dist/styles/utilities/btn.css +21 -202
- package/dist/styles/utilities/metal.css +189 -0
- package/dist/styles/utilities.css +14 -7
- package/dist/styles/view-transition.css +4 -1
- package/dist/switch.js +1 -1
- package/dist/tabs.js +275 -191
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +3 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
- package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
- package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
- package/dist/useDragMorph-DgxnsVJz.js +102 -0
- package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
- package/dist/useLiquidPress-kfb4KX79.js +39 -0
- package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
- package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
- package/dist/useSpring-C0jyvEJB.js +40 -0
- package/dist/useSpringMount-q1amq1SJ.js +71 -0
- package/dist/useSpringPress-BsqPr7FJ.js +34 -0
- package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
- package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
- package/dist/vReveal-Czsb7zQC.js +10 -0
- package/dist/vSpecular-CQFmLNzA.js +68 -0
- package/dist/vendor-CKmzio-i.js +226 -0
- package/dist/watercolor-dot.js +12 -5
- package/package.json +193 -25
- package/src/styles/animations.css +40 -31
- package/src/styles/border-progress.css +109 -0
- package/src/styles/cards.css +76 -0
- package/src/styles/configurator.css +35 -0
- package/src/styles/critical-partition.mjs +140 -0
- package/src/styles/dock/density.css +64 -0
- package/src/styles/dock/layers.css +54 -30
- package/src/styles/dock/morph.css +124 -7
- package/src/styles/dock/overflow.css +31 -2
- package/src/styles/dock/rail-extend.css +168 -71
- package/src/styles/dock/section.css +59 -0
- package/src/styles/dock/shell.css +83 -16
- package/src/styles/dock-controls/icon-button.css +11 -1
- package/src/styles/dock-controls/tab-button.css +24 -83
- package/src/styles/dock-controls/triggers.css +7 -0
- package/src/styles/dock.css +38 -3
- package/src/styles/drawer.css +123 -35
- package/src/styles/feedback-tone.css +104 -0
- package/src/styles/glass/deep.css +44 -0
- package/src/styles/glass/ladder.css +154 -52
- package/src/styles/glass/material.css +78 -15
- package/src/styles/glass/reveal.css +136 -0
- package/src/styles/glass/rim.css +100 -0
- package/src/styles/glass/surface-axis.css +113 -0
- package/src/styles/glass/surfaces.css +189 -15
- package/src/styles/glass-refract.css +96 -44
- package/src/styles/glass-specular-track.css +7 -0
- package/src/styles/glass.css +8 -2
- package/src/styles/hover-popover.css +7 -6
- package/src/styles/icon-chip.css +211 -0
- package/src/styles/index.css +78 -4
- package/src/styles/instrument-chassis.css +107 -2
- package/src/styles/menu.css +127 -0
- package/src/styles/scroll-choreography.css +300 -0
- package/src/styles/segmented-tabs.css +184 -84
- package/src/styles/select.css +50 -0
- package/src/styles/theme/bridges.css +22 -1
- package/src/styles/theme/literals.css +11 -2
- package/src/styles/theme/radius.css +6 -1
- package/src/styles/tokens/color-radius.css +40 -13
- package/src/styles/tokens/dark-arm.css +200 -20
- package/src/styles/tokens/glass-deep.css +75 -0
- package/src/styles/tokens/glass-fx.css +333 -0
- package/src/styles/tokens/glass.css +95 -315
- package/src/styles/tokens/light-dark.css +64 -22
- package/src/styles/tokens/offsets.css +116 -0
- package/src/styles/tokens/on-glass-fg.css +39 -0
- package/src/styles/tokens/property-regs.css +130 -10
- package/src/styles/tokens/scale-paper.css +155 -84
- package/src/styles/tokens/scheme-motion.css +102 -46
- package/src/styles/tokens/scroll-tokens.css +123 -0
- package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
- package/src/styles/tokens.css +9 -3
- package/src/styles/transitions.css +7 -7
- package/src/styles/typography/scale.css +153 -0
- package/src/styles/typography/semantic.css +220 -0
- package/src/styles/typography/utilities.css +174 -0
- package/src/styles/typography.css +23 -507
- package/src/styles/utilities/a11y-overrides.css +33 -4
- package/src/styles/utilities/animate.css +27 -24
- package/src/styles/utilities/base-misc.css +255 -0
- package/src/styles/utilities/base.css +100 -138
- package/src/styles/utilities/btn.css +21 -202
- package/src/styles/utilities/metal.css +189 -0
- package/src/styles/utilities.css +14 -7
- package/src/styles/view-transition.css +4 -1
- package/dist/CardAction-Cj2eycQ2.js +0 -157
- package/dist/DialogContent-Dl9WkAoS.js +0 -100
- package/dist/Notification-DdwNxIrI.js +0 -100
- package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
- package/dist/PopoverContent-BYwt2-4x.js +0 -121
- package/dist/TabsList-Dttss653.js +0 -105
- package/dist/Toaster-D6q4HtXu.js +0 -263
- package/dist/button-ChXMfsud.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/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
- package/dist/components/custom/underline/index.d.ts +0 -2
- package/dist/components/custom/underline/types.d.ts +0 -56
- package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
- package/dist/createLucideIcon-DydS2qgk.js +0 -43
- package/dist/minimize-2-BV31Ob_h.js +0 -38
- package/dist/search-BSGrf2Sk.js +0 -12
- package/dist/sheet-1fChZjtw.js +0 -214
- package/dist/underline.d.ts +0 -1
- package/dist/underline.js +0 -85
- package/dist/useCanvas2D-ClrQuZtp.js +0 -96
- package/dist/useConfiguratorState-DAoeHVue.js +0 -287
- package/dist/useSpecularTracking-Bo5su68i.js +0 -32
- package/dist/useSpringMount-CI2jOstM.js +0 -108
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/dist/x-BUwTKe50.js +0 -10
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
- /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
- /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
- /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
- /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
- /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
- /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
- /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
- /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
- /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
- /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
- /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
- /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
- /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
- /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
- /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
- /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
- /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
- /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
- /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
- /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
- /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
- /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
- /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
|
@@ -1,20 +1,39 @@
|
|
|
1
1
|
/* ════════════════════════════════════════════════════════════════════════
|
|
2
|
-
The
|
|
3
|
-
|
|
4
|
-
(`--spring-snappy`) with the volume-preserving travel-squish.
|
|
2
|
+
The standardized SegmentedTabs grammar (BA.W-TABS). ONE indicator engine,
|
|
3
|
+
TWO materials, ONE orientation axis.
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
· PILL (DEFAULT) — THE GLASS MATERIAL. The track rides `--glass-bg-quiet`
|
|
6
|
+
+ a hairline edge; the active indicator is the selected-reads-as-
|
|
7
|
+
glass plate (`--glass-bg-floating`, the W-REGISTER-IOS tier — a
|
|
8
|
+
glass tint FORWARD of the track, NEVER a saturated hue, never an
|
|
9
|
+
opaque `bg-card`). It GLIDES + SQUISHES. Absorbs the retired
|
|
10
|
+
`segmented` value (one register — the user kept it by name).
|
|
11
|
+
· UNDERLINE — THE PAPER MATERIAL. NO plate, NO blur, NO track surface — the
|
|
12
|
+
2px `--foreground` ink hairline riding the shared `.paper-ink-mark`
|
|
13
|
+
register (W-SURFACE-AXIS mints it; CONSUMED here, never re-minted).
|
|
14
|
+
The engine drives the hairline's inline position/width only. It
|
|
15
|
+
SLIDES (no squish — a hairline does not deform).
|
|
16
|
+
|
|
17
|
+
ORIENTATION is axis-derived (horizontal default · vertical). The vertical
|
|
18
|
+
indicator tracks the BLOCK axis (the R10-2 horizontal-only-utilities slab class
|
|
19
|
+
is structurally impossible — the engine keys off a computed `dim`). Vertical
|
|
20
|
+
underline = the leading-edge ink rail (the math-paper `border-l` read).
|
|
21
|
+
|
|
22
|
+
Carved out of the SFC `<style scoped>` into a styles/ partial (the drawer.css
|
|
23
|
+
precedent), `@import`-ed into styles/index.css in cascade order. Every selector
|
|
24
|
+
is class/attribute-based (no Vue `data-v-*` scope hash), so the rules paint
|
|
25
|
+
un-scoped — the `.segmented-tabs`-family classes the template emits carry them.
|
|
10
26
|
|
|
11
27
|
`--bouncy-track-trim` is the token the track padding, the indicator
|
|
12
28
|
`inset-block`, AND the `anchor()` offset all read so they cannot drift (the W20
|
|
13
29
|
magic-number lock). `--stretch` is the JS-written travel-squish scalar (1 at
|
|
14
30
|
rest); the indicator pairs it reciprocally (stretch X, compress Y →
|
|
15
|
-
volume-preserving).
|
|
31
|
+
volume-preserving). The glide + squish read ONE clock — `--tab-indicator-duration`
|
|
32
|
+
(= `--spring-snappy-duration`, the W-GLASS-CAL calibrated snappy settle, ~0.34s)
|
|
33
|
+
— so the channels cannot desync and the generic-300ms sub-pixel tail is gone.
|
|
16
34
|
════════════════════════════════════════════════════════════════════════ */
|
|
17
35
|
|
|
36
|
+
/* ── The PILL track (the glass material — DEFAULT) ── */
|
|
18
37
|
.segmented-tabs {
|
|
19
38
|
--bouncy-track-trim: 0.1875rem;
|
|
20
39
|
--bouncy-track-radius: 0.4375rem;
|
|
@@ -28,12 +47,24 @@
|
|
|
28
47
|
grid-auto-columns: 1fr;
|
|
29
48
|
padding: var(--bouncy-track-trim);
|
|
30
49
|
border-radius: var(--bouncy-track-radius);
|
|
31
|
-
/*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
50
|
+
/* BA.W-TABS — the pill track rides the glass quiet tier (the warm glass
|
|
51
|
+
material, the no-gray register) + a hairline edge. NOT a `--surface-tint`
|
|
52
|
+
gray plate (the R10-5 no-gray cut). */
|
|
53
|
+
background: var(--glass-bg-quiet);
|
|
54
|
+
-webkit-backdrop-filter: var(--glass-blur-quiet);
|
|
55
|
+
|
|
56
|
+
backdrop-filter: var(--glass-blur-quiet);
|
|
57
|
+
-webkit-backdrop-filter: var(--glass-blur-quiet);
|
|
58
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--border) 24%, transparent);
|
|
59
|
+
}
|
|
35
60
|
|
|
36
|
-
|
|
61
|
+
/* ── The vertical orientation axis (the block stack) ── */
|
|
62
|
+
.segmented-tabs--vertical {
|
|
63
|
+
display: inline-flex;
|
|
64
|
+
flex-direction: column;
|
|
65
|
+
grid-auto-flow: unset;
|
|
66
|
+
grid-auto-columns: unset;
|
|
67
|
+
align-items: stretch;
|
|
37
68
|
}
|
|
38
69
|
|
|
39
70
|
@media (min-width: 640px) {
|
|
@@ -44,15 +75,18 @@
|
|
|
44
75
|
}
|
|
45
76
|
}
|
|
46
77
|
|
|
47
|
-
/* ── The shared indicator body ── */
|
|
78
|
+
/* ── The shared indicator body (the PILL plate) ── */
|
|
48
79
|
.segmented-indicator {
|
|
49
80
|
position: absolute;
|
|
50
|
-
/*
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
81
|
+
/* BA.W-TABS — the active pill indicator rides the glass FLOATING tier (the
|
|
82
|
+
W-REGISTER-IOS "selected reads as glass" register), reading FORWARD of the
|
|
83
|
+
quiet-tier track. A glass tint, NEVER a saturated `--foreground` fill or an
|
|
84
|
+
opaque `bg-card`. */
|
|
85
|
+
background: var(--glass-bg-floating);
|
|
86
|
+
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
54
87
|
|
|
55
|
-
backdrop-filter: var(--glass-blur-
|
|
88
|
+
backdrop-filter: var(--glass-blur-floating);
|
|
89
|
+
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
56
90
|
z-index: 0;
|
|
57
91
|
inset-block: var(--bouncy-track-trim);
|
|
58
92
|
border-radius: var(--bouncy-slider-radius);
|
|
@@ -66,46 +100,69 @@
|
|
|
66
100
|
scale: var(--stretch) calc(1 / var(--stretch));
|
|
67
101
|
}
|
|
68
102
|
|
|
103
|
+
/* Vertical: the indicator deforms on the BLOCK axis (compress X / stretch Y) and
|
|
104
|
+
pads on the inline axis instead. */
|
|
105
|
+
.segmented-tabs--vertical .segmented-indicator {
|
|
106
|
+
inset-block: auto;
|
|
107
|
+
inset-inline: var(--bouncy-track-trim);
|
|
108
|
+
scale: calc(1 / var(--stretch)) var(--stretch);
|
|
109
|
+
}
|
|
110
|
+
|
|
69
111
|
@media (prefers-reduced-motion: no-preference) {
|
|
70
112
|
.segmented-indicator {
|
|
71
|
-
/*
|
|
72
|
-
|
|
73
|
-
|
|
113
|
+
/* ONE composited transform pair (translate+scale) on ONE calibrated
|
|
114
|
+
clock — the glide + the squish share `--tab-indicator-duration` so they
|
|
115
|
+
cannot desync (the R10-2 multi-property-desync class collapsed). */
|
|
116
|
+
transition: scale var(--tab-indicator-duration) var(--spring-snappy);
|
|
74
117
|
}
|
|
75
118
|
}
|
|
76
119
|
|
|
77
120
|
/* Fallback (JS-measured) path — the indicator is moved by inline
|
|
78
|
-
`transform`/`width` writes; animate those alongside the squish scale
|
|
121
|
+
`transform`/`width` writes; animate those alongside the squish scale on the ONE
|
|
122
|
+
calibrated clock. */
|
|
79
123
|
.segmented-indicator--js {
|
|
80
124
|
transition:
|
|
81
|
-
transform var(--duration
|
|
82
|
-
width var(--duration
|
|
83
|
-
|
|
125
|
+
transform var(--tab-indicator-duration) var(--spring-snappy),
|
|
126
|
+
width var(--tab-indicator-duration) var(--spring-snappy),
|
|
127
|
+
height var(--tab-indicator-duration) var(--spring-snappy),
|
|
128
|
+
scale var(--tab-indicator-duration) var(--spring-snappy),
|
|
84
129
|
opacity var(--duration-fast) ease;
|
|
85
130
|
}
|
|
86
131
|
|
|
87
132
|
/* Anchor path — the indicator tethers to the active button's `anchor-name`.
|
|
88
133
|
`inset` reads the anchor's edges; the browser interpolates `inset` between
|
|
89
134
|
buttons on selection (the glide), and the JS `--stretch` write deforms it
|
|
90
|
-
(the squish) on the SAME
|
|
135
|
+
(the squish) on the SAME calibrated clock. */
|
|
91
136
|
@supports (position-anchor: --x) {
|
|
92
137
|
.segmented-indicator--anchor {
|
|
93
138
|
position-anchor: --gl-tab-active;
|
|
139
|
+
/* The four edge longhands tether to the active button's anchor edges (the
|
|
140
|
+
inline-trimmed band over the full anchor block extent). NO `inset-block:
|
|
141
|
+
auto` shorthand here — it would reset the block longhands above it to auto
|
|
142
|
+
and collapse the indicator to height 0 (the live-found clobber). */
|
|
94
143
|
inset-block-start: calc(anchor(top) + 0.1875rem);
|
|
95
144
|
inset-block-end: calc(anchor(bottom) + 0.1875rem);
|
|
96
145
|
inset-inline-start: anchor(left);
|
|
97
146
|
inset-inline-end: anchor(right);
|
|
98
|
-
inset-block: auto;
|
|
99
147
|
opacity: 1;
|
|
100
148
|
}
|
|
149
|
+
/* Vertical: the anchor band runs the FULL block extent of the active button
|
|
150
|
+
(the indicator tracks the column, not the row) with the inline axis trimmed. */
|
|
151
|
+
.segmented-tabs--vertical .segmented-indicator--anchor {
|
|
152
|
+
inset-block-start: anchor(top);
|
|
153
|
+
inset-block-end: anchor(bottom);
|
|
154
|
+
inset-inline-start: calc(anchor(left) + 0.1875rem);
|
|
155
|
+
inset-inline-end: calc(anchor(right) + 0.1875rem);
|
|
156
|
+
}
|
|
101
157
|
@media (prefers-reduced-motion: no-preference) {
|
|
102
158
|
.segmented-indicator--anchor {
|
|
103
159
|
transition:
|
|
104
|
-
inset var(--duration
|
|
105
|
-
scale var(--duration
|
|
160
|
+
inset var(--tab-indicator-duration) var(--spring-snappy),
|
|
161
|
+
scale var(--tab-indicator-duration) var(--spring-snappy);
|
|
106
162
|
}
|
|
107
163
|
}
|
|
108
|
-
.segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-pressed="true"]
|
|
164
|
+
.segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-pressed="true"],
|
|
165
|
+
.segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-selected="true"] {
|
|
109
166
|
anchor-name: --gl-tab-active;
|
|
110
167
|
}
|
|
111
168
|
}
|
|
@@ -115,11 +172,20 @@
|
|
|
115
172
|
inset-block: 0.25rem;
|
|
116
173
|
border-radius: 0.375rem;
|
|
117
174
|
}
|
|
175
|
+
.segmented-tabs--vertical .segmented-indicator {
|
|
176
|
+
inset-block: auto;
|
|
177
|
+
inset-inline: 0.25rem;
|
|
178
|
+
}
|
|
118
179
|
@supports (position-anchor: --x) {
|
|
119
180
|
.segmented-indicator--anchor {
|
|
120
181
|
inset-block-start: calc(anchor(top) + 0.25rem);
|
|
121
182
|
inset-block-end: calc(anchor(bottom) + 0.25rem);
|
|
122
|
-
|
|
183
|
+
}
|
|
184
|
+
.segmented-tabs--vertical .segmented-indicator--anchor {
|
|
185
|
+
inset-block-start: anchor(top);
|
|
186
|
+
inset-block-end: anchor(bottom);
|
|
187
|
+
inset-inline-start: calc(anchor(left) + 0.25rem);
|
|
188
|
+
inset-inline-end: calc(anchor(right) + 0.25rem);
|
|
123
189
|
}
|
|
124
190
|
}
|
|
125
191
|
}
|
|
@@ -165,33 +231,8 @@
|
|
|
165
231
|
filter: blur(0.5px);
|
|
166
232
|
}
|
|
167
233
|
|
|
168
|
-
/* ──
|
|
169
|
-
.
|
|
170
|
-
border-radius: var(--radius-pill);
|
|
171
|
-
background: var(--surface-tint-6);
|
|
172
|
-
padding: 0.125rem;
|
|
173
|
-
gap: 0.125rem;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.segmented-tabs--pill .segmented-indicator {
|
|
177
|
-
border-radius: var(--radius-pill);
|
|
178
|
-
background: var(--foreground);
|
|
179
|
-
box-shadow: none;
|
|
180
|
-
inset-block: 0.125rem;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.segmented-tabs--pill .segmented-tab {
|
|
184
|
-
border-radius: var(--radius-pill);
|
|
185
|
-
padding: 0.125rem 0.625rem;
|
|
186
|
-
font-size: 0.75rem;
|
|
187
|
-
font-weight: 500;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
.segmented-tabs--pill .segmented-tab[aria-pressed="true"] {
|
|
191
|
-
color: var(--background);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/* ── Underline variant ── (the panel-nav `role=tablist` strip) */
|
|
234
|
+
/* ── Underline variant ── (THE PAPER MATERIAL — the panel-nav `role=tablist` strip)
|
|
235
|
+
NO plate, NO blur, NO track surface — only the ink hairline paints. */
|
|
195
236
|
.segmented-tabs--underline {
|
|
196
237
|
display: flex;
|
|
197
238
|
grid-auto-flow: unset;
|
|
@@ -199,7 +240,29 @@
|
|
|
199
240
|
gap: 0.25rem;
|
|
200
241
|
padding: 0;
|
|
201
242
|
background: none;
|
|
243
|
+
-webkit-backdrop-filter: none;
|
|
244
|
+
|
|
245
|
+
backdrop-filter: none;
|
|
246
|
+
-webkit-backdrop-filter: none;
|
|
247
|
+
box-shadow: none;
|
|
202
248
|
border-radius: 0;
|
|
249
|
+
/* BA.W-SURFACE-AXIS scope 8 — the underline indicator COMPOSES the shared
|
|
250
|
+
`.paper-ink-mark` PAPER ink-hairline register (the 2px --foreground ink mark
|
|
251
|
+
on a paper surface — no plate, no blur, no glass). The register tokens are
|
|
252
|
+
declared here on the host; the `::before` pseudo reads them. ≥2 consumers
|
|
253
|
+
with the math-paper section rail (a HORIZONTAL underline here, a VERTICAL
|
|
254
|
+
left-edge rail there — the SAME mark register, parameterized weight/color).
|
|
255
|
+
The register itself lives in glass/surface-axis.css (CONSUMED, never
|
|
256
|
+
re-minted — a shape gap triumvirates at the minting wave). */
|
|
257
|
+
--paper-ink-mark-weight: 2px;
|
|
258
|
+
--paper-ink-mark-color: var(--foreground);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Vertical underline = the leading-edge ink rail (the math-paper `border-l` read).
|
|
262
|
+
The hairline runs the block extent of the active tab on its inline-start edge. */
|
|
263
|
+
.segmented-tabs--underline.segmented-tabs--vertical {
|
|
264
|
+
flex-direction: column;
|
|
265
|
+
align-items: stretch;
|
|
203
266
|
}
|
|
204
267
|
|
|
205
268
|
/* The active tab is the anchor the underline rule tethers to. */
|
|
@@ -208,28 +271,44 @@
|
|
|
208
271
|
}
|
|
209
272
|
|
|
210
273
|
/* The underline indicator pseudo, position-anchored to the active tab; the
|
|
211
|
-
browser interpolates `inset` between anchors on selection
|
|
212
|
-
reads the same `--stretch` squish the slider does (one
|
|
274
|
+
browser interpolates `inset` between anchors on selection on the ONE calibrated
|
|
275
|
+
clock, and the `scale` reads the same `--stretch` squish the slider does (one
|
|
276
|
+
indicator grammar). */
|
|
213
277
|
.segmented-tabs--underline::before {
|
|
214
278
|
content: "";
|
|
215
279
|
position: absolute;
|
|
216
280
|
position-anchor: --gl-tab-active;
|
|
217
|
-
|
|
281
|
+
/* BA.W-SURFACE-AXIS scope 8 — the 2px ink mark reads the shared
|
|
282
|
+
`.paper-ink-mark` register (weight + --foreground ink) the host declares. */
|
|
283
|
+
inset-block-start: calc(anchor(bottom) - var(--paper-ink-mark-weight, 2px));
|
|
218
284
|
inset-inline-start: anchor(left);
|
|
219
285
|
inset-inline-end: anchor(right);
|
|
220
|
-
block-size: 2px;
|
|
221
|
-
background: var(--foreground);
|
|
286
|
+
block-size: var(--paper-ink-mark-weight, 2px);
|
|
287
|
+
background: var(--paper-ink-mark-color, var(--foreground));
|
|
222
288
|
border-radius: var(--radius-sm);
|
|
223
289
|
transform-origin: center;
|
|
224
290
|
scale: var(--stretch) 1;
|
|
225
291
|
}
|
|
226
292
|
|
|
293
|
+
/* Vertical underline pseudo — the ink mark is a VERTICAL leading-edge rail (the
|
|
294
|
+
`border-l` read): a 2px-wide column on the active tab's inline-start edge,
|
|
295
|
+
running its full block extent. */
|
|
296
|
+
.segmented-tabs--underline.segmented-tabs--vertical::before {
|
|
297
|
+
inset-block-start: anchor(top);
|
|
298
|
+
inset-block-end: anchor(bottom);
|
|
299
|
+
inset-inline-start: calc(anchor(left) - var(--paper-ink-mark-weight, 2px));
|
|
300
|
+
inset-inline-end: auto;
|
|
301
|
+
block-size: auto;
|
|
302
|
+
inline-size: var(--paper-ink-mark-weight, 2px);
|
|
303
|
+
scale: 1 var(--stretch);
|
|
304
|
+
}
|
|
305
|
+
|
|
227
306
|
@media (prefers-reduced-motion: no-preference) {
|
|
228
307
|
.segmented-tabs--underline::before {
|
|
229
|
-
/* control register — the glide + the squish on
|
|
308
|
+
/* control register — the glide + the squish on the ONE calibrated clock. */
|
|
230
309
|
transition:
|
|
231
|
-
inset var(--duration
|
|
232
|
-
scale var(--duration
|
|
310
|
+
inset var(--tab-indicator-duration) var(--spring-snappy),
|
|
311
|
+
scale var(--tab-indicator-duration) var(--spring-snappy);
|
|
233
312
|
}
|
|
234
313
|
}
|
|
235
314
|
|
|
@@ -239,7 +318,11 @@
|
|
|
239
318
|
display: none;
|
|
240
319
|
}
|
|
241
320
|
.segmented-tabs--underline .segmented-tab[aria-selected="true"] {
|
|
242
|
-
border-bottom: 2px solid var(--foreground);
|
|
321
|
+
border-bottom: var(--paper-ink-mark-weight, 2px) solid var(--foreground);
|
|
322
|
+
}
|
|
323
|
+
.segmented-tabs--underline.segmented-tabs--vertical .segmented-tab[aria-selected="true"] {
|
|
324
|
+
border-bottom: none;
|
|
325
|
+
border-inline-start: var(--paper-ink-mark-weight, 2px) solid var(--foreground);
|
|
243
326
|
}
|
|
244
327
|
}
|
|
245
328
|
|
|
@@ -247,29 +330,48 @@
|
|
|
247
330
|
padding: 0.375rem 0.75rem;
|
|
248
331
|
font-size: inherit;
|
|
249
332
|
border-radius: 0.25rem;
|
|
250
|
-
|
|
333
|
+
/* The tab-text colour cross-fade rides the fast generic clock (the §6 doctrine
|
|
334
|
+
— a colour shift is a bezier ease, never a spring), matching the pill tab
|
|
335
|
+
buttons. The INDICATOR glide is the only channel on the calibrated spring
|
|
336
|
+
clock. */
|
|
337
|
+
transition: color var(--duration-fast) ease;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.segmented-tabs--underline.segmented-tabs--vertical .segmented-tab {
|
|
341
|
+
text-align: start;
|
|
251
342
|
}
|
|
252
343
|
|
|
253
344
|
.segmented-tabs--underline .segmented-tab:hover {
|
|
254
|
-
color: var(--
|
|
345
|
+
color: color-mix(in oklab, var(--foreground) 70%, transparent);
|
|
255
346
|
}
|
|
256
347
|
|
|
257
|
-
/*
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
.
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
348
|
+
/* ════════════════════════════════════════════════════════════════════════
|
|
349
|
+
BB.W-DRAG-MORPH — the `.glass-drag-lift` decoration (the pull affordance).
|
|
350
|
+
|
|
351
|
+
The `useDragMorph` consumer adds this class to the morph element while
|
|
352
|
+
`dragging` is true (the SegmentedTabs `:draggable` indicator; the
|
|
353
|
+
DockLayerGroup pull rail). It is the visual "this is grabbable + grabbed"
|
|
354
|
+
affordance — the GRAB cursor + a sub-perceptual `--glass-specular` catch-light
|
|
355
|
+
lift + the `will-change: transform` compositor hint that promotes the lozenge
|
|
356
|
+
to its own layer for the 1:1 follow. It carries NO transform itself (the
|
|
357
|
+
translate + squish are the primitive's own `translate`/`--stretch` writes, the
|
|
358
|
+
§6 compositor channels); this class only paints the affordance + the hint.
|
|
359
|
+
|
|
360
|
+
The grab cursor sits on the morph element AT REST too (a draggable indicator
|
|
361
|
+
reads grabbable before the grab), so `.glass-drag-grabbable` marks the rest
|
|
362
|
+
affordance and `.glass-drag-lift` adds the grabbing state. PRM does not gate
|
|
363
|
+
the cursor/hint (they are not motion); the lift is a static specular nudge. */
|
|
364
|
+
.glass-drag-grabbable {
|
|
365
|
+
cursor: grab;
|
|
366
|
+
touch-action: none;
|
|
269
367
|
}
|
|
270
368
|
|
|
271
|
-
.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
369
|
+
.glass-drag-lift {
|
|
370
|
+
cursor: grabbing;
|
|
371
|
+
/* Promote to its own compositor layer for the 1:1 follow (the translate write
|
|
372
|
+
is compositor-only; the hint keeps the plate off the main-thread paint). */
|
|
373
|
+
will-change: transform;
|
|
374
|
+
/* Sub-perceptual catch-light lift — the grabbed lozenge reads a hair brighter
|
|
375
|
+
at its specular edge (the W-GLASS-CAL specular register, disco-FREE). */
|
|
376
|
+
--glass-specular: 0.1;
|
|
275
377
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* select.css — the Select content collision-bound, pre-compiled (BA.W-EMISSION).
|
|
3
|
+
*
|
|
4
|
+
* THE DEFECT (BA-VJS-A2-WO1 / valuejs-fold A-2): SelectContent.vue authored its
|
|
5
|
+
* collision-bound as a Tailwind ARBITRARY-BRACKET utility
|
|
6
|
+
* [max-height:var(--reka-popper-available-height,60dvh)]
|
|
7
|
+
* which is correct in SOURCE but compiles ONLY into a `dist/*.js` render-function
|
|
8
|
+
* chunk no consumer content-scan reaches (and the P9 emitComponentUtilities
|
|
9
|
+
* safelist rejects fully-arbitrary bracket tokens by construction). So in every
|
|
10
|
+
* consumer the bound NEVER painted — `getComputedStyle(content).maxHeight === "none"`
|
|
11
|
+
* — and a 16-item dropdown rendered 745px tall, overflowing a 900px viewport by
|
|
12
|
+
* 125px (the value.js U-DROPDOWN capture, the binding RED evidence).
|
|
13
|
+
*
|
|
14
|
+
* THE FIX: move the bound to a PRECOMPILED rule that ships in `dist/glass-ui.css`
|
|
15
|
+
* regardless of consumer JIT reach — it is a plain attribute-selector rule, not a
|
|
16
|
+
* Tailwind utility, so it always emits. The cap is the kf donor's default
|
|
17
|
+
* `min(24rem, 60dvh)` (kf design-idioms.css `--easing-dropdown-max-h`; the U8
|
|
18
|
+
* bounded-scroll reference), TIGHTENED by reka's measured
|
|
19
|
+
* `--reka-popper-available-height` on a short viewport via the inner `min()`.
|
|
20
|
+
* `overflow-y: auto` (already on the content via the CVA base) gives the inner
|
|
21
|
+
* scroll. The behaviour is identical to the authored class — it now SHIPS.
|
|
22
|
+
*
|
|
23
|
+
* --select-content-max-h is the ONE retint knob (a consumer widens/narrows the cap
|
|
24
|
+
* by overriding it on any ancestor). The default folds reka's available-height in:
|
|
25
|
+
* when reka reports a height (popper measured), the bound is the MIN of that and
|
|
26
|
+
* the 24rem/60dvh ceiling, so the panel never exceeds the viewport AND never grows
|
|
27
|
+
* past the comfortable ceiling.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
:root {
|
|
31
|
+
/* The comfortable ceiling — the kf donor default. */
|
|
32
|
+
--select-content-max-h: min(24rem, 60dvh);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
[data-slot="select-content"] {
|
|
36
|
+
/* The collision-bound: the comfortable ceiling, tightened by reka's measured
|
|
37
|
+
available height on a short viewport. `--reka-popper-available-height` is
|
|
38
|
+
written by reka-ui's popper-positioner; on a tall viewport it exceeds the
|
|
39
|
+
ceiling (so the ceiling wins) and on a short one it clamps the panel to the
|
|
40
|
+
space below the trigger (so the panel bottoms inside the viewport). When reka
|
|
41
|
+
has not yet measured, the fallback is the ceiling alone. */
|
|
42
|
+
max-height: min(
|
|
43
|
+
var(--select-content-max-h),
|
|
44
|
+
var(--reka-popper-available-height, var(--select-content-max-h))
|
|
45
|
+
);
|
|
46
|
+
/* The inner-scroll affordance ships with the bound (the CVA base also sets
|
|
47
|
+
overflow-y-auto; restated here so the bound + scroll travel together as one
|
|
48
|
+
precompiled contract). */
|
|
49
|
+
overflow-y: auto;
|
|
50
|
+
}
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
|
|
48
48
|
/* Letter spacing → tracking-* utilities */
|
|
49
49
|
--tracking-tight: var(--type-tracking-tight);
|
|
50
|
+
/* BB.W-DISPLAY-TRACKING — the display-ONLY Apple −1.5% tracking rung bridged
|
|
51
|
+
to the `tracking-display` utility (the token-first consumer affordance). */
|
|
52
|
+
--tracking-display: var(--type-tracking-display);
|
|
50
53
|
--tracking-snug: var(--type-tracking-snug);
|
|
51
54
|
--tracking-normal: var(--type-tracking-normal);
|
|
52
55
|
--tracking-wide: var(--type-tracking-wide);
|
|
@@ -211,6 +214,22 @@
|
|
|
211
214
|
--color-gold-dark: var(--gold-dark);
|
|
212
215
|
--color-gold-deep: var(--gold-deep);
|
|
213
216
|
|
|
217
|
+
/* BA.W-ATLAS-RECONCILE C-3 — the silver structure metal (gold's mirror; the
|
|
218
|
+
InstrumentChassis `variant="structure"` register). The @theme namespace var
|
|
219
|
+
a `text-silver`/`bg-silver` utility resolves through. */
|
|
220
|
+
--color-silver: var(--silver);
|
|
221
|
+
--color-silver-light: var(--silver-light);
|
|
222
|
+
--color-silver-dark: var(--silver-dark);
|
|
223
|
+
--color-silver-deep: var(--silver-deep);
|
|
224
|
+
|
|
225
|
+
/* BB.W-METAL-SHIMMER — the bronze brand metal (the third member of the
|
|
226
|
+
gold·silver·bronze triad; the @theme namespace bridge so a `text-bronze`/
|
|
227
|
+
`bg-bronze` utility resolves through, mirroring gold/silver). */
|
|
228
|
+
--color-bronze: var(--bronze);
|
|
229
|
+
--color-bronze-light: var(--bronze-light);
|
|
230
|
+
--color-bronze-dark: var(--bronze-dark);
|
|
231
|
+
--color-bronze-deep: var(--bronze-deep);
|
|
232
|
+
|
|
214
233
|
--color-rainbow-red: var(--rainbow-red);
|
|
215
234
|
--color-rainbow-orange: var(--rainbow-orange);
|
|
216
235
|
--color-rainbow-yellow: var(--rainbow-yellow);
|
|
@@ -333,5 +352,7 @@
|
|
|
333
352
|
--transition-duration-panel: var(--duration-panel);
|
|
334
353
|
--transition-duration-xl: var(--duration-xl);
|
|
335
354
|
--transition-duration-xxl: var(--duration-xxl);
|
|
336
|
-
|
|
355
|
+
/* BA.W-GLASS-CAL — `--transition-duration-sparkle` bridge DELETED with the
|
|
356
|
+
`--duration-sparkle` token (the disco retirement); no `duration-sparkle`
|
|
357
|
+
utility consumer. */
|
|
337
358
|
}
|
|
@@ -30,10 +30,19 @@
|
|
|
30
30
|
band-pass vs one-pass sweep) want different tempos. The pre-V audit
|
|
31
31
|
(C-c §5.3) flagged this as a "naming inversion"; it is intentional —
|
|
32
32
|
documented here so the offset is searchable. The orphan
|
|
33
|
-
`--duration-shimmer-slow` (8s) was excised in V.W2 T5.
|
|
33
|
+
`--duration-shimmer-slow` (8s) was excised in V.W2 T5.
|
|
34
|
+
|
|
35
|
+
BB.W-METAL-SHIMMER — `--animate-gold-shimmer` re-points onto the metal-
|
|
36
|
+
PARAMETERIZED `metal-shimmer-sweep` keyframe (the gold-only
|
|
37
|
+
`gold-shimmer-slide` RETIRED — clean break, no alias); the duration/tempo
|
|
38
|
+
are byte-preserved (the gold READ unchanged). `--animate-metal` is the
|
|
39
|
+
brand-metal family's own row on the slow `--duration-metal` (6s) clock — the
|
|
40
|
+
`.metal-{gold,silver,bronze}`/`.metal-*-border`/`.metal-rainbow-rim`
|
|
41
|
+
utilities read it (utilities/metal.css). */
|
|
34
42
|
--animate-shimmer: shimmer var(--duration-shimmer-fast) linear infinite;
|
|
35
43
|
--animate-shimmer-sweep: shimmer-sweep var(--duration-shimmer) ease-in-out infinite;
|
|
36
|
-
--animate-gold-shimmer:
|
|
44
|
+
--animate-gold-shimmer: metal-shimmer-sweep var(--duration-shimmer) linear infinite;
|
|
45
|
+
--animate-metal: metal-shimmer-sweep var(--duration-metal) linear infinite;
|
|
37
46
|
--animate-shake: shake 0.5s ease-in-out;
|
|
38
47
|
|
|
39
48
|
/* ═══════════════════════════════════════════════
|
|
@@ -64,7 +64,12 @@
|
|
|
64
64
|
|x|^(2K) + |y|^(2K) = 1, so the curve exponent n = 2K. The CSS `squircle`
|
|
65
65
|
keyword == `superellipse(2)` == n=4 — the iOS-idiomatic web squircle. The
|
|
66
66
|
k-PRIMITIVE band (a consumer dials 1.7–2.4 to taste; W42's dock-morph calc()s
|
|
67
|
-
its animated k against this ONE vocabulary — do not re-define a second k).
|
|
67
|
+
its animated k against this ONE vocabulary — do not re-define a second k).
|
|
68
|
+
(BB.W-DEAD-SWEEP re-ground: --corner-k-soft / --corner-k-sharp have no
|
|
69
|
+
runtime var() consumer but ARE pinned by proof:squircle-language (the
|
|
70
|
+
TOKEN-AXIS-EXISTS clause asserts both rungs are minted) — so KEPT, not
|
|
71
|
+
swept; the clean-break delete is a coordination follow-up once the gate
|
|
72
|
+
re-anchors.) */
|
|
68
73
|
--corner-k-squircle: 2; /* the squircle — superellipse(2), n=4 */
|
|
69
74
|
--corner-k-soft: 1.7; /* gentler, between round and squircle — n≈3.4 */
|
|
70
75
|
--corner-k-sharp: 2.4; /* crisper square-bias for large surfaces — n≈4.8 */
|
|
@@ -23,28 +23,55 @@
|
|
|
23
23
|
5 → 6 : 10 L (muted text → strong-muted text, secondary register)
|
|
24
24
|
|
|
25
25
|
Semantic aliases re-point into the scale — no back-compat shims.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
|
|
27
|
+
BA.W-NO-GRAY — THE WARM-CHROMA FLOOR (R10-5 "No gray."). The ladder was
|
|
28
|
+
SPECIFIED warm (hue 48) but RESOLVED achromatic — at 6-10% sat across
|
|
29
|
+
L40-95 the painted OKLab chroma landed C 0.0055-0.0155 (below the ~0.020
|
|
30
|
+
perceptual gray floor) AND at hsl-48 the OKLab hue mapped to ~95° (a
|
|
31
|
+
yellow-green), NOT the warm-amber the --foreground ink carries (hsl-24 →
|
|
32
|
+
OKLab H≈56°). The fix is CHROMA-ONLY at constant L: warm the hue toward
|
|
33
|
+
the foreground register (hsl 28-34 → OKLab H 62-72°, warm MATERIAL not a
|
|
34
|
+
cast) AND lift the saturation off the gray floor. The L is unchanged (the
|
|
35
|
+
contrast contract — AA re-ratified, ±0.01 of HEAD). The mid/low-L rungs
|
|
36
|
+
clear the strong floor C≥0.020; the L90 chip is gamut-bound (it cannot
|
|
37
|
+
carry 0.020 at L90 without a visible cast — the triumvirate "tinted not
|
|
38
|
+
warm" trigger), so it lifts to a materially-warm C≈0.013 (~2.4× HEAD).
|
|
39
|
+
Machine-locked by proof:no-gray + tests-visual/no-gray.spec.ts. */
|
|
40
|
+
--neutral-0: hsl(40 30% 98%); /* L 98 — page surface (warm-cream, KEEP-NEUTRAL surface) */
|
|
41
|
+
--neutral-1: hsl(38 26% 95%); /* L 95 — soft field bg */
|
|
42
|
+
--neutral-2: hsl(34 28% 90%); /* L 90 — chip / tab-inactive bg (warm, gamut-bound C≈0.013) */
|
|
43
|
+
--neutral-3: hsl(33 30% 82%); /* L 82 — hover / highlight bg (warm, C≈0.025) */
|
|
44
|
+
--neutral-4: hsl(32 26% 70%); /* L 70 — subtle border (warm, C≈0.036) */
|
|
45
|
+
--neutral-5: hsl(30 22% 40%); /* L 40 — muted text (warm, C≈0.043; WCAG AA: 5.21:1 vs page / 4.90:1 vs muted) */
|
|
33
46
|
/* W7-α' (AK-FD1) — strong-muted text rung. One principled ladder step
|
|
34
47
|
(10 L darker, the 5→6 cadence above) past muted text toward
|
|
35
48
|
--foreground (L10). Sits at the 1/3 point of the L40→L10 muted→primary
|
|
36
49
|
gap: legible secondary text that reads less-faint than muted but not as
|
|
37
50
|
assertive as primary. By-COLOUR per the canon (a neutral step, not an
|
|
38
|
-
alpha mute)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
51
|
+
alpha mute). BA.W-NO-GRAY — re-saturated onto the warm identity in
|
|
52
|
+
lockstep with the ladder (hsl 28 24% — OKLab H 62°, C≈0.038, the warm
|
|
53
|
+
register; L held at 30). WCAG AA: 7.88:1 vs L98 page / 7.43:1 vs L95
|
|
54
|
+
muted (cf. neutral-5's 5.21:1) — comfortably above the 4.5:1 body floor. */
|
|
55
|
+
--neutral-6: hsl(28 24% 30%); /* L 30 — strong-muted text (secondary register, warm) */
|
|
42
56
|
|
|
43
57
|
--background: var(--neutral-0);
|
|
44
58
|
--foreground: hsl(24 10% 10%);
|
|
45
|
-
--card
|
|
59
|
+
/* BA.W-NO-GRAY L1 — the warm-bias glass PLATE. --card was `var(--neutral-0)`
|
|
60
|
+
(the near-achromatic L98 page, OKLab C 0.0017) — so every glass plate
|
|
61
|
+
(Card/Button/Toast/Popover/Dialog/Sheet, all --card-derived) composited a
|
|
62
|
+
flat gray slab over a flat backdrop (the G1/G8 defect, the user's "no gray
|
|
63
|
+
... for cards, buttons"). Glass is TRANSMISSIVE — over a flat page there
|
|
64
|
+
is nothing behind to modulate, so the plate is its own near-neutral cream.
|
|
65
|
+
--card DECOUPLES from the page to a warm-cream value carrying a real OKLab
|
|
66
|
+
chroma (hsl 36 48% 97% → OKLab C 0.0062 at warm H 75°, L kept ~98 so the
|
|
67
|
+
page-card SURFACE read is byte-stable), so the plate reads WARM over ANY
|
|
68
|
+
backdrop — the plate floor (composited C ≥ 0.0035, ~2× HEAD) the gamut
|
|
69
|
+
allows a near-white translucent surface. The DARK --card is W-DARK-MATERIAL's
|
|
70
|
+
lifted hsl(24 8% 16%) (NOT re-warmed here — the dark register is its work).
|
|
71
|
+
Bounded: the cream family, never a tinted cast (the triumvirate bar). */
|
|
72
|
+
--card: hsl(36 48% 97%);
|
|
46
73
|
--card-foreground: var(--foreground);
|
|
47
|
-
--popover: var(--
|
|
74
|
+
--popover: var(--card);
|
|
48
75
|
--popover-foreground: var(--foreground);
|
|
49
76
|
|
|
50
77
|
/* R0G-5 (AO.W4) — warm-neutral public-data panel surface. One warmth step
|