@mkbabb/glass-ui 5.0.0 → 6.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/README.md +30 -27
- package/dist/DropdownMenuTrigger-BzQtd9lt.js +65 -0
- package/dist/{FadingScroll-BSRLqQCx.js → FadingScroll-C1ZWEjmG.js} +32 -25
- package/dist/{Input-DKf-XwUM.js → Input-B4WQ_CMc.js} +1 -1
- package/dist/{PagerDots-BP6jh7z4.js → PagerDots-BoTQ7g5l.js} +123 -95
- package/dist/{accent-tone-solve-CBw3L0cy.js → accent-tone-solve-Dii9ePhK.js} +1 -1
- package/dist/animated-digit.js +1 -1
- package/dist/aurora.js +324 -314
- package/dist/blob-config.d.ts +0 -4
- package/dist/blob-config.js +1 -1
- package/dist/blob.js +280 -261
- package/dist/{button-BXzhydVB.js → button-32mg6xA8.js} +63 -56
- package/dist/button.js +1 -1
- package/dist/canvas.js +1 -1
- package/dist/{CardAction-2uUvjMQK.js → card-16xmzIr3.js} +29 -11
- package/dist/card.js +1 -1
- package/dist/carousel.d.ts +1 -2
- package/dist/carousel.js +26 -95
- package/dist/chip.d.ts +0 -9
- package/dist/chip.js +1 -1
- package/dist/collapsible.js +1 -1
- package/dist/color-swatch.js +1 -0
- package/dist/color.js +87 -3
- package/dist/{CommandShortcut-fmdbsEJL.js → command-BjPjUU9z.js} +56 -51
- package/dist/command.js +1 -1
- package/dist/completion-seal.js +64 -55
- package/dist/components/_shared/ModalOverlay.vue.d.ts +5 -52
- package/dist/components/_shared/field-surfaces.css +1 -0
- package/dist/components/_shared/menuItemVariants.d.ts +2 -2
- package/dist/components/_shared/useMotionAxis.d.ts +2 -2
- package/dist/components/_shared/valueDomain.d.ts +6 -0
- package/dist/components/alert/index.d.ts +1 -1
- package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +1 -1
- package/dist/components/aurora/Aurora.vue.d.ts +7 -1
- package/dist/components/aurora/composables/runtime.d.ts +5 -3
- package/dist/components/aurora/composables/useAurora.d.ts +4 -2
- package/dist/components/avatar/AvatarImage.vue.d.ts +3 -1
- package/dist/components/badge/index.d.ts +2 -2
- package/dist/components/blob/Blob.vue.d.ts +11 -0
- package/dist/components/blob/composables/useMetaballRenderer.d.ts +2 -0
- package/dist/components/button/Button.vue.d.ts +4 -2
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/card/Card.vue.d.ts +4 -4
- package/dist/components/card/ScrollCard.vue.d.ts +1 -1
- package/dist/components/card/styles.css +1 -0
- package/dist/components/carousel/Carousel.vue.d.ts +2 -2
- package/dist/components/carousel/CarouselNext.vue.d.ts +1 -1
- package/dist/components/carousel/CarouselPrevious.vue.d.ts +1 -1
- package/dist/components/carousel/index.d.ts +0 -1
- package/dist/components/carousel/useCarousel.d.ts +2 -2
- package/dist/components/combobox/ComboboxList.vue.d.ts +1 -1
- package/dist/components/combobox/index.d.ts +1 -3
- package/dist/components/command/Command.vue.d.ts +1 -1
- package/dist/components/command/CommandDialog.vue.d.ts +9 -6
- package/dist/components/completion-seal/styles.css +1 -0
- package/dist/components/constellation/Constellation.vue.d.ts +6 -1
- package/dist/components/constellation/composables/useConstellation.d.ts +3 -16
- package/dist/components/constellation/constants.d.ts +6 -16
- package/dist/components/constellation/constellationField.d.ts +3 -5
- package/dist/components/constellation/constellationInteraction.d.ts +1 -1
- package/dist/components/constellation/constellationRender.d.ts +11 -21
- package/dist/components/constellation/constellationTypes.d.ts +12 -9
- package/dist/components/constellation/index.d.ts +1 -1
- package/dist/components/controls/DarkModeToggle.vue.d.ts +0 -2
- package/dist/components/data-table/DataTable.vue.d.ts +14 -2
- package/dist/components/data-table/index.d.ts +1 -2
- package/dist/components/data-table/types.d.ts +26 -1
- package/dist/components/deck/constants.d.ts +0 -10
- package/dist/components/deck/index.d.ts +0 -1
- package/dist/components/dialog/DialogContent.vue.d.ts +7 -1
- package/dist/components/dialog/index.d.ts +0 -1
- package/dist/components/dock/DockControl.vue.d.ts +4 -4
- package/dist/components/dock/DockStack.vue.d.ts +2 -2
- package/dist/components/dock/GlassDock.vue.d.ts +1 -0
- package/dist/components/dock/composables/dockMorphContext.d.ts +2 -0
- package/dist/components/dock/composables/dockMorphMeasure.d.ts +11 -1
- package/dist/components/dock/composables/useDockClickIntegrity.d.ts +4 -0
- package/dist/components/dock/composables/useDockOverflowFit.d.ts +3 -3
- package/dist/components/dock/composables/useDockPopover.d.ts +2 -0
- package/dist/components/dock/composables/useDockShellProps.d.ts +7 -0
- package/dist/components/dock/composables/useDockState.d.ts +2 -2
- package/dist/components/dock/constants.d.ts +0 -12
- package/dist/components/dock/index.d.ts +1 -0
- package/dist/components/dock/styles/adaptive-legibility.css +1 -0
- package/dist/components/dock/styles/controls/icon-button.css +1 -0
- package/dist/{styles/dock-controls → components/dock/styles/controls}/touch-floor.css +1 -1
- package/dist/components/dock/styles/controls.css +1 -0
- package/dist/{styles/dock → components/dock/styles}/density.css +1 -1
- package/dist/components/dock/styles/dock.css +1 -0
- package/dist/components/dock/styles/index.css +1 -0
- package/dist/components/dock/styles/layer-group.css +1 -0
- package/dist/components/dock/styles/layers.css +1 -0
- package/dist/components/dock/styles/overflow.css +1 -0
- package/dist/components/dock/styles/popover.css +1 -0
- package/dist/components/dock/styles/shape.css +1 -0
- package/dist/components/dock/styles/shell.css +1 -0
- package/dist/components/drawer/Drawer.vue.d.ts +3 -3
- package/dist/components/drawer/composables/drawerSnapContext.d.ts +3 -1
- package/dist/components/drawer/constants.d.ts +6 -6
- package/dist/components/drawer/index.d.ts +4 -6
- package/dist/components/drawer/styles.css +1 -0
- package/dist/components/dropdown-menu/DropdownMenuContent.vue.d.ts +1 -1
- package/dist/components/dropdown-menu/DropdownMenuTrigger.vue.d.ts +9 -3
- package/dist/components/dropdown-menu/index.d.ts +0 -1
- package/dist/components/easing/EasingConfigurator.vue.d.ts +1 -1
- package/dist/components/easing/EasingPicker.vue.d.ts +2 -2
- package/dist/components/easing/composables/useEasingPicker.d.ts +4 -0
- package/dist/components/easing/constants.d.ts +2 -0
- package/dist/components/fading-scroll/composables/useFadingScroll.d.ts +3 -3
- package/dist/components/fourier-field/FourierField.vue.d.ts +7 -1
- package/dist/components/fourier-field/composables/useFourierField.d.ts +2 -1
- package/dist/components/handmark/HandMark.vue.d.ts +1 -1
- package/dist/components/handmark/geometry.d.ts +1 -1
- package/dist/components/handmark/index.d.ts +4 -6
- package/dist/components/icon-chip/styles.css +1 -0
- package/dist/components/index.d.ts +0 -1
- package/dist/components/infinite-scroll/index.d.ts +1 -0
- package/dist/components/instrument-chassis/styles.css +1 -0
- package/dist/components/labeled-field/LabeledField.vue.d.ts +12 -2
- package/dist/components/labeled-field/LabeledInput.vue.d.ts +10 -3
- package/dist/components/liquid-grid/LiquidGrid.vue.d.ts +4 -0
- package/dist/components/liquid-grid/composables/useLiquidGrid.d.ts +2 -1
- package/dist/components/metric-stack/MetricStack.vue.d.ts +1 -1
- package/dist/components/pager-dots/PagerDots.vue.d.ts +1 -1
- package/dist/components/popover/PopoverContent.vue.d.ts +1 -1
- package/dist/components/progress/Progress.vue.d.ts +5 -40
- package/dist/components/progress/ProgressDefault.vue.d.ts +1 -17
- package/dist/components/progress/ProgressGradient.vue.d.ts +1 -0
- package/dist/components/progress/ProgressLiquid.vue.d.ts +1 -0
- package/dist/components/progress/index.d.ts +0 -5
- package/dist/components/progress/valueMarks.css +1 -0
- package/dist/components/pulse/Pulse.vue.d.ts +2 -2
- package/dist/components/scroll-progress-rim/styles.css +1 -0
- package/dist/components/search/FuzzySearch.vue.d.ts +4 -2
- package/dist/components/search/SearchBar.vue.d.ts +2 -2
- package/dist/components/search/searchVariants.d.ts +1 -1
- package/dist/components/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/select/index.d.ts +0 -2
- package/dist/components/skeleton/Skeleton.vue.d.ts +1 -1
- package/dist/components/slider/Slider.vue.d.ts +2 -0
- package/dist/components/split-chars/SplitChars.vue.d.ts +1 -1
- package/dist/components/surface/Surface.vue.d.ts +1 -1
- package/dist/components/table/Table.vue.d.ts +4 -0
- package/dist/components/tabs/SegmentedTabs.vue.d.ts +10 -0
- package/dist/components/tabs/index.d.ts +1 -1
- package/dist/components/tabs/styles/drag.css +1 -0
- package/dist/components/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/timeline/ContinuousTimeline.vue.d.ts +1 -1
- package/dist/components/timeline/GlassTimeline.vue.d.ts +4 -4
- package/dist/components/toast/Toast.vue.d.ts +3 -3
- package/dist/components/toast/use-toast.d.ts +4 -4
- package/dist/components/typewriter/TypewriterText.vue.d.ts +1 -4
- package/dist/components/typewriter/composables/useTypewriter.d.ts +0 -1
- package/dist/components/typewriter/utils/graphemes.d.ts +1 -0
- package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +2 -2
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +31 -0
- package/dist/composables/glass/webgpu/rendererStatus.d.ts +13 -0
- package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +3 -0
- package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +2 -0
- package/dist/composables/motion/springProjection.d.ts +16 -0
- package/dist/composables/motion/useAnimatedNumber.d.ts +1 -6
- package/dist/composables/motion/useCountup.d.ts +1 -6
- package/dist/composables/motion/useDockCtaReceive.d.ts +55 -0
- package/dist/composables/motion/useElementMorph.d.ts +8 -0
- package/dist/composables/motion/useLiquidPress.d.ts +12 -4
- package/dist/composables/motion/useNumericTransition.d.ts +2 -0
- package/dist/composables/motion/useTextHighlight.d.ts +2 -1
- package/dist/configurator-CSENXXSy.js +311 -0
- package/dist/configurator.js +2 -3
- package/dist/constellation.js +235 -571
- package/dist/controls.js +55 -63
- package/dist/{createCanvasLifecycle-DlrcvWbb.js → createCanvasLifecycle-hsFkQVdl.js} +32 -32
- package/dist/dark-DIH-blY1.js +70 -0
- package/dist/dark.d.ts +1 -2
- package/dist/dark.js +2 -20
- package/dist/{DataTable-Bxya8nBn.js → data-table-DveMdgBM.js} +231 -120
- package/dist/data-table.js +2 -2
- package/dist/deck.js +10 -21
- package/dist/dialog-BzQxKrUr.js +281 -0
- package/dist/dialog.js +2 -3
- package/dist/dock.js +561 -428
- package/dist/{dockContext-d-WpJN2Z.js → dockContext-4S9qP0Z4.js} +1 -1
- package/dist/dom.js +196 -7
- package/dist/drawer.js +111 -66
- package/dist/dropdown-menu-DORIA52F.js +378 -0
- package/dist/dropdown-menu.js +3 -2
- package/dist/easing.d.ts +0 -9
- package/dist/easing.js +334 -187
- package/dist/expandable-container.js +12 -4
- package/dist/fading-scroll.js +1 -1
- package/dist/focus-scope.js +1 -1
- package/dist/forms.js +37 -78
- package/dist/fourier-field.js +273 -263
- package/dist/fourier-math.d.ts +0 -6
- package/dist/fourier-math.js +112 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +131 -195
- package/dist/handmark.d.ts +0 -2
- package/dist/handmark.js +82 -82
- package/dist/header-ribbon.js +41 -30
- package/dist/{IconChip-CwLmBJ_K.js → icon-chip-BWuxz1-u.js} +1 -1
- package/dist/icon-chip.js +1 -1
- package/dist/{IconTooltip-D9sbK-Mk.js → icon-tooltip-CO6rw0dZ.js} +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/infinite-scroll.d.ts +0 -1
- package/dist/infinite-scroll.js +17 -15
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +104 -2
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +95 -69
- package/dist/liquid-grid.js +173 -162
- package/dist/metric-badge.js +3 -3
- package/dist/metric-cell.js +2 -2
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +15 -16
- package/dist/motion-curves.d.ts +0 -20
- package/dist/motion.js +59 -58
- package/dist/{Notification-DQv2cOh9.js → notification-DVs7ODMg.js} +17 -8
- package/dist/notification.js +1 -1
- package/dist/{NumberFieldContent-BkE7xPS9.js → number-field-PvkGedHk.js} +2 -2
- package/dist/number-field.js +1 -1
- package/dist/pager-dots.js +1 -1
- package/dist/paper-backdrop.js +31 -2
- package/dist/{PopoverContent-DOtszFWK.js → popover-WMgyRSyN.js} +7 -2
- package/dist/popover.js +1 -1
- package/dist/procedural-color.wgsl-B9mLK7v0.js +377 -0
- package/dist/progress-C-HHuFZy.js +192 -0
- package/dist/progress.js +2 -2
- package/dist/pulse.js +3 -1
- package/dist/reactive.js +19 -3
- package/dist/rendererStatus-C2-zC2Q-.js +40 -0
- package/dist/{resolveCanvasColor-B3L-akX0.js → resolveCanvasColor-yarP5bdk.js} +1 -1
- package/dist/scroll-progress-rim.js +1 -1
- package/dist/search.js +187 -146
- package/dist/{SelectScrollDownButton-CDtwaWkZ.js → select-BIv4R3Ir.js} +109 -44
- package/dist/select.js +2 -4
- package/dist/separator-CBU94kTM.js +62 -0
- package/dist/separator.js +1 -1
- package/dist/sidebar.js +1 -1
- package/dist/slider-Cc_qw6GA.js +166 -0
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +43 -43
- package/dist/styles/accessibility.css +1 -0
- package/dist/styles/components.css +1 -1
- package/dist/styles/glass/control-surfaces.css +1 -1
- package/dist/styles/glass/glass-capsule.css +1 -1
- package/dist/styles/glass/ladder.css +1 -1
- package/dist/styles/glass/liquid-fill.css +1 -1
- package/dist/styles/glass/material-roles.css +1 -0
- package/dist/styles/glass/material.css +1 -1
- package/dist/styles/glass/surface-axis.css +1 -1
- package/dist/styles/glass/surfaces-pager.css +1 -1
- package/dist/styles/glass/surfaces.css +1 -1
- package/dist/styles/glass.css +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/theme/bridges.css +1 -1
- package/dist/styles/tokens/glass-fx.css +1 -1
- package/dist/styles/tokens/glass.css +1 -1
- package/dist/styles/tokens/offsets.css +1 -1
- package/dist/styles/tokens/scale-paper.css +1 -1
- package/dist/styles/tokens/scheme-spring.css +1 -1
- package/dist/styles/tokens/shadow.css +1 -1
- package/dist/styles/tokens.d.ts +53 -0
- package/dist/styles/tokens.ts +58 -0
- package/dist/styles/typography/scale.css +1 -1
- package/dist/styles/typography/semantic.css +1 -1
- package/dist/styles/typography/utilities.css +1 -1
- package/dist/styles/utilities/base.css +1 -1
- package/dist/styles/utilities/btn.css +1 -1
- package/dist/styles/utilities/components.css +1 -1
- package/dist/styles/utilities.css +1 -1
- package/dist/{Switch-BPBfhMU3.js → switch-Boj4Ucn5.js} +1 -1
- package/dist/switch.js +1 -1
- package/dist/tabs.js +51 -45
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/{ToggleGroupItem-DNWx2aSW.js → toggle-group-BPchFsns.js} +10 -7
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.d.ts +1 -53
- package/dist/tokens.js +1 -1
- package/dist/{TooltipProvider-GtfYdSVf.js → tooltip-BmOQJzh0.js} +1 -0
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +151 -166
- package/dist/{useAccentTone-D25DxviG.js → useAccentTone-C-p6WdPe.js} +1 -1
- package/dist/{useAnimatedNumber-2XC4aRB6.js → useAnimatedNumber-BRVVaFFc.js} +1 -1
- package/dist/useDockCtaReceive-CK-RLASa.js +257 -0
- package/dist/{useGooMorph-CU1pwuC6.js → useGooMorph-D1F6QJlH.js} +140 -59
- package/dist/{useIntersectionPause-Cmt5Tnv9.js → useIntersectionPause-B-dbxl9w.js} +1 -1
- package/dist/useLiquidPress-BYcwwGQV.js +68 -0
- package/dist/{useRAFLoop-CvOo_kgb.js → useRAFLoop-BtwQ9DyY.js} +1 -1
- package/dist/{useScrollProgress-C-yImzhU.js → useScrollProgress-DZI4nf4v.js} +1 -1
- package/dist/{useSelectionGroup-Btpf24aY.js → useSelectionGroup-LDzBdR1Y.js} +3 -3
- package/dist/{useTabRovingFocus-CG1H1k1J.js → useTabRovingFocus-DkLYwo4L.js} +1 -1
- package/dist/{useTouchGate-BlegwvwL.js → useTouchGate-Cj5fOkTv.js} +1 -1
- package/dist/valueDomain-B8L04u3U.js +13 -0
- package/dist/watercolor-dot.js +5 -3
- package/package.json +5 -12
- package/src/styles/accessibility.css +48 -0
- package/src/styles/glass/glass-capsule.css +2 -2
- package/src/styles/glass/ladder.css +1 -1
- package/src/styles/glass/material-roles.css +18 -0
- package/src/styles/glass/material.css +18 -12
- package/src/styles/glass.css +5 -5
- package/src/styles/index.css +38 -30
- package/src/styles/theme/bridges.css +0 -6
- package/src/styles/tokens/glass-fx.css +1 -5
- package/src/styles/tokens/glass.css +1 -2
- package/src/styles/tokens/offsets.css +0 -1
- package/src/styles/tokens/property-regs.css +11 -10
- package/src/styles/tokens/scale-paper.css +0 -1
- package/src/styles/tokens/scheme-motion.css +3 -0
- package/src/styles/tokens/scheme-spring.css +0 -10
- package/src/styles/tokens/shadow.css +3 -29
- package/src/styles/tokens.ts +58 -0
- package/src/styles/typography/scale.css +5 -2
- package/src/styles/typography/semantic.css +5 -5
- package/src/styles/typography/utilities.css +5 -5
- package/src/styles/utilities/base.css +5 -5
- package/src/styles/utilities/btn.css +6 -27
- package/src/styles/utilities.css +4 -6
- package/dist/ConfiguratorRow-BV6zPjTM.js +0 -151
- package/dist/DialogContent-Bl4v10AC.js +0 -192
- package/dist/DialogFooter-C0v4Hz2F.js +0 -168
- package/dist/PaperBackdrop-BYwE8_kg.js +0 -31
- package/dist/Progress-uWLyXE7J.js +0 -308
- package/dist/SelectGroup-BuEptUsa.js +0 -31
- package/dist/SelectSeparator-4QGephvr.js +0 -49
- package/dist/Separator-DqJ6PfOd.js +0 -44
- package/dist/color-Bp5jmv4Z.js +0 -86
- package/dist/components/carousel/GlassCarouselPager.vue.d.ts +0 -50
- package/dist/components/combobox/ComboboxSeparator.vue.d.ts +0 -18
- package/dist/components/combobox/ComboboxViewport.vue.d.ts +0 -18
- package/dist/components/constellation/composables/constellationGLSetup.d.ts +0 -10
- package/dist/components/constellation/composables/constellationWGPUSetup.d.ts +0 -19
- package/dist/components/constellation/composables/uniformBridgeWGPU.d.ts +0 -66
- package/dist/components/constellation/shaders/constellation-lines.glsl.d.ts +0 -2
- package/dist/components/constellation/shaders/constellation-lines.wgsl.d.ts +0 -1
- package/dist/components/constellation/shaders/constellation-points.glsl.d.ts +0 -2
- package/dist/components/constellation/shaders/constellation-points.wgsl.d.ts +0 -1
- package/dist/components/deck/composables/useDeckSpring.d.ts +0 -22
- package/dist/components/dialog/DialogScrollContent.vue.d.ts +0 -33
- package/dist/components/progress/ProgressSectioned.vue.d.ts +0 -47
- package/dist/components/progress/useProgressGeometry.d.ts +0 -60
- package/dist/components/section/Section.vue.d.ts +0 -73
- package/dist/components/section/index.d.ts +0 -1
- package/dist/components/stacked-icons/StackedIconGroup.vue.d.ts +0 -30
- package/dist/components/stacked-icons/index.d.ts +0 -2
- package/dist/components/stacked-icons/types.d.ts +0 -19
- package/dist/dropdown-menu-DaGlVdp9.js +0 -421
- package/dist/math-CIEcwsYi.js +0 -112
- package/dist/procedural-color.wgsl-ByduxnzV.js +0 -4
- package/dist/slider-Cxuj_W_H.js +0 -151
- package/dist/stacked-icons.d.ts +0 -1
- package/dist/stacked-icons.js +0 -98
- package/dist/styles/cards.css +0 -1
- package/dist/styles/completion-seal.css +0 -1
- package/dist/styles/dock/adaptive-legibility.css +0 -1
- package/dist/styles/dock/dock.css +0 -1
- package/dist/styles/dock/layer-group.css +0 -1
- package/dist/styles/dock/layers.css +0 -1
- package/dist/styles/dock/overflow.css +0 -1
- package/dist/styles/dock/popover.css +0 -1
- package/dist/styles/dock/shape.css +0 -1
- package/dist/styles/dock/shell.css +0 -1
- package/dist/styles/dock-controls/icon-button.css +0 -1
- package/dist/styles/dock-controls.css +0 -1
- package/dist/styles/dock.css +0 -1
- package/dist/styles/drawer.css +0 -1
- package/dist/styles/icon-chip.css +0 -1
- package/dist/styles/instrument-chassis.css +0 -1
- package/dist/styles/scroll-progress-rim.css +0 -1
- package/dist/styles/select.css +0 -1
- package/dist/styles/tabs/segmented-tabs-drag.css +0 -1
- package/dist/styles/utilities/animate.css +0 -0
- package/dist/useConfiguratorState-Dq35N_7t.js +0 -167
- package/dist/useDockCtaReceive-BgMmeINo.js +0 -161
- package/dist/useGlobalDark-DjKMEQE2.js +0 -53
- package/dist/useGpuSubstrate-DcY584kE.js +0 -347
- package/dist/useInterval-ZATRi-1T.js +0 -18
- package/dist/useKeyboardShortcuts-ynVmNFo3.js +0 -104
- package/dist/useLiquidPress-BXNHydZh.js +0 -40
- package/dist/useTextHighlight-C46Le9u_.js +0 -72
- package/dist/useViewportReady-c0isoKL8.js +0 -191
- package/src/styles/card-scroll.css +0 -189
- package/src/styles/cards.css +0 -485
- package/src/styles/completion-seal.css +0 -205
- package/src/styles/configurator.css +0 -359
- package/src/styles/dialog-placement.css +0 -68
- package/src/styles/dock/adaptive-legibility.css +0 -119
- package/src/styles/dock/crossfade.css +0 -139
- package/src/styles/dock/cta-seat.css +0 -87
- package/src/styles/dock/density.css +0 -458
- package/src/styles/dock/dock.css +0 -199
- package/src/styles/dock/fisheye.css +0 -81
- package/src/styles/dock/layer-group.css +0 -329
- package/src/styles/dock/layers.css +0 -438
- package/src/styles/dock/morph.css +0 -455
- package/src/styles/dock/overflow.css +0 -332
- package/src/styles/dock/popover.css +0 -249
- package/src/styles/dock/search.css +0 -68
- package/src/styles/dock/section.css +0 -59
- package/src/styles/dock/shape.css +0 -188
- package/src/styles/dock/shell-regions.css +0 -73
- package/src/styles/dock/shell.css +0 -500
- package/src/styles/dock-controls/dark-mode-toggle.css +0 -123
- package/src/styles/dock-controls/icon-button.css +0 -221
- package/src/styles/dock-controls/tab-button.css +0 -143
- package/src/styles/dock-controls/touch-floor.css +0 -119
- package/src/styles/dock-controls/triggers.css +0 -157
- package/src/styles/dock-controls.css +0 -92
- package/src/styles/dock.css +0 -219
- package/src/styles/drawer.css +0 -434
- package/src/styles/feedback-tone.css +0 -104
- package/src/styles/icon-chip.css +0 -256
- package/src/styles/instrument-chassis.css +0 -449
- package/src/styles/menu.css +0 -187
- package/src/styles/scroll-progress-rim.css +0 -87
- package/src/styles/segmented-tabs.css +0 -424
- package/src/styles/select.css +0 -201
- package/src/styles/tabs/segmented-tabs-drag.css +0 -200
- package/src/styles/utilities/animate.css +0 -29
- /package/dist/{coalesce-metric-B8o7zT9u.js → coalesce-metric-znAcLzkB.js} +0 -0
- /package/dist/{CollapsibleContent-DiHcB_HH.js → collapsible-bPzS1aQk.js} +0 -0
- /package/dist/{compile-C55K3P9g.js → compile-DK3Fri1B.js} +0 -0
- /package/dist/{styles → components/_shared}/feedback-tone.css +0 -0
- /package/dist/{styles → components/_shared}/menu.css +0 -0
- /package/dist/{styles → components/card}/card-scroll.css +0 -0
- /package/dist/{styles/configurator.css → components/configurator/styles.css} +0 -0
- /package/dist/{styles/dock-controls → components/controls}/dark-mode-toggle.css +0 -0
- /package/dist/{styles/dialog-placement.css → components/dialog/placement.css} +0 -0
- /package/dist/{styles/dock-controls → components/dock/styles/controls}/tab-button.css +0 -0
- /package/dist/{styles/dock-controls → components/dock/styles/controls}/triggers.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/crossfade.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/cta-seat.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/fisheye.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/morph.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/search.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/section.css +0 -0
- /package/dist/{styles/dock → components/dock/styles}/shell-regions.css +0 -0
- /package/dist/{styles/segmented-tabs.css → components/tabs/styles/segmented.css} +0 -0
- /package/dist/{constants-D8lSMkOz.js → constants-DRZmNIY-.js} +0 -0
- /package/dist/{createContext-BQ1Gy_LB.js → createContext-FU0n5MGK.js} +0 -0
- /package/dist/{flow.glsl-CVqPSj8_.js → flow.glsl-DEGFGE11.js} +0 -0
- /package/dist/{FocusScope-BzKwhsBn.js → focus-scope-DUTKveod.js} +0 -0
- /package/dist/{InstrumentChassis-Dss5Tjcm.js → instrument-chassis-Cvstg4_U.js} +0 -0
- /package/dist/{Label-C84TaQiw.js → label-Cj38tJKG.js} +0 -0
- /package/dist/{menuItemVariants-DbO-Fr74.js → menuItemVariants-D6AOzzND.js} +0 -0
- /package/dist/{pointerFieldMappings-4VtmkOWv.js → pointerFieldMappings-CZojkgKj.js} +0 -0
- /package/dist/{presets-B07HzyKd.js → presets-CxeNvxuO.js} +0 -0
- /package/dist/{prng-B0PLRmR6.js → prng-Dz2_9RJu.js} +0 -0
- /package/dist/{scrollReader-DzYqPQ6V.js → scrollReader-C2oK9Hb8.js} +0 -0
- /package/dist/{supportsCssTimeline-Ie4xJFbD.js → supportsCssTimeline-Dz-GVxXM.js} +0 -0
- /package/dist/{Toaster-C_-WeU9W.js → toast-kAbchIN2.js} +0 -0
- /package/dist/{useControlSize-DJwe-7ZQ.js → useControlSize-CFfOk8I-.js} +0 -0
- /package/dist/{useDocumentVisibility-CpJGUgcJ.js → useDocumentVisibility-YeBDGqtI.js} +0 -0
- /package/dist/{useDragMorph-65ihHePq.js → useDragMorph-7ygF9O0m.js} +0 -0
- /package/dist/{useDragVelocity-BWcNMCux.js → useDragVelocity-CbMZEBaC.js} +0 -0
- /package/dist/{useFuzzySearch-KslRxiJY.js → useFuzzySearch-BOgep7RE.js} +0 -0
- /package/dist/{useLeadTrail-DOH4XkL1.js → useLeadTrail-BYu8dq4G.js} +0 -0
- /package/dist/{usePointerVelocityField-CwXyeW0Z.js → usePointerVelocityField-BdvnO0py.js} +0 -0
- /package/dist/{useResizeObserver-DDuoBeBo.js → useResizeObserver-BcUTquV7.js} +0 -0
- /package/dist/{useResolveTokenColor-DVT5kwv6.js → useResolveTokenColor-C07e-qaT.js} +0 -0
- /package/dist/{useRoutePointer-DL7I0gY4.js → useRoutePointer-BDNMFN73.js} +0 -0
- /package/dist/{useSpringMount-CNvvgGiC.js → useSpringMount-C6-DBx4e.js} +0 -0
- /package/dist/{useTimer-CkDV8SC2.js → useTimer-D8koDvJS.js} +0 -0
- /package/dist/{useUserInvalidAria-Bkruei7M.js → useUserInvalidAria-Cr4nR3tu.js} +0 -0
- /package/dist/{vReveal-DUmiEkX_.js → vReveal-DZfWl9XI.js} +0 -0
- /package/dist/{vSpecular-DlYN0UZy.js → vSpecular-CQFmLNzA.js} +0 -0
- /package/dist/{writeVelocityWeight-D1rvdxJu.js → writeVelocityWeight-D_AcvTsE.js} +0 -0
|
@@ -1,449 +0,0 @@
|
|
|
1
|
-
/* instrument-chassis.css — chassis surface + region dividers + phase cascade.
|
|
2
|
-
*
|
|
3
|
-
* Composes the three-region <InstrumentChassis> per W2.7 §1, §2, §3, §11, §16.
|
|
4
|
-
* The chassis is one glass surface with an engraved-bezel ::before stroke and
|
|
5
|
-
* a radial-gradient curvature overlay; both persist at all phases (chassis
|
|
6
|
-
* character, not interactive accent).
|
|
7
|
-
*
|
|
8
|
-
* Region dividers compose two 1px lines — top catch-light, bottom under-
|
|
9
|
-
* shadow — into a hairline groove. This twin-line idiom is the chassis
|
|
10
|
-
* signature; every divider in the system uses it.
|
|
11
|
-
*
|
|
12
|
-
* `--phase-color` cascades from the chassis root via `data-phase`. Phase
|
|
13
|
-
* label, hero number, and phase progress fill all read it; one mutation at
|
|
14
|
-
* the chassis level retints every consumer with a single 450ms transition.
|
|
15
|
-
*
|
|
16
|
-
* Disco accents (specular swap, sparkle, phase-glow, disco-grain) live on
|
|
17
|
-
* `.dock-tab-button[data-tier="primary"]` in `dock.css` and on
|
|
18
|
-
* `.metric-badge[data-just-resolved="true"]` in `utilities.css`. They fire
|
|
19
|
-
* on hover / phase-finish only. Idle is purely Vignelli.
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
@layer components {
|
|
23
|
-
.instrument-chassis {
|
|
24
|
-
position: relative;
|
|
25
|
-
display: flex;
|
|
26
|
-
flex-direction: column;
|
|
27
|
-
/* AI.W4-M.1 — chassis tint companion. The backdrop composes the
|
|
28
|
-
resting glass plate with a `color-mix` toward `--phase-color`
|
|
29
|
-
by `--phase-tint-amount`. At idle the typed amount sits at 0%
|
|
30
|
-
(initial-value from tokens.css §18) so the surface reads the
|
|
31
|
-
pure resting plate; the [data-phase] selectors below ramp the
|
|
32
|
-
amount toward `--phase-tint-peak` (6% default), and the
|
|
33
|
-
transition interpolates the typed percentage over the speed-
|
|
34
|
-
test-owned phase-handoff clock. Fallback 600ms keeps a non-
|
|
35
|
-
speedtest consumer's chassis cross-fading smoothly even
|
|
36
|
-
without the consumer-side token declared. */
|
|
37
|
-
background:
|
|
38
|
-
var(--glass-curvature-overlay, none),
|
|
39
|
-
color-mix(
|
|
40
|
-
in oklab,
|
|
41
|
-
var(--glass-bg-chassis),
|
|
42
|
-
var(--phase-color, var(--muted-foreground)) var(--phase-tint-amount, 0%)
|
|
43
|
-
);
|
|
44
|
-
transition: --phase-tint-amount
|
|
45
|
-
var(--motion-duration-phase-handoff, 600ms)
|
|
46
|
-
var(--motion-ease-standard);
|
|
47
|
-
backdrop-filter: var(--glass-blur-quiet);
|
|
48
|
-
/* AK-FD1 §2.4 — glass-variant outer border softened one rung down the
|
|
49
|
-
foreground-tinted border ladder (quiet 10% → wash 8%) so it reads at
|
|
50
|
-
the intended resting-glass register. The spine variant carries its
|
|
51
|
-
own `--glass-spine-border` (re-declared below) and is unaffected. */
|
|
52
|
-
border: 1px solid var(--glass-border-wash);
|
|
53
|
-
border-radius: var(--radius-card);
|
|
54
|
-
box-shadow:
|
|
55
|
-
var(--glass-shadow-quiet),
|
|
56
|
-
inset 0 -0.5px 0 0 rgb(0 0 0 / 0.06);
|
|
57
|
-
overflow: hidden;
|
|
58
|
-
|
|
59
|
-
/* `--phase-color` defaults to muted-foreground at idle. data-phase
|
|
60
|
-
selectors below retint to the chart hue. Consumers register
|
|
61
|
-
--chart-* aliases in their preset; tokens.css ships safe defaults.
|
|
62
|
-
|
|
63
|
-
`--phase-color-label` is the WCAG companion (AC.W6c F1.V-04). It
|
|
64
|
-
pairs with `--phase-color` 1:1 — same `data-phase` cascade, but
|
|
65
|
-
routes through `--chart-{phase}-label` (L≈0.40 in OKLCH) so
|
|
66
|
-
text-on-background callsites clear the 4.5:1 contrast floor.
|
|
67
|
-
Canvas / fill / gradient consumers continue to read `--phase-color`
|
|
68
|
-
(saturated brand register, correct against the meter dial).
|
|
69
|
-
Label / text consumers read `--phase-color-label` with the
|
|
70
|
-
untinted token as a fallback so an unhydrated subtree still
|
|
71
|
-
paints something readable. */
|
|
72
|
-
--phase-color: var(--muted-foreground);
|
|
73
|
-
--phase-color-label: var(--muted-foreground);
|
|
74
|
-
|
|
75
|
-
/* BB.W-PHASE-PALETTE (N18) — the `complete` phase ink is a CONSUMER
|
|
76
|
-
token, not a hardcoded brand metal. The four active phases
|
|
77
|
-
(ping/download/upload/jitter) already read a consumer-registerable
|
|
78
|
-
`--chart-{phase}` with a library `--viz-*` fallback (the bus carries
|
|
79
|
-
phase IDENTITY); `complete` was the one arm that pinned the gold
|
|
80
|
-
directly, so every completion gilded itself the moment the phase
|
|
81
|
-
flipped. `--phase-complete-color` (+ its WCAG-twin
|
|
82
|
-
`--phase-complete-color-label`) DEFAULT to the same gold the arm
|
|
83
|
-
hardcoded — an un-overriding consumer paints byte-identical gold (the
|
|
84
|
-
back-compat floor) — but a consumer (or any ancestor) overrides EITHER
|
|
85
|
-
on its host/preset to re-ink completion (its phase spectrum, an aurora
|
|
86
|
-
register, …), so gold is EARNED (the dock CTA + personal-best
|
|
87
|
-
garnish), never the chassis default leaking onto every completion.
|
|
88
|
-
The default lives at the chassis root (NOT :root/tokens.css) because
|
|
89
|
-
it is a chassis-phase register, scoped to the surface owning the bus —
|
|
90
|
-
the same home `--phase-color`'s idle default occupies above. It reads
|
|
91
|
-
`var(--color-gold)` / `var(--color-gold-dark)` (the existing mode-
|
|
92
|
-
resolved tokens, unedited), so it inherits the SAME .dark / light-dark
|
|
93
|
-
resolution the hardcoded form did. */
|
|
94
|
-
--phase-complete-color: var(--color-gold);
|
|
95
|
-
--phase-complete-color-label: var(--color-gold-dark, var(--color-gold));
|
|
96
|
-
|
|
97
|
-
/* AV.W16 TW3 — inline-size container named `chassis` so the dial reflow
|
|
98
|
-
below reads the chassis's OWN box, not the viewport (portable into a
|
|
99
|
-
narrow host). */
|
|
100
|
-
container: chassis / inline-size;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.dark .instrument-chassis {
|
|
104
|
-
background:
|
|
105
|
-
var(--glass-curvature-overlay-dark, var(--glass-curvature-overlay, none)),
|
|
106
|
-
color-mix(
|
|
107
|
-
in oklab,
|
|
108
|
-
var(--glass-bg-chassis),
|
|
109
|
-
var(--phase-color, var(--muted-foreground)) var(--phase-tint-amount, 0%)
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/* Engraved-bezel inner stroke. Reads as the polished sleeve of an
|
|
114
|
-
instrument-panel module. Subtle but load-bearing for the disco-skeu
|
|
115
|
-
reading. */
|
|
116
|
-
.instrument-chassis::before {
|
|
117
|
-
content: "";
|
|
118
|
-
position: absolute;
|
|
119
|
-
inset: 0.5px;
|
|
120
|
-
border-radius: calc(var(--radius-card) - 0.5px);
|
|
121
|
-
border: 1px solid var(--surface-tint-4);
|
|
122
|
-
pointer-events: none;
|
|
123
|
-
z-index: 1;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.dark .instrument-chassis::before {
|
|
127
|
-
border-color: var(--surface-tint-6);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/* ─────────────────────────────────────────────────────────────
|
|
131
|
-
AL-W1-α augmented — spine variant (HOUSING register)
|
|
132
|
-
|
|
133
|
-
Per AL-X5 §4.1 + Y7. The `variant="spine"` chassis is the
|
|
134
|
-
polished SLEEVE that frames an inner card on quiet-content
|
|
135
|
-
App-level mounts. NOT glass:
|
|
136
|
-
- opacity 0 (no plate; `--glass-spine-opacity` is the canon)
|
|
137
|
-
- NO backdrop-filter (housing is not refracting)
|
|
138
|
-
- hairline outer stroke at `--glass-spine-border`
|
|
139
|
-
- interior radial vignette (`--glass-spine-vignette`) that
|
|
140
|
-
reads the phase-color cascade through `color-mix()` at
|
|
141
|
-
~8% opacity — the housing breathes with the active phase
|
|
142
|
-
without competing with the inner card's saturated register
|
|
143
|
-
- tight under-shadow rim via `--glass-under-shadow-spine`
|
|
144
|
-
- inset from viewport by `clamp(0.5rem, 2vw, 1.25rem)` so
|
|
145
|
-
the chassis edge sits BEYOND the inner card's outer edge
|
|
146
|
-
- retires the engraved-bezel `::before` (the spine carries
|
|
147
|
-
its own stroke at the outer edge; the inner bezel would
|
|
148
|
-
collide with the inner card's hairline ring)
|
|
149
|
-
|
|
150
|
-
The phase cascade above (`[data-phase="…"]`) is orthogonal —
|
|
151
|
-
the `--phase-color` retint reaches the spine vignette via the
|
|
152
|
-
`color-mix(in oklab, var(--phase-color) 8%, transparent)` recipe
|
|
153
|
-
at `--glass-spine-vignette`. One mutation at the chassis level
|
|
154
|
-
still retints every consumer.
|
|
155
|
-
───────────────────────────────────────────────────────────── */
|
|
156
|
-
.instrument-chassis[data-variant="spine"] {
|
|
157
|
-
background: var(--glass-spine-vignette);
|
|
158
|
-
backdrop-filter: none;
|
|
159
|
-
border: 1px solid var(--glass-spine-border);
|
|
160
|
-
box-shadow: var(--glass-under-shadow-spine);
|
|
161
|
-
margin: clamp(0.5rem, 2vw, 1.25rem);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/* The engraved-bezel inner stroke is a `"glass"`-variant feature —
|
|
165
|
-
retire it at the spine variant so the hairline outer stroke reads
|
|
166
|
-
alone (the inner card paints its own inner ring). */
|
|
167
|
-
.instrument-chassis[data-variant="spine"]::before {
|
|
168
|
-
display: none;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/* ─────────────────────────────────────────────────────────────
|
|
172
|
-
BA.W-ATLAS-RECONCILE C-3 — structure variant (SILVER MILLED-METAL register)
|
|
173
|
-
|
|
174
|
-
The cool polished-steel housing read: the engraved-bezel `::before` stroke
|
|
175
|
-
AND the structural twin-line grooves re-point from the warm-cream
|
|
176
|
-
`--surface-tint-*` default onto the `--silver` quad (gold's cool mirror).
|
|
177
|
-
The chassis reads as an INDUSTRIAL precision-instrument panel — the
|
|
178
|
-
cool-metal twin of the warm-gold "complete"-phase affirmation the chassis
|
|
179
|
-
ships BY DEFAULT (the `--phase-complete-color` consumer token's gold
|
|
180
|
-
default; BB.W-PHASE-PALETTE — a consumer may re-ink completion, but the
|
|
181
|
-
silver register's narration is of the warm-gold completion default).
|
|
182
|
-
|
|
183
|
-
The phase cascade (`[data-phase="…"]`) stays ORTHOGONAL — a `structure`
|
|
184
|
-
chassis still retints its phase fills on `data-phase`; only the
|
|
185
|
-
structure-metal recipe (bezel + grooves) forks here. Consumer #2 of the
|
|
186
|
-
silver quad (the atlas's structure surface is consumer #1).
|
|
187
|
-
|
|
188
|
-
The silver is the W-NO-GRAY NAMED cool-neutral exception (a brand METAL
|
|
189
|
-
identity, not a neutral — its very-low chroma reads as milled steel, the
|
|
190
|
-
cool hue distinguishes it from the warm glass plate).
|
|
191
|
-
───────────────────────────────────────────────────────────── */
|
|
192
|
-
.instrument-chassis[data-variant="structure"] {
|
|
193
|
-
/* The milled-panel edge: the chassis border lifts off the resting glass
|
|
194
|
-
edge onto a hairline silver structure stroke. */
|
|
195
|
-
border-color: color-mix(in oklab, var(--color-silver-dark) 55%, transparent);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/* The engraved bezel re-tints to the cool silver catch (the polished sleeve
|
|
199
|
-
reads as steel, not warm-cream). */
|
|
200
|
-
.instrument-chassis[data-variant="structure"]::before {
|
|
201
|
-
border-color: color-mix(in oklab, var(--color-silver-light) 60%, transparent);
|
|
202
|
-
}
|
|
203
|
-
.dark .instrument-chassis[data-variant="structure"]::before {
|
|
204
|
-
border-color: color-mix(in oklab, var(--color-silver) 40%, transparent);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/* The structural grooves re-point to the silver twin-line: the catch reads
|
|
208
|
-
the light silver, the under-shadow the dark silver — a milled seam, not the
|
|
209
|
-
default warm twin-line. ONE re-point at the variant root; every
|
|
210
|
-
`<ChassisDivider>` inside a structure chassis inherits it. */
|
|
211
|
-
.instrument-chassis[data-variant="structure"] {
|
|
212
|
-
--twin-line-catch: color-mix(in oklab, var(--color-silver-light) 50%, transparent);
|
|
213
|
-
--twin-line-shadow: color-mix(in oklab, var(--color-silver-dark) 40%, transparent);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/* Phase-color cascade — single property, full chassis-wide retint.
|
|
217
|
-
`--phase-color-label` mirrors the cascade through the WCAG companion
|
|
218
|
-
tokens (AC.W6c F1.V-04). The label register falls back to the canvas
|
|
219
|
-
hue so a consumer that hasn't migrated its labels still paints.
|
|
220
|
-
|
|
221
|
-
AI.W4-M.1 — `--phase-tint-amount` lifts to `--phase-tint-peak`
|
|
222
|
-
(6% default) on every active phase, including `complete`. The chassis
|
|
223
|
-
backdrop reads the typed amount in its `color-mix` recipe above; the
|
|
224
|
-
transition interpolates over the phase-handoff clock so the warmth
|
|
225
|
-
cross-fades alongside the hue. Idle returns to 0% by inheritance
|
|
226
|
-
(the typed @property initial-value). */
|
|
227
|
-
.instrument-chassis[data-phase="ping"] {
|
|
228
|
-
--phase-color: var(--chart-ping, var(--viz-chebyshev));
|
|
229
|
-
--phase-color-label: var(--chart-ping-label, var(--chart-ping, var(--viz-chebyshev)));
|
|
230
|
-
--phase-tint-amount: var(--phase-tint-peak);
|
|
231
|
-
}
|
|
232
|
-
.instrument-chassis[data-phase="download"] {
|
|
233
|
-
--phase-color: var(--chart-download, var(--viz-fourier));
|
|
234
|
-
--phase-color-label: var(--chart-download-label, var(--chart-download, var(--viz-fourier)));
|
|
235
|
-
--phase-tint-amount: var(--phase-tint-peak);
|
|
236
|
-
}
|
|
237
|
-
.instrument-chassis[data-phase="upload"] {
|
|
238
|
-
--phase-color: var(--chart-upload, var(--viz-amber));
|
|
239
|
-
--phase-color-label: var(--chart-upload-label, var(--chart-upload, var(--viz-amber)));
|
|
240
|
-
--phase-tint-amount: var(--phase-tint-peak);
|
|
241
|
-
}
|
|
242
|
-
.instrument-chassis[data-phase="jitter"] {
|
|
243
|
-
--phase-color: var(--chart-jitter, var(--viz-legendre));
|
|
244
|
-
--phase-color-label: var(--chart-jitter-label, var(--chart-jitter, var(--viz-legendre)));
|
|
245
|
-
--phase-tint-amount: var(--phase-tint-peak);
|
|
246
|
-
}
|
|
247
|
-
.instrument-chassis[data-phase="complete"] {
|
|
248
|
-
/* BB.W-PHASE-PALETTE — demoted onto the `--phase-complete-color`
|
|
249
|
-
consumer seam (the exact `var(--chart-{phase}, …)` idiom the four
|
|
250
|
-
active arms above run). The arm reads ONLY the consumer token; the
|
|
251
|
-
gold lives in the token's DEFAULT at the chassis root, not as a
|
|
252
|
-
hardcoded ink here (a clean break with a back-compat default, NOT a
|
|
253
|
-
back-compat alias — no `--color-gold` dual-read survives). The warmth
|
|
254
|
-
ramp stays: `--phase-tint-amount` is orthogonal to the ink choice. */
|
|
255
|
-
--phase-color: var(--phase-complete-color);
|
|
256
|
-
--phase-color-label: var(--phase-complete-color-label);
|
|
257
|
-
--phase-tint-amount: var(--phase-tint-peak);
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/* PRM bracket — the typed-property transition retires; the chassis
|
|
261
|
-
still cross-fades hue + amount instantaneously on phase change
|
|
262
|
-
(the discrete state IS the affirmation). */
|
|
263
|
-
@media (prefers-reduced-motion: reduce) {
|
|
264
|
-
.instrument-chassis {
|
|
265
|
-
transition: none;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/* Region wrappers ─────────────────────────────────────────── */
|
|
270
|
-
|
|
271
|
-
.instrument-strip {
|
|
272
|
-
position: relative;
|
|
273
|
-
display: flex;
|
|
274
|
-
align-items: center;
|
|
275
|
-
gap: var(--instrument-strip-gap, 0.75rem);
|
|
276
|
-
padding:
|
|
277
|
-
var(--instrument-strip-padding-block, 0.875rem)
|
|
278
|
-
var(--instrument-strip-padding-inline, 1.25rem);
|
|
279
|
-
z-index: 2;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
.instrument-dial {
|
|
283
|
-
position: relative;
|
|
284
|
-
display: grid;
|
|
285
|
-
grid-template-columns: var(--instrument-dial-columns, minmax(0, 1.2fr) 1px minmax(0, 1fr));
|
|
286
|
-
align-items: center;
|
|
287
|
-
gap: var(--instrument-dial-gap, 1.5rem);
|
|
288
|
-
padding:
|
|
289
|
-
var(--instrument-dial-padding-block, 1.5rem)
|
|
290
|
-
var(--instrument-dial-padding-inline, 1.5rem);
|
|
291
|
-
z-index: 2;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
.instrument-control {
|
|
295
|
-
position: relative;
|
|
296
|
-
display: flex;
|
|
297
|
-
align-items: center;
|
|
298
|
-
gap: var(--instrument-control-gap, 0.5rem);
|
|
299
|
-
padding:
|
|
300
|
-
var(--instrument-control-padding-block, 0.875rem)
|
|
301
|
-
var(--instrument-control-padding-inline, 1.25rem);
|
|
302
|
-
z-index: 2;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/* Chassis dividers — twin-line hairline grooves ─────────────── */
|
|
306
|
-
|
|
307
|
-
.chassis-divider {
|
|
308
|
-
/* AW.W15 — consume the shared twin-line α pair (the catch-light +
|
|
309
|
-
under-shadow tokens publish here; the .bezel-line rules read them). */
|
|
310
|
-
@apply twin-line-divider;
|
|
311
|
-
flex-shrink: 0;
|
|
312
|
-
position: relative;
|
|
313
|
-
background: transparent;
|
|
314
|
-
z-index: 2;
|
|
315
|
-
pointer-events: none;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.chassis-divider--horizontal {
|
|
319
|
-
display: flex;
|
|
320
|
-
flex-direction: column;
|
|
321
|
-
height: 2px;
|
|
322
|
-
width: 100%;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
.chassis-divider--vertical {
|
|
326
|
-
display: flex;
|
|
327
|
-
flex-direction: row;
|
|
328
|
-
width: 2px;
|
|
329
|
-
height: var(--chassis-divider-vertical-height, 70%);
|
|
330
|
-
align-self: center;
|
|
331
|
-
justify-self: center;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.bezel-line {
|
|
335
|
-
display: block;
|
|
336
|
-
flex-shrink: 0;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
.chassis-divider--horizontal .bezel-line {
|
|
340
|
-
height: 1px;
|
|
341
|
-
width: 100%;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.chassis-divider--vertical .bezel-line {
|
|
345
|
-
width: 1px;
|
|
346
|
-
height: 100%;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
/* AW.W15 — the twin-line α pair now lives in the `twin-line-divider`
|
|
350
|
-
@utility (single source, dark-adaptive). The `.chassis-divider` host
|
|
351
|
-
`@apply`s it, publishing `--twin-line-catch` / `--twin-line-shadow`; these
|
|
352
|
-
rules read the tokens. The prior Q.W4.A light pair (0.10 / 0.12) and the
|
|
353
|
-
dark pair (0.06 / 0.18) are the values the utility resolves. */
|
|
354
|
-
.bezel-line.top { background: var(--twin-line-catch); }
|
|
355
|
-
.bezel-line.bottom { background: var(--twin-line-shadow); }
|
|
356
|
-
|
|
357
|
-
/* Inner dial divider — same primitive, vertical on desktop. Speedtest
|
|
358
|
-
slots its <ChassisDivider orientation="vertical" class="dial-divider" />
|
|
359
|
-
between the meter canvas and the readout column; consumers may also
|
|
360
|
-
compose their own vertical dividers via the same primitive. */
|
|
361
|
-
.instrument-chassis .dial-divider {
|
|
362
|
-
align-self: stretch;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
/* Narrow-box reflow — dial stacks vertically; the inner divider rotates
|
|
366
|
-
from a vertical groove (wide) to a horizontal groove (narrow). AV.W16 TW3
|
|
367
|
-
— keyed off the `chassis` container (above), not the viewport, so a
|
|
368
|
-
narrow-host chassis stacks off ITS box. 45rem ≈ 720px at the 16px root
|
|
369
|
-
(the prior viewport cadence as a box width). */
|
|
370
|
-
@container chassis (max-width: 44.9375rem) {
|
|
371
|
-
.instrument-chassis .instrument-dial {
|
|
372
|
-
grid-template-columns: 1fr;
|
|
373
|
-
/* R0G-2 (AO.W3) — reserve the dial's FINAL box from frame 0. The
|
|
374
|
-
desktop axis is already CLS-clean (the 3-column `align-items:
|
|
375
|
-
center` grid reserves row height from intrinsic min + the AP-Pγ
|
|
376
|
-
transform-only idle recentre). The mobile reflow previously
|
|
377
|
-
collapsed to `grid-template-rows: auto auto auto`, which reserves
|
|
378
|
-
NO height — the meter row, divider, and readout column sit at
|
|
379
|
-
zero height until the consumer's meter <canvas> + readout
|
|
380
|
-
numbers hydrate, then grow collapsed → final and push everything
|
|
381
|
-
below down ~326-331px → mobile-390 CLS 0.32-0.38.
|
|
382
|
-
|
|
383
|
-
The fix pins the dial box from frame 0: the meter row carries the
|
|
384
|
-
dominant reserve (`minmax(0, 1fr)` — it expands to fill the
|
|
385
|
-
envelope the `min-height` establishes), divider + readout stay
|
|
386
|
-
intrinsic (`auto`). The load-bearing reserve is `min-height` —
|
|
387
|
-
it fixes the dial's outer box so the rows distribute WITHIN a
|
|
388
|
-
reserved envelope rather than growing it post-hydration.
|
|
389
|
-
|
|
390
|
-
Both knobs are CSS custom properties (token-first). The
|
|
391
|
-
`--instrument-dial-min-height-mobile` canonical rung lands in
|
|
392
|
-
tokens.css at AO.W4; until then the inline `24rem` fallback IS
|
|
393
|
-
the default and carries the contract. A consumer whose meter is
|
|
394
|
-
a different size retunes the token — a tuning knob, not a
|
|
395
|
-
workaround for a missing reserve. */
|
|
396
|
-
grid-template-rows:
|
|
397
|
-
var(--instrument-dial-meter-reserve-mobile, minmax(0, 1fr))
|
|
398
|
-
auto
|
|
399
|
-
auto;
|
|
400
|
-
min-height: var(--instrument-dial-min-height-mobile, 24rem);
|
|
401
|
-
gap: var(--instrument-dial-gap-mobile, 1.5rem);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
.instrument-chassis .instrument-dial .dial-divider,
|
|
405
|
-
.instrument-chassis .instrument-dial .chassis-divider--vertical {
|
|
406
|
-
flex-direction: column;
|
|
407
|
-
width: 70%;
|
|
408
|
-
height: 2px;
|
|
409
|
-
margin-inline: auto;
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
.instrument-chassis .instrument-dial .dial-divider .bezel-line,
|
|
413
|
-
.instrument-chassis .instrument-dial .chassis-divider--vertical .bezel-line {
|
|
414
|
-
width: 100%;
|
|
415
|
-
height: 1px;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/* BB.W-DESKTOP-RESERVE (B3) — the WIDE-AXIS (desktop) dial reserve, the
|
|
420
|
-
EXACT DISJOINT COMPLEMENT of the mobile `@container chassis (max-width:
|
|
421
|
-
44.9375rem)` reserve above: 44.9375rem ≈ 719px is the mobile ceiling, so
|
|
422
|
-
the desktop floor is 45rem ≈ 720px — the two container-query ranges share
|
|
423
|
-
no width, so a dial cell is reserved by exactly ONE branch at every box
|
|
424
|
-
width (no overlap, no gap, no competing `min-block-size`).
|
|
425
|
-
|
|
426
|
-
The mobile reflow reserves the dial box from frame 0; the wide box axis
|
|
427
|
-
had NO library reserve, so a `1fr` meter row collapsed to its pre-
|
|
428
|
-
hydration `<canvas>` intrinsic and grew on hydration, pushing the results
|
|
429
|
-
card + dock down (the desktop CLS the speedtest App.vue interim authored
|
|
430
|
-
a local `min-block-size: var(--chassis-max-block-size)` to cure — the
|
|
431
|
-
consumer interim this rung SUPERSEDES). The reserve is a STATIC
|
|
432
|
-
`min-block-size` — a frame-0 box reservation, NOT an animated height (no
|
|
433
|
-
per-frame layout, compositor-safe, `proof:no-layout-animation` holds: a
|
|
434
|
-
`min-block-size` reserve is never a `@keyframes`/`transition` target).
|
|
435
|
-
|
|
436
|
-
Token-first: `--instrument-dial-min-block-size-desktop` is the DESKTOP
|
|
437
|
-
DIAL a consumer overrides (default `var(--chassis-max-block-size)`, the
|
|
438
|
-
library's dock-adjusted dynamic-viewport guardrail, resolved at first
|
|
439
|
-
paint with no JS). The inline `var(--chassis-max-block-size)` fallback
|
|
440
|
-
carries the contract if the canonical token is unset. */
|
|
441
|
-
@container chassis (min-width: 45rem) {
|
|
442
|
-
.instrument-chassis .instrument-dial {
|
|
443
|
-
min-block-size: var(
|
|
444
|
-
--instrument-dial-min-block-size-desktop,
|
|
445
|
-
var(--chassis-max-block-size)
|
|
446
|
-
);
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
}
|
package/src/styles/menu.css
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
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`)
|
|
55
|
-
paired with ITS OWN settle clock `--spring-smooth-duration` (the
|
|
56
|
-
per-spring-duration doctrine, W-GLASS-CAL Unit 3 / W-TEMPO — NOT the
|
|
57
|
-
generic `--duration-fast`, which re-timed the spring to a 0.2 s wall
|
|
58
|
-
clock and dragged a dead sub-pixel tail; BI.W-COMMAND-JITTER R5a). The
|
|
59
|
-
surface props (background) ride the bezier `--ease-standard` via the
|
|
60
|
-
`.interactive-item` base transition (already declared there). */
|
|
61
|
-
transition: translate var(--spring-smooth-duration) var(--spring-smooth);
|
|
62
|
-
translate: 0 0;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/* Hover / keyboard-focus / reka internal-highlight / sub-trigger-open all
|
|
66
|
-
reach the SAME glass BG register (Combobox/Command/Select parity — the CVA
|
|
67
|
-
routes all three input modes through `data-[highlighted]`). The TRANSLATE
|
|
68
|
-
lift is POINTER-ONLY (the rule below): reka sets `[data-highlighted]` for
|
|
69
|
-
KEYBOARD highlight too, so a lift on the bare `[data-highlighted]` restarts
|
|
70
|
-
a translate transition on EVERY arrow/keystroke → the command-palette
|
|
71
|
-
jitter (UF-G8; BI.W-COMMAND-JITTER R5b). Keyboard highlight + focus keep the
|
|
72
|
-
bg tint + color; only `:hover` lifts. */
|
|
73
|
-
.glass-menu-row:hover:not([data-disabled]),
|
|
74
|
-
.glass-menu-row:focus:not([data-disabled]),
|
|
75
|
-
.glass-menu-row[data-highlighted]:not([data-disabled]),
|
|
76
|
-
.glass-menu-row[data-state="open"]:not([data-disabled]) {
|
|
77
|
-
background: var(--menu-row-bg);
|
|
78
|
-
color: var(--accent-foreground);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/* The POINTER-ONLY lift (R5b) — a `:hover`-scoped translate the keyboard
|
|
82
|
-
highlight/focus never fires, so an arrow keystroke never restarts a lift
|
|
83
|
-
transition. The pointer still reads the lift on hover; the keyboard reads
|
|
84
|
-
the bg+color register above with no geometric restart. */
|
|
85
|
-
.glass-menu-row:hover:not([data-disabled]) {
|
|
86
|
-
translate: 0 var(--menu-row-lift);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* ── .glass-menu-section — the mono section-label + hairline row-group ──────
|
|
90
|
-
The "section caption + hairline over a row group" recipe (the slides gear
|
|
91
|
-
hand-built ~120 lines of). Folds onto `typography.css` `.section-label` (the
|
|
92
|
-
mono / √φ-caption / small-caps register) for the caption and `--border-
|
|
93
|
-
hairline` for the divider. Tokenized on `--menu-section-*` so a consumer
|
|
94
|
-
retunes via a `:root` override. ≥2 consumers: the library menu defaults
|
|
95
|
-
(the section caption a DropdownMenuLabel composes) + the in-repo demo menu
|
|
96
|
-
story (Unit 2 adoption); the slides DeckSettings is the named foreign
|
|
97
|
-
downstream consumer. */
|
|
98
|
-
.glass-menu-section {
|
|
99
|
-
/* The caption register (mono / small-caps / quiet ink) — the same
|
|
100
|
-
vocabulary `.section-label` carries, exposed as overridable knobs. */
|
|
101
|
-
--menu-section-font: var(--font-mono);
|
|
102
|
-
--menu-section-size: var(--type-caption);
|
|
103
|
-
--menu-section-color: var(--muted-foreground);
|
|
104
|
-
--menu-section-tracking: var(--type-tracking-caps);
|
|
105
|
-
/* The hairline divider over the group (the catch-light + under-shadow
|
|
106
|
-
pair). Default-off feather; the rule below paints it. */
|
|
107
|
-
--menu-section-hairline: var(--border-hairline);
|
|
108
|
-
/* The block rhythm above the group (a section is a deliberate break). */
|
|
109
|
-
--menu-section-gap: 0.375rem;
|
|
110
|
-
|
|
111
|
-
display: block;
|
|
112
|
-
margin-block-start: var(--menu-section-gap);
|
|
113
|
-
padding-block-start: var(--menu-section-gap);
|
|
114
|
-
/* The hairline reads as a top divider over the group via box-shadow (the
|
|
115
|
-
house hairline pattern — a whisper, not a hard 1px rule). */
|
|
116
|
-
box-shadow: var(--menu-section-hairline);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* The section CAPTION — a mono small-caps label. Composes onto the label
|
|
120
|
-
element the section recipe wraps (or a nested `.glass-menu-section-label`);
|
|
121
|
-
the demo + library menu labels read this caption register. */
|
|
122
|
-
.glass-menu-section-label,
|
|
123
|
-
.glass-menu-section > [data-menu-section-label] {
|
|
124
|
-
font-family: var(--menu-section-font);
|
|
125
|
-
font-size: var(--menu-section-size);
|
|
126
|
-
color: var(--menu-section-color);
|
|
127
|
-
text-transform: uppercase;
|
|
128
|
-
letter-spacing: var(--menu-section-tracking);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/* ── PRM gate — no deform/lift under reduce ───────────────────────────────────
|
|
133
|
-
The hover-lift `translate` is the only motion the row introduces; under
|
|
134
|
-
`prefers-reduced-motion: reduce` it collapses to the identity (0) and the
|
|
135
|
-
transition is removed (the surface bg cross-fade is not motion). The glass
|
|
136
|
-
plate still materializes on hover — only the geometric lift is suppressed. */
|
|
137
|
-
@media (prefers-reduced-motion: reduce) {
|
|
138
|
-
.glass-menu-row {
|
|
139
|
-
--menu-row-lift: 0px;
|
|
140
|
-
transition: none;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/* ── The dropdown-menu content font + inner-pad (BI.W-GLASS-DEDUP — moved here from
|
|
145
|
-
the DELETED floating-panel.css; the `.floating-panel` fixed-overlay recipe had ZERO
|
|
146
|
-
consumers and retired with the file). These are the STILL-LIVE rules — the dropdown
|
|
147
|
-
content family reads its consumer-facing knobs here.
|
|
148
|
-
|
|
149
|
-
Font knob (Q.W3 Lane C / Qβ-F3): migrated out of the lone scoped `<style>` blocks on
|
|
150
|
-
`DropdownMenuContent.vue` + `DropdownMenuSubContent.vue`. `--dropdown-menu-font` is
|
|
151
|
-
the consumer knob (value.js overrides it to `var(--font-mono)`); the `, inherit`
|
|
152
|
-
fall-through MUST be preserved verbatim per the Qθ binding constraint.
|
|
153
|
-
|
|
154
|
-
Inner-pad (AZ.R5-4): the dropdown content family reads the shared `--panel-padding`
|
|
155
|
-
token — one override retunes every teleported menu surface.
|
|
156
|
-
|
|
157
|
-
UNLAYERED (like the retired scoped block + the floating-panel.css source) — no other
|
|
158
|
-
rule sets `font-family`/`padding` on these surfaces, so the cascade effect is identical. */
|
|
159
|
-
.dropdown-menu-content,
|
|
160
|
-
.dropdown-sub-content {
|
|
161
|
-
font-family: var(--dropdown-menu-font, inherit);
|
|
162
|
-
padding: var(--panel-padding);
|
|
163
|
-
|
|
164
|
-
/* ── The L11 menu-plate token surface (BI.W-MENU-TRIGGER — the value.js coordination
|
|
165
|
-
ask). ONE consumer-retunable menu token surface following the factored Menu grammar
|
|
166
|
-
(the `--dropdown-menu-font` precedent, same family): a consumer retunes the whole
|
|
167
|
-
Menu plate — click AND context trigger, content AND sub-content — via a single
|
|
168
|
-
`:root` override. Each knob is a PURE NO-OP at its default (it falls through to the
|
|
169
|
-
floating tier's own value) and preserves the glass-first identity: the
|
|
170
|
-
bg/border knobs re-point the tier's INPUT primitives (`--glass-bg-rung` /
|
|
171
|
-
`--glass-border-rung`) — the "override the primitive the composite reads, never the
|
|
172
|
-
composite" discipline — so the W55 adaptive oklab tint still darkens/lifts over the
|
|
173
|
-
consumer's value AND the forced-colors a11y fallback (which sets `background:
|
|
174
|
-
Canvas` / `border: 1px solid CanvasText` DIRECTLY on `.glass-floating`) still wins.
|
|
175
|
-
The shadow knob replaces the drop-shadow leg of the tier's box-shadow stack; its
|
|
176
|
-
default reproduces the floating stack EXACTLY by reading the same rung tokens, so
|
|
177
|
-
the under-shadow + reduced-transparency behaviour re-resolves in lockstep (and
|
|
178
|
-
forced-colors strips box-shadow regardless). */
|
|
179
|
-
--glass-bg-rung: var(--dropdown-menu-bg, var(--glass-bg-floating));
|
|
180
|
-
--glass-border-rung: var(--dropdown-menu-border, var(--glass-border-floating));
|
|
181
|
-
box-shadow: var(
|
|
182
|
-
--dropdown-menu-shadow,
|
|
183
|
-
var(--glass-material-rim),
|
|
184
|
-
var(--glass-under-shadow-vivid),
|
|
185
|
-
var(--glass-shadow-floating)
|
|
186
|
-
);
|
|
187
|
-
}
|