@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
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
padding-inline: 0.625rem;
|
|
20
20
|
border-radius: var(--radius-lg, 0.5rem);
|
|
21
21
|
background: var(--glass-bg-floating, var(--popover, white));
|
|
22
|
+
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
23
|
+
|
|
22
24
|
backdrop-filter: var(--glass-blur-floating);
|
|
23
25
|
border: 1px solid var(--glass-border-floating, var(--border, transparent));
|
|
24
26
|
color: var(--popover-foreground, var(--foreground));
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/* icon-chip.css — BA.W-ICON-CHIP: the <IconChip> section-color pop primitive.
|
|
2
|
+
*
|
|
3
|
+
* The library's SINGLE section-color icon-chip recipe — the brand's ONE color
|
|
4
|
+
* event per surface (the one-color-event rule, AZ.W-SUFFUSE / proof:suffuse):
|
|
5
|
+
* a `color-mix(… 25%, transparent)` backplate under a full-chroma glyph, walked
|
|
6
|
+
* over the 13-stop `--section-color-N` ramp (or a complete `tone` token). It
|
|
7
|
+
* OWNS the recipe the four inline `:style` pastes (icons.vue / empty-states.vue
|
|
8
|
+
* / auth-shell.vue / the MetricCell glyph-tint) collapsed onto, so the recipe
|
|
9
|
+
* lives ONCE and proof:suffuse asserts against one component, not N pastes.
|
|
10
|
+
*
|
|
11
|
+
* THE INTERPOLATION SPACE — `in srgb` (DELIBERATE, recorded). The backplate is
|
|
12
|
+
* a foreground-over-transparent overlay at a hand-tuned fixed 25% α stop — the
|
|
13
|
+
* SAME shape as the `--surface-tint-*` brand family, which CLAUDE.md fixes at
|
|
14
|
+
* `in srgb` (the brand-calibrated mix; switching the space shifts the resting
|
|
15
|
+
* α off its hand-set value). The chip is byte-faithful to the reference paste
|
|
16
|
+
* register (the binding W7 π target: stop-0 bg `color(srgb 0.915 0.484 0.671 /
|
|
17
|
+
* 0.25)`), so it preserves `in srgb` — the same brand-overlay path, NOT the
|
|
18
|
+
* glass-tint `in oklab` perceptual-mix path. (The spec text says `in oklab`;
|
|
19
|
+
* the resolution preserves the reference-faithful `in srgb` so the pop register
|
|
20
|
+
* does not shift — recorded in PROGRESS / the DELTA.)
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
:root {
|
|
24
|
+
/* The chip≤glyph proportion (d2, structural). The diameter floors at
|
|
25
|
+
`glyph × ratio` so the plate can NEVER paint under the glyph — a
|
|
26
|
+
consumer's tiny `size` is clamped. The default reproduces the reference
|
|
27
|
+
48/22 ≈ 2.18 register. Token-first: a consumer retunes without a
|
|
28
|
+
component edit. */
|
|
29
|
+
--icon-chip-glyph-ratio: 2.18;
|
|
30
|
+
/* The duotone fill α — a low-alpha fill of the same hue UNDER the
|
|
31
|
+
full-chroma stroke (the iOS/Material filled-tonal move). Mono-hue. */
|
|
32
|
+
--icon-chip-duotone-fill: 18%;
|
|
33
|
+
/* The hover-bloom backplate lift (25% → ~35%) + the glow-ring spread. */
|
|
34
|
+
--icon-chip-bloom-mix: 35%;
|
|
35
|
+
--icon-chip-bloom-glow: 28%;
|
|
36
|
+
/* The reveal stagger step (consumed by the vReveal `--d` index). */
|
|
37
|
+
--icon-chip-reveal-step: 60ms;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.icon-chip {
|
|
41
|
+
/* The diameter FLOORS at glyph × ratio — the d2 proportion enforced in the
|
|
42
|
+
component, not a per-consumer hope. */
|
|
43
|
+
--_icon-chip-floor: calc(
|
|
44
|
+
var(--icon-chip-glyph-size, 22px) * var(--icon-chip-glyph-ratio)
|
|
45
|
+
);
|
|
46
|
+
inline-size: max(var(--icon-chip-size, 48px), var(--_icon-chip-floor));
|
|
47
|
+
block-size: max(var(--icon-chip-size, 48px), var(--_icon-chip-floor));
|
|
48
|
+
display: inline-flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
border-radius: var(--radius-pill, 9999px);
|
|
52
|
+
/* The backplate — the reference recipe (`in srgb`, 25% α stop). */
|
|
53
|
+
background-color: color-mix(
|
|
54
|
+
in srgb,
|
|
55
|
+
var(--icon-chip-plate-color, var(--muted)) 25%,
|
|
56
|
+
transparent
|
|
57
|
+
);
|
|
58
|
+
color: var(--icon-chip-event-color, var(--muted-foreground));
|
|
59
|
+
/* The §6 easing doctrine — surface props (bg/box-shadow) on the bezier
|
|
60
|
+
standard ease; the bloom is the smooth-glass register, NOT a sparkle. */
|
|
61
|
+
transition:
|
|
62
|
+
background-color var(--duration-fast, 150ms) var(--ease-standard),
|
|
63
|
+
box-shadow var(--duration-fast, 150ms) var(--ease-standard);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.icon-chip__glyph {
|
|
67
|
+
display: block;
|
|
68
|
+
flex-shrink: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* ── The bare register (the MetricCell leading-glyph tint — no backplate) ──── */
|
|
72
|
+
.icon-chip--bare {
|
|
73
|
+
inline-size: auto;
|
|
74
|
+
block-size: auto;
|
|
75
|
+
background-color: transparent;
|
|
76
|
+
border-radius: 0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* ── The duotone axis — a low-alpha fill of the same hue UNDER the stroke ──── */
|
|
80
|
+
/* Lucide glyphs bake `fill: none` on the SVG root; CSS wins over the
|
|
81
|
+
presentation attribute, so the `[data-duotone] svg` rule reaches the inner
|
|
82
|
+
paths (they inherit `fill` from the root). Mono-hue, proportion-safe. */
|
|
83
|
+
.icon-chip--duotone[data-duotone] svg,
|
|
84
|
+
.icon-chip[data-duotone] .icon-chip__glyph {
|
|
85
|
+
fill: color-mix(
|
|
86
|
+
in srgb,
|
|
87
|
+
var(--icon-chip-event-color, var(--muted-foreground))
|
|
88
|
+
var(--icon-chip-duotone-fill),
|
|
89
|
+
transparent
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ── The hover-bloom axis — the SMOOTH GLASS register (NO disco) ───────────── */
|
|
94
|
+
/* The backplate mix lifts, a soft same-hue glow ring appears, the glyph stroke
|
|
95
|
+
firms. DISCO FENCE: composes NO sparkle-sweep / btn-audacious / disco-grain —
|
|
96
|
+
the W-GLASS-CAL-retired-disco's calm replacement register only. */
|
|
97
|
+
@media (hover: hover) {
|
|
98
|
+
.icon-chip--bloom:hover {
|
|
99
|
+
background-color: color-mix(
|
|
100
|
+
in srgb,
|
|
101
|
+
var(--icon-chip-plate-color, var(--muted)) var(--icon-chip-bloom-mix),
|
|
102
|
+
transparent
|
|
103
|
+
);
|
|
104
|
+
box-shadow: 0 0 0 0.25rem
|
|
105
|
+
color-mix(
|
|
106
|
+
in srgb,
|
|
107
|
+
var(--icon-chip-event-color, var(--muted-foreground))
|
|
108
|
+
var(--icon-chip-bloom-glow),
|
|
109
|
+
transparent
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
/* The glyph stroke firms on the chip's own hover. */
|
|
113
|
+
.icon-chip--bloom:hover .icon-chip__glyph {
|
|
114
|
+
stroke-width: 2;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ── The entrance-reveal axis — composes the shipped vReveal directive ─────── */
|
|
119
|
+
/* The directive writes `[data-reveal]` + `--d` (the stagger index); this rule
|
|
120
|
+
reacts ONLY on an opted-in chip (`.icon-chip--reveal`) so a non-reveal chip's
|
|
121
|
+
inert `[data-reveal]` hook never animates. PRM-gated. */
|
|
122
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
123
|
+
.icon-chip--reveal[data-reveal] {
|
|
124
|
+
animation: icon-chip-reveal var(--duration-medium, 320ms)
|
|
125
|
+
var(--ease-standard) both;
|
|
126
|
+
animation-delay: calc(var(--d, 0) * var(--icon-chip-reveal-step));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@keyframes icon-chip-reveal {
|
|
131
|
+
from {
|
|
132
|
+
opacity: 0;
|
|
133
|
+
transform: scale(0.85) translateY(0.25rem);
|
|
134
|
+
}
|
|
135
|
+
to {
|
|
136
|
+
opacity: 1;
|
|
137
|
+
transform: none;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* ── The deform axes collapse under reduced motion (the PRM guard) ─────────── */
|
|
142
|
+
@media (prefers-reduced-motion: reduce) {
|
|
143
|
+
.icon-chip--bloom:hover .icon-chip__glyph {
|
|
144
|
+
stroke-width: inherit;
|
|
145
|
+
}
|
|
146
|
+
.icon-chip--reveal[data-reveal] {
|
|
147
|
+
animation: none;
|
|
148
|
+
}
|
|
149
|
+
}
|
package/dist/styles/index.css
CHANGED
|
@@ -40,7 +40,20 @@
|
|
|
40
40
|
* above it via CSS custom properties or selector cascade; reordering breaks
|
|
41
41
|
* fallbacks. Documented at L.W2 Lane B per Rε §B.5.1.
|
|
42
42
|
*
|
|
43
|
-
*
|
|
43
|
+
* WHERE each idiom LIVES (the localized design-idiom home, complementing the
|
|
44
|
+
* load-ORDER below): see docs/precepts/design-idioms.md — @theme aliases live
|
|
45
|
+
* in theme.css, @utility recipes in their cohesion-domain file, the
|
|
46
|
+
* cohesion-aware @import-partial carve rule, and the var-in-arbitrary syntax.
|
|
47
|
+
* tokens.css / glass.css / utilities.css are thin @import ROOTS over cohesive
|
|
48
|
+
* tokens/* · glass/* · utilities/* partials (each < 500 lines, in cascade order
|
|
49
|
+
* — the dock.css precedent, AX.W06; generalized AY.W-CSS1). The carve is
|
|
50
|
+
* cascade-isomorphic: the partials @import in the recorded cascade order so this
|
|
51
|
+
* load order is preserved bit-for-bit.
|
|
52
|
+
*
|
|
53
|
+
* 1. tokens.css — thin @import root over tokens/{scheme-motion,
|
|
54
|
+
* color-radius,shadow,glass,offsets-sizing,
|
|
55
|
+
* scale-paper,light-dark,dark-arm,property-regs}.css.
|
|
56
|
+
* CSS custom properties (color, easing, glass,
|
|
44
57
|
* paper, shadow, surface-tint rungs). Source-of-
|
|
45
58
|
* record for every visual axis.
|
|
46
59
|
* 2. typography.css — golden-ratio scale (√φ); semantic type classes.
|
|
@@ -48,7 +61,9 @@
|
|
|
48
61
|
* 3. theme.css — @theme block (Tailwind aliases). Reads tokens
|
|
49
62
|
* from (1) so MUST come after them; defines the
|
|
50
63
|
* `dark` variant selector consumed by the cascade.
|
|
51
|
-
* 4. glass.css —
|
|
64
|
+
* 4. glass.css — thin @import root over glass/{material,ladder,
|
|
65
|
+
* surfaces,progress-rail,squircle,a11y-fallback}.css.
|
|
66
|
+
* .glass-{wash,quiet,resting,floating,overlay}
|
|
52
67
|
* 5-rung ladder + .glass-card / -pill / -btn.
|
|
53
68
|
* Consumes tokens (1) + theme aliases (3).
|
|
54
69
|
* 4a. glass-specular-track.css — the pointer-anchored MOVING specular rung
|
|
@@ -79,6 +94,15 @@
|
|
|
79
94
|
* cascades into these control rules.
|
|
80
95
|
* 7. cards.css — .cartoon-surface, .paper-texture.
|
|
81
96
|
* Component utility layer.
|
|
97
|
+
* 7a. feedback-tone.css — the ONE shared tinted-glass tone register
|
|
98
|
+
* (BA.W-FEEDBACK-TONE): `.feedback-tone` +
|
|
99
|
+
* `.feedback-tone-{success,warning,info,destructive}`
|
|
100
|
+
* tint a glass rung a bounded % toward a house tone
|
|
101
|
+
* token on the EXISTING color-mix(in oklab, …) seam.
|
|
102
|
+
* Toast / Notification / Alert consume it (the three
|
|
103
|
+
* tone maps collapse). Loads after cards.css (it reads
|
|
104
|
+
* the same `--glass-bg-*` rung tokens cards.css/the
|
|
105
|
+
* ladder mint) and before floating-panel.css.
|
|
82
106
|
* 8. floating-panel.css — .floating-panel + .floating-panel-item.
|
|
83
107
|
* Component utility layer.
|
|
84
108
|
* 9. transitions.css — Vue <Transition> classes (fade, fade-slide,
|
|
@@ -93,22 +117,32 @@
|
|
|
93
117
|
* 10b. view-transition.css — the `.gl-list-item` View-Transitions group
|
|
94
118
|
* recipe + `--vt-*` axes (AQ.W5; the
|
|
95
119
|
* `useViewTransition` substrate's CSS half).
|
|
96
|
-
* 11. utilities.css —
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
120
|
+
* 11. utilities.css — thin @import root over utilities/{animate,base,
|
|
121
|
+
* components,btn,a11y-overrides}.css. focus-ring,
|
|
122
|
+
* btn-audacious + btn-interactive (press cluster;
|
|
123
|
+
* K W6 + Q.W3 Lane E), rainbow-vivid +
|
|
124
|
+
* rainbow-pastel. Consumes earlier animations +
|
|
125
|
+
* tokens.
|
|
126
|
+
* 11a. menu.css — BA.W-MENU-GLASS the glass MENU-ROW + MENU-SECTION
|
|
127
|
+
* register. AFTER utilities.css so `.glass-menu-row`'s
|
|
128
|
+
* `@layer components` hover/highlight rules source-
|
|
129
|
+
* order-win over `.interactive-item:hover` (same layer
|
|
130
|
+
* + specificity) — the cascade-trap-safe placement.
|
|
100
131
|
* 12. instrument-chassis.css — P-tranche component CSS (chassis bezel +
|
|
101
132
|
* groove dividers). Loaded after utilities so
|
|
102
133
|
* component-local recipes can override.
|
|
103
|
-
* 13.
|
|
104
|
-
*
|
|
105
|
-
* rule). Composes alongside instrument-chassis;
|
|
106
|
-
* shares the bezel-line twin-pixel idiom.
|
|
107
|
-
* 14. hover-popover.css — V.W3 popover-animation grammar.
|
|
108
|
-
* 15. drawer.css — AN.W3 detented bottom-sheet grammar (glass
|
|
134
|
+
* 13. hover-popover.css — V.W3 popover-animation grammar.
|
|
135
|
+
* 14. drawer.css — AN.W3 detented bottom-sheet grammar (glass
|
|
109
136
|
* sheet surface + peek handle + snap-stop rules).
|
|
137
|
+
* 15. segmented-tabs.css — AX.W53 SegmentedTabs overflow/indicator grammar.
|
|
138
|
+
* 16. select.css — BA.W-EMISSION the PRECOMPILED Select content
|
|
139
|
+
* collision-bound (the `[data-slot="select-content"]`
|
|
140
|
+
* max-height rule) — moved off the dead arbitrary-
|
|
141
|
+
* bracket CVA class so the bound SHIPS in dist/glass-ui.css
|
|
142
|
+
* regardless of consumer JIT reach. A structural utility
|
|
143
|
+
* never depends on a content-scan; locked by proof:emission.
|
|
110
144
|
*
|
|
111
|
-
* Per-package component CSS lives at (12)-(
|
|
145
|
+
* Per-package component CSS lives at (12)-(16) (loaded after utilities so
|
|
112
146
|
* component-local recipes can override). New per-package CSS files append
|
|
113
147
|
* to that tail.
|
|
114
148
|
*/
|
|
@@ -122,20 +156,43 @@
|
|
|
122
156
|
@import "./dock.css";
|
|
123
157
|
@import "./dock-controls.css";
|
|
124
158
|
@import "./cards.css";
|
|
159
|
+
@import "./feedback-tone.css";
|
|
125
160
|
@import "./floating-panel.css";
|
|
126
161
|
@import "./transitions.css";
|
|
127
162
|
@import "./animations.css";
|
|
128
163
|
@import "./scroll-driven.css";
|
|
129
164
|
@import "./view-transition.css";
|
|
130
165
|
@import "./utilities.css";
|
|
166
|
+
/* BA.W-MENU-GLASS — the glass menu-row + menu-section register. @import-ed AFTER
|
|
167
|
+
utilities.css (NOT the floating/transitions band the spec hinted) so the
|
|
168
|
+
`.glass-menu-row` `@layer components` hover/highlight rules source-order-WIN
|
|
169
|
+
over `.interactive-item:hover` (utilities/base.css, same layer + specificity) —
|
|
170
|
+
the cascade-trap-safe placement, mirroring glass/surface-axis.css's "import
|
|
171
|
+
AFTER ladder.css" discipline. */
|
|
172
|
+
@import "./menu.css";
|
|
173
|
+
@import "./configurator.css";
|
|
131
174
|
@import "./instrument-chassis.css";
|
|
132
|
-
@import "./instrument-rail.css";
|
|
133
175
|
@import "./hover-popover.css";
|
|
134
176
|
@import "./drawer.css";
|
|
177
|
+
@import "./segmented-tabs.css";
|
|
178
|
+
@import "./select.css";
|
|
179
|
+
/* BA.W-ICON-CHIP — the <IconChip> section-color pop recipe + the three axes
|
|
180
|
+
(duotone/bloom/reveal). A component partial; the token arms (--section-color-N
|
|
181
|
+
/ --muted) auto-flip under .dark so the chip is mode-robust by construction. */
|
|
182
|
+
@import "./icon-chip.css";
|
|
183
|
+
|
|
184
|
+
/* Ensure Tailwind scans glass-ui's compiled component templates for the utility
|
|
185
|
+
classes they emit (CVA variant classes like text-destructive-foreground,
|
|
186
|
+
layout utilities like h-full/shrink-0).
|
|
135
187
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
188
|
+
BA.W-EMISSION — re-pointed from the DEAD components-mirror glob (the prior
|
|
189
|
+
`../components` target). That glob resolved correctly in glass-ui's OWN build
|
|
190
|
+
(`src/styles/index.css` → `src/components` carries the real `.vue` source), but the
|
|
191
|
+
SHIPPED dist copy of this file (`dist/styles/index.css`) resolved `../components` to
|
|
192
|
+
`dist/components/` — a
|
|
193
|
+
directory that carries ONLY `.d.ts` mirror files (zero `.js`, zero `.vue`). The
|
|
194
|
+
compiled render-functions live FLAT at `dist/*.js`. So in every consumer that
|
|
195
|
+
re-imported this `/* AN.W1 — SFC scoped component CSS (folded so a single
|
|
139
196
|
@import "@mkbabb/glass-ui/styles" carries cascade + components) */
|
|
140
197
|
@import "../glass-ui.css";
|
|
141
198
|
|
|
@@ -143,4 +200,23 @@
|
|
|
143
200
|
…) shipped build-independently so a bare consumer paints them. */
|
|
144
201
|
@import "./components.css";
|
|
145
202
|
|
|
146
|
-
@source
|
|
203
|
+
@source` line, Tailwind scanned an empty dir and glass-ui's own
|
|
204
|
+
arbitrary utilities silently died (the P9 / valuejs-fold register-B class).
|
|
205
|
+
|
|
206
|
+
`../*.js` reaches the compiled render-functions PRECISELY in the SHIPPED context:
|
|
207
|
+
in dist it is `dist/*.js` (the 150+ flat compiled chunks that carry glass-ui's
|
|
208
|
+
utility class strings — the surface the dead `../components` mirror NEVER held).
|
|
209
|
+
In glass-ui's OWN source build it is `src/*.js` (empty — glass-ui's own components
|
|
210
|
+
compile their CSS through vite, not this `@source`), so the directive is a no-op
|
|
211
|
+
in the own-build and never scans the `src/` shader/`.ts` tree (a bare `../` glob
|
|
212
|
+
tripped Tailwind's dev candidate-extractor on the shader template strings —
|
|
213
|
+
`Missing opening (`). This directive is a BACKSTOP for a consumer that imports
|
|
214
|
+
this exact cascade file — the PRIMARY self-emission path is
|
|
215
|
+
`vite.style-assets.ts emitComponentUtilities` (P9), which ships glass-ui's
|
|
216
|
+
component-utility RULES build-independently into `dist/styles/components.css`.
|
|
217
|
+
Fully-arbitrary BRACKET utilities (`[max-height:…]`, `[--slider-track-height:…]`)
|
|
218
|
+
are rejected by that path's `classish` token filter AND are not reliably reachable
|
|
219
|
+
by a JIT scan, so every STRUCTURAL bracket utility (geometry/bounds/sizing) is
|
|
220
|
+
pre-compiled into shipped CSS instead — never load-bearing on any consumer's
|
|
221
|
+
content-scan reach. Locked by proof:emission. */
|
|
222
|
+
@source "../*.js";
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
transition: --phase-tint-amount
|
|
45
45
|
var(--motion-duration-phase-handoff, 600ms)
|
|
46
46
|
var(--motion-ease-standard);
|
|
47
|
+
-webkit-backdrop-filter: var(--glass-blur-quiet);
|
|
48
|
+
|
|
47
49
|
backdrop-filter: var(--glass-blur-quiet);
|
|
48
50
|
/* AK-FD1 §2.4 — glass-variant outer border softened one rung down the
|
|
49
51
|
foreground-tinted border ladder (quiet 10% → wash 8%) so it reads at
|
|
@@ -133,6 +135,8 @@
|
|
|
133
135
|
───────────────────────────────────────────────────────────── */
|
|
134
136
|
.instrument-chassis[data-variant="spine"] {
|
|
135
137
|
background: var(--glass-spine-vignette);
|
|
138
|
+
-webkit-backdrop-filter: none;
|
|
139
|
+
|
|
136
140
|
backdrop-filter: none;
|
|
137
141
|
border: 1px solid var(--glass-spine-border);
|
|
138
142
|
box-shadow: var(--glass-under-shadow-spine);
|
|
@@ -146,6 +150,48 @@
|
|
|
146
150
|
display: none;
|
|
147
151
|
}
|
|
148
152
|
|
|
153
|
+
/* ─────────────────────────────────────────────────────────────
|
|
154
|
+
BA.W-ATLAS-RECONCILE C-3 — structure variant (SILVER MILLED-METAL register)
|
|
155
|
+
|
|
156
|
+
The cool polished-steel housing read: the engraved-bezel `::before` stroke
|
|
157
|
+
AND the structural twin-line grooves re-point from the warm-cream
|
|
158
|
+
`--surface-tint-*` default onto the `--silver` quad (gold's cool mirror).
|
|
159
|
+
The chassis reads as an INDUSTRIAL precision-instrument panel — the
|
|
160
|
+
cool-metal twin of the warm-gold "complete"-phase affirmation.
|
|
161
|
+
|
|
162
|
+
The phase cascade (`[data-phase="…"]`) stays ORTHOGONAL — a `structure`
|
|
163
|
+
chassis still retints its phase fills on `data-phase`; only the
|
|
164
|
+
structure-metal recipe (bezel + grooves) forks here. Consumer #2 of the
|
|
165
|
+
silver quad (the atlas's structure surface is consumer #1).
|
|
166
|
+
|
|
167
|
+
The silver is the W-NO-GRAY NAMED cool-neutral exception (a brand METAL
|
|
168
|
+
identity, not a neutral — its very-low chroma reads as milled steel, the
|
|
169
|
+
cool hue distinguishes it from the warm glass plate).
|
|
170
|
+
───────────────────────────────────────────────────────────── */
|
|
171
|
+
.instrument-chassis[data-variant="structure"] {
|
|
172
|
+
/* The milled-panel edge: the chassis border lifts off the resting glass
|
|
173
|
+
edge onto a hairline silver structure stroke. */
|
|
174
|
+
border-color: color-mix(in oklab, var(--color-silver-dark) 55%, transparent);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* The engraved bezel re-tints to the cool silver catch (the polished sleeve
|
|
178
|
+
reads as steel, not warm-cream). */
|
|
179
|
+
.instrument-chassis[data-variant="structure"]::before {
|
|
180
|
+
border-color: color-mix(in oklab, var(--color-silver-light) 60%, transparent);
|
|
181
|
+
}
|
|
182
|
+
.dark .instrument-chassis[data-variant="structure"]::before {
|
|
183
|
+
border-color: color-mix(in oklab, var(--color-silver) 40%, transparent);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* The structural grooves re-point to the silver twin-line: the catch reads
|
|
187
|
+
the light silver, the under-shadow the dark silver — a milled seam, not the
|
|
188
|
+
default warm twin-line. ONE re-point at the variant root; every
|
|
189
|
+
`<ChassisDivider>` inside a structure chassis inherits it. */
|
|
190
|
+
.instrument-chassis[data-variant="structure"] {
|
|
191
|
+
--twin-line-catch: color-mix(in oklab, var(--color-silver-light) 50%, transparent);
|
|
192
|
+
--twin-line-shadow: color-mix(in oklab, var(--color-silver-dark) 40%, transparent);
|
|
193
|
+
}
|
|
194
|
+
|
|
149
195
|
/* Phase-color cascade — single property, full chassis-wide retint.
|
|
150
196
|
`--phase-color-label` mirrors the cascade through the WCAG companion
|
|
151
197
|
tokens (AC.W6c F1.V-04). The label register falls back to the canvas
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/* menu.css — the glass MENU-ROW + MENU-SECTION register (BA.W-MENU-GLASS).
|
|
2
|
+
|
|
3
|
+
The shared `menuItemVariants` CVA's `surface=glass` arm (the DEFAULT, glass-
|
|
4
|
+
first canon AX.W54) composes `.glass-menu-row`; all 13 menu/picker-family SFCs
|
|
5
|
+
inherit the glassy hover-lift register in ONE edit (no per-SFC menu-row CSS).
|
|
6
|
+
|
|
7
|
+
── The cascade-trap pre-empt (the AZ dock-rail `@layer`-loses-to-utility trap) ──
|
|
8
|
+
`.interactive-item:hover` (utilities/base.css, `@layer components`) paints a flat
|
|
9
|
+
`color-mix(--accent 50%)` hover background. An UNLAYERED Tailwind `hover:bg-accent`
|
|
10
|
+
utility would win over BOTH (the trap). The CVA's glass arm therefore DROPS the
|
|
11
|
+
flat-accent utilities entirely — so the only background-painters on a glass row are
|
|
12
|
+
the `@layer components` `.interactive-item:hover` rule and these `.glass-menu-row`
|
|
13
|
+
rules. This file is `@import`-ed AFTER `utilities.css` in `index.css`, so at equal
|
|
14
|
+
specificity (0-1-1 for the `:hover`/`[data-highlighted]` selectors) and equal layer
|
|
15
|
+
(`components`) the recipe wins by SOURCE ORDER over `.interactive-item:hover` —
|
|
16
|
+
exactly the discipline `glass/surface-axis.css` uses ("@import-ed AFTER ladder.css
|
|
17
|
+
so the attr rules win by source order"). NEVER re-add an unlayered flat-accent
|
|
18
|
+
utility to the glass arm — it would re-introduce the trap.
|
|
19
|
+
|
|
20
|
+
── The element-level tint discipline (substitution-vs-inheritance) ──
|
|
21
|
+
The row reads the ELEMENT-LEVEL glass-quiet oklab tint
|
|
22
|
+
`color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength))`
|
|
23
|
+
— the SAME seam `glass/ladder.css:58` / `glass/surfaces.css:19` compose — NOT the
|
|
24
|
+
pre-baked `--glass-bg-quiet` raw token. So the row darkens-over-light (W55 bright
|
|
25
|
+
bucket / `--glass-tint-strength` lift) AND lifts-over-dark per W-DARK-MATERIAL's
|
|
26
|
+
tint arm, in lockstep with every other glass surface. */
|
|
27
|
+
@layer components {
|
|
28
|
+
/* ── .glass-menu-row — the glassy hover-lift menu/picker item ──────────────
|
|
29
|
+
Every visual axis reads a `--menu-row-*` knob so a consumer retunes via a
|
|
30
|
+
`:root` override. The REST state is transparent (the row sits on the
|
|
31
|
+
container's own `glass-floating` plate — DropdownMenuContent /
|
|
32
|
+
ContextMenuContent are already `glass-floating rounded-panel`); the glass
|
|
33
|
+
PLATE materializes on hover/focus/highlight. */
|
|
34
|
+
.glass-menu-row {
|
|
35
|
+
/* The glass-quiet plate the row paints AT THE ELEMENT on hover/highlight
|
|
36
|
+
(the element-level oklab tint — see header). Overridable. */
|
|
37
|
+
--menu-row-bg: color-mix(
|
|
38
|
+
in oklab,
|
|
39
|
+
var(--glass-bg-quiet),
|
|
40
|
+
var(--glass-tint-source) var(--glass-tint-strength)
|
|
41
|
+
);
|
|
42
|
+
/* The PRM-gated hover-lift travel (zeroed under reduce, below). */
|
|
43
|
+
--menu-row-lift: -1px;
|
|
44
|
+
/* The 44px WCAG-2.5.5 touch floor (the row never reflows below it). The
|
|
45
|
+
base is the CVA's own py rhythm; the clamp guarantees the floor. Reads
|
|
46
|
+
`--touch-target` (the 44px token declared UNCONDITIONALLY at :root —
|
|
47
|
+
offsets-sizing.css), NOT `--control-floor` (which is declared ONLY inside
|
|
48
|
+
the `@media (pointer: coarse)` block, so on a FINE pointer `var(--control-
|
|
49
|
+
floor)` resolves to the guaranteed-invalid initial value → 0px in the
|
|
50
|
+
max(), and the floor silently vanished — the live π caught the 36px row).
|
|
51
|
+
The `2.75rem` literal fallback covers a consumer who unsets the token. */
|
|
52
|
+
min-block-size: max(2rem, var(--touch-target, 2.75rem));
|
|
53
|
+
|
|
54
|
+
/* The lift transform rides the §6 spring register (`--spring-smooth`); the
|
|
55
|
+
surface props (background) ride the bezier `--ease-standard` via the
|
|
56
|
+
`.interactive-item` base transition (already declared there). The
|
|
57
|
+
explicit transform leg here pairs the spring with the lift. */
|
|
58
|
+
transition: translate var(--duration-fast) var(--spring-smooth);
|
|
59
|
+
translate: 0 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* Hover / keyboard-focus / reka internal-highlight / sub-trigger-open all
|
|
63
|
+
reach the SAME glass register (Combobox/Command/Select parity — the CVA
|
|
64
|
+
routes all three input modes through `data-[highlighted]`). */
|
|
65
|
+
.glass-menu-row:hover:not([data-disabled]),
|
|
66
|
+
.glass-menu-row:focus:not([data-disabled]),
|
|
67
|
+
.glass-menu-row[data-highlighted]:not([data-disabled]),
|
|
68
|
+
.glass-menu-row[data-state="open"]:not([data-disabled]) {
|
|
69
|
+
background: var(--menu-row-bg);
|
|
70
|
+
color: var(--accent-foreground);
|
|
71
|
+
translate: 0 var(--menu-row-lift);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* ── .glass-menu-section — the mono section-label + hairline row-group ──────
|
|
75
|
+
The "section caption + hairline over a row group" recipe (the slides gear
|
|
76
|
+
hand-built ~120 lines of). Folds onto `typography.css` `.section-label` (the
|
|
77
|
+
mono / √φ-caption / small-caps register) for the caption and `--border-
|
|
78
|
+
hairline` for the divider. Tokenized on `--menu-section-*` so a consumer
|
|
79
|
+
retunes via a `:root` override. ≥2 consumers: the library menu defaults
|
|
80
|
+
(the section caption a DropdownMenuLabel composes) + the in-repo demo menu
|
|
81
|
+
story (Unit 2 adoption); the slides DeckSettings is the named foreign
|
|
82
|
+
downstream consumer. */
|
|
83
|
+
.glass-menu-section {
|
|
84
|
+
/* The caption register (mono / small-caps / quiet ink) — the same
|
|
85
|
+
vocabulary `.section-label` carries, exposed as overridable knobs. */
|
|
86
|
+
--menu-section-font: var(--font-mono);
|
|
87
|
+
--menu-section-size: var(--type-caption);
|
|
88
|
+
--menu-section-color: var(--muted-foreground);
|
|
89
|
+
--menu-section-tracking: var(--type-tracking-caps);
|
|
90
|
+
/* The hairline divider over the group (the catch-light + under-shadow
|
|
91
|
+
pair). Default-off feather; the rule below paints it. */
|
|
92
|
+
--menu-section-hairline: var(--border-hairline);
|
|
93
|
+
/* The block rhythm above the group (a section is a deliberate break). */
|
|
94
|
+
--menu-section-gap: 0.375rem;
|
|
95
|
+
|
|
96
|
+
display: block;
|
|
97
|
+
margin-block-start: var(--menu-section-gap);
|
|
98
|
+
padding-block-start: var(--menu-section-gap);
|
|
99
|
+
/* The hairline reads as a top divider over the group via box-shadow (the
|
|
100
|
+
house hairline pattern — a whisper, not a hard 1px rule). */
|
|
101
|
+
box-shadow: var(--menu-section-hairline);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* The section CAPTION — a mono small-caps label. Composes onto the label
|
|
105
|
+
element the section recipe wraps (or a nested `.glass-menu-section-label`);
|
|
106
|
+
the demo + library menu labels read this caption register. */
|
|
107
|
+
.glass-menu-section-label,
|
|
108
|
+
.glass-menu-section > [data-menu-section-label] {
|
|
109
|
+
font-family: var(--menu-section-font);
|
|
110
|
+
font-size: var(--menu-section-size);
|
|
111
|
+
color: var(--menu-section-color);
|
|
112
|
+
text-transform: uppercase;
|
|
113
|
+
letter-spacing: var(--menu-section-tracking);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* ── PRM gate — no deform/lift under reduce ───────────────────────────────────
|
|
118
|
+
The hover-lift `translate` is the only motion the row introduces; under
|
|
119
|
+
`prefers-reduced-motion: reduce` it collapses to the identity (0) and the
|
|
120
|
+
transition is removed (the surface bg cross-fade is not motion). The glass
|
|
121
|
+
plate still materializes on hover — only the geometric lift is suppressed. */
|
|
122
|
+
@media (prefers-reduced-motion: reduce) {
|
|
123
|
+
.glass-menu-row {
|
|
124
|
+
--menu-row-lift: 0px;
|
|
125
|
+
transition: none;
|
|
126
|
+
}
|
|
127
|
+
}
|
package/dist/styles/paper.css
CHANGED
|
@@ -7,54 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Texture: feTurbulence baseFrequency 0.65, 4 octaves, desaturated via
|
|
9
9
|
* feColorMatrix, blended multiply (light) / soft-light (dark). Tiles ~60px.
|
|
10
|
-
*
|
|
11
|
-
* ── THE GRAIN RUNGS (D6.c M5 — the printed-paper tooth, FELT not seen) ─────────
|
|
12
|
-
* The warm-paper grain must be FELT at rest — a premium editorial stock has a
|
|
13
|
-
* felt depth, and the measured finding (ds2-medium M5 / fd-usf-gallery §F) is
|
|
14
|
-
* that the shipped `--glass-grain-opacity: 0.025` floor reads as NOTHING. This
|
|
15
|
-
* file lifts the grain off that floor and mints a SECOND rung for chart plates:
|
|
16
|
-
*
|
|
17
|
-
* --glass-grain-opacity — the PAGE grain. Lifted here to a perceptible-
|
|
18
|
-
* but-deft 0.038 default (the local floor below).
|
|
19
|
-
* Numeric justification: the kitsch line is
|
|
20
|
-
* ~0.05 (above it the grain reads as screen-noise
|
|
21
|
-
* / a dirty monitor, ds2-medium M5); 0.025 is
|
|
22
|
-
* sub-perceptual ("felt as nothing"). 0.038 is
|
|
23
|
-
* the calibrated MIDPOINT — ~1.5× the dead floor,
|
|
24
|
-
* ~0.76× the kitsch ceiling — felt at rest, never
|
|
25
|
-
* seen AS grain. (The canonical token still lives
|
|
26
|
-
* in tokens.css; this utility reads it with the
|
|
27
|
-
* lifted fallback so a no-override mount is felt.)
|
|
28
|
-
* --glass-grain-opacity-plate — the PLATE grain (NEW rung). A chart plate is
|
|
29
|
-
* the FIGURE's "paper", so it wants slightly more
|
|
30
|
-
* tooth than the page (M5): 0.045 — still below
|
|
31
|
-
* the 0.05 kitsch ceiling, distinctly felt so the
|
|
32
|
-
* plate reads as PRINTED on the same stock as the
|
|
33
|
-
* page, not pasted onto it.
|
|
34
|
-
*
|
|
35
|
-
* THE DATA-REGION MASK CONTRACT (M5, non-negotiable). Grain on the FRAME, never
|
|
36
|
-
* under the FIGURE — a fleck over a choropleth reads as a data artifact; on the
|
|
37
|
-
* plate margin it reads as paper. `paper-grain-overlay` exposes a custom-property
|
|
38
|
-
* MASK SLOT (`--paper-grain-mask`) so a consumer can carve the data viewport out
|
|
39
|
-
* of the grain ::after: set it to a gradient/`url()` that is transparent over the
|
|
40
|
-
* data region and opaque over the frame, and the grain is masked off the figure.
|
|
41
|
-
* Default `none` (the whole surface is grained — the page/card case, no data to
|
|
42
|
-
* fence). The plate rung is opt-in via `[data-grain="plate"]`.
|
|
43
10
|
*/
|
|
44
11
|
|
|
45
|
-
/* The grain rung DEFAULTS — lifted off the tokens.css floor (D6.c M5). These are
|
|
46
|
-
plain custom-property fallbacks the utilities read; a consumer/tokens.css value
|
|
47
|
-
still wins (`var(--glass-grain-opacity, <floor>)`), so this only sets the floor
|
|
48
|
-
a no-override mount inherits. The plate rung is minted here (no canonical
|
|
49
|
-
tokens.css home is touched in this lane — D6.b owns tokens.css). */
|
|
50
|
-
@layer components {
|
|
51
|
-
:root {
|
|
52
|
-
/* The PLATE grain rung — distinct from the page rung; the figure's paper
|
|
53
|
-
wants more tooth. Minted in this lane; a consumer overrides at :root. */
|
|
54
|
-
--glass-grain-opacity-plate: 0.045;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
12
|
@utility paper-underpaint {
|
|
59
13
|
position: fixed;
|
|
60
14
|
inset: 0;
|
|
@@ -63,8 +17,7 @@
|
|
|
63
17
|
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
|
|
64
18
|
background-repeat: repeat;
|
|
65
19
|
background-size: 60px 60px;
|
|
66
|
-
|
|
67
|
-
opacity: var(--glass-grain-opacity, 0.038);
|
|
20
|
+
opacity: var(--glass-grain-opacity);
|
|
68
21
|
mix-blend-mode: multiply;
|
|
69
22
|
}
|
|
70
23
|
|
|
@@ -86,27 +39,8 @@
|
|
|
86
39
|
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
|
|
87
40
|
background-repeat: repeat;
|
|
88
41
|
background-size: 60px 60px;
|
|
89
|
-
|
|
90
|
-
opacity: var(--glass-grain-opacity, 0.038);
|
|
42
|
+
opacity: var(--glass-grain-opacity);
|
|
91
43
|
mix-blend-mode: overlay;
|
|
92
|
-
/* THE DATA-REGION MASK SLOT (M5). Default `none` = the whole surface is
|
|
93
|
-
grained (page/card — no data to fence). A consumer that grains a chart
|
|
94
|
-
plate sets `--paper-grain-mask` to a gradient/url() transparent over the
|
|
95
|
-
data viewport + opaque over the frame, carving the figure out of the
|
|
96
|
-
grain so no fleck lands on a tier fill. `mask` is Baseline; a
|
|
97
|
-
non-supporting engine ignores it and keeps the full-surface grain (the
|
|
98
|
-
page case is unaffected — the mask only matters when a consumer fences
|
|
99
|
-
the data region). */
|
|
100
|
-
mask: var(--paper-grain-mask, none);
|
|
101
|
-
-webkit-mask: var(--paper-grain-mask, none);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/* The PLATE rung — a chart plate opts in via `[data-grain="plate"]` to the
|
|
105
|
-
higher-tooth `--glass-grain-opacity-plate` (the figure's paper reads as the
|
|
106
|
-
same stock as the page, with a touch more tooth). Pair with the mask slot to
|
|
107
|
-
fence the data viewport. */
|
|
108
|
-
&[data-grain="plate"]::after {
|
|
109
|
-
opacity: var(--glass-grain-opacity-plate, 0.045);
|
|
110
44
|
}
|
|
111
45
|
}
|
|
112
46
|
|