@mkbabb/glass-ui 3.9.0 → 3.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CardAction-DuArVky-.js → CardAction-DrAcAV4d.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-mV2e1aG6.js} +2 -2
- package/dist/{DataTable-CUHMukiQ.js → DataTable-C3E6jZ5B.js} +2 -2
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-BxaaafFi.js} +1 -1
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CDA_SaCe.js} +1 -1
- package/dist/{MetricBadge-lTc002u2.js → MetricBadge-idgrkqoP.js} +1 -1
- package/dist/{Notification-BxK8LZMw.js → Notification-Cu0nN17_.js} +3 -3
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CHEWghnY.js} +2 -2
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-DpUvdYY-.js} +1 -1
- package/dist/{Progress-iEuD9pxG.js → Progress-BW-StFw2.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DruYCni_.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-pirzjm--.js} +3 -3
- package/dist/{Switch-LDKLmmgx.js → Switch-DeAqg6pi.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-BAVzOZpg.js} +2 -2
- package/dist/{Toaster-1rYWrmAm.js → Toaster-CvuuW_y9.js} +49 -46
- package/dist/{ToggleGroupItem-Cev4pOVK.js → ToggleGroupItem-DtD37b4G.js} +4 -4
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +4 -4
- package/dist/api.js +1 -1
- package/dist/aurora.js +238 -547
- package/dist/{badge-BvwvT50i.js → badge-NdCQMvvB.js} +2 -2
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-DyiWFAOE.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.js +5 -5
- package/dist/collapsible.js +1 -1
- package/dist/{color-8jBjWiJ6.js → color-B65wWyQz.js} +9 -7
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/{compile-DAjIoEy2.js → compile-Ce_V55zi.js} +23 -23
- package/dist/components/custom/aurora/composables/atoms.d.ts +21 -4
- package/dist/components/custom/aurora/composables/runtime.d.ts +0 -9
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -11
- package/dist/components/custom/aurora/constants/renderMode.d.ts +0 -32
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
- package/dist/components/custom/aurora/constants/shaders/tonemap.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/constellation/Constellation.vue.d.ts +85 -1
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +35 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +36 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +18 -0
- package/dist/components/custom/constellation/constellationField.d.ts +174 -63
- package/dist/components/custom/constellation/constellationInteraction.d.ts +102 -0
- package/dist/components/custom/constellation/index.d.ts +4 -2
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/GlassDock.vue.d.ts +2 -110
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +131 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +23 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +6 -0
- package/dist/components/custom/fourier-field/index.d.ts +25 -1
- package/dist/components/custom/fourier-field/math.d.ts +20 -8
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +8 -10
- 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 +16 -21
- package/dist/components/custom/goo-blob/constants.d.ts +52 -0
- package/dist/components/custom/goo-blob/index.d.ts +1 -1
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/types.d.ts +59 -25
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- 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/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/slider/index.d.ts +25 -18
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/composables/color/index.d.ts +24 -7
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +1 -6
- 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/useSpringMount.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +322 -147
- package/dist/controls.js +48 -14
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +340 -327
- package/dist/dockContext-bho8B1A4.js +17 -0
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DVnQcA0E.js} +7 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +1 -1
- package/dist/forms.js +2 -2
- package/dist/fourier-field.js +147 -120
- package/dist/fourier-math.d.ts +1 -0
- package/dist/fourier-math.js +2 -0
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +286 -207
- package/dist/goo-blob.js +368 -322
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/math-BUU9hHID.js +43 -0
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +2 -2
- package/dist/motion-core.js +4 -4
- 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/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +1 -1
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +6 -6
- package/dist/select.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-ChSXcJpU.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-DC2mwuoe.js → slider-sfl8gFDD.js} +8 -8
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets-aRSm-4_k.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/cards.css +2 -2
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/layer-group.css +38 -4
- package/dist/styles/dock/layers.css +11 -1
- package/dist/styles/dock/morph.css +95 -19
- package/dist/styles/dock/shell.css +12 -0
- package/dist/styles/dock-controls.css +25 -12
- package/dist/styles/drawer.css +14 -4
- package/dist/styles/floating-panel.css +2 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +304 -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 -1052
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/index.css +24 -6
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/theme.css +14 -14
- package/dist/styles/tokens/color-radius.css +250 -0
- package/dist/styles/tokens/dark-arm.css +194 -0
- package/dist/styles/tokens/glass.css +413 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +406 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +361 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +132 -0
- package/dist/styles/tokens.css +22 -2269
- package/dist/styles/transitions.css +20 -2
- package/dist/styles/typography.css +18 -6
- 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 +399 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1170
- package/dist/switch.js +1 -1
- package/dist/tabs.js +98 -98
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-DfVgP4te.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-BdQXh9ie.js} +1 -1
- package/dist/useSpecularTracking-DFK_fhpG.js +32 -0
- package/dist/useSpringMount-DXUzxBjV.js +108 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +62 -38
- package/src/styles/cards.css +2 -2
- package/src/styles/dock/layer-group.css +38 -4
- package/src/styles/dock/layers.css +11 -1
- package/src/styles/dock/morph.css +95 -19
- package/src/styles/dock/shell.css +12 -0
- package/src/styles/dock-controls.css +25 -12
- package/src/styles/drawer.css +12 -4
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +304 -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 -1052
- package/src/styles/index.css +24 -6
- package/src/styles/theme.css +14 -14
- package/src/styles/tokens/color-radius.css +250 -0
- package/src/styles/tokens/dark-arm.css +194 -0
- package/src/styles/tokens/glass.css +413 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +406 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +361 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +132 -0
- package/src/styles/tokens.css +22 -2269
- package/src/styles/transitions.css +20 -2
- package/src/styles/typography.css +18 -6
- 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 +399 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1170
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +0 -16
- package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -7
- 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/glass-panel/GlassPanel.vue.d.ts +0 -41
- package/dist/components/custom/glass-panel/index.d.ts +0 -2
- package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +0 -31
- package/dist/components/custom/header-ribbon/index.d.ts +0 -2
- package/dist/components/custom/header-ribbon/types.d.ts +0 -7
- 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/glass/createGPUCanvas.d.ts +0 -40
- package/dist/deck-progress.d.ts +0 -1
- package/dist/deck-progress.js +0 -2
- package/dist/dockContext-BKeIMmNk.js +0 -9
- package/dist/glass-panel.d.ts +0 -1
- package/dist/glass-panel.js +0 -44
- package/dist/header-ribbon.d.ts +0 -1
- package/dist/header-ribbon.js +0 -63
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/useGlassRenderer-5I0YkI4t.js +0 -69
- package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
- package/dist/useSpringMount-BJSHcLl3.js +0 -113
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-Drow5WkV.js} +0 -0
- /package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-DufLHi0y.js} +0 -0
- /package/dist/{IconTooltip-yefK7cJc.js → IconTooltip-BrQ5p181.js} +0 -0
- /package/dist/{Input-DWQQIOC4.js → Input-B-F818RU.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-DWghtRt7.js} +0 -0
- /package/dist/{constants-CS75AWHG.js → constants-C8NMonuo.js} +0 -0
- /package/dist/{presets-BKVyQfbt.js → presets-1OhFpaIC.js} +0 -0
- /package/dist/{prng-wHuHlNHE.js → prng-CjVgzjQT.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CRvVzOvP.js} +0 -0
- /package/dist/{useCanvas2D-ClrQuZtp.js → useCanvas2D-CSeH8h16.js} +0 -0
- /package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-D7R9OypB.js} +0 -0
- /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-DAdVPVp4.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-D3USn0yc.js} +0 -0
- /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
- /package/dist/{useScrollProgress-CAH8Ofwt.js → useScrollProgress-CcgmgMQt.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-DnyGXKKY.js} +0 -0
- /package/dist/{useTextHighlight-DON84L8w.js → useTextHighlight-B3b10W6r.js} +0 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/* utilities/components.css
|
|
2
|
+
The @layer components component half — metric-badge pill + label-bearing variants, the glassmorphic input-bar, hover-lift levels, cartoon shadows, divider utilities.
|
|
3
|
+
Carved from the utilities.css cascade root; @import-ed by utilities.css in
|
|
4
|
+
cascade order. See docs/precepts/design-idioms.md §cohesion-aware partials. */
|
|
5
|
+
@layer components {
|
|
6
|
+
/* ── Metric badge pill — compact glass label for numeric telemetry ── */
|
|
7
|
+
.metric-badge {
|
|
8
|
+
display: inline-flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
text-align: center;
|
|
12
|
+
/* AQ.W3 §W3.2 identity base */
|
|
13
|
+
scale: 1;
|
|
14
|
+
gap: var(--metric-badge-gap, 0.125rem);
|
|
15
|
+
max-width: var(--metric-badge-max-width, 8rem);
|
|
16
|
+
min-height: var(--metric-badge-min-height, 1.5rem);
|
|
17
|
+
padding:
|
|
18
|
+
var(--metric-badge-padding-block, 0.125rem)
|
|
19
|
+
var(--metric-badge-padding-inline, 0.5rem);
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
flex-shrink: 0;
|
|
22
|
+
line-height: 1;
|
|
23
|
+
/* Canonical 5-tier glass surface: the `quiet` rung paints the badge
|
|
24
|
+
plate at the `--glass-bg-quiet` α (0.50) with `--glass-blur-quiet`.
|
|
25
|
+
Reduced-transparency / no-backdrop-filter fallbacks propagate
|
|
26
|
+
through the lazy custom-property resolution that `glass.css`
|
|
27
|
+
sets up — the badge no longer bypasses the canon.
|
|
28
|
+
(Per audit U.W0.C-c §7.2.) */
|
|
29
|
+
border: 1px solid var(--metric-badge-border, var(--glass-border-quiet));
|
|
30
|
+
border-radius: var(--metric-badge-radius, var(--radius-badge, var(--radius-pill)));
|
|
31
|
+
background: var(--metric-badge-bg, var(--glass-bg-quiet));
|
|
32
|
+
backdrop-filter: var(--metric-badge-blur, var(--glass-blur-quiet));
|
|
33
|
+
box-shadow: var(--metric-badge-shadow, 0 1px 6px color-mix(in srgb, var(--shadow-color) 8%, transparent), var(--glass-highlight));
|
|
34
|
+
transition:
|
|
35
|
+
background var(--duration-fast) var(--ease-standard),
|
|
36
|
+
border-color var(--duration-fast) var(--ease-standard),
|
|
37
|
+
box-shadow var(--duration-fast) var(--ease-standard),
|
|
38
|
+
scale var(--duration-fast) var(--ease-standard);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.metric-badge > span {
|
|
42
|
+
line-height: 1;
|
|
43
|
+
/* AW.W26 — `wrap-anywhere` (overflow-wrap: anywhere) on the value slot:
|
|
44
|
+
a long metric value breaks WITHIN the badge rather than being clipped
|
|
45
|
+
by the host `overflow: hidden`. v4.1 `wrap-anywhere` / mwg css §7.
|
|
46
|
+
Scoped to the value span, NOT a universal selector (mwg perf caveat). */
|
|
47
|
+
overflow-wrap: anywhere;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.metric-badge:hover {
|
|
51
|
+
/* Hover lifts to the `resting` rung — one step up the canonical
|
|
52
|
+
ladder (audit U.W0.C-c §7.2). */
|
|
53
|
+
border-color: var(--metric-badge-hover-border, var(--glass-border-resting));
|
|
54
|
+
background: var(--metric-badge-hover-bg, var(--glass-bg-resting));
|
|
55
|
+
box-shadow: var(--metric-badge-hover-shadow, 0 2px 10px color-mix(in srgb, var(--shadow-color) 12%, transparent), var(--glass-highlight));
|
|
56
|
+
scale: var(--metric-badge-hover-scale, 1.02);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.metric-badge:active {
|
|
60
|
+
scale: var(--metric-badge-press-scale, 0.96);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.metric-badge:focus-visible {
|
|
64
|
+
outline: none;
|
|
65
|
+
box-shadow: var(--focus-ring-shadow);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Phase-finish catch-light — the quieter cousin of --glass-specular.
|
|
69
|
+
Speedtest toggles `data-just-resolved="true"` on a metric pill once
|
|
70
|
+
its phase completes; the badge briefly carries a 1px catch-light
|
|
71
|
+
streak at the top edge. Reads as the pill catching club lighting at
|
|
72
|
+
the moment its result resolves. */
|
|
73
|
+
.metric-badge[data-just-resolved="true"] {
|
|
74
|
+
box-shadow:
|
|
75
|
+
inset 0 1px 0 0 rgb(255 255 255 / 0.18),
|
|
76
|
+
var(--metric-badge-shadow,
|
|
77
|
+
0 1px 6px color-mix(in srgb, var(--shadow-color) 8%, transparent),
|
|
78
|
+
var(--glass-highlight));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* ── Label-bearing variants ───────────────────────────────────────────
|
|
82
|
+
When the badge carries a `labelPosition`, the prose-style annotation
|
|
83
|
+
slot precedes the amount. Inline keeps the row baseline-aligned;
|
|
84
|
+
stacked breaks to a column with items flush-left. The label slot
|
|
85
|
+
carries its own tracked uppercase rules; the badge's max-width
|
|
86
|
+
relaxes so the wider register fits. */
|
|
87
|
+
.metric-badge--label-inline {
|
|
88
|
+
flex-direction: row;
|
|
89
|
+
align-items: baseline;
|
|
90
|
+
justify-content: flex-start;
|
|
91
|
+
gap: var(--metric-badge-label-gap, 0.375rem);
|
|
92
|
+
max-width: var(--metric-badge-label-max-width, none);
|
|
93
|
+
text-align: left;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.metric-badge--label-stacked {
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
align-items: flex-start;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
gap: var(--metric-badge-label-gap-stacked, 0.0625rem);
|
|
101
|
+
max-width: var(--metric-badge-label-max-width, none);
|
|
102
|
+
text-align: left;
|
|
103
|
+
min-height: var(--metric-badge-min-height-stacked, 2.625rem);
|
|
104
|
+
padding-block: var(--metric-badge-padding-block-stacked, 0.375rem);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* T.W2.T2 — stacked variant pairs amount + unit on a single row (row 2)
|
|
108
|
+
below the label (row 1). The `.metric-badge__row` wrapper baseline-
|
|
109
|
+
aligns the value and unit so the quantity reads as one phrase, not as
|
|
110
|
+
three siblings split across three rows (the pre-T behaviour the
|
|
111
|
+
audit B-spec §2.1 flagged). */
|
|
112
|
+
.metric-badge--label-stacked .metric-badge__row {
|
|
113
|
+
display: inline-flex;
|
|
114
|
+
align-items: baseline;
|
|
115
|
+
gap: var(--metric-badge-row-gap-stacked, 0.25rem);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* T.W2.T3 — MetricPill density modifiers. The pill is a thin composition
|
|
119
|
+
over MetricBadge with `labelPosition="stacked"` defaults; the density
|
|
120
|
+
knob adjusts block padding + horizontal padding so the pill reads at
|
|
121
|
+
the right register for its dock host. `spacious` is the default
|
|
122
|
+
(chassis-strip rhythm), `comfortable` keeps the tighter compact
|
|
123
|
+
register for densely-packed dock clusters. The selectors compose with
|
|
124
|
+
`.metric-badge--label-stacked` so the inline ladder remains untouched
|
|
125
|
+
— these are stacked-only refinements. */
|
|
126
|
+
.metric-pill[data-density="spacious"].metric-badge--label-stacked {
|
|
127
|
+
--metric-badge-padding-block-stacked: 0.5rem;
|
|
128
|
+
--metric-badge-padding-inline: 0.75rem;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.metric-pill[data-density="comfortable"].metric-badge--label-stacked {
|
|
132
|
+
--metric-badge-padding-block-stacked: 0.25rem;
|
|
133
|
+
--metric-badge-padding-inline: 0.5rem;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* AS.W4 — @container style(--density) companion. A pill nested under a host
|
|
137
|
+
that sets `--density: comfortable | spacious` on a wrapping element picks
|
|
138
|
+
up the matching padding register with no `data-density` markup contract;
|
|
139
|
+
the attribute rules above stay the SOLE fallback (inv 47).
|
|
140
|
+
The inner `.metric-pill.metric-badge--label-stacked` selector (0,2,0) sits
|
|
141
|
+
just BELOW the `.metric-pill[data-density]…` attribute rules (0,3,0) — so a
|
|
142
|
+
pill carrying BOTH the attribute and a `--density` ancestor lands on the
|
|
143
|
+
attribute rule (same tokens, identical paint), while a pill with only the
|
|
144
|
+
ancestor token still resolves the right register (no competing rule sets
|
|
145
|
+
these padding custom props at higher weight in that case).
|
|
146
|
+
|
|
147
|
+
No `@supports` wrapper: unlike the sibling scroll-state recipe (which
|
|
148
|
+
probes `@supports (container-type: scroll-state)` — a probeable
|
|
149
|
+
container-type VALUE), style queries introduce no new `container-type`
|
|
150
|
+
value (every element is a style container by default), so there is no
|
|
151
|
+
clean declaration test for style-query support. This relies on
|
|
152
|
+
`@container style()`'s own graceful degradation: an engine without
|
|
153
|
+
style-query support parses the unknown at-rule as invalid, drops the
|
|
154
|
+
block, and keeps the `[data-density]` attribute base. (The earlier
|
|
155
|
+
`@supports (container-type: inline-size)` wrapper was wrong — it probed
|
|
156
|
+
SIZE-query support, a distinct feature with a distinct support timeline.) */
|
|
157
|
+
@container style(--density: spacious) {
|
|
158
|
+
.metric-pill.metric-badge--label-stacked {
|
|
159
|
+
--metric-badge-padding-block-stacked: 0.5rem;
|
|
160
|
+
--metric-badge-padding-inline: 0.75rem;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
@container style(--density: comfortable) {
|
|
164
|
+
.metric-pill.metric-badge--label-stacked {
|
|
165
|
+
--metric-badge-padding-block-stacked: 0.25rem;
|
|
166
|
+
--metric-badge-padding-inline: 0.5rem;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.metric-badge__label {
|
|
171
|
+
letter-spacing: 0.18em;
|
|
172
|
+
line-height: 1;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* Dual-slot default visibility (R2-spec):
|
|
176
|
+
The library renders both `--full` and `--abbr` siblings whenever both
|
|
177
|
+
props are passed. Default identity is the full label; the abbreviation
|
|
178
|
+
sits hidden until consumer container-query CSS flips it. The adjacent-
|
|
179
|
+
sibling selector preserves single-slot back-compat: when a consumer
|
|
180
|
+
passes only `abbreviation` (no `--full` sibling rendered), the abbr
|
|
181
|
+
reads at default visibility. */
|
|
182
|
+
.metric-badge__label--full + .metric-badge__label--abbr {
|
|
183
|
+
display: none;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* sm-tier label tracking — tighter than the md/lg/xl 0.18em rung so the
|
|
187
|
+
compact register reads as a tighter annotation against the smaller
|
|
188
|
+
glyph rise. R2-spec D-Rec-2 (audit-D). */
|
|
189
|
+
.metric-badge[data-size="sm"] .metric-badge__label {
|
|
190
|
+
letter-spacing: 0.1em;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* Q.W3 Lane A — the `.glass-dock[data-density="…"]` density rungs that
|
|
194
|
+
set `--dock-tab-h` + `--dock-label-size` were consolidated into
|
|
195
|
+
`dock.css` (their canonical dock-styles home). They formerly lived
|
|
196
|
+
here and resolved only by the index.css import order (utilities.css
|
|
197
|
+
after dock.css); the cascade-order dependency is now gone. */
|
|
198
|
+
|
|
199
|
+
/* ── Input bar — glassmorphic inline input container ──
|
|
200
|
+
Composes the canonical `floating` glass rung (--glass-bg-floating
|
|
201
|
+
≈ 80% α, --glass-blur-floating ≈ 24px) — same surface read as the
|
|
202
|
+
prior raw composition but routed through the canonical 5-tier
|
|
203
|
+
ladder so PRT / no-backdrop-filter fallbacks propagate cleanly.
|
|
204
|
+
(Per audit U.W0.C-c §7.2.) */
|
|
205
|
+
.input-bar {
|
|
206
|
+
display: flex;
|
|
207
|
+
align-items: center;
|
|
208
|
+
gap: 0.5rem;
|
|
209
|
+
border-radius: var(--radius-2xl);
|
|
210
|
+
border: 1px solid var(--glass-border-floating);
|
|
211
|
+
background: var(--glass-bg-floating);
|
|
212
|
+
backdrop-filter: var(--glass-blur-floating);
|
|
213
|
+
|
|
214
|
+
padding: 0 0.75rem;
|
|
215
|
+
height: 2.25rem;
|
|
216
|
+
max-width: var(--max-width-input);
|
|
217
|
+
width: 100%;
|
|
218
|
+
transition:
|
|
219
|
+
box-shadow var(--duration-fast) var(--ease-standard),
|
|
220
|
+
border-color var(--duration-fast) var(--ease-standard);
|
|
221
|
+
}
|
|
222
|
+
.input-bar:focus-within {
|
|
223
|
+
box-shadow: var(--focus-ring-shadow);
|
|
224
|
+
border-color: var(--border);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.input-bar-field {
|
|
228
|
+
font-family: var(--font-mono, monospace);
|
|
229
|
+
font-size: var(--type-small);
|
|
230
|
+
background: transparent;
|
|
231
|
+
border: none;
|
|
232
|
+
outline: none;
|
|
233
|
+
flex: 1;
|
|
234
|
+
min-width: 0;
|
|
235
|
+
}
|
|
236
|
+
.input-bar-field::placeholder {
|
|
237
|
+
color: color-mix(in srgb, var(--muted-foreground) 50%, transparent);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* ── Hover lift — translate-y + shadow on hover (3 levels) ──
|
|
241
|
+
The shared transition is expressed once over the family; the three
|
|
242
|
+
:hover rules carry the per-level translate + shadow. */
|
|
243
|
+
:where(.hover-lift, .hover-lift-md, .hover-lift-lg) {
|
|
244
|
+
/* Individual-transform identity base (AQ.W3 §W3.2) — `translate: 0` at
|
|
245
|
+
rest mints the stacking context once so the hover lift does not
|
|
246
|
+
flicker it into being. */
|
|
247
|
+
translate: 0;
|
|
248
|
+
transition-property: translate, box-shadow;
|
|
249
|
+
transition-duration: var(--duration-normal);
|
|
250
|
+
transition-timing-function: var(--ease-standard);
|
|
251
|
+
}
|
|
252
|
+
.hover-lift:hover:not(:disabled):not([aria-disabled='true']) {
|
|
253
|
+
translate: 0 var(--lift-sm);
|
|
254
|
+
box-shadow: var(--shadow-md);
|
|
255
|
+
}
|
|
256
|
+
.hover-lift-md:hover:not(:disabled):not([aria-disabled='true']) {
|
|
257
|
+
translate: 0 var(--lift-md);
|
|
258
|
+
box-shadow: var(--shadow-md);
|
|
259
|
+
}
|
|
260
|
+
.hover-lift-lg:hover:not(:disabled):not([aria-disabled='true']) {
|
|
261
|
+
translate: 0 var(--lift-lg);
|
|
262
|
+
box-shadow: var(--shadow-lg);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* ── Cartoon shadows — token-driven box-shadow + bezel border + lift ──
|
|
266
|
+
The box-shadow stack reads from the canonical
|
|
267
|
+
`--shadow-cartoon-{sm,md,lg}` rungs declared at tokens.css:304-312.
|
|
268
|
+
Those rungs use `color-mix(in srgb, var(--shadow-color) N%, transparent)`
|
|
269
|
+
so dark-mode flips the cast through `--shadow-color` automatically.
|
|
270
|
+
The 2px bezel border + translateY are the cartoon-stamp geometry
|
|
271
|
+
atop the canonical depth — kept here so a single class delivers
|
|
272
|
+
the whole cartoon read.
|
|
273
|
+
(Per audit U.W0.C-c §1.3 / Union 1 — collapses the dual-system
|
|
274
|
+
drift onto the token-driven shadow.) */
|
|
275
|
+
:where(.shadow-cartoon-sm, .shadow-cartoon-md, .shadow-cartoon-lg) {
|
|
276
|
+
border: 2px solid var(--border);
|
|
277
|
+
}
|
|
278
|
+
/* Static cartoon-stamp lift (AQ.W3 §W3.2). NOT state-driven, so the
|
|
279
|
+
identity base is not strictly required, but the `translate:` longhand
|
|
280
|
+
keeps the family uniform with the state-driven sites above. */
|
|
281
|
+
.shadow-cartoon-sm {
|
|
282
|
+
box-shadow: var(--shadow-cartoon-sm);
|
|
283
|
+
translate: 0 -1px;
|
|
284
|
+
}
|
|
285
|
+
.shadow-cartoon-md {
|
|
286
|
+
box-shadow: var(--shadow-cartoon-md);
|
|
287
|
+
translate: 0 -1px;
|
|
288
|
+
}
|
|
289
|
+
.shadow-cartoon-lg {
|
|
290
|
+
box-shadow: var(--shadow-cartoon-lg);
|
|
291
|
+
translate: 0 -2px;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/* ── Divider utilities ── */
|
|
295
|
+
.divider-h {
|
|
296
|
+
height: 2px;
|
|
297
|
+
background: linear-gradient(
|
|
298
|
+
to right,
|
|
299
|
+
transparent 1%,
|
|
300
|
+
var(--border) 8%,
|
|
301
|
+
var(--border) 92%,
|
|
302
|
+
transparent 99%
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.divider-h-tapered {
|
|
307
|
+
height: 2px;
|
|
308
|
+
background: linear-gradient(
|
|
309
|
+
to right,
|
|
310
|
+
transparent 3%,
|
|
311
|
+
var(--border) 15%,
|
|
312
|
+
var(--border) 85%,
|
|
313
|
+
transparent 97%
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
}
|