@mkbabb/glass-ui 3.12.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CardAction-XH4YBVEK.js +158 -0
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
- package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
- package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
- package/dist/DialogContent-DDE6pQBU.js +103 -0
- package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
- package/dist/FadingScroll-DwNnvKMs.js +76 -0
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
- package/dist/IconChip-BDw1j5mu.js +54 -0
- package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
- package/dist/MetricBadge-BpC0R_Ec.js +79 -0
- package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
- package/dist/PopoverContent-BTorlp--.js +127 -0
- package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
- package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
- package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
- package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
- package/dist/animated-digit.js +3 -3
- package/dist/api/index.d.ts +10 -4
- package/dist/api.js +1 -1
- package/dist/aurora.js +113 -98
- package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +101 -145
- package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
- package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
- package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
- package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
- package/dist/coalesceMetric-5qIeZnTx.js +13 -0
- package/dist/collapsible.js +1 -1
- package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
- 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/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
- package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -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/configurator/Configurator.vue.d.ts +19 -8
- package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +61 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
- package/dist/components/custom/constellation/constellationField.d.ts +3 -403
- package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
- package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
- package/dist/components/custom/constellation/index.d.ts +5 -2
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
- 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 -6
- package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/index.d.ts +1 -0
- package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +83 -0
- package/dist/components/custom/dock/index.d.ts +5 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
- 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 +7 -0
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +34 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
- package/dist/components/custom/goo-blob/constants.d.ts +57 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/handmark/brush.d.ts +33 -6
- package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
- package/dist/components/custom/handmark/constants.d.ts +39 -0
- package/dist/components/custom/handmark/geometry.d.ts +14 -12
- package/dist/components/custom/handmark/index.d.ts +8 -2
- package/dist/components/custom/handmark/types.d.ts +9 -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 +72 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
- package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
- package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
- package/dist/components/custom/metric-badge/index.d.ts +1 -0
- package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
- 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/tabs/SegmentedTabs.vue.d.ts +20 -25
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
- package/dist/components/custom/tabs/constants.d.ts +18 -0
- package/dist/components/custom/tabs/index.d.ts +1 -1
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
- 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/card/Card.vue.d.ts +16 -4
- package/dist/components/ui/carousel/index.d.ts +0 -1
- package/dist/components/ui/command/Command.vue.d.ts +3 -0
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/index.d.ts +0 -1
- package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
- package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
- 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/skeleton/Skeleton.vue.d.ts +3 -0
- package/dist/components/ui/slider/index.d.ts +22 -19
- package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/components/ui/toggle/index.d.ts +1 -1
- package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
- package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
- package/dist/composables/color/index.d.ts +12 -0
- package/dist/composables/dark/useGlobalDark.d.ts +14 -12
- package/dist/composables/glass/index.d.ts +0 -1
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/motion/core/index.d.ts +1 -1
- package/dist/composables/motion/curves.d.ts +48 -0
- package/dist/composables/motion/index.d.ts +2 -0
- package/dist/composables/motion/springPresets.d.ts +33 -0
- package/dist/composables/motion/suite.d.ts +2 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
- package/dist/composables/motion/useSpringMount.d.ts +1 -1
- package/dist/composables/motion/useViewTransition.d.ts +36 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +3 -3
- package/dist/constellation.js +373 -261
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +48 -14
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +901 -372
- package/dist/dockContext-Bu1Avy-a.js +17 -0
- package/dist/dom.js +5 -5
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +44 -81
- package/dist/fading-scroll.d.ts +1 -0
- package/dist/fading-scroll.js +2 -0
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +140 -104
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +90 -21
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +230 -236
- package/dist/goo-blob.js +264 -228
- package/dist/handmark.js +203 -159
- 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 -5
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +28 -18
- package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
- package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +29 -22
- package/dist/metric-stack.js +35 -34
- package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
- package/dist/motion-core.js +32 -136
- package/dist/motion-curves.d.ts +1 -0
- package/dist/motion-curves.js +130 -0
- package/dist/motion.js +38 -37
- 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/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-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
- package/dist/search.js +10 -10
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet-CquRYOAw.js +218 -0
- package/dist/sheet.js +1 -1
- package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/springPresets-WXaLbu8u.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +25 -125
- package/dist/styles/cards.css +55 -0
- package/dist/styles/components.css +4 -1
- package/dist/styles/configurator.css +77 -0
- package/dist/styles/dock/density.css +19 -0
- package/dist/styles/dock/layer-group.css +83 -25
- package/dist/styles/dock/layers.css +23 -1
- package/dist/styles/dock/morph-bridge.css +123 -0
- package/dist/styles/dock/morph.css +175 -45
- package/dist/styles/dock/overflow.css +66 -1
- package/dist/styles/dock/rail-extend.css +397 -0
- package/dist/styles/dock/section.css +59 -0
- package/dist/styles/dock/shell.css +97 -110
- package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/dist/styles/dock-controls/icon-button.css +143 -0
- package/dist/styles/dock-controls/tab-button.css +143 -0
- package/dist/styles/dock-controls/touch-floor.css +94 -0
- package/dist/styles/dock-controls/triggers.css +135 -0
- package/dist/styles/dock-controls.css +30 -595
- package/dist/styles/dock.css +8 -3
- package/dist/styles/drawer.css +48 -0
- package/dist/styles/feedback-tone.css +104 -0
- package/dist/styles/floating-panel.css +17 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +383 -0
- package/dist/styles/glass/material.css +238 -0
- package/dist/styles/glass/progress-rail.css +78 -0
- package/dist/styles/glass/squircle.css +66 -0
- package/dist/styles/glass/surface-axis.css +113 -0
- package/dist/styles/glass/surfaces.css +382 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +34 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/icon-chip.css +149 -0
- package/dist/styles/index.css +94 -18
- package/dist/styles/instrument-chassis.css +46 -0
- package/dist/styles/menu.css +127 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/segmented-tabs.css +346 -0
- package/dist/styles/select.css +50 -0
- package/dist/styles/theme/bridges.css +347 -0
- package/dist/styles/theme/dark.css +7 -0
- package/dist/styles/theme/literals.css +94 -0
- package/dist/styles/theme/radius.css +95 -0
- package/dist/styles/theme.css +26 -529
- package/dist/styles/tokens/color-radius.css +287 -0
- package/dist/styles/tokens/dark-arm.css +308 -0
- package/dist/styles/tokens/glass.css +500 -0
- package/dist/styles/tokens/light-dark.css +187 -0
- package/dist/styles/tokens/offsets-sizing.css +562 -0
- package/dist/styles/tokens/property-regs.css +162 -0
- package/dist/styles/tokens/scale-paper.css +409 -0
- package/dist/styles/tokens/scheme-motion.css +352 -0
- package/dist/styles/tokens/shadow.css +166 -0
- package/dist/styles/tokens.css +22 -2360
- 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 +159 -0
- package/dist/styles/typography.css +23 -453
- package/dist/styles/utilities/a11y-overrides.css +169 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +541 -0
- package/dist/styles/utilities/btn.css +218 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1318
- package/dist/styles/view-transition.css +4 -52
- package/dist/switch.js +1 -1
- package/dist/tabs.js +161 -181
- 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-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
- package/dist/useConfiguratorState-kiIlun8I.js +303 -0
- package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
- package/dist/useRAFLoop-CdwJ7284.js +109 -0
- package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
- package/dist/useSpecularTracking-Bo5su68i.js +32 -0
- package/dist/useSpringMount-CvopqiFr.js +108 -0
- package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
- package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
- package/dist/useViewTransition-COsPjQVZ.js +47 -0
- package/dist/utils/coalesceMetric.d.ts +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/vReveal-D9k0jADx.js +10 -0
- package/dist/watercolor-dot.js +22 -13
- package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
- package/package.json +134 -50
- package/src/styles/animations.css +25 -125
- package/src/styles/cards.css +53 -0
- package/src/styles/configurator.css +77 -0
- package/src/styles/dock/density.css +19 -0
- package/src/styles/dock/layer-group.css +83 -25
- package/src/styles/dock/layers.css +23 -1
- package/src/styles/dock/morph-bridge.css +123 -0
- package/src/styles/dock/morph.css +175 -45
- package/src/styles/dock/overflow.css +66 -1
- package/src/styles/dock/rail-extend.css +397 -0
- package/src/styles/dock/section.css +59 -0
- package/src/styles/dock/shell.css +97 -110
- package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/src/styles/dock-controls/icon-button.css +143 -0
- package/src/styles/dock-controls/tab-button.css +143 -0
- package/src/styles/dock-controls/touch-floor.css +94 -0
- package/src/styles/dock-controls/triggers.css +135 -0
- package/src/styles/dock-controls.css +30 -595
- package/src/styles/dock.css +8 -3
- package/src/styles/drawer.css +42 -0
- package/src/styles/feedback-tone.css +104 -0
- package/src/styles/floating-panel.css +15 -0
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +383 -0
- package/src/styles/glass/material.css +238 -0
- package/src/styles/glass/progress-rail.css +78 -0
- package/src/styles/glass/squircle.css +66 -0
- package/src/styles/glass/surface-axis.css +113 -0
- package/src/styles/glass/surfaces.css +382 -0
- package/src/styles/glass.css +34 -1188
- package/src/styles/icon-chip.css +149 -0
- package/src/styles/index.css +93 -17
- package/src/styles/instrument-chassis.css +42 -0
- package/src/styles/menu.css +127 -0
- package/src/styles/paper.css +2 -68
- package/src/styles/segmented-tabs.css +340 -0
- package/src/styles/select.css +50 -0
- package/src/styles/theme/bridges.css +347 -0
- package/src/styles/theme/dark.css +7 -0
- package/src/styles/theme/literals.css +94 -0
- package/src/styles/theme/radius.css +95 -0
- package/src/styles/theme.css +26 -529
- package/src/styles/tokens/color-radius.css +287 -0
- package/src/styles/tokens/dark-arm.css +308 -0
- package/src/styles/tokens/glass.css +500 -0
- package/src/styles/tokens/light-dark.css +187 -0
- package/src/styles/tokens/offsets-sizing.css +562 -0
- package/src/styles/tokens/property-regs.css +162 -0
- package/src/styles/tokens/scale-paper.css +409 -0
- package/src/styles/tokens/scheme-motion.css +352 -0
- package/src/styles/tokens/shadow.css +166 -0
- package/src/styles/tokens.css +22 -2360
- 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 +159 -0
- package/src/styles/typography.css +23 -453
- package/src/styles/utilities/a11y-overrides.css +169 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +541 -0
- package/src/styles/utilities/btn.css +218 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1318
- package/src/styles/view-transition.css +4 -52
- package/dist/CardAction-DuArVky-.js +0 -157
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/DialogContent-BRkT1cjP.js +0 -100
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/MetricBadge-BZVWIxNy.js +0 -80
- package/dist/PopoverContent-BId6ggf_.js +0 -121
- package/dist/TabsList-B8CVOQPC.js +0 -101
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
- package/dist/components/custom/deck-progress/index.d.ts +0 -2
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
- package/dist/components/custom/dialog-native/index.d.ts +0 -1
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
- package/dist/components/custom/instrument-rail/index.d.ts +0 -2
- package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
- package/dist/composables/motion/useRouteTransition.d.ts +0 -42
- package/dist/deck-progress.d.ts +0 -1
- package/dist/deck-progress.js +0 -2
- package/dist/dockContext-BKeIMmNk.js +0 -9
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/sheet-VZEtNFvO.js +0 -214
- package/dist/styles/instrument-rail.css +0 -127
- package/dist/useConfiguratorState-DxAqksK6.js +0 -287
- package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
- package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
- package/dist/useSpringMount-BJSHcLl3.js +0 -113
- package/dist/useViewTransition-DaN5Zrox.js +0 -21
- package/dist/vReveal-zUIQk-rJ.js +0 -53
- package/src/styles/instrument-rail.css +0 -127
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
- /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
- /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
- /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
- /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
- /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
- /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
- /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
- /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
- /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
- /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
- /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
- /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
- /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
- /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
- /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
- /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
- /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
- /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
- /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
- /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
/* glass/ladder.css
|
|
2
|
+
The five-tier .glass-{wash,quiet,resting,floating,overlay} surface ladder + the W55 adaptive-legibility @container style(--glass-backdrop: light) bucket (co-located with its rung) + the .glass-opaque escape + the content-aware under-shadow.
|
|
3
|
+
Carved from the glass.css cascade root; @import-ed by glass.css in cascade
|
|
4
|
+
order, each in its own @layer components (isomorphic to the monolith).
|
|
5
|
+
See docs/precepts/design-idioms.md §cohesion-aware partials. */
|
|
6
|
+
@layer components {
|
|
7
|
+
/* ── Five-tier surface ladder (v0.8.0; visual only, no geometry) ──
|
|
8
|
+
Tier semantics, alpha-monotonic per R3-spec §A:
|
|
9
|
+
wash ~0.30α + light blur (was `subtle`)
|
|
10
|
+
quiet ~0.50α + medium blur (the missing rung)
|
|
11
|
+
resting ~0.65α + canonical blur (was `default`; the speedtest plate)
|
|
12
|
+
floating ~0.80α + heavier blur (was `elevated`)
|
|
13
|
+
overlay ~0.95α + heaviest blur (NEW; modal-over-modal) */
|
|
14
|
+
|
|
15
|
+
/* The five-rung surface ladder declares the unprefixed
|
|
16
|
+
`backdrop-filter` only IN SOURCE. Authoring both forms manually here
|
|
17
|
+
caused Lightning CSS in Tailwind v4 to dedup-and-keep-prefixed,
|
|
18
|
+
which modern Chromium then dropped from the CSSOM (the prefixed
|
|
19
|
+
alias is parser-rejected post-Chrome 113). AY.W-A11Y-PERF O-2a — the
|
|
20
|
+
build now OWNS the prefix: `vite.style-assets.ts publishStyleAssets()`
|
|
21
|
+
injects the `-webkit-backdrop-filter:` pair into the SHIPPED
|
|
22
|
+
`dist/styles/*.css` as a LAST pass (the source stays unprefixed, so
|
|
23
|
+
the Lightning dedup never sees both forms; the build emits the pair
|
|
24
|
+
after the cascade is assembled). This GUARANTEES the prefix reaches
|
|
25
|
+
dist/ regardless of the consumer's autoprefixer/browserslist — a
|
|
26
|
+
Safari ≤17 engine (webkit-form-only) paints the blur instead of
|
|
27
|
+
silently dropping the unprefixed rule. Verified by
|
|
28
|
+
`proof:webkit-backdrop` (count-parity over the shipped dist). */
|
|
29
|
+
/* AW.W23 — every rung's background composes the adaptive-tint recipe
|
|
30
|
+
(`color-mix(in oklab, <rung bg>, var(--glass-tint-source) var(--glass-tint-
|
|
31
|
+
strength))`). With the default `--glass-tint-strength: 0%` the mix is a
|
|
32
|
+
no-op = byte-identical to the un-tinted rung; a consumer biases the surface
|
|
33
|
+
toward a sampled backdrop hue by setting `--glass-tint-source` + a
|
|
34
|
+
strength ≤30%. oklab is the mwg-preferred tint space (NEVER an
|
|
35
|
+
`oklch(from …)` lightness-shift — browsers don't gamut-map yet). */
|
|
36
|
+
.glass-wash {
|
|
37
|
+
position: relative;
|
|
38
|
+
background: color-mix(in oklab, var(--glass-bg-wash), var(--glass-tint-source) var(--glass-tint-strength));
|
|
39
|
+
backdrop-filter: var(--glass-blur-wash);
|
|
40
|
+
border: 1px solid var(--glass-border-wash);
|
|
41
|
+
box-shadow: var(--glass-material-rim), var(--glass-shadow-wash);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* AL-W10 SLIM under-shadow wiring (tokens.css §AL-W10 SLIM —
|
|
45
|
+
UNDER-SHADOW recipe rungs). Each tier composes its canonical
|
|
46
|
+
iOS Liquid Glass under-shadow (a 0.5px dark hairline along the
|
|
47
|
+
bottom edge reading as glass thickness) as a NON-INSET layer
|
|
48
|
+
PREPENDED to the existing `--glass-shadow-*` recipe — the under-
|
|
49
|
+
shadow lays the floor; the existing shadow stack lays the lift.
|
|
50
|
+
quiet → `--glass-under-shadow-quiet` (0 2px 8px -1px α0.04)
|
|
51
|
+
resting → `--glass-under-shadow-default` (0 4px 16px -2px α0.08)
|
|
52
|
+
floating→ `--glass-under-shadow-vivid` (0 8px 32px -4px α0.12)
|
|
53
|
+
`.glass-wash` is sub-perceptual; `.glass-overlay` is modal-heavy
|
|
54
|
+
— neither composes an under-shadow rung (Y4/Y6/Y7 SLIM retention).
|
|
55
|
+
Spine tier wires its own rung at instrument-chassis.css. */
|
|
56
|
+
.glass-quiet {
|
|
57
|
+
position: relative;
|
|
58
|
+
background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
|
|
59
|
+
backdrop-filter: var(--glass-blur-quiet);
|
|
60
|
+
border: 1px solid var(--glass-border-quiet);
|
|
61
|
+
box-shadow:
|
|
62
|
+
var(--glass-material-rim),
|
|
63
|
+
var(--glass-under-shadow-quiet),
|
|
64
|
+
var(--glass-shadow-quiet);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.glass-resting {
|
|
68
|
+
position: relative;
|
|
69
|
+
background: color-mix(in oklab, var(--glass-bg-resting), var(--glass-tint-source) var(--glass-tint-strength));
|
|
70
|
+
backdrop-filter: var(--glass-blur-resting);
|
|
71
|
+
border: 1px solid var(--glass-border-resting);
|
|
72
|
+
box-shadow:
|
|
73
|
+
var(--glass-material-rim),
|
|
74
|
+
var(--glass-under-shadow-default),
|
|
75
|
+
var(--glass-shadow-resting);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* AV.W15 M3 / AW.W22 — the floating tier carries the full-perimeter rim (the
|
|
79
|
+
catch-light that "defines the silhouette", WWDC25 sess. 219). The rim now
|
|
80
|
+
comes from the unified `--glass-material-rim` (= `--glass-edge-light`) so
|
|
81
|
+
it shares ONE source with the rest of the ladder; it rides INSIDE the
|
|
82
|
+
box-shadow stack so it composes with the under-shadow floor + the lift. */
|
|
83
|
+
.glass-floating {
|
|
84
|
+
/* AY.W-A11Y-PERF O-1 — engage the W55 bright-backdrop bucket BY DEFAULT on
|
|
85
|
+
the overlay band: a floating surface floats over WHATEVER the consumer
|
|
86
|
+
painted (frequently a light/near-white app surface — the canonical G2
|
|
87
|
+
case), so the library opts its own overlay-band glass in at its own root
|
|
88
|
+
via the SELF-CONTAINER reach below (`.glass-floating { --glass-backdrop }`
|
|
89
|
+
+ `:where(.glass-floating) > * `-less: the rung re-points its OWN tint
|
|
90
|
+
through the companion self-rule, not only the ancestor @container). `dark`
|
|
91
|
+
(the :root default at tokens.css) stays the explicit per-surface override a
|
|
92
|
+
dark-substrate consumer dials in on an ancestor. */
|
|
93
|
+
--glass-backdrop: light;
|
|
94
|
+
position: relative;
|
|
95
|
+
background: color-mix(in oklab, var(--glass-bg-floating), var(--glass-tint-source) var(--glass-tint-strength));
|
|
96
|
+
backdrop-filter: var(--glass-blur-floating);
|
|
97
|
+
border: 1px solid var(--glass-border-floating);
|
|
98
|
+
box-shadow:
|
|
99
|
+
var(--glass-material-rim),
|
|
100
|
+
var(--glass-under-shadow-vivid),
|
|
101
|
+
var(--glass-shadow-floating);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.glass-overlay {
|
|
105
|
+
/* AY.W-A11Y-PERF O-1 — the overlay band engages the W55 bucket by default
|
|
106
|
+
(see .glass-floating). */
|
|
107
|
+
--glass-backdrop: light;
|
|
108
|
+
position: relative;
|
|
109
|
+
background: color-mix(in oklab, var(--glass-bg-overlay), var(--glass-tint-source) var(--glass-tint-strength));
|
|
110
|
+
backdrop-filter: var(--glass-blur-overlay);
|
|
111
|
+
border: 1px solid var(--glass-border-overlay);
|
|
112
|
+
box-shadow: var(--glass-material-rim), var(--glass-shadow-overlay);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* ── Adaptive legibility: the bright-backdrop bucket (AX.W55 — the iOS-26/27
|
|
116
|
+
"locally darken the glass over light content" move; G2) ──────────────────
|
|
117
|
+
When a consumer sets `--glass-backdrop: light` on any ancestor (a near-white
|
|
118
|
+
card surface, a pale aurora bleed, a bright data grid), the `@container
|
|
119
|
+
style()` read engages here and LIFTS the tint toward ink: `--glass-tint-
|
|
120
|
+
strength` climbs from the `0%` rest default to the bounded AA floor
|
|
121
|
+
(`--glass-tint-strength-aa`, ≤24% — translucent floor preserved) and `--glass-
|
|
122
|
+
tint-source` re-points from `var(--card)` to the warm-ink `--glass-tint-ink`.
|
|
123
|
+
Both are INHERITING custom properties the rungs' `background:` composite
|
|
124
|
+
already reads, so re-pointing them on the material group re-resolves the
|
|
125
|
+
EXISTING `color-mix(in oklab, <rung bg>, …)` toward ink — ZERO new compositing
|
|
126
|
+
seam, the literal darken-over-light recipe. The `.glass-*::before` specular
|
|
127
|
+
`plus-lighter` gleam (W52) is untouched (it composes ON the darkened plate;
|
|
128
|
+
the darkening is the orthogonal oklab-tint axis). No `@supports` wrapper:
|
|
129
|
+
style queries introduce no new `container-type` value (every element is a
|
|
130
|
+
style container by default), so an engine without style-query support parses
|
|
131
|
+
the unknown at-rule as invalid, drops the block, and keeps the zero-delta
|
|
132
|
+
glass (the graceful degradation — the surface is today's-glass, the pre-W55
|
|
133
|
+
state; see utilities.css §density for the same precedent). */
|
|
134
|
+
@container style(--glass-backdrop: light) {
|
|
135
|
+
.glass-material,
|
|
136
|
+
.glass-wash,
|
|
137
|
+
.glass-quiet,
|
|
138
|
+
.glass-resting,
|
|
139
|
+
.glass-floating,
|
|
140
|
+
.glass-overlay,
|
|
141
|
+
.glass-card {
|
|
142
|
+
--glass-tint-source: var(--glass-tint-ink);
|
|
143
|
+
--glass-tint-strength: var(--glass-tint-strength-aa);
|
|
144
|
+
/* BA.W-DARK-MATERIAL scope 7 — the --muted-foreground lift moves HERE, into the
|
|
145
|
+
declared/sampled BRIGHT condition. The muted L40 tier cannot clear 4.5:1 on a
|
|
146
|
+
translucent FULL-AA-darkened plate (darkening moves the plate toward muted's
|
|
147
|
+
own luminance), so it lifts to the full ink ONLY where the plate actually
|
|
148
|
+
darkens — NOT on the calm-light unconditional floor (where it stays the muted
|
|
149
|
+
register, the slides caption read). */
|
|
150
|
+
--muted-foreground: var(--foreground);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* AY.W-A11Y-PERF O-1 — SELF-ENGAGE the overlay band by default. The
|
|
155
|
+
`@container style()` rule above queries an ANCESTOR (CSS style queries never
|
|
156
|
+
self-match — verified on Chrome 148), so the `.glass-floating { --glass-backdrop:
|
|
157
|
+
light }` default we set on the rung would NOT darken the rung's OWN surface, only
|
|
158
|
+
its descendants. AND the `:root` library default is `--glass-backdrop: dark`
|
|
159
|
+
(tokens.css), so a `@container style(--glass-backdrop: dark)` revert would ALWAYS
|
|
160
|
+
fire (every element has the dark :root as an ancestor) — it cannot distinguish an
|
|
161
|
+
explicit consumer `dark` from the default. So the overlay band self-engages
|
|
162
|
+
UNCONDITIONALLY as the library default: a floating/overlay surface floats over
|
|
163
|
+
WHATEVER the consumer painted (frequently a light/near-white app surface — the
|
|
164
|
+
canonical G2 case the user reported), so darkening the translucent plate toward
|
|
165
|
+
the warm-ink is the correct default. This re-points the tint tokens DIRECTLY on
|
|
166
|
+
the overlay-band surfaces (`.glass-floating` / `.glass-overlay` — the Dialog/
|
|
167
|
+
Sheet/Popover/DropdownMenu/HoverCard/Command/Tooltip/Toast/Select-content band),
|
|
168
|
+
engaging the SAME oklab tint axis (zero new compositing seam). Over a DARK page
|
|
169
|
+
the darken is sub-perceptual (warm-ink over an already-dark plate is a small
|
|
170
|
+
shift); a dark-substrate consumer who wants the pristine plate sets
|
|
171
|
+
`--glass-tint-strength: 0%` on the band or uses `.glass-opaque`. The in-srgb
|
|
172
|
+
`--surface-tint-*` family is never touched (this edits only the in-oklab glass
|
|
173
|
+
tint axis).
|
|
174
|
+
|
|
175
|
+
AZ.W-ADAPTIVE-AUTO Arm 1 — the self-engage now EXTENDS to the plain CONTENT
|
|
176
|
+
tiers (`.glass-card`/`.glass-resting`/`.glass-quiet`/`.glass-wash`), not just
|
|
177
|
+
the overlay band. The W54 glass-first MAXIMAL default makes content-on-glass-
|
|
178
|
+
over-a-bright-backdrop the common case, so every content tier self-darkens over
|
|
179
|
+
light WITHOUT consumer opt-in — closing the C5-7 asymmetry (the content tiers
|
|
180
|
+
painted near-invisible over light on every route). The prior W55 overlay-only
|
|
181
|
+
scoping (which kept the default-path byte-identity canary green by testing
|
|
182
|
+
`.glass-card`/`.glass-resting` with a bare no-ancestor div) is SUPERSEDED: the
|
|
183
|
+
three now-self-engaged kinds are no longer byte-identical to the dark bucket
|
|
184
|
+
(the canary narrows to the legitimately-zero-delta surfaces — the `.glass-opaque`
|
|
185
|
+
escape + an explicit per-surface `--glass-backdrop: dark` override — and the new
|
|
186
|
+
in-situ G1 π readback becomes the binding default-path truth). The muted body
|
|
187
|
+
register lifts to the full warm-ink under the engaged plate: the muted L40 tier
|
|
188
|
+
cannot clear 4.5:1 on a translucent darkened plate (darkening moves the plate
|
|
189
|
+
TOWARD muted's own luminance), so the low-contrast muted register resolves to
|
|
190
|
+
the legible dark ink (clears ~10:1) — a token re-point on the same inheriting
|
|
191
|
+
axis as the tint. */
|
|
192
|
+
/* The OVERLAY band (.glass-floating/.glass-overlay — Dialog/Sheet/Popover/DropdownMenu/
|
|
193
|
+
HoverCard/Command/Tooltip/Toast/Select-content) keeps the FULL unconditional AA darken
|
|
194
|
+
+ the muted lift: it floats over WHATEVER the consumer painted (frequently a light/
|
|
195
|
+
near-white app surface — the canonical G2 case), so darkening toward the warm-ink is
|
|
196
|
+
the correct DEFAULT over an UNKNOWN surface. Over a DARK page this becomes the
|
|
197
|
+
luminous-dark LIFT (the dark-arm re-tunes --glass-tint-strength-aa to 12% — the plate
|
|
198
|
+
lifts off the deep page). A dark-substrate consumer who wants the pristine plate sets
|
|
199
|
+
`--glass-tint-strength: 0%`. */
|
|
200
|
+
:where(.glass-floating, .glass-overlay) {
|
|
201
|
+
--glass-tint-source: var(--glass-tint-ink);
|
|
202
|
+
--glass-tint-strength: var(--glass-tint-strength-aa);
|
|
203
|
+
--muted-foreground: var(--foreground);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* BA.W-DARK-MATERIAL scope 7 — the plain CONTENT tiers self-engage the SUB-PERCEPTUAL
|
|
207
|
+
FLOOR unconditionally, NOT the full AA darken (the R9-1 slides gray-slab fix). Over a
|
|
208
|
+
calm LIGHT page the floor (--glass-tint-strength-floor: 4%) is a silhouette whisper —
|
|
209
|
+
the translucent cream card stays warm (L ≈ 0.94), no gray slab. Over a DARK page the
|
|
210
|
+
floor re-resolves to the luminous-dark lift (12% in the dark arm — the plate lifts off
|
|
211
|
+
the deep page, the desired register). The FULL AA darken engages on these tiers ONLY
|
|
212
|
+
under the declared/sampled BRIGHT signal (the @container --glass-backdrop:light bucket
|
|
213
|
+
above — where the muted lift also lives now). NO unconditional --muted-foreground lift
|
|
214
|
+
here: on the calm-light floor the caption keeps the muted register (the slides read).
|
|
215
|
+
A consumer opts a light-page card out via `--glass-tint-strength: 0%` on an ancestor. */
|
|
216
|
+
:where(.glass-card, .glass-resting, .glass-quiet, .glass-wash) {
|
|
217
|
+
--glass-tint-source: var(--glass-tint-ink);
|
|
218
|
+
--glass-tint-strength: var(--glass-tint-strength-floor);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/* AX.W55 — the `contrast-color()` foreground-ink flip (Chrome 147+/Safari 26+).
|
|
222
|
+
A PROGRESSIVE-ENHANCEMENT layer, NEVER the load-bearing floor (Open-Q #5
|
|
223
|
+
ratified): the declarative bucket above already carries AA on ALL engines (it
|
|
224
|
+
darkens the translucent plate so dark text clears ~11:1 over white at the 18%
|
|
225
|
+
floor — the live π readback ratifies). On a supporting engine `contrast-color()`
|
|
226
|
+
REFINES the foreground-ink pick natively, anchored on the LIGHT BACKDROP signal
|
|
227
|
+
(`--card`, the warm-white surface base the bright bucket implies) — NOT on the
|
|
228
|
+
ink. `contrast-color(var(--card))` over the light backdrop resolves to the
|
|
229
|
+
maximally-legible DARK ink (anchoring on the dark ink instead would invert to
|
|
230
|
+
white, illegible on the still-light translucent plate). The bucket is the floor;
|
|
231
|
+
this is the native refinement. Scoped to the bright bucket. */
|
|
232
|
+
@supports (color: contrast-color(white)) {
|
|
233
|
+
/* The bright-bucket ink flip — the content tiers + overlay band over a DECLARED/
|
|
234
|
+
sampled bright backdrop. BA.W-DARK-MATERIAL scope 6 — the SYSTEMIC contrast-color()
|
|
235
|
+
selection-inversion fix (approach A, lockstep-lift). At HEAD this block lifted only
|
|
236
|
+
--muted-foreground (and the surface `color`) to contrast-color(--card) (white over
|
|
237
|
+
a light plate, L100), but the ACTIVE control register (a SegmentedTabs active tab,
|
|
238
|
+
the curve-picker selected label) reads var(--foreground) DIRECTLY (L90, un-lifted) —
|
|
239
|
+
a control sets its OWN `color: var(--foreground)` which wins over the inherited
|
|
240
|
+
surface `color`, so the inactive (muted→white) read BRIGHTER than the active
|
|
241
|
+
(--foreground), inverting selection. The fix lifts --foreground ITSELF in lockstep
|
|
242
|
+
with --muted-foreground: now an active register reading --foreground resolves the
|
|
243
|
+
SAME anchored contrast-color ink as the lifted inactive, so selected ≥ unselected
|
|
244
|
+
everywhere (the inversion gone for ANY --muted-foreground/--foreground selection
|
|
245
|
+
pairing inside a glass card — the SYSTEMIC library-seam fix, not a curve-picker
|
|
246
|
+
one-off). Progressive enhancement only — the declarative darken is the AA floor. */
|
|
247
|
+
@container style(--glass-backdrop: light) {
|
|
248
|
+
.glass-material,
|
|
249
|
+
.glass-wash,
|
|
250
|
+
.glass-quiet,
|
|
251
|
+
.glass-resting,
|
|
252
|
+
.glass-floating,
|
|
253
|
+
.glass-overlay,
|
|
254
|
+
.glass-card {
|
|
255
|
+
color: contrast-color(var(--card));
|
|
256
|
+
--foreground: contrast-color(var(--card));
|
|
257
|
+
--muted-foreground: contrast-color(var(--card));
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/* The OVERLAY band self-engages the darken UNCONDITIONALLY (it floats over an
|
|
261
|
+
UNKNOWN consumer surface), so its ink-flip companion mirrors that — UNCONDITIONAL.
|
|
262
|
+
--foreground lifts in lockstep with --muted-foreground (the scope-6 lockstep). */
|
|
263
|
+
:where(.glass-floating, .glass-overlay) {
|
|
264
|
+
color: contrast-color(var(--card));
|
|
265
|
+
--foreground: contrast-color(var(--card));
|
|
266
|
+
--muted-foreground: contrast-color(var(--card));
|
|
267
|
+
}
|
|
268
|
+
/* BA.W-DARK-MATERIAL scope 7 — the content-tier ink flip is GATED on the bright
|
|
269
|
+
signal (it moved INTO the @container bucket above), NOT unconditional. Over a calm
|
|
270
|
+
LIGHT page the content tiers only carry the 4% silhouette floor (still a warm cream
|
|
271
|
+
plate), so flipping the ink to the contrast-color DARK ink there is correct only
|
|
272
|
+
where the plate ACTUALLY darkens to the bright-bucket AA — the unconditional flip
|
|
273
|
+
would force a white-on-cream / dark-on-darkened mismatch on the calm card. The
|
|
274
|
+
content tiers therefore take NO unconditional contrast-color flip; their flip lives
|
|
275
|
+
in the @container bucket with the rest of the bright-condition darken. */
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* ── The opaque escape (AX.W54) ───────────────────
|
|
279
|
+
The level-0 endpoint of the SAME glass machinery — a solid `--card` plate
|
|
280
|
+
(the opacity seam → 1) with `blur(0)` (the blur seam → 0), routed through
|
|
281
|
+
the ONE `--glass-level` knob. NOT a parallel solid `background:` recipe:
|
|
282
|
+
a `.glass-*` surface that ALSO carries `.glass-opaque` keeps its glass edge,
|
|
283
|
+
rim, and under-shadow (a solid plate with a glass edge, not a bare div), and
|
|
284
|
+
the @supports fallback + the a11y brackets compose coherently. This is the
|
|
285
|
+
explicit opt-out from the MAXIMAL glass default (dense data, forced-colors,
|
|
286
|
+
a consumer that wants a flat surface). */
|
|
287
|
+
.glass-opaque {
|
|
288
|
+
--glass-level: 0;
|
|
289
|
+
/* BA.W-DARK-MATERIAL scope 7 — the opaque escape suppresses the adaptive TINT axis
|
|
290
|
+
too (not just the opacity/blur level). A solid opaque plate has no translucent
|
|
291
|
+
backdrop to darken-over, so the self-engage tint is meaningless on it; zeroing the
|
|
292
|
+
strength keeps the opaque escape bucket-INVARIANT (the unset floor and the bright
|
|
293
|
+
bucket resolve the SAME solid plate — the byte-identity canary). Without this, the
|
|
294
|
+
scope-7 unconditional content-tier floor (4%) tinted even the solid plate, breaking
|
|
295
|
+
the opt-out's "flat surface" contract. */
|
|
296
|
+
--glass-tint-strength: 0%;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/* ── Content-aware under-shadow modifier (AV.W15 M4) ──────────────
|
|
300
|
+
Apple raises the under-shadow over text (so the glass reads as
|
|
301
|
+
lifting OFF the text) and drops it over solid light. The modifier
|
|
302
|
+
is ATTRIBUTE-DRIVEN, no JS: a consumer adds `.glass-over-text`
|
|
303
|
+
(or `[data-over-content="text"]`) to a text-bearing glass surface to
|
|
304
|
+
swap it ONE under-shadow rung heavier, or `[data-over-content="solid"]`
|
|
305
|
+
to lighten it one rung over a solid-light backdrop. It reuses the
|
|
306
|
+
existing `--glass-under-shadow-{quiet,default,vivid}` rungs (no new
|
|
307
|
+
shadow value — `vivid` is sufficient over text), redefining only the
|
|
308
|
+
leading under-shadow layer per tier; the lift stack is untouched.
|
|
309
|
+
|
|
310
|
+
The selectors are per-tier so the swap is rung-correct
|
|
311
|
+
(quiet→default, resting→vivid). `.glass-floating` already sits at the
|
|
312
|
+
`vivid` ceiling over text, so the heavier variant is a no-op there
|
|
313
|
+
(the rung saturates) — documented, not an error. */
|
|
314
|
+
.glass-quiet.glass-over-text,
|
|
315
|
+
.glass-quiet[data-over-content="text"] {
|
|
316
|
+
box-shadow: var(--glass-under-shadow-default), var(--glass-shadow-quiet);
|
|
317
|
+
}
|
|
318
|
+
.glass-resting.glass-over-text,
|
|
319
|
+
.glass-resting[data-over-content="text"] {
|
|
320
|
+
box-shadow: var(--glass-under-shadow-vivid), var(--glass-shadow-resting);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/* The inverse — over a solid-light backdrop the under-shadow lightens
|
|
324
|
+
one rung (the glass need not lift as hard off a flat bright field). */
|
|
325
|
+
.glass-resting[data-over-content="solid"] {
|
|
326
|
+
box-shadow: var(--glass-under-shadow-quiet), var(--glass-shadow-resting);
|
|
327
|
+
}
|
|
328
|
+
.glass-floating[data-over-content="solid"] {
|
|
329
|
+
box-shadow:
|
|
330
|
+
var(--glass-material-rim),
|
|
331
|
+
var(--glass-under-shadow-default),
|
|
332
|
+
var(--glass-shadow-floating);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/* Grain noise overlay — reuses paper texture SVG, no extra assets */
|
|
336
|
+
.glass-wash::after,
|
|
337
|
+
.glass-quiet::after,
|
|
338
|
+
.glass-resting::after,
|
|
339
|
+
.glass-floating::after,
|
|
340
|
+
.glass-overlay::after {
|
|
341
|
+
content: '';
|
|
342
|
+
position: absolute;
|
|
343
|
+
inset: 0;
|
|
344
|
+
border-radius: inherit;
|
|
345
|
+
background: var(--paper-clean-texture);
|
|
346
|
+
background-repeat: repeat;
|
|
347
|
+
background-size: var(--paper-texture-size);
|
|
348
|
+
opacity: var(--glass-grain-opacity);
|
|
349
|
+
pointer-events: none;
|
|
350
|
+
mix-blend-mode: overlay;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/* (b) The unified rim — `--glass-edge-light` full-perimeter inset ring on
|
|
354
|
+
EVERY material surface (AW.W22). Previously the rim was wired only into
|
|
355
|
+
the floating/overlay tiers' box-shadow stack; promoting it to the material
|
|
356
|
+
group makes wash/quiet/resting/card/dock-control all carry the same
|
|
357
|
+
silhouette catch-light from ONE token. The rim is its OWN `box-shadow`
|
|
358
|
+
declaration on the material group so it composes uniformly without
|
|
359
|
+
perturbing each tier's elevation recipe (the floating/overlay tiers drop
|
|
360
|
+
their now-redundant inline `--glass-edge-light` layer below). The alpha is
|
|
361
|
+
deliberately low so the rim never eats AA legibility over a busy
|
|
362
|
+
backdrop. */
|
|
363
|
+
.glass-material,
|
|
364
|
+
.glass-wash,
|
|
365
|
+
.glass-quiet,
|
|
366
|
+
.glass-resting,
|
|
367
|
+
.glass-floating,
|
|
368
|
+
.glass-overlay,
|
|
369
|
+
.glass-card,
|
|
370
|
+
.glass-specular-track,
|
|
371
|
+
.dock-icon-button {
|
|
372
|
+
--glass-material-rim: var(--glass-edge-light);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.dark .glass-wash::after,
|
|
376
|
+
.dark .glass-quiet::after,
|
|
377
|
+
.dark .glass-resting::after,
|
|
378
|
+
.dark .glass-floating::after,
|
|
379
|
+
.dark .glass-overlay::after {
|
|
380
|
+
mix-blend-mode: soft-light;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/* glass/material.css
|
|
2
|
+
The unified .glass-material atom (AW.W22) + the shared ::before grain/specular wiring across the glass family — ONE source for the three material atoms.
|
|
3
|
+
Carved from the glass.css cascade root; @import-ed by glass.css in cascade
|
|
4
|
+
order, each in its own @layer components (isomorphic to the monolith).
|
|
5
|
+
See docs/precepts/design-idioms.md §cohesion-aware partials. */
|
|
6
|
+
@layer components {
|
|
7
|
+
/* ── The unified glass material (AW.W22) ──────────────────────────────
|
|
8
|
+
ONE source for the three material atoms that AV.W15 scattered onto
|
|
9
|
+
opt-in classes + single tiers:
|
|
10
|
+
(a) the moving-specular `::before` catch-light (folded here from
|
|
11
|
+
glass-specular-track.css — that file now keeps only the thin
|
|
12
|
+
`.glass-specular-track` ALIAS + the brackets that point HERE),
|
|
13
|
+
(b) the `--glass-edge-light` full-perimeter rim (moved off the
|
|
14
|
+
floating-only block so EVERY rung carries it),
|
|
15
|
+
(c) the pointer interaction-light hooks (the `--specular-*`
|
|
16
|
+
`@property` channel mapped from the consumer's --mouse-x/--mouse-y
|
|
17
|
+
write).
|
|
18
|
+
The five ladder rungs + `.glass-card` + the `.dock-icon-button` CONTROL
|
|
19
|
+
compose `.glass-material`, so a Switch thumb, a glass Button, a Dialog,
|
|
20
|
+
and a Sheet all read as the SAME material without per-component wiring.
|
|
21
|
+
|
|
22
|
+
The `.glass-dock` SHELL is OUT of this group BY DESIGN — it hand-rolls a
|
|
23
|
+
parallel surface (its own `--glass-*-dock` family + a local rim) the dock arm
|
|
24
|
+
owns. The COHESION CONSEQUENCE is DELIBERATE: the dock shell carries NO shared
|
|
25
|
+
edge-gleam / moving-specular `::before` (AZ.W-DOCK-TAXONOMY retired the
|
|
26
|
+
`instrument-strip` engraved-bezel `::before` — the dock shell now has none).
|
|
27
|
+
The dock's catch-light lives on
|
|
28
|
+
its CONTROLS (`.dock-icon-button` et al., listed below + in the opt-in
|
|
29
|
+
transition block), which ARE in the material group — NOT on the shell plate.
|
|
30
|
+
Adding a shell gleam would re-introduce glass-on-glass over the controls, so
|
|
31
|
+
the shell-without-gleam is a NAMED EXEMPTION, gated as `dock-shell-exempt` in
|
|
32
|
+
proof:glass-cohesion (the only exemption beside the legibility allowlist).
|
|
33
|
+
|
|
34
|
+
The selector GROUP is the single source. Adding a surface to the band
|
|
35
|
+
material is one comma-entry here, not a new opt-in class string. */
|
|
36
|
+
.glass-material,
|
|
37
|
+
.glass-wash,
|
|
38
|
+
.glass-quiet,
|
|
39
|
+
.glass-resting,
|
|
40
|
+
.glass-floating,
|
|
41
|
+
.glass-overlay,
|
|
42
|
+
.glass-card,
|
|
43
|
+
.glass-specular-track,
|
|
44
|
+
.dock-icon-button,
|
|
45
|
+
.dock-tab-button,
|
|
46
|
+
.dock-select-trigger,
|
|
47
|
+
.dock-dropdown-trigger {
|
|
48
|
+
position: relative;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* (b) The rim — UNIFORM across all rungs (ONE `--glass-edge-light` token,
|
|
52
|
+
not a per-rung family). The floating/overlay tiers previously wired it
|
|
53
|
+
into their box-shadow stack; it now rides the material group as a
|
|
54
|
+
dedicated `::after` inset ring so it composes alongside (not inside) each
|
|
55
|
+
tier's own shadow recipe. The `::after` grain overlay already claims the
|
|
56
|
+
five rungs' `::after`; the rim is folded INTO that same overlay's
|
|
57
|
+
box-shadow below (the grain `::after` gets the rim inset ring) so no
|
|
58
|
+
pseudo-element collides. */
|
|
59
|
+
|
|
60
|
+
/* (a)+(c) The moving-specular `::before` catch-light — the iOS-26
|
|
61
|
+
illuminate-from-within behaviour. A masked radial-gradient glow rides the
|
|
62
|
+
surface at the pointer position (--mouse-x/--mouse-y → the typed
|
|
63
|
+
--specular-* channel). Folded VERBATIM from glass-specular-track.css so
|
|
64
|
+
there is exactly ONE specular source. */
|
|
65
|
+
.glass-material::before,
|
|
66
|
+
.glass-wash::before,
|
|
67
|
+
.glass-quiet::before,
|
|
68
|
+
.glass-resting::before,
|
|
69
|
+
.glass-floating::before,
|
|
70
|
+
.glass-overlay::before,
|
|
71
|
+
.glass-card::before,
|
|
72
|
+
.glass-specular-track::before,
|
|
73
|
+
.dock-icon-button::before,
|
|
74
|
+
.dock-tab-button::before,
|
|
75
|
+
.dock-select-trigger::before,
|
|
76
|
+
.dock-dropdown-trigger::before {
|
|
77
|
+
content: "";
|
|
78
|
+
position: absolute;
|
|
79
|
+
inset: 0;
|
|
80
|
+
border-radius: inherit;
|
|
81
|
+
pointer-events: none;
|
|
82
|
+
z-index: 1;
|
|
83
|
+
/* Map the consumer's pointer write onto the typed properties, ON THE
|
|
84
|
+
PSEUDO. The `--mouse-x/--mouse-y` write lands on the HOST (inline
|
|
85
|
+
style) as UNREGISTERED props that inherit down to this `::before`;
|
|
86
|
+
the registered `--specular-*` props are `inherits: false`, so the
|
|
87
|
+
mapping is declared HERE where the pseudo owns its typed value. The
|
|
88
|
+
`var(--mouse-x, 50%)` floor is the centred fallback. */
|
|
89
|
+
--specular-x: var(--mouse-x, 50%);
|
|
90
|
+
--specular-y: var(--mouse-y, 50%);
|
|
91
|
+
/* The catch-light intensity at REST — reads the token cohort
|
|
92
|
+
(tokens.css §specular-intensity), default 0 so a static, unwired
|
|
93
|
+
surface is CLEAN and the @property `initial-value: 0` dormancy is no
|
|
94
|
+
longer defeated by a floor. Hover/active lift it through the same
|
|
95
|
+
cohort (the interaction-light state machine below). */
|
|
96
|
+
--specular-intensity: var(--glass-specular-intensity-rest, 0);
|
|
97
|
+
/* AX.W52 D19 — a thin, BOUNDED, pointer-anchored EDGE gleam (not the prior
|
|
98
|
+
full-plate central disc that washed small tiles muddy). The geometry is an
|
|
99
|
+
EXPLICIT-radius circle bounded by `--glass-specular-size` (36% of the
|
|
100
|
+
plate) whose falloff reaches `/0` well INSIDE the plate (70%) — a tracked
|
|
101
|
+
catch-light reading the surface near the lit edge, NEVER a whole-surface
|
|
102
|
+
wash. The core is genuinely WARM-CREAM (L < 100% so the warm hue survives;
|
|
103
|
+
the prior `hsl(40 30% 100%)` blew out to white). The `--specular-intensity`
|
|
104
|
+
multiplier drives the layer `opacity`, NOT a per-stop alpha (a
|
|
105
|
+
registered-`@property` var() nested in an hsl() alpha computes to 0 in
|
|
106
|
+
Chromium — the cross-engine-safe path); the per-stop alphas are literals so
|
|
107
|
+
even the lifted hover/active states read as a lens, not a flash. */
|
|
108
|
+
background: radial-gradient(
|
|
109
|
+
circle var(--glass-specular-size, 36%) at var(--specular-x, 50%) var(--specular-y, 50%),
|
|
110
|
+
hsl(40 35% 92% / 0.5) 0%,
|
|
111
|
+
hsl(40 35% 92% / 0) 70%,
|
|
112
|
+
transparent 100%
|
|
113
|
+
);
|
|
114
|
+
opacity: var(--specular-intensity, 0);
|
|
115
|
+
/* Clip the gleam to ITS OWN radius (not the whole plate) so it stays a
|
|
116
|
+
bounded glint. `mask-image` Baseline 2023-12-07; a non-supporting engine
|
|
117
|
+
ignores it and the `inset: 0` + radius-inherit + the in-paint falloff
|
|
118
|
+
already bound the gleam to the surface. */
|
|
119
|
+
mask-image: radial-gradient(
|
|
120
|
+
circle var(--glass-specular-size, 36%) at var(--specular-x, 50%) var(--specular-y, 50%),
|
|
121
|
+
black 0%,
|
|
122
|
+
black 60%,
|
|
123
|
+
transparent 100%
|
|
124
|
+
);
|
|
125
|
+
/* AX.W52 D19 — `plus-lighter` (additive but HDR-clamped, Safari 16.4+) over
|
|
126
|
+
the prior `screen` (a non-linear lightener that lifted the whole tile
|
|
127
|
+
toward white — the muddy-card defect). A non-supporting engine degrades to
|
|
128
|
+
a plain low-alpha warm overlay (the gleam composes normally — no blend, no
|
|
129
|
+
blowout), the no-workaround floor; NOT a `screen` fallback. */
|
|
130
|
+
mix-blend-mode: plus-lighter;
|
|
131
|
+
/* The moving-specular TRANSITION is NOT declared here. An idle/unwired
|
|
132
|
+
`::before` is STATIC (no interpolation track), so a bare glass rung / an
|
|
133
|
+
un-armed Card / a glass Button at rest attaches ZERO animation tracks (the
|
|
134
|
+
keyframes.js runtime counts 0 idle tracks, not 19). The transition rides
|
|
135
|
+
ONLY the WIRED + interactive surfaces — the opt-in scoped block below. */
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* AY.W-GLASS — the moving-specular transition is OPT-IN (the Card wire-or-omit
|
|
139
|
+
pattern, generalized). It attaches ONLY to a WIRED surface
|
|
140
|
+
(`.glass-specular-track` — Card emits it conditionally, the dock controls + the
|
|
141
|
+
Slider thumb compose it) OR to any glass surface under `:hover`/`:active` (the
|
|
142
|
+
pointer is present, so the interpolation is legitimately live). An idle/unwired
|
|
143
|
+
`.glass-floating` / `.glass-wash` / bare-rung `::before` carries NO transition
|
|
144
|
+
and thus NO keyframes.js track. The §6 register is PRESERVED (still
|
|
145
|
+
`--ease-standard` on the position-tracked + surface-opacity legs — H-motion §6
|
|
146
|
+
"position-tracked → --ease-standard"; only the SELECTOR scope changes). The dock
|
|
147
|
+
controls keep the always-on transition (they are interactive controls; their rest
|
|
148
|
+
intensity is 0 so they paint nothing at rest, but a control legitimately carries
|
|
149
|
+
the transition). */
|
|
150
|
+
.glass-specular-track::before,
|
|
151
|
+
.glass-material:hover::before, .glass-material:active::before,
|
|
152
|
+
.glass-wash:hover::before, .glass-wash:active::before,
|
|
153
|
+
.glass-quiet:hover::before, .glass-quiet:active::before,
|
|
154
|
+
.glass-resting:hover::before, .glass-resting:active::before,
|
|
155
|
+
.glass-floating:hover::before, .glass-floating:active::before,
|
|
156
|
+
.glass-overlay:hover::before, .glass-overlay:active::before,
|
|
157
|
+
.glass-card:hover::before, .glass-card:active::before,
|
|
158
|
+
.dock-icon-button::before,
|
|
159
|
+
.dock-tab-button::before,
|
|
160
|
+
.dock-select-trigger::before,
|
|
161
|
+
.dock-dropdown-trigger::before {
|
|
162
|
+
/* Smooth the position + intensity between pointer samples (the typed
|
|
163
|
+
@property regs make the percentage stops interpolable). */
|
|
164
|
+
transition:
|
|
165
|
+
--specular-x var(--duration-fast, 150ms) var(--ease-standard, ease-out),
|
|
166
|
+
--specular-y var(--duration-fast, 150ms) var(--ease-standard, ease-out),
|
|
167
|
+
opacity var(--duration-normal, 240ms) var(--ease-standard, ease-out);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.dark .glass-material::before,
|
|
171
|
+
.dark .glass-wash::before,
|
|
172
|
+
.dark .glass-quiet::before,
|
|
173
|
+
.dark .glass-resting::before,
|
|
174
|
+
.dark .glass-floating::before,
|
|
175
|
+
.dark .glass-overlay::before,
|
|
176
|
+
.dark .glass-card::before,
|
|
177
|
+
.dark .glass-specular-track::before,
|
|
178
|
+
.dark .dock-icon-button::before,
|
|
179
|
+
.dark .dock-tab-button::before,
|
|
180
|
+
.dark .dock-select-trigger::before,
|
|
181
|
+
.dark .dock-dropdown-trigger::before {
|
|
182
|
+
/* Softer over the deep canvas — `plus-lighter` still lifts on dark, so the
|
|
183
|
+
`.dark` cohort runs a lower hover/active rung (tokens.css §specular-
|
|
184
|
+
intensity `.dark` arm); the rest rung is already 0 so the dark arm only
|
|
185
|
+
softens hover/active via the cohort. The rest rung re-reads the (dark)
|
|
186
|
+
token here so a dark `:root` override resolves. */
|
|
187
|
+
--specular-intensity: var(--glass-specular-intensity-rest, 0);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* (c) Interaction-light lockstep — hover/active lift the intensity in the
|
|
191
|
+
SAME rungs the scale-press squish keys off, so material-light fires in
|
|
192
|
+
lockstep with the press across every glass surface. Settles back on leave
|
|
193
|
+
via the opacity transition above. */
|
|
194
|
+
.glass-material:hover::before,
|
|
195
|
+
.glass-wash:hover::before,
|
|
196
|
+
.glass-quiet:hover::before,
|
|
197
|
+
.glass-resting:hover::before,
|
|
198
|
+
.glass-floating:hover::before,
|
|
199
|
+
.glass-overlay:hover::before,
|
|
200
|
+
.glass-card:hover::before,
|
|
201
|
+
.glass-specular-track:hover::before,
|
|
202
|
+
.dock-icon-button:hover::before,
|
|
203
|
+
.dock-tab-button:hover::before,
|
|
204
|
+
.dock-select-trigger:hover::before,
|
|
205
|
+
.dock-dropdown-trigger:hover::before {
|
|
206
|
+
--specular-intensity: var(--glass-specular-intensity-hover, 0.1);
|
|
207
|
+
}
|
|
208
|
+
.glass-material:active::before,
|
|
209
|
+
.glass-wash:active::before,
|
|
210
|
+
.glass-quiet:active::before,
|
|
211
|
+
.glass-resting:active::before,
|
|
212
|
+
.glass-floating:active::before,
|
|
213
|
+
.glass-overlay:active::before,
|
|
214
|
+
.glass-card:active::before,
|
|
215
|
+
.glass-specular-track:active::before,
|
|
216
|
+
.dock-icon-button:active::before,
|
|
217
|
+
.dock-tab-button:active::before,
|
|
218
|
+
.dock-select-trigger:active::before,
|
|
219
|
+
.dock-dropdown-trigger:active::before {
|
|
220
|
+
--specular-intensity: var(--glass-specular-intensity-active, 0.16);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/* AX.W45-TUNE C5 — the SELECTED dock control reads as the keyframes-dock glass
|
|
224
|
+
register: a glass-tier active fill (`--dock-control-active-bg` → the floating
|
|
225
|
+
plate, tokens.css) WITH the specular gleam waking over it, not a flat ink
|
|
226
|
+
stamp. The CSS `:active` pseudo above only fires on press-down; a SELECTED tile
|
|
227
|
+
(`.is-active` / `[aria-pressed]` / `[aria-expanded]` / `[aria-current]`) holds
|
|
228
|
+
the gleam lit so the selected element reads as a lit glass tier the substrate
|
|
229
|
+
shows through (the model the user named, `pass-3:13`). Family-scoped addition
|
|
230
|
+
on the dock-control `::before`, line-disjoint from the shared recipe above. */
|
|
231
|
+
.dock-icon-button:is(.is-active, .active, [aria-pressed="true"], [aria-expanded="true"], [aria-current="page"])::before,
|
|
232
|
+
.dock-tab-button:is(.is-active, .active, [aria-pressed="true"], [aria-expanded="true"], [aria-current="page"])::before,
|
|
233
|
+
.dock-select-trigger:is(.is-active, .active, [aria-pressed="true"], [aria-expanded="true"], [aria-current="page"])::before,
|
|
234
|
+
.dock-dropdown-trigger:is(.is-active, .active, [aria-pressed="true"], [aria-expanded="true"], [aria-current="page"])::before {
|
|
235
|
+
--specular-intensity: var(--glass-specular-intensity-active, 0.16);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
}
|