@mkbabb/glass-ui 3.0.0 → 3.1.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/{CardFooter-Yi0xtLLd.js → CardFooter-CSGcJkqa.js} +1 -1
- package/dist/{CommandShortcut-BNDzfFnB.js → CommandShortcut-DWT19a2Y.js} +3 -3
- package/dist/{ContextMenuSubContent-DLEyeqbh.js → ContextMenuSubContent-gAFxJ-qi.js} +4 -4
- package/dist/{DataTable-Ce00dbHD.js → DataTable-R8-Zidms.js} +3 -3
- package/dist/{DialogContent-DSo7PKlU.js → DialogContent-2fALDSvc.js} +3 -3
- package/dist/{DialogFooter-D5KY6sCX.js → DialogFooter-ClrNEOVU.js} +2 -2
- package/dist/{DiscoGlyph-wRA02zAJ.js → DiscoGlyph-C3JfMnRV.js} +1 -1
- package/dist/{GlyphFace-BnPMUZ16.js → GlyphFace-BRS8vUb7.js} +1 -1
- package/dist/HoverPopover-CWFCfLx3.js +96 -0
- package/dist/{IconTooltip-GIeWdo64.js → IconTooltip-BkaA7tZ2.js} +1 -1
- package/dist/{Input-CBvqW8kZ.js → Input-DDpFn568.js} +3 -5
- package/dist/Label-DJty89bp.js +36 -0
- package/dist/{MetricBadge-DRBB18Xq.js → MetricBadge-DmAihkXd.js} +1 -1
- package/dist/{Notification-D97JO0fK.js → Notification-OqIpADml.js} +3 -3
- package/dist/NumberFieldContent-DTH9gb_N.js +141 -0
- package/dist/{PopoverContent-BCH4eYs8.js → PopoverContent-EiklFrna.js} +1 -1
- package/dist/{Progress-CCH-2UBR.js → Progress-FApA9fm_.js} +1 -1
- package/dist/{ScrollingText-7P8skg5W.js → ScrollingText-BFd0i2zJ.js} +2 -2
- package/dist/{SelectScrollDownButton-BwTexKeY.js → SelectScrollDownButton-Dth8-wXQ.js} +4 -4
- package/dist/{Toaster-CY8gJu9E.js → Toaster-Bjlunvq4.js} +1 -1
- package/dist/UnderlineTabs-DAWMLmJG.js +37 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +3 -3
- package/dist/badge.js +1 -1
- package/dist/{button-BlOW34DT.js → button-C0aHmBbt.js} +2 -0
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +5 -5
- package/dist/{check-Nuw7H9Yh.js → check-dwgetki8.js} +1 -1
- package/dist/{chevron-down-Du2b9vY_.js → chevron-down-DILQA1t6.js} +1 -1
- package/dist/{chevron-right-CtDxpE3w.js → chevron-right-fS7fal2t.js} +1 -1
- package/dist/{chevron-up-CenYokvI.js → chevron-up-BtYjYQOS.js} +1 -1
- package/dist/collapsible.js +1 -1
- package/dist/command.js +1 -1
- 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/composables/useLayerTransition.d.ts +20 -10
- package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +26 -4
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +16 -2
- package/dist/components/custom/labeled-field/LabeledInput.vue.d.ts +17 -1
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +2 -0
- package/dist/components/ui/input/Input.vue.d.ts +10 -7
- package/dist/components/ui/label/Label.vue.d.ts +8 -0
- package/dist/components/ui/textarea/Textarea.vue.d.ts +45 -8
- package/dist/composables/dom/index.d.ts +1 -0
- package/dist/composables/dom/useUserInvalidAria.d.ts +32 -0
- package/dist/composables/motion/core/index.d.ts +2 -0
- package/dist/composables/motion/supportsCssTimeline.d.ts +8 -0
- package/dist/composables/motion/useRAFLoop.d.ts +7 -0
- package/dist/composables/motion/useScrollProgress.d.ts +6 -2
- package/dist/composables/motion/useStaggerReveal.d.ts +6 -0
- package/dist/composables/motion/useViewTransition.d.ts +31 -0
- package/dist/composables/motion/useYieldToMain.d.ts +29 -0
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +3 -3
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +2 -2
- package/dist/{createLucideIcon-rHu18UQW.js → createLucideIcon-Bn9a1b70.js} +2 -2
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +196 -177
- package/dist/dom.js +5 -4
- package/dist/{dropdown-menu-gHSkffW7.js → dropdown-menu-BvRUamNs.js} +4 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +4 -4
- package/dist/forms.d.ts +1 -0
- package/dist/forms.js +47 -42
- package/dist/glass-carousel.js +1 -1
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +156 -275
- package/dist/glyph-face.js +2 -2
- package/dist/header-ribbon.js +1 -1
- 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 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +96 -57
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/{minimize-2-C_oyKVwZ.js → minimize-2-LsCJ_eNt.js} +1 -1
- package/dist/motion-core.js +135 -98
- package/dist/motion.js +3 -3
- package/dist/notification.js +1 -1
- package/dist/number-field.d.ts +1 -0
- package/dist/number-field.js +2 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +3 -3
- package/dist/scrolling-text.js +1 -1
- package/dist/{search-7XEx_6hq.js → search-DBAiUABx.js} +1 -1
- package/dist/search.js +7 -7
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-BsBdO5jq.js → sheet-CukNDezz.js} +53 -53
- package/dist/sheet.js +1 -1
- package/dist/{slider-BQaLYFLh.js → slider-DJvHkTRe.js} +3 -3
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/styles/animations.css +77 -0
- package/dist/styles/cards.css +6 -2
- package/dist/styles/dock.css +37 -14
- package/dist/styles/glass.css +89 -6
- package/dist/styles/index.css +10 -1
- package/dist/styles/scroll-driven.css +72 -0
- package/dist/styles/theme.css +3 -0
- package/dist/styles/tokens.css +237 -24
- package/dist/styles/typography.css +21 -0
- package/dist/styles/utilities.css +176 -23
- package/dist/styles/view-transition.css +62 -0
- package/dist/switch.d.ts +1 -0
- package/dist/switch.js +2 -0
- package/dist/tabs.js +40 -36
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-2l13GibX.js → useAnimatedNumber-DKQYVB7s.js} +1 -1
- package/dist/{useConfiguratorState-BpZi8QJu.js → useConfiguratorState-BR5vUDL8.js} +4 -4
- package/dist/{useIdleReady-DlzJicQH.js → useIdleReady-Cmkhm03v.js} +1 -1
- package/dist/{useTouchGate-BhhEMlwJ.js → useTouchGate-D9Zvrzyc.js} +1 -1
- package/dist/useUserInvalidAria-DVu1eTXG.js +29 -0
- package/dist/useViewTransition-DYIK6Gzb.js +16 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/moveBefore.d.ts +15 -0
- package/dist/{x-Cb3NE2Ne.js → x-q7pJa83X.js} +1 -1
- package/package.json +17 -3
- package/src/styles/animations.css +77 -0
- package/src/styles/cards.css +6 -2
- package/src/styles/dock.css +37 -14
- package/src/styles/glass.css +89 -6
- package/src/styles/index.css +10 -1
- package/src/styles/scroll-driven.css +72 -0
- package/src/styles/theme.css +3 -0
- package/src/styles/tokens.css +237 -24
- package/src/styles/typography.css +21 -0
- package/src/styles/utilities.css +176 -23
- package/src/styles/view-transition.css +62 -0
- package/dist/HoverPopover-Btv4RQfv.js +0 -80
- package/dist/Label-C8QMJSsf.js +0 -32
- package/dist/UnderlineTabs-BtrUcXn-.js +0 -64
- /package/dist/{CollapsibleContent-DHRuXE3P.js → CollapsibleContent-CVMOcYlV.js} +0 -0
- /package/dist/{ContextMenuContent-CvXfU5qz.js → ContextMenuContent-otjFIu8v.js} +0 -0
- /package/dist/{HoverCardContent-4nN5-5bz.js → HoverCardContent-DaGrgJBO.js} +0 -0
- /package/dist/{InstrumentChassis-DOaVYyWq.js → InstrumentChassis-CnHTMxds.js} +0 -0
- /package/dist/{InstrumentRail-jHDqXj70.js → InstrumentRail-C6dEbi8E.js} +0 -0
- /package/dist/{ModalOverlay-DKLVY-cj.js → ModalOverlay-iWiAgbYH.js} +0 -0
- /package/dist/{PaperBackdrop-Bc2drCqJ.js → PaperBackdrop-CeZ-w0R0.js} +0 -0
- /package/dist/{SelectGroup-O69GTQ77.js → SelectGroup-DdR4tdDY.js} +0 -0
- /package/dist/{SelectSeparator-GTHxKO0a.js → SelectSeparator-CXm_hlqA.js} +0 -0
- /package/dist/{Separator-_NCypg_C.js → Separator-D8AUMhxY.js} +0 -0
- /package/dist/{Switch-CL0uxu8F.js → Switch-Cr1t_F_U.js} +0 -0
- /package/dist/{ToggleGroupItem-BYG_8M9M.js → ToggleGroupItem-OesUouE7.js} +0 -0
- /package/dist/{TooltipProvider-C5QLSPto.js → TooltipProvider-DE78vbEP.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-n-_DRHWS.js → _plugin-vue_export-helper-Dq1MygBL.js} +0 -0
- /package/dist/{badge-BbxVKZfw.js → badge-x46my_Fo.js} +0 -0
- /package/dist/{constants-D-8FN28s.js → constants-DwBwnG8N.js} +0 -0
- /package/dist/{dockContext-BDGSrwsV.js → dockContext-D5NZCWJs.js} +0 -0
- /package/dist/{keys-DVkcUktU.js → keys-CaTQS-vx.js} +0 -0
- /package/dist/{menuItemVariants-B2nDL7zH.js → menuItemVariants-BsbGNq9C.js} +0 -0
- /package/dist/{presets-BMzCDrmR.js → presets-a-D93K1S.js} +0 -0
- /package/dist/{useGlassRenderer-DMDdMH55.js → useGlassRenderer-Ds-nmrGz.js} +0 -0
- /package/dist/{useGlobalDark-PMiP5Jku.js → useGlobalDark-B0WvLJE3.js} +0 -0
- /package/dist/{useIntersectionPause-CXYfYg_C.js → useIntersectionPause-IY2CwPQb.js} +0 -0
- /package/dist/{useInterval-COlTCeVa.js → useInterval-DVgGUf_y.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CPO4AhLx.js → useKeyboardShortcuts-Dpw_RUcB.js} +0 -0
- /package/dist/{useResizeObserver-F4aRR4Cj.js → useResizeObserver-Cg9npuM3.js} +0 -0
- /package/dist/{useSortable-Ck0rBJ4g.js → useSortable-Cq2Y1JLO.js} +0 -0
- /package/dist/{useSpringMount-BTRBNzXP.js → useSpringMount-Cfk1XK1R.js} +0 -0
- /package/dist/{useTimer-lp5NlH4w.js → useTimer-NAaj9zNq.js} +0 -0
package/src/styles/utilities.css
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
font-size: var(--type-body);
|
|
34
34
|
color: var(--muted-foreground);
|
|
35
35
|
line-height: 1.5;
|
|
36
|
+
text-wrap: pretty; /* AQ.W3 §W3.3 — prose-register orphan/river fix */
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
/* ── Labeled-field label (V.W3.T5 / A5 §5.5) ────────────────────
|
|
@@ -44,10 +45,49 @@
|
|
|
44
45
|
.labeled-field-label {
|
|
45
46
|
font-family: var(--font-display);
|
|
46
47
|
font-size: var(--type-body);
|
|
47
|
-
color
|
|
48
|
+
/* AQ.W4 §W3.1c — the label color reads the group-state variable so the
|
|
49
|
+
`:has(:user-invalid)` rule below reddens it (one source of the
|
|
50
|
+
override value, shared with the `.has-error` fallback class). */
|
|
51
|
+
color: var(--field-label-color, var(--muted-foreground));
|
|
48
52
|
cursor: help;
|
|
49
53
|
}
|
|
50
54
|
|
|
55
|
+
/* AQ.W4 §W3.1c — LabeledField group error highlight. When any descendant
|
|
56
|
+
control is `:user-invalid`, the whole field group marks (the label
|
|
57
|
+
reddens via `--field-label-color`, the error region reveals). Scoped to
|
|
58
|
+
`.labeled-field` — never `body`, never a bare element. `:has()` Baseline
|
|
59
|
+
Widely; the `.has-error` / `.has-valid` fallback classes (toggled by the
|
|
60
|
+
`useUserInvalidAria` fallback path) are the SOLE degradation for engines
|
|
61
|
+
without `:has()`/`:user-invalid` (not a live+dead alias). */
|
|
62
|
+
.labeled-field {
|
|
63
|
+
--field-label-color: var(--muted-foreground);
|
|
64
|
+
}
|
|
65
|
+
.labeled-field:has(:user-invalid),
|
|
66
|
+
.labeled-field.has-error {
|
|
67
|
+
--field-label-color: var(--destructive);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* The error region: hidden at rest, revealed once a descendant is
|
|
71
|
+
`:user-invalid` (or the `.has-error` fallback class is set). Non-color
|
|
72
|
+
reinforcement for the validity tint — the error TEXT is the primary
|
|
73
|
+
cue, the border/bg shift the supplement (forms guide: never color
|
|
74
|
+
alone). */
|
|
75
|
+
.labeled-field-error {
|
|
76
|
+
display: none;
|
|
77
|
+
font-size: var(--type-small);
|
|
78
|
+
color: var(--destructive);
|
|
79
|
+
margin-block-start: 0.25rem;
|
|
80
|
+
}
|
|
81
|
+
.labeled-field:has(:user-invalid) .labeled-field-error,
|
|
82
|
+
.labeled-field.has-error .labeled-field-error {
|
|
83
|
+
display: block;
|
|
84
|
+
}
|
|
85
|
+
/* Hide the error text once the field reads valid (the user corrected it). */
|
|
86
|
+
.labeled-field:has(:user-valid) .labeled-field-error,
|
|
87
|
+
.labeled-field.has-valid .labeled-field-error {
|
|
88
|
+
display: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
51
91
|
/* ── Popover-content recipe (V.W3.T3 / A5 §3.2) ─────────────────
|
|
52
92
|
Canonical recipe for floating-tier portal containers
|
|
53
93
|
(PopoverContent, DropdownMenuContent, SelectContent, etc.).
|
|
@@ -72,9 +112,28 @@
|
|
|
72
112
|
display: none;
|
|
73
113
|
}
|
|
74
114
|
|
|
115
|
+
/* AQ.W3 §W3.4 — tokenized thin scrollbar. Standard `scrollbar-width` +
|
|
116
|
+
`scrollbar-color` (Baseline Widely, Chromium 121+) is the primary path,
|
|
117
|
+
reading `--scrollbar-{thumb,track}` (auto-dark via `--muted-foreground`).
|
|
118
|
+
The legacy `::-webkit-scrollbar` family is the SOLE fallback for older
|
|
119
|
+
WebKit/Blink, gated on `@supports not (scrollbar-color: auto)` so modern
|
|
120
|
+
engines never paint it — not a live+dead alias. */
|
|
75
121
|
.scrollbar-thin {
|
|
76
122
|
scrollbar-width: thin;
|
|
77
|
-
scrollbar-color:
|
|
123
|
+
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
|
|
124
|
+
}
|
|
125
|
+
@supports not (scrollbar-color: auto) {
|
|
126
|
+
.scrollbar-thin::-webkit-scrollbar {
|
|
127
|
+
width: 8px;
|
|
128
|
+
height: 8px;
|
|
129
|
+
}
|
|
130
|
+
.scrollbar-thin::-webkit-scrollbar-track {
|
|
131
|
+
background: var(--scrollbar-track);
|
|
132
|
+
}
|
|
133
|
+
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
134
|
+
background: var(--scrollbar-thumb);
|
|
135
|
+
border-radius: var(--radius-pill);
|
|
136
|
+
}
|
|
78
137
|
}
|
|
79
138
|
|
|
80
139
|
/* ── Focus ring — auto-activates on :focus-visible ── */
|
|
@@ -95,6 +154,8 @@
|
|
|
95
154
|
|
|
96
155
|
/* ── Interactive item (hover bg + focus ring + active scale) ── */
|
|
97
156
|
.interactive-item {
|
|
157
|
+
/* AQ.W3 §W3.2 identity base */
|
|
158
|
+
scale: 1;
|
|
98
159
|
border-radius: var(--radius-lg);
|
|
99
160
|
user-select: none;
|
|
100
161
|
transition:
|
|
@@ -102,7 +163,7 @@
|
|
|
102
163
|
color var(--duration-fast) var(--ease-standard),
|
|
103
164
|
border-color var(--duration-fast) var(--ease-standard),
|
|
104
165
|
box-shadow var(--duration-fast) var(--ease-standard),
|
|
105
|
-
|
|
166
|
+
scale var(--duration-fast) var(--ease-standard);
|
|
106
167
|
}
|
|
107
168
|
.interactive-item:hover {
|
|
108
169
|
background-color: color-mix(in srgb, var(--accent) 50%, transparent);
|
|
@@ -112,7 +173,7 @@
|
|
|
112
173
|
box-shadow: var(--focus-ring-shadow);
|
|
113
174
|
}
|
|
114
175
|
.interactive-item:active {
|
|
115
|
-
|
|
176
|
+
scale: 0.98;
|
|
116
177
|
}
|
|
117
178
|
.interactive-item:disabled,
|
|
118
179
|
.interactive-item[data-disabled] {
|
|
@@ -136,15 +197,19 @@
|
|
|
136
197
|
consumer's own hover/active bg-tint cascade to acknowledge the
|
|
137
198
|
press. */
|
|
138
199
|
.tap-squish {
|
|
139
|
-
|
|
200
|
+
/* AQ.W3 §W3.2 identity base */
|
|
201
|
+
scale: 1;
|
|
202
|
+
transition: scale var(--duration-fast) var(--spring-snappy);
|
|
140
203
|
transform-origin: center center;
|
|
141
204
|
}
|
|
142
205
|
.tap-squish:active {
|
|
143
|
-
|
|
206
|
+
scale: var(--scale-press);
|
|
144
207
|
}
|
|
145
208
|
@media (prefers-reduced-motion: reduce) {
|
|
146
209
|
.tap-squish:active {
|
|
147
|
-
transform: none
|
|
210
|
+
/* Reset to the longhand identity (not `transform: none`) so the
|
|
211
|
+
press scale is neutralized under PRM. */
|
|
212
|
+
scale: 1;
|
|
148
213
|
}
|
|
149
214
|
}
|
|
150
215
|
|
|
@@ -212,6 +277,29 @@
|
|
|
212
277
|
-webkit-mask-image: linear-gradient(to bottom, transparent, black var(--mask-fade-width), black calc(100% - var(--mask-fade-width)), transparent);
|
|
213
278
|
}
|
|
214
279
|
|
|
280
|
+
/* ── Deferred section — render-skip an offscreen subtree (AQ.W3 §5) ──────
|
|
281
|
+
`content-visibility: auto` skips layout/paint/style of an offscreen
|
|
282
|
+
subtree — the INP-under-load lever (fourier γ, muster, speedtest, words).
|
|
283
|
+
`contain-intrinsic-size: auto <estimate>` is measurement-safe: the `auto`
|
|
284
|
+
prefix makes the engine REMEMBER the last-rendered size (no scroll-jump on
|
|
285
|
+
re-entry); plain `<estimate>` freezes the section + thrashes the scrollbar
|
|
286
|
+
— the trap this closes. Estimate is token-driven (`--deferred-section-
|
|
287
|
+
size`, default 30rem). `.deferred-section--cached` →
|
|
288
|
+
`content-visibility: hidden` (always skipped, state CACHED — cheaper to
|
|
289
|
+
re-show than `display:none`). Baseline Widely; unsupporting engines render
|
|
290
|
+
normally. JS HOOK: the engine fires `contentvisibilityautostatechange`
|
|
291
|
+
{ skipped } at the render-skip boundary — pair with `useRAFLoop`
|
|
292
|
+
pause/resume: `el.addEventListener('contentvisibilityautostatechange',
|
|
293
|
+
e => e.skipped ? loop.pause() : loop.resume())`. */
|
|
294
|
+
.deferred-section {
|
|
295
|
+
content-visibility: auto;
|
|
296
|
+
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
297
|
+
}
|
|
298
|
+
.deferred-section--cached {
|
|
299
|
+
content-visibility: hidden;
|
|
300
|
+
contain-intrinsic-size: auto var(--deferred-section-size, 30rem);
|
|
301
|
+
}
|
|
302
|
+
|
|
215
303
|
/* ── Card scroll-timeline host (AI.W1-α) ───────────────────────────────
|
|
216
304
|
Canonical scroll-overflow host that emits the `--card-scroll` named
|
|
217
305
|
scroll-timeline consumed by `<CardHeader shrink>`. Apply to the
|
|
@@ -273,6 +361,8 @@
|
|
|
273
361
|
align-items: center;
|
|
274
362
|
justify-content: center;
|
|
275
363
|
text-align: center;
|
|
364
|
+
/* AQ.W3 §W3.2 identity base */
|
|
365
|
+
scale: 1;
|
|
276
366
|
gap: var(--metric-badge-gap, 0.125rem);
|
|
277
367
|
max-width: var(--metric-badge-max-width, 8rem);
|
|
278
368
|
min-height: var(--metric-badge-min-height, 1.5rem);
|
|
@@ -297,7 +387,7 @@
|
|
|
297
387
|
background var(--duration-fast) var(--ease-standard),
|
|
298
388
|
border-color var(--duration-fast) var(--ease-standard),
|
|
299
389
|
box-shadow var(--duration-fast) var(--ease-standard),
|
|
300
|
-
|
|
390
|
+
scale var(--duration-fast) var(--ease-standard);
|
|
301
391
|
}
|
|
302
392
|
|
|
303
393
|
.metric-badge > span {
|
|
@@ -310,11 +400,11 @@
|
|
|
310
400
|
border-color: var(--metric-badge-hover-border, var(--glass-border-resting));
|
|
311
401
|
background: var(--metric-badge-hover-bg, var(--glass-bg-resting));
|
|
312
402
|
box-shadow: var(--metric-badge-hover-shadow, 0 2px 10px color-mix(in srgb, var(--shadow-color) 12%, transparent), var(--glass-highlight));
|
|
313
|
-
|
|
403
|
+
scale: var(--metric-badge-hover-scale, 1.02);
|
|
314
404
|
}
|
|
315
405
|
|
|
316
406
|
.metric-badge:active {
|
|
317
|
-
|
|
407
|
+
scale: var(--metric-badge-press-scale, 0.96);
|
|
318
408
|
}
|
|
319
409
|
|
|
320
410
|
.metric-badge:focus-visible {
|
|
@@ -464,20 +554,24 @@
|
|
|
464
554
|
The shared transition is expressed once over the family; the three
|
|
465
555
|
:hover rules carry the per-level translate + shadow. */
|
|
466
556
|
:where(.hover-lift, .hover-lift-md, .hover-lift-lg) {
|
|
467
|
-
|
|
557
|
+
/* Individual-transform identity base (AQ.W3 §W3.2) — `translate: 0` at
|
|
558
|
+
rest mints the stacking context once so the hover lift does not
|
|
559
|
+
flicker it into being. */
|
|
560
|
+
translate: 0;
|
|
561
|
+
transition-property: translate, box-shadow;
|
|
468
562
|
transition-duration: var(--duration-normal);
|
|
469
563
|
transition-timing-function: var(--ease-standard);
|
|
470
564
|
}
|
|
471
565
|
.hover-lift:hover:not(:disabled):not([aria-disabled='true']) {
|
|
472
|
-
|
|
566
|
+
translate: 0 var(--lift-sm);
|
|
473
567
|
box-shadow: var(--shadow-md);
|
|
474
568
|
}
|
|
475
569
|
.hover-lift-md:hover:not(:disabled):not([aria-disabled='true']) {
|
|
476
|
-
|
|
570
|
+
translate: 0 var(--lift-md);
|
|
477
571
|
box-shadow: var(--shadow-md);
|
|
478
572
|
}
|
|
479
573
|
.hover-lift-lg:hover:not(:disabled):not([aria-disabled='true']) {
|
|
480
|
-
|
|
574
|
+
translate: 0 var(--lift-lg);
|
|
481
575
|
box-shadow: var(--shadow-lg);
|
|
482
576
|
}
|
|
483
577
|
|
|
@@ -494,17 +588,20 @@
|
|
|
494
588
|
:where(.shadow-cartoon-sm, .shadow-cartoon-md, .shadow-cartoon-lg) {
|
|
495
589
|
border: 2px solid var(--border);
|
|
496
590
|
}
|
|
591
|
+
/* Static cartoon-stamp lift (AQ.W3 §W3.2). NOT state-driven, so the
|
|
592
|
+
identity base is not strictly required, but the `translate:` longhand
|
|
593
|
+
keeps the family uniform with the state-driven sites above. */
|
|
497
594
|
.shadow-cartoon-sm {
|
|
498
595
|
box-shadow: var(--shadow-cartoon-sm);
|
|
499
|
-
|
|
596
|
+
translate: 0 -1px;
|
|
500
597
|
}
|
|
501
598
|
.shadow-cartoon-md {
|
|
502
599
|
box-shadow: var(--shadow-cartoon-md);
|
|
503
|
-
|
|
600
|
+
translate: 0 -1px;
|
|
504
601
|
}
|
|
505
602
|
.shadow-cartoon-lg {
|
|
506
603
|
box-shadow: var(--shadow-cartoon-lg);
|
|
507
|
-
|
|
604
|
+
translate: 0 -2px;
|
|
508
605
|
}
|
|
509
606
|
|
|
510
607
|
/* ── Divider utilities ── */
|
|
@@ -542,10 +639,13 @@
|
|
|
542
639
|
`class="scale-on-hover"`; transition + easing bind to the canonical
|
|
543
640
|
`--duration-fast` + `--ease-standard` tokens. */
|
|
544
641
|
@utility scale-on-hover {
|
|
545
|
-
|
|
642
|
+
/* Individual-transform identity base (AQ.W3 §W3.2). Transition the `scale`
|
|
643
|
+
longhand (not `transform`) so the migrated hover scale animates. */
|
|
644
|
+
scale: 1;
|
|
645
|
+
transition: scale var(--duration-fast) var(--ease-standard);
|
|
546
646
|
|
|
547
647
|
&:hover {
|
|
548
|
-
|
|
648
|
+
scale: var(--scale-hover);
|
|
549
649
|
}
|
|
550
650
|
}
|
|
551
651
|
|
|
@@ -802,18 +902,20 @@
|
|
|
802
902
|
this is the canonical opt-in that adds the spring-hover lift. Consumed by
|
|
803
903
|
keyframes.js at 7 sites. */
|
|
804
904
|
@utility btn-interactive {
|
|
905
|
+
/* AQ.W3 §W3.2 identity base */
|
|
906
|
+
scale: 1;
|
|
805
907
|
transition:
|
|
806
908
|
background-color var(--duration-fast) var(--ease-standard),
|
|
807
909
|
color var(--duration-fast) var(--ease-standard),
|
|
808
|
-
|
|
910
|
+
scale var(--duration-fast) var(--ease-standard),
|
|
809
911
|
opacity var(--duration-fast) var(--ease-standard);
|
|
810
912
|
|
|
811
913
|
&:hover {
|
|
812
|
-
|
|
914
|
+
scale: var(--scale-hover);
|
|
813
915
|
}
|
|
814
916
|
|
|
815
917
|
&:active {
|
|
816
|
-
|
|
918
|
+
scale: var(--scale-press);
|
|
817
919
|
}
|
|
818
920
|
|
|
819
921
|
&:disabled {
|
|
@@ -829,7 +931,7 @@
|
|
|
829
931
|
transition:
|
|
830
932
|
background-color var(--duration-fast) var(--ease-standard),
|
|
831
933
|
color var(--duration-fast) var(--ease-standard),
|
|
832
|
-
|
|
934
|
+
scale var(--duration-fast) var(--ease-standard),
|
|
833
935
|
opacity var(--duration-fast) var(--ease-standard),
|
|
834
936
|
box-shadow var(--duration-fast) var(--ease-standard);
|
|
835
937
|
}
|
|
@@ -856,3 +958,54 @@ html.no-transition *::before,
|
|
|
856
958
|
html.no-transition *::after {
|
|
857
959
|
transition-duration: 0s !important;
|
|
858
960
|
}
|
|
961
|
+
|
|
962
|
+
/* ── Forced-colors restoration (AQ.W2 §5) ──────────────────────────────
|
|
963
|
+
Windows High Contrast / forced-colors mode STRIPS `box-shadow` — so the
|
|
964
|
+
glass focus rings (box-shadow + `outline: none`) vanish, leaving keyboard
|
|
965
|
+
users with no visible focus (a WCAG 2.4.7 failure forced-colors exposes).
|
|
966
|
+
Restore a real `outline` keyed to the system `Highlight` color (outline
|
|
967
|
+
survives forced-colors; box-shadow does not). The box-shadow ring stays the
|
|
968
|
+
primary in normal mode (it carries the glass aesthetic) — these two are
|
|
969
|
+
mutually exclusive by media query, NOT a parallel path.
|
|
970
|
+
|
|
971
|
+
`forced-color-adjust: none` is deliberately NOT used — glass-ui's
|
|
972
|
+
glassmorphic chrome is decorative and yields to the user's forced palette
|
|
973
|
+
(css forced-colors guidance). Baseline Widely Available; this IS the
|
|
974
|
+
fallback mechanism (it only activates under forced-colors), so no nested
|
|
975
|
+
guard. */
|
|
976
|
+
@media (forced-colors: active) {
|
|
977
|
+
.focus-ring:focus-visible,
|
|
978
|
+
.glass-btn:focus-visible,
|
|
979
|
+
.interactive-item:focus-visible,
|
|
980
|
+
.input-pill:focus,
|
|
981
|
+
.input-pill:focus-visible {
|
|
982
|
+
outline: 2px solid Highlight;
|
|
983
|
+
outline-offset: 2px;
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/* Structural edges borne ONLY by box-shadow (the hairline catch-light /
|
|
987
|
+
glass pill edge / card plate) also vanish — restore a real border so
|
|
988
|
+
the silhouette survives. CanvasText is the system text/border color. */
|
|
989
|
+
.hairline-accent,
|
|
990
|
+
.glass-dock,
|
|
991
|
+
.glass-card {
|
|
992
|
+
border: 1px solid CanvasText;
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
/* ── Coarse-pointer touch-target floor (AQ.W3 §7) ───────────────────────────
|
|
997
|
+
General-surface companion to the dock-scoped R0G-6 floor (dock.css). On
|
|
998
|
+
coarse pointers the small icon-button/trigger surfaces OUTSIDE the dock lift
|
|
999
|
+
to the WCAG 2.5.5 (44px) minimum — ONE amendment retiring the per-consumer
|
|
1000
|
+
`min-h-[44px]` one-liners. Token-driven (`--touch-target`); fine-pointer
|
|
1001
|
+
byte-identical. Targets `Button size="icon"` (via the `data-size="icon"`
|
|
1002
|
+
attr Button.vue reflects), ExpandableContainer + ResponsiveTabs triggers.
|
|
1003
|
+
`min-block/inline-size` only RAISES — a larger explicit size is never lost. */
|
|
1004
|
+
@media (pointer: coarse) {
|
|
1005
|
+
[data-size="icon"],
|
|
1006
|
+
.expandable-container__trigger,
|
|
1007
|
+
.responsive-tabs__trigger {
|
|
1008
|
+
min-block-size: var(--touch-target, 2.75rem);
|
|
1009
|
+
min-inline-size: var(--touch-target, 2.75rem);
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* view-transition.css — the View-Transitions CSS substrate (AQ.W5 §Design 3b).
|
|
3
|
+
*
|
|
4
|
+
* Cascade rung after scroll-driven.css. Token-first shared-class recipes for the
|
|
5
|
+
* group-transition case — the substrate the `useViewTransition` helper
|
|
6
|
+
* (`@mkbabb/glass-ui/motion-core`) pairs with. The helper wraps the DOM
|
|
7
|
+
* mutation; this CSS owns the LOOK of the cross-fade/slide. The consumer adds
|
|
8
|
+
* `view-transition-class: gl-list-item` plus a UNIQUE `view-transition-name`
|
|
9
|
+
* per tracked element (the runtime MANDATORY — ≤ 1 element per name per state,
|
|
10
|
+
* else the transition is skipped silently).
|
|
11
|
+
*
|
|
12
|
+
* Consumed across the AQ↔muster J seam: J.W5's verdict re-rank tags each row
|
|
13
|
+
* `view-transition-class: gl-list-item; view-transition-name: row-<id>` and
|
|
14
|
+
* calls `startViewTransition(() => render())`; the dock layer swap (W6) reuses
|
|
15
|
+
* the same group recipe.
|
|
16
|
+
*
|
|
17
|
+
* Baseline: same-document `view-transitions` + `view-transition-class` = Newly
|
|
18
|
+
* Available. The helper's instant-update fallback (calls `mutate()` synchronously
|
|
19
|
+
* when `document.startViewTransition` is absent) is the ≤ 20-LOC feature-detected
|
|
20
|
+
* fallback — no CSS counterpart is needed because a non-supporting engine simply
|
|
21
|
+
* never generates the `::view-transition*` pseudo tree.
|
|
22
|
+
*
|
|
23
|
+
* Reduced-motion: `animation: none` on every VT pseudo. The native swap still
|
|
24
|
+
* runs (state mutates instantly), just without motion — the correct PRM degrade.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
@media (prefers-reduced-motion: reduce) {
|
|
28
|
+
::view-transition-group(*),
|
|
29
|
+
::view-transition-old(*),
|
|
30
|
+
::view-transition-new(*) {
|
|
31
|
+
animation: none !important;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Shared group class — consumers add `view-transition-class: gl-list-item` on
|
|
36
|
+
* each tracked element plus a unique `view-transition-name` per element. */
|
|
37
|
+
::view-transition-group(.gl-list-item) {
|
|
38
|
+
animation-duration: var(--vt-duration, var(--duration-normal));
|
|
39
|
+
animation-timing-function: var(--vt-ease, var(--ease-apple-spring));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Added / removed members — the `:only-child` trick from the group guide: a
|
|
43
|
+
* member present in only ONE of the old/new states slides instead of cross-fades. */
|
|
44
|
+
::view-transition-new(.gl-list-item):only-child { animation-name: gl-vt-slide-in; }
|
|
45
|
+
::view-transition-old(.gl-list-item):only-child { animation-name: gl-vt-slide-out; }
|
|
46
|
+
|
|
47
|
+
/* AQ.W6 §Design 7 — the dock layer group recipe. `<GlassDock>` (.dock-layers)
|
|
48
|
+
* and `<DockLayerGroup>` (.dock-layer-stack) carry `view-transition-class:
|
|
49
|
+
* gl-dock-layer` + a page-unique `view-transition-name` on a View-Transitions
|
|
50
|
+
* engine, so the collapsed↔expanded width + the layer-pane swap morph as a VT
|
|
51
|
+
* group instead of the JS FLIP. The `--dock-motion-resize` spring maps here to
|
|
52
|
+
* `--vt-ease`; both default to the apple-spring. PRM zeroes the animation above. */
|
|
53
|
+
::view-transition-group(.gl-dock-layer) {
|
|
54
|
+
animation-duration: var(--vt-duration, var(--duration-normal));
|
|
55
|
+
animation-timing-function: var(--vt-ease, var(--ease-apple-spring));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@keyframes gl-vt-slide-in { from { opacity: 0; translate: 0 var(--vt-rise, 8px); } }
|
|
59
|
+
@keyframes gl-vt-slide-out { to { opacity: 0; translate: 0 var(--vt-rise, 8px); } }
|
|
60
|
+
|
|
61
|
+
/* Keep the non-transitioned UI interactive while the snapshot animates. */
|
|
62
|
+
::view-transition { pointer-events: none; }
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
|
-
import { i as t } from "./dockContext-BDGSrwsV.js";
|
|
3
|
-
import { computed as n, createBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, mergeProps as s, openBlock as c, ref as l, renderSlot as u, toDisplayString as d, unref as f, watch as p, withCtx as m } from "vue";
|
|
4
|
-
import { HoverCardContent as h, HoverCardPortal as g, HoverCardRoot as _, HoverCardTrigger as v } from "reka-ui";
|
|
5
|
-
//#region src/components/custom/hover-popover/HoverPopover.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
-
var y = { class: "hover-popover-label" }, b = /* @__PURE__ */ o({
|
|
7
|
-
__name: "HoverPopover",
|
|
8
|
-
props: {
|
|
9
|
-
content: {},
|
|
10
|
-
open: { type: Boolean },
|
|
11
|
-
side: { default: "top" },
|
|
12
|
-
align: { default: "center" },
|
|
13
|
-
hoverOpenDelay: { default: 250 },
|
|
14
|
-
closeDelay: { default: 150 },
|
|
15
|
-
sideOffset: { default: 6 },
|
|
16
|
-
class: { type: [
|
|
17
|
-
Boolean,
|
|
18
|
-
null,
|
|
19
|
-
String,
|
|
20
|
-
Object,
|
|
21
|
-
Array
|
|
22
|
-
] },
|
|
23
|
-
keepDockOpen: {
|
|
24
|
-
type: Boolean,
|
|
25
|
-
default: !1
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
emits: ["update:open"],
|
|
29
|
-
setup(o, { emit: b }) {
|
|
30
|
-
let x = b, S = o, C = n(() => e("z-popover hover-popover-panel popover-animate", S.class)), w = l(S.open ?? !1);
|
|
31
|
-
p(() => S.open, (e) => {
|
|
32
|
-
typeof e == "boolean" && e !== w.value && (w.value = e);
|
|
33
|
-
}), p(w, (e) => {
|
|
34
|
-
x("update:open", e);
|
|
35
|
-
});
|
|
36
|
-
let T = t(), E = !1;
|
|
37
|
-
p(w, (e) => {
|
|
38
|
-
S.keepDockOpen && (e && !E ? (T?.keepOpen(), E = !0) : !e && E && (T?.release(), E = !1));
|
|
39
|
-
});
|
|
40
|
-
let D = n(() => S.keepDockOpen && T?.id ? {
|
|
41
|
-
"data-glass-dock-portal": "",
|
|
42
|
-
"data-glass-dock-owner": T.id
|
|
43
|
-
} : {});
|
|
44
|
-
return (e, t) => (c(), r(f(_), {
|
|
45
|
-
open: w.value,
|
|
46
|
-
"onUpdate:open": t[0] ||= (e) => w.value = e,
|
|
47
|
-
"open-delay": o.hoverOpenDelay,
|
|
48
|
-
"close-delay": o.closeDelay
|
|
49
|
-
}, {
|
|
50
|
-
default: m(() => [a(f(v), { "as-child": "" }, {
|
|
51
|
-
default: m(() => [u(e.$slots, "trigger", {}, () => [u(e.$slots, "default")])]),
|
|
52
|
-
_: 3
|
|
53
|
-
}), a(f(g), null, {
|
|
54
|
-
default: m(() => [a(f(h), s({
|
|
55
|
-
side: o.side,
|
|
56
|
-
align: o.align,
|
|
57
|
-
"side-offset": o.sideOffset,
|
|
58
|
-
"avoid-collisions": !0,
|
|
59
|
-
class: C.value
|
|
60
|
-
}, D.value), {
|
|
61
|
-
default: m(() => [u(e.$slots, "content", {}, () => [i("span", y, d(o.content), 1)])]),
|
|
62
|
-
_: 3
|
|
63
|
-
}, 16, [
|
|
64
|
-
"side",
|
|
65
|
-
"align",
|
|
66
|
-
"side-offset",
|
|
67
|
-
"class"
|
|
68
|
-
])]),
|
|
69
|
-
_: 3
|
|
70
|
-
})]),
|
|
71
|
-
_: 3
|
|
72
|
-
}, 8, [
|
|
73
|
-
"open",
|
|
74
|
-
"open-delay",
|
|
75
|
-
"close-delay"
|
|
76
|
-
]));
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
//#endregion
|
|
80
|
-
export { b as t };
|
package/dist/Label-C8QMJSsf.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
|
-
import { computed as t, createBlock as n, defineComponent as r, mergeProps as i, openBlock as a, renderSlot as o, unref as s, withCtx as c } from "vue";
|
|
3
|
-
import { Label as l } from "reka-ui";
|
|
4
|
-
//#endregion
|
|
5
|
-
//#region src/components/ui/label/Label.vue
|
|
6
|
-
var u = /* @__PURE__ */ r({
|
|
7
|
-
__name: "Label",
|
|
8
|
-
props: {
|
|
9
|
-
for: {},
|
|
10
|
-
asChild: { type: Boolean },
|
|
11
|
-
as: {},
|
|
12
|
-
class: { type: [
|
|
13
|
-
Boolean,
|
|
14
|
-
null,
|
|
15
|
-
String,
|
|
16
|
-
Object,
|
|
17
|
-
Array
|
|
18
|
-
] }
|
|
19
|
-
},
|
|
20
|
-
setup(r) {
|
|
21
|
-
let u = r, d = t(() => {
|
|
22
|
-
let { class: e, ...t } = u;
|
|
23
|
-
return t;
|
|
24
|
-
});
|
|
25
|
-
return (t, r) => (a(), n(s(l), i(d.value, { class: s(e)("text-small font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", u.class) }), {
|
|
26
|
-
default: c(() => [o(t.$slots, "default")]),
|
|
27
|
-
_: 3
|
|
28
|
-
}, 16, ["class"]));
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
//#endregion
|
|
32
|
-
export { u as t };
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./cn-DJXf4yaB.js";
|
|
2
|
-
import { t } from "./_plugin-vue_export-helper-n-_DRHWS.js";
|
|
3
|
-
import { Fragment as n, createElementBlock as r, createElementVNode as i, defineComponent as a, nextTick as o, normalizeClass as s, normalizeStyle as c, onMounted as l, onUnmounted as u, openBlock as d, ref as f, renderList as p, toDisplayString as m, unref as h, watch as g } from "vue";
|
|
4
|
-
//#region src/components/custom/tabs/UnderlineTabs.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var _ = ["aria-selected", "onClick"], v = /* @__PURE__ */ t(/* @__PURE__ */ a({
|
|
6
|
-
__name: "UnderlineTabs",
|
|
7
|
-
props: {
|
|
8
|
-
options: {},
|
|
9
|
-
modelValue: {},
|
|
10
|
-
class: { type: [
|
|
11
|
-
Boolean,
|
|
12
|
-
null,
|
|
13
|
-
String,
|
|
14
|
-
Object,
|
|
15
|
-
Array
|
|
16
|
-
] }
|
|
17
|
-
},
|
|
18
|
-
emits: ["update:modelValue"],
|
|
19
|
-
setup(t, { emit: a }) {
|
|
20
|
-
let v = t, y = a, b = f(null), x = f([]), S = f({
|
|
21
|
-
width: "0px",
|
|
22
|
-
transform: "translateX(0px)"
|
|
23
|
-
});
|
|
24
|
-
function C() {
|
|
25
|
-
let e = v.options.findIndex((e) => e.value === v.modelValue);
|
|
26
|
-
if (e < 0 || !x.value[e]) return;
|
|
27
|
-
let t = x.value[e];
|
|
28
|
-
S.value = {
|
|
29
|
-
width: `${t.offsetWidth}px`,
|
|
30
|
-
transform: `translateX(${t.offsetLeft}px)`
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function w(e) {
|
|
34
|
-
y("update:modelValue", e);
|
|
35
|
-
}
|
|
36
|
-
g(() => v.modelValue, () => o(C)), g(() => v.options, () => o(C), { deep: !0 });
|
|
37
|
-
let T = null;
|
|
38
|
-
return l(() => {
|
|
39
|
-
o(C), b.value && (T = new ResizeObserver(() => C()), T.observe(b.value));
|
|
40
|
-
}), u(() => {
|
|
41
|
-
T?.disconnect();
|
|
42
|
-
}), (a, o) => (d(), r("div", {
|
|
43
|
-
ref_key: "containerRef",
|
|
44
|
-
ref: b,
|
|
45
|
-
role: "tablist",
|
|
46
|
-
class: s(h(e)("underline-tabs", v.class))
|
|
47
|
-
}, [i("div", {
|
|
48
|
-
class: "underline-indicator",
|
|
49
|
-
style: c(S.value)
|
|
50
|
-
}, null, 4), (d(!0), r(n, null, p(t.options, (e, n) => (d(), r("button", {
|
|
51
|
-
key: e.value,
|
|
52
|
-
ref_for: !0,
|
|
53
|
-
ref: (e) => {
|
|
54
|
-
e && (x.value[n] = e);
|
|
55
|
-
},
|
|
56
|
-
class: "underline-tab",
|
|
57
|
-
role: "tab",
|
|
58
|
-
"aria-selected": t.modelValue === e.value ? "true" : "false",
|
|
59
|
-
onClick: (t) => w(e.value)
|
|
60
|
-
}, m(e.label), 9, _))), 128))], 2));
|
|
61
|
-
}
|
|
62
|
-
}), [["__scopeId", "data-v-b77ed368"]]);
|
|
63
|
-
//#endregion
|
|
64
|
-
export { v as t };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{_plugin-vue_export-helper-n-_DRHWS.js → _plugin-vue_export-helper-Dq1MygBL.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|