@mkbabb/glass-ui 3.10.1 → 3.11.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-DrAcAV4d.js → CardAction-DuArVky-.js} +2 -2
- package/dist/{CommandShortcut-mV2e1aG6.js → CommandShortcut-CefCj5mt.js} +2 -2
- package/dist/{DataTable-C3E6jZ5B.js → DataTable-CUHMukiQ.js} +2 -2
- package/dist/DeckProgress-Dmk4_AKN.js +23 -0
- package/dist/{DialogContent-BxaaafFi.js → DialogContent-BRkT1cjP.js} +1 -1
- package/dist/{HoverPopover-CDA_SaCe.js → HoverPopover-2LOIW34a.js} +1 -1
- package/dist/InstrumentRail-CUJ05YVG.js +44 -0
- package/dist/{MetricBadge-idgrkqoP.js → MetricBadge-BZVWIxNy.js} +7 -5
- package/dist/{Notification-Cu0nN17_.js → Notification-DLMhblXR.js} +1 -1
- package/dist/{NumberFieldContent-CHEWghnY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
- package/dist/{PopoverContent-DpUvdYY-.js → PopoverContent-BId6ggf_.js} +1 -1
- package/dist/{Progress-BW-StFw2.js → Progress-iEuD9pxG.js} +1 -1
- package/dist/{ScrollingText-DruYCni_.js → ScrollingText-BPP84wKo.js} +1 -1
- package/dist/{SelectScrollDownButton-pirzjm--.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
- package/dist/{Switch-DeAqg6pi.js → Switch-Ch-k3Rv-.js} +1 -1
- package/dist/{TabsList-BAVzOZpg.js → TabsList-B8CVOQPC.js} +2 -2
- package/dist/{Toaster-CvuuW_y9.js → Toaster-1rYWrmAm.js} +46 -49
- package/dist/{ToggleGroupItem-DtD37b4G.js → ToggleGroupItem-COu_4IW4.js} +21 -17
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +5 -4
- package/dist/api.js +2 -2
- package/dist/aurora.js +70 -70
- package/dist/{badge-NdCQMvvB.js → badge-CaoFJzRb.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DyiWFAOE.js → button-DN39cGqL.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-B65wWyQz.js → color-C5ls_QF7.js} +7 -9
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/constants/presets.d.ts +62 -5
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/constellation/Constellation.vue.d.ts +0 -12
- package/dist/components/custom/constellation/constellationField.d.ts +151 -10
- package/dist/components/custom/constellation/index.d.ts +1 -3
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +0 -11
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +27 -0
- package/dist/components/custom/deck-progress/index.d.ts +2 -0
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +57 -0
- package/dist/components/custom/dialog-native/index.d.ts +1 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +4 -3
- package/dist/components/custom/dock/GlassDock.vue.d.ts +115 -3
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +0 -36
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +0 -44
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +37 -5
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +0 -17
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +41 -0
- package/dist/components/custom/glass-panel/index.d.ts +2 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +3 -4
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +8 -11
- package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
- package/dist/components/custom/handmark/brush.d.ts +242 -0
- package/dist/components/custom/handmark/freehand.d.ts +69 -0
- package/dist/components/custom/handmark/geometry.d.ts +50 -0
- package/dist/components/custom/handmark/index.d.ts +21 -0
- package/dist/components/custom/handmark/ink.d.ts +11 -0
- package/dist/components/custom/handmark/texture.d.ts +39 -0
- package/dist/components/custom/handmark/types.d.ts +53 -0
- package/dist/components/custom/handmark/useHandMark.d.ts +87 -0
- package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +31 -0
- package/dist/components/custom/header-ribbon/index.d.ts +2 -0
- package/dist/components/custom/header-ribbon/types.d.ts +7 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +91 -0
- package/dist/components/custom/instrument-rail/index.d.ts +2 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +0 -1
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/slider/index.d.ts +19 -22
- 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 +7 -1
- package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +3 -1
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +13 -0
- package/dist/composables/color/index.d.ts +0 -12
- package/dist/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +21 -1
- package/dist/composables/glass/useSpecularTracking.d.ts +3 -12
- package/dist/composables/motion/core/index.d.ts +1 -0
- package/dist/composables/motion/index.d.ts +0 -2
- package/dist/composables/motion/useRouteTransition.d.ts +42 -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 +225 -260
- package/dist/controls.js +14 -48
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/deck-progress.d.ts +1 -0
- package/dist/deck-progress.js +2 -0
- package/dist/dialog.js +2 -2
- package/dist/dock.js +345 -340
- package/dist/dockContext-BKeIMmNk.js +9 -0
- package/dist/{dropdown-menu-DVnQcA0E.js → dropdown-menu-D77jX6Df.js} +4 -7
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +79 -38
- package/dist/forms.js +2 -2
- package/dist/fourier-field.js +102 -137
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.d.ts +1 -0
- package/dist/glass-panel.js +44 -0
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +209 -287
- package/dist/goo-blob.js +212 -243
- package/dist/handmark.d.ts +1 -0
- package/dist/handmark.js +662 -0
- package/dist/header-ribbon.d.ts +1 -0
- package/dist/header-ribbon.js +63 -0
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/instrument-rail.d.ts +1 -0
- package/dist/instrument-rail.js +2 -0
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/{math-BUU9hHID.js → math-DTpRVC0e.js} +2 -18
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +70 -69
- package/dist/motion.js +37 -38
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-1OhFpaIC.js → presets-BP_ALM0m.js} +14 -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-ChSXcJpU.js → sheet-VZEtNFvO.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-sfl8gFDD.js → slider-ClgpP7EB.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +111 -15
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/layer-group.css +0 -22
- package/dist/styles/dock/layers.css +1 -11
- package/dist/styles/dock/morph.css +19 -95
- package/dist/styles/dock/shell.css +0 -12
- package/dist/styles/dock-controls.css +31 -28
- package/dist/styles/drawer.css +0 -2
- package/dist/styles/floating-panel.css +0 -2
- package/dist/styles/glass-refract.css +0 -2
- package/dist/styles/glass.css +1188 -31
- package/dist/styles/hover-popover.css +0 -2
- package/dist/styles/index.css +6 -24
- package/dist/styles/instrument-chassis.css +0 -4
- package/dist/styles/paper.css +68 -2
- package/dist/styles/theme.css +20 -13
- package/dist/styles/tokens.css +2360 -22
- package/dist/styles/typography.css +6 -18
- package/dist/styles/utilities.css +1291 -19
- package/dist/styles/view-transition.css +51 -0
- 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/{useAnimatedNumber-DfVgP4te.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
- package/dist/{useConfiguratorState-BdQXh9ie.js → useConfiguratorState-DxAqksK6.js} +1 -1
- package/dist/useGlassRenderer-D7YGOYiM.js +69 -0
- package/dist/{useGlobalDark-D7R9OypB.js → useGlobalDark-D1wgEqfW.js} +21 -2
- package/dist/useSpecularTracking-BVRZsRHA.js +26 -0
- package/dist/useSpringMount-BJSHcLl3.js +113 -0
- package/dist/useViewTransition-DaN5Zrox.js +21 -0
- package/dist/vReveal-zUIQk-rJ.js +53 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +57 -33
- package/src/styles/animations.css +111 -15
- package/src/styles/dock/layer-group.css +0 -22
- package/src/styles/dock/layers.css +1 -11
- package/src/styles/dock/morph.css +19 -95
- package/src/styles/dock/shell.css +0 -12
- package/src/styles/dock-controls.css +31 -28
- package/src/styles/glass.css +1188 -31
- package/src/styles/index.css +6 -24
- package/src/styles/paper.css +68 -2
- package/src/styles/theme.css +20 -13
- package/src/styles/tokens.css +2360 -22
- package/src/styles/typography.css +6 -18
- package/src/styles/utilities.css +1291 -19
- package/src/styles/view-transition.css +51 -0
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +0 -1
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +0 -35
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
- package/dist/components/custom/constellation/constants.d.ts +0 -36
- package/dist/components/custom/constellation/constellationDraw.d.ts +0 -18
- package/dist/components/custom/constellation/constellationInteraction.d.ts +0 -102
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +0 -15
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +0 -131
- package/dist/components/custom/dock/constants.d.ts +0 -23
- package/dist/components/custom/fourier-field/presets.d.ts +0 -54
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +0 -18
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +0 -41
- package/dist/components/custom/goo-blob/constants.d.ts +0 -52
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +0 -1
- package/dist/components/custom/tabs/constants.d.ts +0 -12
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
- package/dist/components/custom/underline/index.d.ts +0 -2
- package/dist/components/custom/underline/types.d.ts +0 -56
- package/dist/composables/motion/curves.d.ts +0 -48
- package/dist/composables/motion/springPresets.d.ts +0 -33
- package/dist/composables/motion/suite.d.ts +0 -2
- package/dist/dockContext-bho8B1A4.js +0 -17
- package/dist/motion-curves.d.ts +0 -1
- package/dist/motion-curves.js +0 -130
- package/dist/springPresets-aRSm-4_k.js +0 -40
- package/dist/styles/glass/a11y-fallback.css +0 -245
- package/dist/styles/glass/ladder.css +0 -304
- package/dist/styles/glass/material.css +0 -238
- package/dist/styles/glass/progress-rail.css +0 -78
- package/dist/styles/glass/squircle.css +0 -66
- package/dist/styles/glass/surfaces.css +0 -306
- package/dist/styles/tokens/color-radius.css +0 -250
- package/dist/styles/tokens/dark-arm.css +0 -194
- package/dist/styles/tokens/glass.css +0 -413
- package/dist/styles/tokens/light-dark.css +0 -158
- package/dist/styles/tokens/offsets-sizing.css +0 -406
- package/dist/styles/tokens/property-regs.css +0 -169
- package/dist/styles/tokens/scale-paper.css +0 -361
- package/dist/styles/tokens/scheme-motion.css +0 -334
- package/dist/styles/tokens/shadow.css +0 -132
- package/dist/styles/utilities/a11y-overrides.css +0 -140
- package/dist/styles/utilities/animate.css +0 -26
- package/dist/styles/utilities/base.css +0 -365
- package/dist/styles/utilities/btn.css +0 -399
- package/dist/styles/utilities/components.css +0 -317
- package/dist/underline.d.ts +0 -1
- package/dist/underline.js +0 -85
- package/dist/useSpecularTracking-DFK_fhpG.js +0 -32
- package/dist/useSpringMount-DXUzxBjV.js +0 -108
- package/dist/vReveal-CqaCz_mC.js +0 -44
- package/src/styles/glass/a11y-fallback.css +0 -245
- package/src/styles/glass/ladder.css +0 -304
- package/src/styles/glass/material.css +0 -238
- package/src/styles/glass/progress-rail.css +0 -78
- package/src/styles/glass/squircle.css +0 -66
- package/src/styles/glass/surfaces.css +0 -306
- package/src/styles/tokens/color-radius.css +0 -250
- package/src/styles/tokens/dark-arm.css +0 -194
- package/src/styles/tokens/glass.css +0 -413
- package/src/styles/tokens/light-dark.css +0 -158
- package/src/styles/tokens/offsets-sizing.css +0 -406
- package/src/styles/tokens/property-regs.css +0 -169
- package/src/styles/tokens/scale-paper.css +0 -361
- package/src/styles/tokens/scheme-motion.css +0 -334
- package/src/styles/tokens/shadow.css +0 -132
- package/src/styles/utilities/a11y-overrides.css +0 -140
- package/src/styles/utilities/animate.css +0 -26
- package/src/styles/utilities/base.css +0 -365
- package/src/styles/utilities/btn.css +0 -399
- package/src/styles/utilities/components.css +0 -317
- /package/dist/{CollapsibleContent-Drow5WkV.js → CollapsibleContent-CP9qF1v4.js} +0 -0
- /package/dist/{DialogFooter-DufLHi0y.js → DialogFooter-Gprw8H_A.js} +0 -0
- /package/dist/{IconTooltip-BrQ5p181.js → IconTooltip-Cus0fvK0.js} +0 -0
- /package/dist/{Input-B-F818RU.js → Input-xuDwALQR.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-DWghtRt7.js → _plugin-vue_export-helper-ok8pgSl5.js} +0 -0
- /package/dist/{compile-Ce_V55zi.js → compile-BOXjLUxu.js} +0 -0
- /package/dist/{constants-C8NMonuo.js → constants-yKeKnE84.js} +0 -0
- /package/dist/{prng-CjVgzjQT.js → prng-D27-B3tK.js} +0 -0
- /package/dist/{resolveCanvasColor-CRvVzOvP.js → resolveCanvasColor-BBiYfp8g.js} +0 -0
- /package/dist/{useCanvas2D-CSeH8h16.js → useCanvas2D-ClrQuZtp.js} +0 -0
- /package/dist/{useIntersectionPause-DAdVPVp4.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
- /package/dist/{useInterval-D3USn0yc.js → useInterval-Dsmqwi03.js} +0 -0
- /package/dist/{useKeyboardShortcuts-i8tHd5WO.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
- /package/dist/{useScrollProgress-CcgmgMQt.js → useScrollProgress-CffFGLa5.js} +0 -0
- /package/dist/{useSortable-DnyGXKKY.js → useSortable-C8ReQ50P.js} +0 -0
- /package/dist/{useTextHighlight-B3b10W6r.js → useTextHighlight-CWEi25hf.js} +0 -0
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
/* utilities/base.css
|
|
2
|
-
The @layer components base half — section-description, labeled-field, popover-content, scrollbar, focus-ring, hairline-accent, interactive-item, tap-squish, status-dot, depth-text, preserve-3d, ios input fix, scroll-fade masks, deferred-section, scroll-timeline host, shimmer text, keyboard key.
|
|
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
|
-
/* ── Section description (V.W3.T7) ──────────────────────────────
|
|
7
|
-
Canonical recipe for the `<Section>` primitive's description
|
|
8
|
-
paragraph. Composes the body type + muted-foreground color in
|
|
9
|
-
one declaration so consumers don't fight twMerge's
|
|
10
|
-
typography-class collapse. */
|
|
11
|
-
.section-description {
|
|
12
|
-
font-size: var(--type-body);
|
|
13
|
-
color: var(--muted-foreground);
|
|
14
|
-
line-height: 1.5;
|
|
15
|
-
text-wrap: pretty; /* AQ.W3 §W3.3 — prose-register orphan/river fix */
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* ── Labeled-field label (V.W3.T5 / A5 §5.5) ────────────────────
|
|
19
|
-
Canonical recipe for `<LabeledField>`'s tooltip-wrapped label
|
|
20
|
-
layer. Four sibling wrappers (LabeledInput, LabeledSelect,
|
|
21
|
-
LabeledSlider, LabeledSwitch) used to repeat this literal across
|
|
22
|
-
their templates; promoting it to a utility lets the parent SFC
|
|
23
|
-
own one canonical declaration. */
|
|
24
|
-
.labeled-field-label {
|
|
25
|
-
font-family: var(--font-display);
|
|
26
|
-
font-size: var(--type-body);
|
|
27
|
-
/* AQ.W4 §W3.1c — the label color reads the group-state variable so the
|
|
28
|
-
`:has(:user-invalid)` rule below reddens it (one source of the
|
|
29
|
-
override value, shared with the `.has-error` fallback class). */
|
|
30
|
-
color: var(--field-label-color, var(--muted-foreground));
|
|
31
|
-
cursor: help;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/* AQ.W4 §W3.1c — LabeledField group error highlight. When any descendant
|
|
35
|
-
control is `:user-invalid`, the whole field group marks (the label
|
|
36
|
-
reddens via `--field-label-color`, the error region reveals). Scoped to
|
|
37
|
-
`.labeled-field` — never `body`, never a bare element. `:has()` Baseline
|
|
38
|
-
Widely; the `.has-error` / `.has-valid` fallback classes (toggled by the
|
|
39
|
-
`useUserInvalidAria` fallback path) are the SOLE degradation for engines
|
|
40
|
-
without `:has()`/`:user-invalid` (not a live+dead alias). */
|
|
41
|
-
.labeled-field {
|
|
42
|
-
--field-label-color: var(--muted-foreground);
|
|
43
|
-
}
|
|
44
|
-
.labeled-field:has(:user-invalid),
|
|
45
|
-
.labeled-field.has-error {
|
|
46
|
-
--field-label-color: var(--destructive);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/* The error region: hidden at rest, revealed once a descendant is
|
|
50
|
-
`:user-invalid` (or the `.has-error` fallback class is set). Non-color
|
|
51
|
-
reinforcement for the validity tint — the error TEXT is the primary
|
|
52
|
-
cue, the border/bg shift the supplement (forms guide: never color
|
|
53
|
-
alone). */
|
|
54
|
-
.labeled-field-error {
|
|
55
|
-
display: none;
|
|
56
|
-
font-size: var(--type-small);
|
|
57
|
-
color: var(--destructive);
|
|
58
|
-
margin-block-start: 0.25rem;
|
|
59
|
-
}
|
|
60
|
-
.labeled-field:has(:user-invalid) .labeled-field-error,
|
|
61
|
-
.labeled-field.has-error .labeled-field-error {
|
|
62
|
-
display: block;
|
|
63
|
-
}
|
|
64
|
-
/* Hide the error text once the field reads valid (the user corrected it). */
|
|
65
|
-
.labeled-field:has(:user-valid) .labeled-field-error,
|
|
66
|
-
.labeled-field.has-valid .labeled-field-error {
|
|
67
|
-
display: none;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/* ── Popover-content recipe (V.W3.T3 / A5 §3.2) ─────────────────
|
|
71
|
-
Canonical recipe for floating-tier portal containers
|
|
72
|
-
(PopoverContent, DropdownMenuContent, SelectContent, etc.).
|
|
73
|
-
Covers radius + outline + popover-foreground; consumers compose
|
|
74
|
-
this with `.glass-floating` (bg + blur + border + shadow), with
|
|
75
|
-
`.popover-animate` (data-state animation), and with the per-host
|
|
76
|
-
z-rung. The floating-tier shadow comes from
|
|
77
|
-
`--glass-shadow-floating` via `.glass-floating`, replacing the
|
|
78
|
-
`shadow-md`/`shadow-lg` literals that bypassed the canonical
|
|
79
|
-
cascade. */
|
|
80
|
-
.popover-content {
|
|
81
|
-
border-radius: var(--radius-panel);
|
|
82
|
-
color: var(--popover-foreground);
|
|
83
|
-
outline: none;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/* ── Scrollbar ── */
|
|
87
|
-
.scrollbar-hidden {
|
|
88
|
-
scrollbar-width: none;
|
|
89
|
-
}
|
|
90
|
-
.scrollbar-hidden::-webkit-scrollbar {
|
|
91
|
-
display: none;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/* AQ.W3 §W3.4 — tokenized thin scrollbar. Standard `scrollbar-width` +
|
|
95
|
-
`scrollbar-color` (Baseline Widely, Chromium 121+) is the primary path,
|
|
96
|
-
reading `--scrollbar-{thumb,track}` (auto-dark via `--muted-foreground`).
|
|
97
|
-
The legacy `::-webkit-scrollbar` family is the SOLE fallback for older
|
|
98
|
-
WebKit/Blink, gated on `@supports not (scrollbar-color: auto)` so modern
|
|
99
|
-
engines never paint it — not a live+dead alias. */
|
|
100
|
-
.scrollbar-thin {
|
|
101
|
-
scrollbar-width: thin;
|
|
102
|
-
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
|
103
|
-
}
|
|
104
|
-
@supports not (scrollbar-color: auto) {
|
|
105
|
-
.scrollbar-thin::-webkit-scrollbar {
|
|
106
|
-
width: 8px;
|
|
107
|
-
height: 8px;
|
|
108
|
-
}
|
|
109
|
-
.scrollbar-thin::-webkit-scrollbar-track {
|
|
110
|
-
background: var(--scrollbar-track);
|
|
111
|
-
}
|
|
112
|
-
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
113
|
-
background: var(--scrollbar-thumb);
|
|
114
|
-
border-radius: var(--radius-pill);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/* ── Focus ring — auto-activates on :focus-visible ── */
|
|
119
|
-
.focus-ring:focus-visible {
|
|
120
|
-
outline: none;
|
|
121
|
-
border-radius: var(--radius-pill);
|
|
122
|
-
box-shadow: var(--focus-ring-shadow);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/* ── Hairline-accent — 0.5px catch-light + under-shadow pair ──
|
|
126
|
-
Composes the canonical `--border-hairline` token (tokens.css §
|
|
127
|
-
Glass-decorative). Adopt at any surface that wants the canonical
|
|
128
|
-
2-stop hairline (dock surfaces, instrument-chassis). Auto-mirrors
|
|
129
|
-
in dark via the .dark token override. */
|
|
130
|
-
.hairline-accent {
|
|
131
|
-
box-shadow: var(--border-hairline);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/* ── Interactive item (hover bg + focus ring + active scale) ── */
|
|
135
|
-
.interactive-item {
|
|
136
|
-
/* AQ.W3 §W3.2 identity base */
|
|
137
|
-
scale: 1;
|
|
138
|
-
border-radius: var(--radius-lg);
|
|
139
|
-
user-select: none;
|
|
140
|
-
transition:
|
|
141
|
-
background-color var(--duration-fast) var(--ease-standard),
|
|
142
|
-
color var(--duration-fast) var(--ease-standard),
|
|
143
|
-
border-color var(--duration-fast) var(--ease-standard),
|
|
144
|
-
box-shadow var(--duration-fast) var(--ease-standard),
|
|
145
|
-
scale var(--duration-fast) var(--ease-standard);
|
|
146
|
-
}
|
|
147
|
-
.interactive-item:hover {
|
|
148
|
-
background-color: color-mix(in srgb, var(--accent) 50%, transparent);
|
|
149
|
-
}
|
|
150
|
-
.interactive-item:focus-visible {
|
|
151
|
-
outline: none;
|
|
152
|
-
box-shadow: var(--focus-ring-shadow);
|
|
153
|
-
}
|
|
154
|
-
.interactive-item:active {
|
|
155
|
-
/* AW.W31.a — fold the residual literal press scale onto the canonical
|
|
156
|
-
`--scale-press*` cohort (the prior `0.98` was the sole per-atom press
|
|
157
|
-
literal surviving the W2/W3/W25 sweeps). `--scale-press-sm` (0.97) is
|
|
158
|
-
the soft press rung the button + slider recipes consume — ONE press
|
|
159
|
-
vocabulary, no per-atom literal. The 0.98→0.97 delta is sub-perceptual. */
|
|
160
|
-
scale: var(--scale-press-sm);
|
|
161
|
-
}
|
|
162
|
-
.interactive-item:disabled,
|
|
163
|
-
.interactive-item[data-disabled] {
|
|
164
|
-
pointer-events: none;
|
|
165
|
-
opacity: var(--opacity-disabled);
|
|
166
|
-
cursor: not-allowed;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/* ── Tap-squish — universal press-state choreography ──
|
|
170
|
-
AL-W10 SLIM (X6 §M-1 + Y7 §3 + DESIGN.md §L3). I compose this
|
|
171
|
-
class onto every interactive surface that wants the iOS tap-
|
|
172
|
-
squish idiom; the press scales to `--scale-press` (0.96, the
|
|
173
|
-
canonical iOS `.regular` control rung). I keep this as a single
|
|
174
|
-
canonical rung — NOT a 3-rung ladder. The one outlier I leave
|
|
175
|
-
alone is the button `0.97` (`--scale-press-btn`), which consumes
|
|
176
|
-
its own slightly-softer token directly. The dock control now
|
|
177
|
-
tracks the canonical `--scale-press` (0.96) too (AT.W7-dock-b
|
|
178
|
-
press canon — the prior deeper `0.92` was retired to ONE source).
|
|
179
|
-
|
|
180
|
-
AX.W52 §6 doctrine — the `scale` register is reconciled onto
|
|
181
|
-
`--spring-smooth` (was `--spring-snappy`), the ONE button/interactive
|
|
182
|
-
scale register the §6 easing doctrine records and the gate asserts
|
|
183
|
-
across `.btn-pill`/`.tap-squish`/`.glass-btn`/`btn-interactive`. At
|
|
184
|
-
ζ=0.86 `--spring-smooth` settles a press crisply with a sub-perceptual
|
|
185
|
-
(~0.5%) peak — no visible bounce — so press still reads alive while
|
|
186
|
-
hover reads as a smooth glide on the SAME spring.
|
|
187
|
-
|
|
188
|
-
The transition lists the SURFACE legs (bg/border/box-shadow/color/
|
|
189
|
-
opacity) on the bezier `--ease-standard` alongside the spring `scale`
|
|
190
|
-
leg — the SAME coherent set `.btn-pill` carries. This is load-bearing:
|
|
191
|
-
`.tap-squish` and `.btn-pill` are co-composed on the button base and
|
|
192
|
-
this `transition` shorthand would otherwise CLOBBER `.btn-pill`'s
|
|
193
|
-
surface legs down to a scale-only animation (the cascade bug that left
|
|
194
|
-
every button transitioning ONLY `scale` — the live-readback RED). With
|
|
195
|
-
both classes carrying the full set, whichever wins the surface cross-
|
|
196
|
-
fade survives. On a non-button press surface the extra legs are inert
|
|
197
|
-
unless that prop changes, in which case a smooth cross-fade is the
|
|
198
|
-
desired interactive read anyway.
|
|
199
|
-
|
|
200
|
-
Under PRM I retire the press transform entirely and lean on the
|
|
201
|
-
consumer's own hover/active bg-tint cascade to acknowledge the
|
|
202
|
-
press. */
|
|
203
|
-
.tap-squish {
|
|
204
|
-
/* AQ.W3 §W3.2 identity base */
|
|
205
|
-
scale: 1;
|
|
206
|
-
transition:
|
|
207
|
-
background-color var(--duration-fast) var(--ease-standard),
|
|
208
|
-
border-color var(--duration-fast) var(--ease-standard),
|
|
209
|
-
box-shadow var(--duration-fast) var(--ease-standard),
|
|
210
|
-
color var(--duration-fast) var(--ease-standard),
|
|
211
|
-
opacity var(--duration-fast) var(--ease-standard),
|
|
212
|
-
scale var(--duration-fast) var(--spring-smooth);
|
|
213
|
-
transform-origin: center center;
|
|
214
|
-
}
|
|
215
|
-
.tap-squish:active {
|
|
216
|
-
scale: var(--scale-press);
|
|
217
|
-
}
|
|
218
|
-
@media (prefers-reduced-motion: reduce) {
|
|
219
|
-
.tap-squish:active {
|
|
220
|
-
/* Reset to the longhand identity (not `transform: none`) so the
|
|
221
|
-
press scale is neutralized under PRM. */
|
|
222
|
-
scale: 1;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/* ── Status dot indicator ── */
|
|
227
|
-
.status-dot {
|
|
228
|
-
display: inline-block;
|
|
229
|
-
width: 0.5rem;
|
|
230
|
-
height: 0.5rem;
|
|
231
|
-
border-radius: var(--radius-pill);
|
|
232
|
-
flex-shrink: 0;
|
|
233
|
-
transition:
|
|
234
|
-
color var(--duration-fast) var(--ease-standard),
|
|
235
|
-
background var(--duration-fast) var(--ease-standard),
|
|
236
|
-
box-shadow var(--duration-fast) var(--ease-standard);
|
|
237
|
-
}
|
|
238
|
-
/* ── Depth text (layered offset stamp) ──
|
|
239
|
-
AW.W26 — composes the `--text-shadow-depth` @theme identity token (the
|
|
240
|
-
hard offset stack + soft ambient tail) instead of a hand-rolled multi-stop
|
|
241
|
-
literal. The token holds the stack inside the `@theme` defs (gate 4) and
|
|
242
|
-
re-tints under `.dark` via `--shadow`/`--shadow-color` BY CONSTRUCTION. */
|
|
243
|
-
.depth-text {
|
|
244
|
-
--depth-color-primary: var(--primary);
|
|
245
|
-
|
|
246
|
-
color: var(--depth-color-primary);
|
|
247
|
-
text-shadow: var(--text-shadow-depth);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/* ── 3D preserve ── */
|
|
251
|
-
.preserve-3d {
|
|
252
|
-
transform-style: preserve-3d;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/* ── iOS input font-size fix (prevent auto-zoom) ── */
|
|
256
|
-
.ios input,
|
|
257
|
-
.ios select,
|
|
258
|
-
.ios textarea,
|
|
259
|
-
.ios [contenteditable] {
|
|
260
|
-
font-size: max(1rem, 1em);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/* ── Scroll fade masks ──
|
|
264
|
-
Single-source `mask-image` (AV.W16 TW7): the `-webkit-` companion is
|
|
265
|
-
dropped — Tailwind v4's Lightning CSS build pipeline auto-prefixes per
|
|
266
|
-
the browserslist targets, mirroring the glass ladder's single-source
|
|
267
|
-
`backdrop-filter` (glass.css). NOTE: this is the consistency cut; it
|
|
268
|
-
does NOT conflict with W15's `@supports`-gated older-Safari mask
|
|
269
|
-
fallback (that fallback is the distinct case where the companion is
|
|
270
|
-
genuinely needed and W15 gates it). */
|
|
271
|
-
.scroll-fade-mask {
|
|
272
|
-
mask-image: linear-gradient(to right, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.scroll-fade-top {
|
|
276
|
-
mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width));
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
.scroll-fade-bottom {
|
|
280
|
-
mask-image: linear-gradient(to bottom, black calc(100% - var(--mask-fade-width)), transparent);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.scroll-fade-y {
|
|
284
|
-
mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
|
|
288
|
-
`content-visibility: auto` skips layout/paint/style of an offscreen
|
|
289
|
-
subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
|
|
290
|
-
`contain-intrinsic-size: auto <estimate>` is measurement-safe: the `auto`
|
|
291
|
-
prefix makes the engine REMEMBER the last-rendered size (no scroll-jump on
|
|
292
|
-
re-entry); plain `<estimate>` freezes the section + thrashes the scrollbar
|
|
293
|
-
— the trap this closes. Estimate is token-driven (`--deferred-section-
|
|
294
|
-
size`, default 30rem). `.deferred-section--cached` →
|
|
295
|
-
`content-visibility: hidden` (always skipped, state CACHED — cheaper to
|
|
296
|
-
re-show than `display:none`). Baseline Widely; unsupporting engines render
|
|
297
|
-
normally. JS HOOK: the engine fires `contentvisibilityautostatechange`
|
|
298
|
-
{ skipped } at the render-skip boundary — pair with `useRAFLoop`
|
|
299
|
-
pause/resume: `el.addEventListener('contentvisibilityautostatechange',
|
|
300
|
-
e => e.skipped ? loop.pause() : loop.resume())`. */
|
|
301
|
-
.deferred-section {
|
|
302
|
-
content-visibility: auto;
|
|
303
|
-
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
304
|
-
}
|
|
305
|
-
.deferred-section--cached {
|
|
306
|
-
content-visibility: hidden;
|
|
307
|
-
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/* ── Card scroll-timeline host (AI.W1-α) ───────────────────────────────
|
|
311
|
-
Canonical scroll-overflow host that emits the `--card-scroll` named
|
|
312
|
-
scroll-timeline consumed by `<CardHeader shrink>`. Apply to the
|
|
313
|
-
scroll-overflow ancestor (typically the `<Card>` itself OR a wrapper
|
|
314
|
-
inside it that carries `overflow-y: auto`).
|
|
315
|
-
|
|
316
|
-
`contain: layout style paint` isolates the named timeline so child
|
|
317
|
-
animations respond to THIS host's scroll only — not to portal-
|
|
318
|
-
triggered layout shifts in ancestor containers (the load-bearing
|
|
319
|
-
isolation guarantee the value.js `PaneHeader.vue:18-29` comment
|
|
320
|
-
called out and the AI.W1 spec §1.2 ratified as canon).
|
|
321
|
-
|
|
322
|
-
Disambiguated from `.scroll-fade-*` (mask-image fade gradient at
|
|
323
|
-
the container's leading/trailing edge) — `.card-scroll-host` does
|
|
324
|
-
NOT paint any visual; it only emits the timeline. */
|
|
325
|
-
.card-scroll-host {
|
|
326
|
-
contain: layout style paint;
|
|
327
|
-
scroll-timeline: --card-scroll block;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
/* ── Shimmer text effects ──
|
|
331
|
-
The text-fill + background-clip composition is load-bearing visual
|
|
332
|
-
(the gold gradient itself); only the `animation:` line is wrapped in
|
|
333
|
-
the PRM no-preference bracket so PRM users see the static gradient
|
|
334
|
-
without the slide animation. */
|
|
335
|
-
.gold-shimmer {
|
|
336
|
-
background: linear-gradient(90deg, var(--color-gold-dark), var(--color-gold-light), var(--color-gold), var(--color-gold-light), var(--color-gold-dark));
|
|
337
|
-
background-size: 250% 100%;
|
|
338
|
-
background-clip: text;
|
|
339
|
-
-webkit-background-clip: text;
|
|
340
|
-
color: transparent;
|
|
341
|
-
}
|
|
342
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
343
|
-
.gold-shimmer {
|
|
344
|
-
animation: gold-shimmer-slide var(--duration-shimmer) linear infinite;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
/* ── Keyboard key ── */
|
|
349
|
-
.kbd {
|
|
350
|
-
display: inline-flex;
|
|
351
|
-
align-items: center;
|
|
352
|
-
justify-content: center;
|
|
353
|
-
min-height: 1.5rem;
|
|
354
|
-
min-width: 1.5rem;
|
|
355
|
-
padding: 0 0.375rem;
|
|
356
|
-
font-family: var(--font-mono);
|
|
357
|
-
font-size: var(--type-micro);
|
|
358
|
-
background: var(--muted);
|
|
359
|
-
border: 1px solid var(--border);
|
|
360
|
-
border-radius: var(--radius-sm);
|
|
361
|
-
box-shadow: 0 1px 0 1px color-mix(in srgb, var(--border) 30%, transparent);
|
|
362
|
-
line-height: 1;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
}
|