@mkbabb/glass-ui 3.12.0 → 3.13.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-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
- package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
- package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
- package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
- package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
- package/dist/MetricBadge-C9QMz1KT.js +79 -0
- package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
- package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
- package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
- package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +5 -2
- package/dist/api.js +2 -2
- package/dist/aurora.js +69 -69
- package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +8 -8
- 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/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
- 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 +5 -62
- 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/aurora/index.d.ts +1 -1
- package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -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 +116 -149
- package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -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 +88 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
- 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 +48 -0
- package/dist/components/custom/dock/index.d.ts +3 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -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 +11 -8
- package/dist/components/custom/goo-blob/constants.d.ts +52 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- 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/tabs/constants.d.ts +12 -0
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
- package/dist/components/custom/underline/index.d.ts +2 -0
- package/dist/components/custom/underline/types.d.ts +56 -0
- package/dist/components/ui/card/Card.vue.d.ts +15 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
- 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/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +1 -21
- 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/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +336 -222
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +48 -20
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +705 -365
- package/dist/dockContext-BegmJVmx.js +17 -0
- package/dist/dom.js +5 -5
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +39 -80
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +134 -99
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +86 -20
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +222 -212
- package/dist/goo-blob.js +243 -212
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +28 -18
- package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +25 -21
- 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 -137
- 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/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
- package/dist/progress.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 +9 -9
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
- package/dist/sheet.js +1 -1
- package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets--YdWTHtm.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +29 -114
- package/dist/styles/cards.css +55 -0
- package/dist/styles/components.css +4 -1
- package/dist/styles/configurator.css +42 -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 +51 -1
- package/dist/styles/dock/rail-extend.css +300 -0
- package/dist/styles/dock/shell.css +63 -105
- package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/dist/styles/dock-controls/icon-button.css +133 -0
- package/dist/styles/dock-controls/tab-button.css +202 -0
- package/dist/styles/dock-controls/touch-floor.css +94 -0
- package/dist/styles/dock-controls/triggers.css +128 -0
- package/dist/styles/dock-controls.css +30 -595
- package/dist/styles/dock.css +2 -0
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/floating-panel.css +17 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +337 -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/surfaces.css +306 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +31 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/index.css +28 -14
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/segmented-tabs.css +275 -0
- package/dist/styles/theme/bridges.css +337 -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 +260 -0
- package/dist/styles/tokens/dark-arm.css +200 -0
- package/dist/styles/tokens/glass.css +440 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +500 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +366 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +166 -0
- package/dist/styles/tokens.css +22 -2360
- package/dist/styles/typography.css +75 -21
- package/dist/styles/utilities/a11y-overrides.css +140 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +365 -0
- package/dist/styles/utilities/btn.css +401 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1318
- package/dist/styles/view-transition.css +0 -51
- package/dist/switch.js +1 -1
- package/dist/tabs.js +91 -82
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
- package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
- package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
- package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
- package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
- package/dist/useSpecularTracking-Bo5su68i.js +32 -0
- package/dist/useSpringMount-CI2jOstM.js +108 -0
- package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
- package/dist/utils/coalesceMetric.d.ts +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +11 -9
- package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
- package/package.json +78 -58
- package/src/styles/animations.css +29 -114
- package/src/styles/cards.css +53 -0
- package/src/styles/configurator.css +42 -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 +51 -1
- package/src/styles/dock/rail-extend.css +300 -0
- package/src/styles/dock/shell.css +63 -105
- package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/src/styles/dock-controls/icon-button.css +133 -0
- package/src/styles/dock-controls/tab-button.css +202 -0
- package/src/styles/dock-controls/touch-floor.css +94 -0
- package/src/styles/dock-controls/triggers.css +128 -0
- package/src/styles/dock-controls.css +30 -595
- package/src/styles/dock.css +2 -0
- package/src/styles/floating-panel.css +15 -0
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +337 -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/surfaces.css +306 -0
- package/src/styles/glass.css +31 -1188
- package/src/styles/index.css +28 -14
- package/src/styles/paper.css +2 -68
- package/src/styles/segmented-tabs.css +271 -0
- package/src/styles/theme/bridges.css +337 -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 +260 -0
- package/src/styles/tokens/dark-arm.css +200 -0
- package/src/styles/tokens/glass.css +440 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +500 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +366 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +166 -0
- package/src/styles/tokens.css +22 -2360
- package/src/styles/typography.css +75 -21
- package/src/styles/utilities/a11y-overrides.css +140 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +365 -0
- package/src/styles/utilities/btn.css +401 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1318
- package/src/styles/view-transition.css +0 -51
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/MetricBadge-BZVWIxNy.js +0 -80
- 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/handmark/HandMark.vue.d.ts +0 -29
- package/dist/components/custom/handmark/brush.d.ts +0 -242
- package/dist/components/custom/handmark/freehand.d.ts +0 -69
- package/dist/components/custom/handmark/geometry.d.ts +0 -50
- package/dist/components/custom/handmark/index.d.ts +0 -21
- package/dist/components/custom/handmark/ink.d.ts +0 -11
- package/dist/components/custom/handmark/texture.d.ts +0 -39
- package/dist/components/custom/handmark/types.d.ts +0 -53
- package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
- 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/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/handmark.d.ts +0 -1
- package/dist/handmark.js +0 -663
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/styles/instrument-rail.css +0 -127
- 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/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
- /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
- /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
- /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
- /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
- /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
- /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
- /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
- /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
- /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
- /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
- /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
- /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
- /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
- /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
- /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
- /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
- /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
- /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
- /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
package/src/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
|
|
@@ -93,22 +108,20 @@
|
|
|
93
108
|
* 10b. view-transition.css — the `.gl-list-item` View-Transitions group
|
|
94
109
|
* recipe + `--vt-*` axes (AQ.W5; the
|
|
95
110
|
* `useViewTransition` substrate's CSS half).
|
|
96
|
-
* 11. utilities.css —
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
111
|
+
* 11. utilities.css — thin @import root over utilities/{animate,base,
|
|
112
|
+
* components,btn,a11y-overrides}.css. focus-ring,
|
|
113
|
+
* btn-audacious + btn-interactive (press cluster;
|
|
114
|
+
* K W6 + Q.W3 Lane E), rainbow-vivid +
|
|
115
|
+
* rainbow-pastel. Consumes earlier animations +
|
|
116
|
+
* tokens.
|
|
100
117
|
* 12. instrument-chassis.css — P-tranche component CSS (chassis bezel +
|
|
101
118
|
* groove dividers). Loaded after utilities so
|
|
102
119
|
* 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
|
|
120
|
+
* 13. hover-popover.css — V.W3 popover-animation grammar.
|
|
121
|
+
* 14. drawer.css — AN.W3 detented bottom-sheet grammar (glass
|
|
109
122
|
* sheet surface + peek handle + snap-stop rules).
|
|
110
123
|
*
|
|
111
|
-
* Per-package component CSS lives at (12)-(
|
|
124
|
+
* Per-package component CSS lives at (12)-(14) (loaded after utilities so
|
|
112
125
|
* component-local recipes can override). New per-package CSS files append
|
|
113
126
|
* to that tail.
|
|
114
127
|
*/
|
|
@@ -128,10 +141,11 @@
|
|
|
128
141
|
@import "./scroll-driven.css";
|
|
129
142
|
@import "./view-transition.css";
|
|
130
143
|
@import "./utilities.css";
|
|
144
|
+
@import "./configurator.css";
|
|
131
145
|
@import "./instrument-chassis.css";
|
|
132
|
-
@import "./instrument-rail.css";
|
|
133
146
|
@import "./hover-popover.css";
|
|
134
147
|
@import "./drawer.css";
|
|
148
|
+
@import "./segmented-tabs.css";
|
|
135
149
|
|
|
136
150
|
/* Ensure consumer's Tailwind scans glass-ui components for utility classes
|
|
137
151
|
(e.g. CVA button variants like text-destructive-foreground) */
|
package/src/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
|
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/* ════════════════════════════════════════════════════════════════════════
|
|
2
|
+
The unified SegmentedTabs grammar. ONE indicator body across three variants
|
|
3
|
+
(segmented / pill / underline), gliding on the CONTROL register
|
|
4
|
+
(`--spring-snappy`) with the volume-preserving travel-squish.
|
|
5
|
+
|
|
6
|
+
Carved out of the SFC `<style scoped>` into a styles/ partial (the drawer.css precedent), `@import`-ed into styles/index.css in cascade order.
|
|
7
|
+
Every selector is class/attribute-based (no Vue `data-v-*` scope hash), so the
|
|
8
|
+
rules paint un-scoped — the `.segmented-tabs`-family classes the template emits
|
|
9
|
+
carry them.
|
|
10
|
+
|
|
11
|
+
`--bouncy-track-trim` is the token the track padding, the indicator
|
|
12
|
+
`inset-block`, AND the `anchor()` offset all read so they cannot drift (the W20
|
|
13
|
+
magic-number lock). `--stretch` is the JS-written travel-squish scalar (1 at
|
|
14
|
+
rest); the indicator pairs it reciprocally (stretch X, compress Y →
|
|
15
|
+
volume-preserving).
|
|
16
|
+
════════════════════════════════════════════════════════════════════════ */
|
|
17
|
+
|
|
18
|
+
.segmented-tabs {
|
|
19
|
+
--bouncy-track-trim: 0.1875rem;
|
|
20
|
+
--bouncy-track-radius: 0.4375rem;
|
|
21
|
+
--bouncy-slider-radius: 0.3125rem;
|
|
22
|
+
/* The travel-squish axis — 1 at rest; useTabIndicator writes it transiently
|
|
23
|
+
on selection, the indicator pairs it volume-preserving. */
|
|
24
|
+
--stretch: 1;
|
|
25
|
+
position: relative;
|
|
26
|
+
display: inline-grid;
|
|
27
|
+
grid-auto-flow: column;
|
|
28
|
+
grid-auto-columns: 1fr;
|
|
29
|
+
padding: var(--bouncy-track-trim);
|
|
30
|
+
border-radius: var(--bouncy-track-radius);
|
|
31
|
+
/* AX.W54 — the track rides the glass wash tier (the flagship surface),
|
|
32
|
+
not an opaque --muted-medium plate. */
|
|
33
|
+
background: var(--glass-bg-wash);
|
|
34
|
+
backdrop-filter: var(--glass-blur-wash);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@media (min-width: 640px) {
|
|
38
|
+
.segmented-tabs {
|
|
39
|
+
--bouncy-track-trim: 0.25rem;
|
|
40
|
+
--bouncy-track-radius: 0.5rem;
|
|
41
|
+
--bouncy-slider-radius: 0.375rem;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* ── The shared indicator body ── */
|
|
46
|
+
.segmented-indicator {
|
|
47
|
+
position: absolute;
|
|
48
|
+
/* AX.W54 — the active indicator rides the glass quiet tier so it reads
|
|
49
|
+
FORWARD of the wash track (the keyframes-dock-selected model). */
|
|
50
|
+
background: var(--glass-bg-quiet);
|
|
51
|
+
backdrop-filter: var(--glass-blur-quiet);
|
|
52
|
+
z-index: 0;
|
|
53
|
+
inset-block: var(--bouncy-track-trim);
|
|
54
|
+
border-radius: var(--bouncy-slider-radius);
|
|
55
|
+
box-shadow:
|
|
56
|
+
0 1px 3px rgba(0, 0, 0, 0.08),
|
|
57
|
+
0 0 0 1px color-mix(in srgb, var(--border) 30%, transparent);
|
|
58
|
+
/* The volume-preserving travel-squish: stretch along X, compress Y in
|
|
59
|
+
inverse proportion. `transform-origin: center` → a symmetric width-flex
|
|
60
|
+
as it travels (the indicator grows wider mid-travel, settles to fit). */
|
|
61
|
+
transform-origin: center;
|
|
62
|
+
scale: var(--stretch) calc(1 / var(--stretch));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
66
|
+
.segmented-indicator {
|
|
67
|
+
/* The squish releases on the same clock as the glide (the snappy
|
|
68
|
+
settle). Under PRM the scale stays 1 (the JS write early-returns). */
|
|
69
|
+
transition: scale var(--duration-normal) var(--spring-snappy);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Fallback (JS-measured) path — the indicator is moved by inline
|
|
74
|
+
`transform`/`width` writes; animate those alongside the squish scale. */
|
|
75
|
+
.segmented-indicator--js {
|
|
76
|
+
transition:
|
|
77
|
+
transform var(--duration-normal) var(--spring-snappy),
|
|
78
|
+
width var(--duration-normal) var(--spring-snappy),
|
|
79
|
+
scale var(--duration-normal) var(--spring-snappy),
|
|
80
|
+
opacity var(--duration-fast) ease;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Anchor path — the indicator tethers to the active button's `anchor-name`.
|
|
84
|
+
`inset` reads the anchor's edges; the browser interpolates `inset` between
|
|
85
|
+
buttons on selection (the glide), and the JS `--stretch` write deforms it
|
|
86
|
+
(the squish) on the SAME snappy clock. */
|
|
87
|
+
@supports (position-anchor: --x) {
|
|
88
|
+
.segmented-indicator--anchor {
|
|
89
|
+
position-anchor: --gl-tab-active;
|
|
90
|
+
inset-block-start: calc(anchor(top) + 0.1875rem);
|
|
91
|
+
inset-block-end: calc(anchor(bottom) + 0.1875rem);
|
|
92
|
+
inset-inline-start: anchor(left);
|
|
93
|
+
inset-inline-end: anchor(right);
|
|
94
|
+
inset-block: auto;
|
|
95
|
+
opacity: 1;
|
|
96
|
+
}
|
|
97
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
98
|
+
.segmented-indicator--anchor {
|
|
99
|
+
transition:
|
|
100
|
+
inset var(--duration-normal) var(--spring-snappy),
|
|
101
|
+
scale var(--duration-normal) var(--spring-snappy);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
.segmented-tabs:not(.segmented-tabs--underline) .segmented-tab[aria-pressed="true"] {
|
|
105
|
+
anchor-name: --gl-tab-active;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@media (min-width: 640px) {
|
|
110
|
+
.segmented-indicator {
|
|
111
|
+
inset-block: 0.25rem;
|
|
112
|
+
border-radius: 0.375rem;
|
|
113
|
+
}
|
|
114
|
+
@supports (position-anchor: --x) {
|
|
115
|
+
.segmented-indicator--anchor {
|
|
116
|
+
inset-block-start: calc(anchor(top) + 0.25rem);
|
|
117
|
+
inset-block-end: calc(anchor(bottom) + 0.25rem);
|
|
118
|
+
inset-block: auto;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* ── The tab buttons ── */
|
|
124
|
+
.segmented-tab {
|
|
125
|
+
position: relative;
|
|
126
|
+
z-index: 10;
|
|
127
|
+
border: none;
|
|
128
|
+
background: none;
|
|
129
|
+
font-weight: 500;
|
|
130
|
+
cursor: pointer;
|
|
131
|
+
white-space: nowrap;
|
|
132
|
+
padding: 0.25rem 0.625rem;
|
|
133
|
+
border-radius: 0.3125rem;
|
|
134
|
+
font: inherit;
|
|
135
|
+
font-size: 0.8125rem;
|
|
136
|
+
color: var(--muted-foreground);
|
|
137
|
+
transition: color var(--duration-fast) ease;
|
|
138
|
+
/* AQ.W3 identity base — keep `scale:1; translate:0` so a hover/press
|
|
139
|
+
transform never mints a stacking context that severs `anchor()`
|
|
140
|
+
resolution (the WAAPI press writes `transform` transiently — harmless). */
|
|
141
|
+
scale: 1;
|
|
142
|
+
translate: 0;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@media (min-width: 640px) {
|
|
146
|
+
.segmented-tab {
|
|
147
|
+
padding: 0.3125rem 0.75rem;
|
|
148
|
+
font-size: 0.875rem;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.segmented-tab[aria-pressed="true"],
|
|
153
|
+
.segmented-tab[aria-selected="true"] {
|
|
154
|
+
color: var(--foreground);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.segmented-tab.is-disabled {
|
|
158
|
+
opacity: 0.4;
|
|
159
|
+
cursor: not-allowed;
|
|
160
|
+
pointer-events: none;
|
|
161
|
+
filter: blur(0.5px);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* ── Pill variant ── */
|
|
165
|
+
.segmented-tabs--pill {
|
|
166
|
+
border-radius: var(--radius-pill);
|
|
167
|
+
background: var(--surface-tint-6);
|
|
168
|
+
padding: 0.125rem;
|
|
169
|
+
gap: 0.125rem;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.segmented-tabs--pill .segmented-indicator {
|
|
173
|
+
border-radius: var(--radius-pill);
|
|
174
|
+
background: var(--foreground);
|
|
175
|
+
box-shadow: none;
|
|
176
|
+
inset-block: 0.125rem;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.segmented-tabs--pill .segmented-tab {
|
|
180
|
+
border-radius: var(--radius-pill);
|
|
181
|
+
padding: 0.125rem 0.625rem;
|
|
182
|
+
font-size: 0.75rem;
|
|
183
|
+
font-weight: 500;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.segmented-tabs--pill .segmented-tab[aria-pressed="true"] {
|
|
187
|
+
color: var(--background);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* ── Underline variant ── (the panel-nav `role=tablist` strip) */
|
|
191
|
+
.segmented-tabs--underline {
|
|
192
|
+
display: flex;
|
|
193
|
+
grid-auto-flow: unset;
|
|
194
|
+
grid-auto-columns: unset;
|
|
195
|
+
gap: 0.25rem;
|
|
196
|
+
padding: 0;
|
|
197
|
+
background: none;
|
|
198
|
+
border-radius: 0;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* The active tab is the anchor the underline rule tethers to. */
|
|
202
|
+
.segmented-tabs--underline .segmented-tab[aria-selected="true"] {
|
|
203
|
+
anchor-name: --gl-tab-active;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* The underline indicator pseudo, position-anchored to the active tab; the
|
|
207
|
+
browser interpolates `inset` between anchors on selection, and the `scale`
|
|
208
|
+
reads the same `--stretch` squish the slider does (one indicator grammar). */
|
|
209
|
+
.segmented-tabs--underline::before {
|
|
210
|
+
content: "";
|
|
211
|
+
position: absolute;
|
|
212
|
+
position-anchor: --gl-tab-active;
|
|
213
|
+
inset-block-start: calc(anchor(bottom) - 2px);
|
|
214
|
+
inset-inline-start: anchor(left);
|
|
215
|
+
inset-inline-end: anchor(right);
|
|
216
|
+
block-size: 2px;
|
|
217
|
+
background: var(--foreground);
|
|
218
|
+
border-radius: var(--radius-sm);
|
|
219
|
+
transform-origin: center;
|
|
220
|
+
scale: var(--stretch) 1;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
224
|
+
.segmented-tabs--underline::before {
|
|
225
|
+
/* control register — the glide + the squish on one snappy clock. */
|
|
226
|
+
transition:
|
|
227
|
+
inset var(--duration-normal) var(--spring-snappy),
|
|
228
|
+
scale var(--duration-normal) var(--spring-snappy);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* Fallback — static underline when anchor positioning is absent. */
|
|
233
|
+
@supports not (position-anchor: --x) {
|
|
234
|
+
.segmented-tabs--underline::before {
|
|
235
|
+
display: none;
|
|
236
|
+
}
|
|
237
|
+
.segmented-tabs--underline .segmented-tab[aria-selected="true"] {
|
|
238
|
+
border-bottom: 2px solid var(--foreground);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.segmented-tabs--underline .segmented-tab {
|
|
243
|
+
padding: 0.375rem 0.75rem;
|
|
244
|
+
font-size: inherit;
|
|
245
|
+
border-radius: 0.25rem;
|
|
246
|
+
transition: color var(--duration-normal) var(--ease-standard);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.segmented-tabs--underline .segmented-tab:hover {
|
|
250
|
+
color: var(--surface-tint-70);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* ── Overflow variants ──
|
|
254
|
+
* `--scroll`/`--auto` swap the inline-grid for a flex row with intrinsic-width
|
|
255
|
+
* tracks so tab text never clips; the container scrolls horizontally.
|
|
256
|
+
*/
|
|
257
|
+
.segmented-tabs--scroll,
|
|
258
|
+
.segmented-tabs--auto {
|
|
259
|
+
display: flex;
|
|
260
|
+
grid-auto-flow: unset;
|
|
261
|
+
grid-auto-columns: unset;
|
|
262
|
+
overflow-x: auto;
|
|
263
|
+
overflow-y: hidden;
|
|
264
|
+
width: 100%;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.segmented-tabs--scroll {
|
|
268
|
+
--mask-fade-width: 0.5rem;
|
|
269
|
+
padding-inline-end: calc(0.125rem + var(--mask-fade-width));
|
|
270
|
+
scroll-padding-inline: var(--mask-fade-width);
|
|
271
|
+
}
|