@vuecs/theme-tailwind 6.0.1 → 6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,UAAU,CAAC;AAGlB,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACtE;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,uDAAuD;AACvD,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAMnF,OAAO,EACH,8BAA8B,EAC9B,oBAAoB,EACpB,gBAAgB,GACnB,MAAM,eAAe,CAAC;AACvB,uHAAuH;AACvH,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,cAA4D,CAAC;AAEjF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,IAAI,KAAK,CA8lC7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,UAAU,CAAC;AAGlB,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACtE;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,uDAAuD;AACvD,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAMnF,OAAO,EACH,8BAA8B,EAC9B,oBAAoB,EACpB,gBAAgB,GACnB,MAAM,eAAe,CAAC;AACvB,uHAAuH;AACvH,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,cAA4D,CAAC;AAEjF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,IAAI,KAAK,CAmpC7C"}
package/dist/index.mjs CHANGED
@@ -89,6 +89,11 @@ function tailwindTheme() {
89
89
  },
90
90
  variants: {
91
91
  size: {
92
+ xs: {
93
+ root: "px-1.5 py-0.5 text-[0.7rem]",
94
+ groupAppend: "px-1.5 text-[0.7rem]",
95
+ groupPrepend: "px-1.5 text-[0.7rem]"
96
+ },
92
97
  sm: {
93
98
  root: "px-2 py-1 text-xs",
94
99
  groupAppend: "px-2 text-xs",
@@ -116,6 +121,10 @@ function tailwindTheme() {
116
121
  group: "inline-flex items-center gap-2"
117
122
  },
118
123
  variants: { size: {
124
+ xs: {
125
+ root: "vc-form-checkbox-xs",
126
+ label: "text-[0.7rem]!"
127
+ },
119
128
  sm: {
120
129
  root: "vc-form-checkbox-sm",
121
130
  label: "text-xs!"
@@ -137,6 +146,10 @@ function tailwindTheme() {
137
146
  group: "inline-flex items-center gap-2"
138
147
  },
139
148
  variants: { size: {
149
+ xs: {
150
+ root: "vc-form-switch-xs",
151
+ label: "text-[0.7rem]!"
152
+ },
140
153
  sm: {
141
154
  root: "vc-form-switch-sm",
142
155
  label: "text-xs!"
@@ -164,6 +177,10 @@ function tailwindTheme() {
164
177
  },
165
178
  variants: {
166
179
  size: {
180
+ xs: {
181
+ trigger: "vc-form-select-trigger-xs",
182
+ item: "py-0.5 pl-6 text-[0.7rem]!"
183
+ },
167
184
  sm: {
168
185
  trigger: "vc-form-select-trigger-sm",
169
186
  item: "py-1 pl-6 text-xs!"
@@ -207,6 +224,10 @@ function tailwindTheme() {
207
224
  group: "inline-flex items-center gap-2"
208
225
  },
209
226
  variants: { size: {
227
+ xs: {
228
+ root: "vc-form-radio-xs",
229
+ label: "text-[0.7rem]!"
230
+ },
210
231
  sm: {
211
232
  root: "vc-form-radio-sm",
212
233
  label: "text-xs!"
@@ -239,6 +260,11 @@ function tailwindTheme() {
239
260
  },
240
261
  variants: {
241
262
  size: {
263
+ xs: {
264
+ input: "px-1.5 py-0.5 text-[0.7rem]",
265
+ decrement: "w-5 text-[0.7rem]",
266
+ increment: "w-5 text-[0.7rem]"
267
+ },
242
268
  sm: {
243
269
  input: "px-2 py-1 text-xs",
244
270
  decrement: "w-6 text-xs",
@@ -268,6 +294,11 @@ function tailwindTheme() {
268
294
  },
269
295
  variants: {
270
296
  size: {
297
+ xs: {
298
+ root: "px-1! py-0.5!",
299
+ item: "px-1! py-px! text-[0.5625rem]!",
300
+ input: "text-[0.7rem]!"
301
+ },
271
302
  sm: {
272
303
  root: "px-1.5! py-1!",
273
304
  item: "px-1.5! py-px! text-[0.625rem]!",
@@ -295,6 +326,7 @@ function tailwindTheme() {
295
326
  label: ""
296
327
  },
297
328
  variants: { size: {
329
+ xs: { root: "px-2 py-0.5 text-[0.7rem]" },
298
330
  sm: { root: "px-2.5 py-1 text-xs" },
299
331
  md: { root: "px-3 py-1.5 text-sm" },
300
332
  lg: { root: "px-4 py-2 text-base" }
@@ -521,6 +553,7 @@ function tailwindTheme() {
521
553
  classes: { root: "block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted" },
522
554
  variants: {
523
555
  size: {
556
+ xs: { root: "px-1.5 py-0.5 text-[0.7rem]" },
524
557
  sm: { root: "px-2 py-1 text-xs" },
525
558
  md: { root: "" },
526
559
  lg: { root: "px-4 py-3 text-base" }
@@ -592,6 +625,11 @@ function tailwindTheme() {
592
625
  viewport: "relative block"
593
626
  },
594
627
  variants: { size: {
628
+ xs: {
629
+ link: "px-1.5 py-0.5 text-[0.7rem]",
630
+ linkIcon: "h-2.5 w-2.5",
631
+ trigger: "px-1.5 py-0.5 text-[0.7rem]"
632
+ },
595
633
  sm: {
596
634
  link: "px-2 py-1 text-xs",
597
635
  linkIcon: "h-3 w-3",
@@ -720,6 +758,7 @@ function tailwindTheme() {
720
758
  ghost: { link: "border border-border bg-bg text-fg hover:bg-bg-muted" }
721
759
  },
722
760
  size: {
761
+ xs: { link: "h-6 min-w-6 px-1.5 text-[0.7rem]" },
723
762
  sm: { link: "h-7 min-w-7 px-2 text-xs" },
724
763
  md: { link: "h-8 min-w-8 px-3 text-sm" },
725
764
  lg: { link: "h-10 min-w-10 px-4 text-base" }
@@ -739,6 +778,10 @@ function tailwindTheme() {
739
778
  remove: "inline-flex items-center justify-center rounded-full bg-transparent text-current hover:bg-black/15 focus:outline-none focus-visible:ring-2 focus-visible:ring-on-primary"
740
779
  },
741
780
  variants: { size: {
781
+ xs: {
782
+ root: "px-1! py-px! text-[0.5625rem]! gap-0.5!",
783
+ remove: "h-2.5! w-2.5!"
784
+ },
742
785
  sm: {
743
786
  root: "px-1.5! py-px! text-[0.625rem]! gap-0.5!",
744
787
  remove: "h-3! w-3!"
@@ -760,6 +803,7 @@ function tailwindTheme() {
760
803
  item: ""
761
804
  },
762
805
  variants: { size: {
806
+ xs: { root: "gap-0.5" },
763
807
  sm: { root: "gap-1" },
764
808
  md: { root: "" },
765
809
  lg: { root: "gap-2" }
@@ -773,6 +817,10 @@ function tailwindTheme() {
773
817
  fallback: "inline-flex h-full w-full items-center justify-center font-medium leading-none"
774
818
  },
775
819
  variants: { size: {
820
+ xs: {
821
+ root: "vc-avatar-xs",
822
+ fallback: "text-[0.625rem]!"
823
+ },
776
824
  sm: {
777
825
  root: "vc-avatar-sm",
778
826
  fallback: "text-xs!"
@@ -849,6 +897,7 @@ function tailwindTheme() {
849
897
  close: "inline-flex items-center justify-center rounded-md px-2 py-1 text-xs font-medium hover:opacity-80 focus:outline-none focus:ring-2 focus:ring-ring"
850
898
  },
851
899
  variants: { size: {
900
+ xs: { root: "p-1.5 pr-7 text-[0.7rem]" },
852
901
  sm: { root: "p-2 pr-8 text-xs" },
853
902
  md: { root: "p-3 pr-9 text-sm" },
854
903
  lg: { root: "p-4 pr-10 text-sm" }
@@ -992,6 +1041,7 @@ function tailwindTheme() {
992
1041
  badge: {
993
1042
  classes: { root: "inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium leading-tight" },
994
1043
  variants: { size: {
1044
+ xs: { root: "px-1! py-px! text-[0.5625rem]!" },
995
1045
  sm: { root: "px-1.5! py-px! text-[0.625rem]!" },
996
1046
  md: { root: "px-2! py-0.5! text-xs!" },
997
1047
  lg: { root: "px-2.5! py-1! text-sm!" }
@@ -1145,6 +1195,7 @@ function tailwindTheme() {
1145
1195
  back: "inline-flex h-7 w-7 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring"
1146
1196
  },
1147
1197
  variants: { size: {
1198
+ xs: { content: "max-w-xs p-3 gap-2" },
1148
1199
  sm: { content: "max-w-sm p-4 gap-3" },
1149
1200
  md: { content: "" },
1150
1201
  lg: { content: "max-w-2xl" },
@@ -1161,6 +1212,7 @@ function tailwindTheme() {
1161
1212
  closeIcon: "absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring"
1162
1213
  },
1163
1214
  variants: { size: {
1215
+ xs: { content: "w-48 p-2 text-[0.7rem]" },
1164
1216
  sm: { content: "w-56 p-3 text-xs" },
1165
1217
  md: { content: "" },
1166
1218
  lg: { content: "w-96 p-5 text-base" }
@@ -1174,6 +1226,7 @@ function tailwindTheme() {
1174
1226
  arrow: "fill-bg"
1175
1227
  },
1176
1228
  variants: { size: {
1229
+ xs: { content: "w-40 p-2 text-[0.7rem]" },
1177
1230
  sm: { content: "w-48 p-3 text-xs" },
1178
1231
  md: { content: "" },
1179
1232
  lg: { content: "w-80 p-5 text-base" }
@@ -1191,6 +1244,11 @@ function tailwindTheme() {
1191
1244
  separator: "h-px flex-1 shrink bg-border data-[state=completed]:bg-primary-600 data-[orientation=vertical]:h-8 data-[orientation=vertical]:w-px"
1192
1245
  },
1193
1246
  variants: { size: {
1247
+ xs: {
1248
+ indicator: "vc-stepper-indicator-xs",
1249
+ title: "text-[0.7rem]!",
1250
+ description: "text-[0.5625rem]!"
1251
+ },
1194
1252
  sm: {
1195
1253
  indicator: "vc-stepper-indicator-sm",
1196
1254
  title: "text-xs!",
@@ -1367,6 +1425,7 @@ function tailwindTheme() {
1367
1425
  arrow: "fill-neutral-900 dark:fill-neutral-50"
1368
1426
  },
1369
1427
  variants: { size: {
1428
+ xs: { content: "px-1.5 py-0.5 text-[0.5625rem]" },
1370
1429
  sm: { content: "px-2 py-1 text-[0.625rem]" },
1371
1430
  md: { content: "" },
1372
1431
  lg: { content: "px-4 py-2 text-sm" }
@@ -1390,6 +1449,12 @@ function tailwindTheme() {
1390
1449
  arrow: "fill-bg"
1391
1450
  },
1392
1451
  variants: { size: {
1452
+ xs: {
1453
+ content: "min-w-[5rem] text-[0.7rem]",
1454
+ item: "px-1 py-0.5",
1455
+ subTrigger: "px-1 py-0.5",
1456
+ subContent: "min-w-[5rem] text-[0.7rem]"
1457
+ },
1393
1458
  sm: {
1394
1459
  content: "min-w-[6rem] text-xs",
1395
1460
  item: "px-1.5 py-1",
@@ -1422,6 +1487,12 @@ function tailwindTheme() {
1422
1487
  subContent: "z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95"
1423
1488
  },
1424
1489
  variants: { size: {
1490
+ xs: {
1491
+ content: "min-w-[5rem] text-[0.7rem]",
1492
+ item: "px-1 py-0.5",
1493
+ subTrigger: "px-1 py-0.5",
1494
+ subContent: "min-w-[5rem] text-[0.7rem]"
1495
+ },
1425
1496
  sm: {
1426
1497
  content: "min-w-[6rem] text-xs",
1427
1498
  item: "px-1.5 py-1",
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/palette.ts","../src/index.ts"],"sourcesContent":["import {\n COLOR_PALETTES,\n COLOR_PALETTE_SHADES,\n SEMANTIC_SCALES,\n applyColorPaletteCss,\n} from '@vuecs/design';\nimport type { ColorPaletteConfig, ColorPaletteName, SemanticScaleName } from '@vuecs/design';\n\nconst SEMANTIC_SCALE_SET = new Set<string>(SEMANTIC_SCALES);\nconst PALETTE_NAME_SET = new Set<string>(COLOR_PALETTES);\n\n/**\n * Build the CSS string that binds semantic scales to Tailwind palettes.\n *\n * Pure function — works identically on server and client. Returns a\n * `:root { ... }` block; inject it into `<head>` (server) or pass it to\n * `applyColorPaletteCss()` (client) to override the defaults from\n * `@vuecs/design`'s `assets/index.css`.\n *\n * Defense-in-depth: filters entries to known semantic scales + catalog\n * palette names so untrusted callers (cookie payloads, hand-edited\n * localStorage, ad-hoc `setColorPalette({ … })` calls) can't emit broken\n * `var(--color-undefined-…)` declarations.\n */\nexport function renderColorPaletteStyles(palette: ColorPaletteConfig): string {\n const entries = Object.entries(palette).filter(\n (entry): entry is [SemanticScaleName, ColorPaletteName] => (\n SEMANTIC_SCALE_SET.has(entry[0]) &&\n typeof entry[1] === 'string' &&\n PALETTE_NAME_SET.has(entry[1])\n ),\n );\n if (entries.length === 0) {\n return '';\n }\n\n const declarations: string[] = [];\n for (const [scale, paletteName] of entries) {\n for (const shade of COLOR_PALETTE_SHADES) {\n declarations.push(\n ` --vc-color-${scale}-${shade}: var(--color-${paletteName}-${shade});`,\n );\n }\n }\n\n return `:root {\\n${declarations.join('\\n')}\\n}\\n`;\n}\n\n/**\n * Apply a Tailwind palette override at runtime (client-side).\n * Composes `@vuecs/design`'s `applyColorPaletteCss()` with our\n * `renderColorPaletteStyles()` renderer.\n *\n * The optional `nonce` parameter wires CSP nonce attribution onto the\n * `<style id=\"vc-color-palette\">` block. CSP-strict consumers using\n * `useColorPalette` from `@vuecs/design` pass nonce via\n * `nonce: () => useConfig('nonce').value`.\n *\n * On the server this is a no-op; use `renderColorPaletteStyles()` directly\n * and inject the result into the SSR response head (or rely on\n * `@vuecs/nuxt`'s palette server plugin, which dispatches through the\n * theme runtime).\n */\nexport function setColorPalette(\n palette: ColorPaletteConfig,\n doc: Document | undefined = globalThis.document,\n nonce?: string,\n): void {\n applyColorPaletteCss(renderColorPaletteStyles(palette), doc, nonce);\n}\n","import type { ClassesMergeFn, Theme } from '@vuecs/core';\nimport { COLOR_PALETTES } from '@vuecs/design';\nimport { twMerge } from 'tailwind-merge';\nimport './config';\nimport { renderColorPaletteStyles } from './palette';\n\nexport { renderColorPaletteStyles, setColorPalette } from './palette';\n/**\n * @deprecated Import `useColorPalette` from `@vuecs/design` instead.\n *\n * The per-theme wrapper previously auto-wired the CSP nonce via\n * `useConfig('nonce')` from `@vuecs/core`. The design-level composable\n * does not. If you rely on CSP nonces, pass `nonce` explicitly:\n *\n * import { useColorPalette } from '@vuecs/design';\n * import { useConfig } from '@vuecs/core';\n * const { current, set } = useColorPalette({\n * nonce: () => useConfig('nonce').value,\n * });\n *\n * Will be removed in the next major version of `@vuecs/theme-tailwind`.\n */\nexport { useColorPalette } from '@vuecs/design';\n/** @deprecated Import from `@vuecs/design` instead. */\nexport type { UseColorPaletteOptions, UseColorPaletteReturn } from '@vuecs/design';\n// `applyColorPaletteCss`, `bindColorPalette`, and `COLOR_PALETTE_STYLE_ELEMENT_ID` are\n// theme-agnostic primitives — re-exported from `@vuecs/design`. Consumers\n// can import them from either source; we keep the re-export so downstream\n// code that picked up the imports from theme-tailwind in earlier versions\n// keeps working.\nexport {\n COLOR_PALETTE_STYLE_ELEMENT_ID,\n applyColorPaletteCss,\n bindColorPalette,\n} from '@vuecs/design';\n/** @deprecated Import from `@vuecs/design` instead — the canonical `ColorPaletteConfig` lives there since plan 026. */\nexport type { ColorPaletteConfig } from '@vuecs/design';\n\nexport const merge: ClassesMergeFn = (base, override) => twMerge(base, override);\n\n/**\n * Tailwind theme for vuecs components.\n *\n * Class strings reference **semantic Tailwind colors** that this package\n * exposes via a Tailwind v4 `@theme` block in `assets/index.css` — e.g.\n * `bg-primary-600`, `text-fg`, `border-border`. The `@theme` block maps\n * Tailwind's `--color-*` names onto `--vc-color-*` CSS variables, which\n * `@vuecs/design` defines as concrete OKLCH literals.\n *\n * Consumers must:\n * 1. Use Tailwind CSS v4 (v3 is not supported).\n * 2. Import `@vuecs/design` (concrete tokens) AND `@vuecs/theme-tailwind`\n * (Tailwind rebind + `@theme` block + safelist) alongside their\n * Tailwind stylesheet.\n *\n * Reskinning is done by redefining `--vc-color-*` variables (manually or\n * via `setColorPalette()`, exported from this package). No theme override\n * needed.\n */\nexport default function tailwindTheme(): Theme {\n return {\n classesMergeFn: merge,\n /*\n * Theme-runtime hook (plan 021): declare the Tailwind palette\n * renderer + catalog. `@vuecs/design`'s `useColorPalette()`\n * walks installed themes and routes through `palette.handle`,\n * so `@vuecs/theme-tailwind`'s `useColorPalette()` wrapper now\n * delegates here rather than wiring the renderer directly.\n */\n palette: {\n handle: renderColorPaletteStyles as (palette: Record<string, string>) => string,\n names: COLOR_PALETTES,\n },\n elements: {\n formGroup: {\n classes: {\n root: 'flex flex-col gap-1',\n label: 'text-sm font-medium text-fg',\n hint: 'text-xs text-fg-muted',\n validationError: 'text-xs text-error-600',\n validationWarning: 'text-xs text-warning-600',\n },\n },\n formInput: {\n classes: {\n root: 'block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted',\n rootGroupStart: 'rounded-l-none',\n rootGroupEnd: 'rounded-r-none',\n group: 'flex items-stretch',\n groupAppend: 'inline-flex items-center rounded-r-md border border-l-0 border-border bg-bg-muted px-3 text-sm text-fg-muted',\n groupPrepend: 'inline-flex items-center rounded-l-md border border-r-0 border-border bg-bg-muted px-3 text-sm text-fg-muted',\n },\n // Size axis mirrors the button family — `sm` shrinks padding\n // + font-size for dense forms, `lg` scales up for primary\n // call-to-action inputs. tailwind-merge dedupes the\n // overlap with the default `px-3 py-2 text-sm` chrome.\n //\n // Severity axis is folded in from the surrounding\n // `<VCFormGroup>`'s validation bundle (see\n // `useFormInputThemeProps` in @vuecs/forms). `error` /\n // `warning` repaint the border + focus ring; the default\n // primary-focus chrome is overridden via tailwind-merge.\n variants: {\n size: {\n sm: {\n root: 'px-2 py-1 text-xs',\n groupAppend: 'px-2 text-xs',\n groupPrepend: 'px-2 text-xs',\n },\n md: { root: '' },\n lg: {\n root: 'px-4 py-3 text-base',\n groupAppend: 'px-4 text-base',\n groupPrepend: 'px-4 text-base',\n },\n },\n severity: {\n error: { root: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { root: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formCheckbox: {\n classes: {\n root: 'inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-border bg-bg text-on-primary shadow-sm transition-colors hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 data-[state=checked]:bg-primary-600 data-[state=checked]:border-primary-600 data-[state=indeterminate]:bg-primary-600 data-[state=indeterminate]:border-primary-600 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n indicator: 'inline-flex items-center justify-center text-current',\n label: 'text-sm text-fg cursor-pointer select-none',\n group: 'inline-flex items-center gap-2',\n },\n // Sizing references the structural `vc-form-checkbox-{sm,lg}` helpers\n // (defined in @vuecs/forms/assets/form-checkbox.css) — utility-class\n // sizing like `h-3 w-3` lives in `@layer utilities` which loses to\n // the unlayered structural `.vc-form-checkbox` rule. Label\n // font-size uses Tailwind v4's `class!` important suffix to beat\n // the structural label rule.\n variants: {\n size: {\n sm: { root: 'vc-form-checkbox-sm', label: 'text-xs!' },\n md: { root: '' },\n lg: { root: 'vc-form-checkbox-lg', label: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formCheckboxGroup: { classes: { root: 'flex flex-col gap-2 data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:items-center' } },\n formSwitch: {\n classes: {\n root: 'inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-border bg-bg-muted p-0.5 shadow-sm transition-colors hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 data-[state=checked]:bg-primary-600 data-[state=checked]:border-primary-600 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n thumb: 'block h-3.5 w-3.5 rounded-full bg-bg shadow ring-0 transition-transform translate-x-0 data-[state=checked]:translate-x-4',\n label: 'text-sm text-fg cursor-pointer select-none',\n group: 'inline-flex items-center gap-2',\n },\n // Sizing references the structural `vc-form-switch-{sm,lg}` helpers\n // (track + thumb + checked-translate scale together via descendant\n // selectors). See formCheckbox above for rationale.\n variants: {\n size: {\n sm: { root: 'vc-form-switch-sm', label: 'text-xs!' },\n md: { root: '' },\n lg: { root: 'vc-form-switch-lg', label: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelect: {\n classes: {\n trigger: 'flex w-full items-center justify-between gap-2 rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring data-[disabled]:cursor-not-allowed data-[disabled]:bg-bg-muted data-[placeholder]:text-fg-muted',\n value: 'truncate',\n icon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-fg-muted',\n content: 'z-50 overflow-hidden rounded-md border border-border bg-bg text-sm text-fg shadow-md min-w-[var(--reka-select-trigger-width)] max-h-[var(--reka-select-content-available-height)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n viewport: 'p-1',\n item: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n itemIndicator: 'absolute left-2 inline-flex h-3.5 w-3.5 items-center justify-center text-primary-600',\n group: '',\n groupLabel: 'px-2 py-1.5 text-xs font-semibold uppercase tracking-wide text-fg-muted',\n separator: '-mx-1 my-1 h-px bg-border',\n },\n // Trigger size uses the structural `vc-form-select-trigger-{sm,lg}`\n // helpers — see formCheckbox above for rationale.\n variants: {\n size: {\n sm: { trigger: 'vc-form-select-trigger-sm', item: 'py-1 pl-6 text-xs!' },\n md: { trigger: '' },\n lg: { trigger: 'vc-form-select-trigger-lg', item: 'py-2 pl-8 text-base!' },\n },\n severity: {\n error: { trigger: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { trigger: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelectSearch: {\n classes: {\n root: 'relative block',\n input: 'block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted',\n content: 'absolute inset-x-0 top-[calc(100%+0.25rem)] z-50 max-h-60 overflow-y-auto rounded-md border border-border bg-bg shadow-md',\n item: 'flex cursor-pointer select-none flex-col gap-0.5 px-3 py-2 text-sm text-fg outline-none hover:bg-bg-muted',\n itemActive: 'bg-bg-elevated! font-semibold',\n itemCurrent: 'bg-bg-muted',\n itemDescription: 'text-xs text-fg-muted',\n selected: 'mt-2 flex flex-wrap gap-1',\n selectedItem: 'inline-flex items-center gap-1 rounded-sm border border-border bg-bg-muted px-2 py-0.5 text-xs text-fg hover:bg-bg-elevated',\n selectedItemRemove: 'font-semibold leading-none text-fg-muted',\n },\n variants: {\n severity: {\n error: { input: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { input: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n },\n formRadio: {\n classes: {\n root: 'inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-bg shadow-sm transition-colors hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 data-[state=checked]:border-primary-600 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n indicator: 'block h-2 w-2 rounded-full bg-primary-600',\n label: 'text-sm text-fg cursor-pointer select-none',\n group: 'inline-flex items-center gap-2',\n },\n // Sizing references the structural `vc-form-radio-{sm,lg}` helpers\n // (root + indicator scale together via descendant selectors).\n variants: {\n size: {\n sm: { root: 'vc-form-radio-sm', label: 'text-xs!' },\n md: { root: '' },\n lg: { root: 'vc-form-radio-lg', label: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formRadioGroup: { classes: { root: 'flex flex-col gap-2 data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:items-center data-[orientation=horizontal]:gap-4' } },\n formPin: {\n classes: {\n root: 'inline-flex items-center gap-2',\n input: 'h-10 w-10 rounded-md border border-border bg-bg text-center text-lg font-medium text-fg shadow-sm tabular-nums focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500 disabled:cursor-not-allowed disabled:bg-bg-muted disabled:opacity-50',\n },\n },\n formSlider: {\n classes: {\n root: 'relative flex items-center select-none touch-none w-full h-5 data-[orientation=vertical]:flex-col data-[orientation=vertical]:w-5 data-[orientation=vertical]:h-32',\n track: 'relative grow rounded-full bg-bg-muted h-1 data-[orientation=vertical]:w-1 data-[orientation=vertical]:h-full',\n range: 'absolute rounded-full bg-primary-600 h-full data-[orientation=vertical]:w-full',\n thumb: 'block h-4 w-4 rounded-full border-2 border-primary-600 bg-bg shadow-sm transition-shadow hover:shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n },\n },\n formNumber: {\n classes: {\n root: 'inline-flex w-fit items-stretch overflow-hidden rounded-md border border-border bg-bg shadow-sm focus-within:border-primary-500 focus-within:ring-1 focus-within:ring-primary-500',\n // `field-sizing: content` lets the input auto-grow to fit\n // formatted strings (e.g. \"$20.05\") instead of clipping.\n // `min-w-16` keeps a sensible floor for empty / short\n // values; the parent `w-fit` follows along.\n input: 'min-w-16 [field-sizing:content] bg-transparent border-0 px-3 py-2 text-center text-sm text-fg outline-none tabular-nums [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n decrement: 'inline-flex w-8 items-center justify-center bg-bg-muted text-fg hover:bg-bg-elevated focus-visible:outline-2 focus-visible:outline-primary-500 -outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n increment: 'inline-flex w-8 items-center justify-center bg-bg-muted text-fg hover:bg-bg-elevated focus-visible:outline-2 focus-visible:outline-primary-500 -outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n },\n variants: {\n size: {\n sm: {\n input: 'px-2 py-1 text-xs',\n decrement: 'w-6 text-xs',\n increment: 'w-6 text-xs',\n },\n md: { input: '' },\n lg: {\n input: 'px-4 py-3 text-base',\n decrement: 'w-10 text-base',\n increment: 'w-10 text-base',\n },\n },\n severity: {\n error: { root: 'border-error-500 focus-within:border-error-500 focus-within:ring-error-500' },\n warning: { root: 'border-warning-500 focus-within:border-warning-500 focus-within:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formTags: {\n classes: {\n root: 'flex flex-wrap items-center gap-1.5 rounded-md border border-border bg-bg px-2 py-1.5 text-sm shadow-sm cursor-text focus-within:border-primary-500 focus-within:ring-1 focus-within:ring-primary-500 data-[disabled]:cursor-not-allowed data-[disabled]:bg-bg-muted data-[disabled]:opacity-60',\n item: 'inline-flex items-center gap-1 rounded-full bg-primary-600 px-2 py-0.5 text-xs leading-tight text-on-primary',\n itemText: 'select-none',\n itemDelete: 'inline-flex h-4 w-4 items-center justify-center rounded-full bg-transparent text-current hover:bg-black/10',\n input: 'flex-1 min-w-24 bg-transparent border-0 outline-none text-fg px-0 py-0.5 text-sm',\n },\n variants: {\n size: {\n sm: {\n root: 'px-1.5! py-1!',\n item: 'px-1.5! py-px! text-[0.625rem]!',\n input: 'text-xs!',\n },\n md: { root: '' },\n lg: {\n root: 'px-3! py-2! text-base!',\n item: 'px-2.5! py-1! text-sm!',\n input: 'text-base!',\n },\n },\n severity: {\n error: { root: 'border-error-500 focus-within:border-error-500 focus-within:ring-error-500' },\n warning: { root: 'border-warning-500 focus-within:border-warning-500 focus-within:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n button: {\n classes: {\n // Structural baseline — every visual treatment composes\n // on top via compound variants below. Focus ring uses the\n // active color's `-500` shade picked per variant. `gap-2`\n // (8px) keeps the leading-icon / spinner visually\n // separated from the label without looking spaced-out.\n root: 'inline-flex items-center justify-center gap-2 rounded-md font-medium shadow-sm transition-colors focus:outline-none focus:ring-2 focus:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-60',\n leading: 'inline-flex shrink-0 items-center',\n trailing: 'inline-flex shrink-0 items-center',\n label: '',\n },\n variants: {\n size: {\n sm: { root: 'px-2.5 py-1 text-xs' },\n md: { root: 'px-3 py-1.5 text-sm' },\n lg: { root: 'px-4 py-2 text-base' },\n },\n },\n // Full color × variant matrix. The `ButtonColor` type\n // promises six semantic colors and the API contract is\n // that any (variant, color) pair renders correctly — so\n // every cell is filled, even rare ones like\n // `<VCButton variant=\"soft\" color=\"error\" />`. Consumers\n // who want different shades override via the `overrides`\n // layer on `app.use()`.\n compoundVariants: [\n // solid — colored fill, contrasting text\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary hover:bg-primary-700 focus:ring-primary-500' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-700 text-on-neutral hover:bg-neutral-800 focus:ring-neutral-500' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success hover:bg-success-700 focus:ring-success-500' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning hover:bg-warning-700 focus:ring-warning-500' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error hover:bg-error-700 focus:ring-error-500' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info hover:bg-info-700 focus:ring-info-500' } },\n // soft — tinted bg, colored text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-100 text-primary-700 hover:bg-primary-200 focus:ring-primary-500 dark:bg-primary-900/30 dark:text-primary-300 dark:hover:bg-primary-900/50' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-neutral-100 text-neutral-700 hover:bg-neutral-200 focus:ring-neutral-500 dark:bg-neutral-800 dark:text-neutral-200 dark:hover:bg-neutral-700' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-100 text-success-700 hover:bg-success-200 focus:ring-success-500 dark:bg-success-900/30 dark:text-success-300 dark:hover:bg-success-900/50' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-100 text-warning-700 hover:bg-warning-200 focus:ring-warning-500 dark:bg-warning-900/30 dark:text-warning-300 dark:hover:bg-warning-900/50' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-100 text-error-700 hover:bg-error-200 focus:ring-error-500 dark:bg-error-900/30 dark:text-error-300 dark:hover:bg-error-900/50' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-100 text-info-700 hover:bg-info-200 focus:ring-info-500 dark:bg-info-900/30 dark:text-info-300 dark:hover:bg-info-900/50' } },\n // outline — colored border, transparent fill\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary-600 bg-bg text-primary-700 shadow-none hover:bg-primary-50 focus:ring-primary-500 dark:text-primary-400 dark:hover:bg-primary-900/30' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border border-border bg-bg text-fg shadow-none hover:bg-bg-muted focus:ring-neutral-500' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success-600 bg-bg text-success-700 shadow-none hover:bg-success-50 focus:ring-success-500 dark:text-success-400 dark:hover:bg-success-900/30' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning-600 bg-bg text-warning-700 shadow-none hover:bg-warning-50 focus:ring-warning-500 dark:text-warning-400 dark:hover:bg-warning-900/30' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-error-600 bg-bg text-error-700 shadow-none hover:bg-error-50 focus:ring-error-500 dark:text-error-400 dark:hover:bg-error-900/30' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info-600 bg-bg text-info-700 shadow-none hover:bg-info-50 focus:ring-info-500 dark:text-info-400 dark:hover:bg-info-900/30' } },\n // ghost — no border, colored text, hover background\n { variants: { variant: 'ghost', color: 'primary' }, class: { root: 'bg-transparent text-primary-700 shadow-none hover:bg-primary-50 focus:ring-primary-500 dark:text-primary-400 dark:hover:bg-primary-900/30' } },\n { variants: { variant: 'ghost', color: 'neutral' }, class: { root: 'bg-transparent text-fg shadow-none hover:bg-bg-muted focus:ring-neutral-500' } },\n { variants: { variant: 'ghost', color: 'success' }, class: { root: 'bg-transparent text-success-700 shadow-none hover:bg-success-50 focus:ring-success-500 dark:text-success-400 dark:hover:bg-success-900/30' } },\n { variants: { variant: 'ghost', color: 'warning' }, class: { root: 'bg-transparent text-warning-700 shadow-none hover:bg-warning-50 focus:ring-warning-500 dark:text-warning-400 dark:hover:bg-warning-900/30' } },\n { variants: { variant: 'ghost', color: 'error' }, class: { root: 'bg-transparent text-error-700 shadow-none hover:bg-error-50 focus:ring-error-500 dark:text-error-400 dark:hover:bg-error-900/30' } },\n { variants: { variant: 'ghost', color: 'info' }, class: { root: 'bg-transparent text-info-700 shadow-none hover:bg-info-50 focus:ring-info-500 dark:text-info-400 dark:hover:bg-info-900/30' } },\n // link — underlined, no padding, no chrome\n { variants: { variant: 'link', color: 'primary' }, class: { root: 'bg-transparent p-0 text-primary-700 shadow-none underline underline-offset-4 hover:text-primary-800 focus:ring-primary-500 dark:text-primary-400' } },\n { variants: { variant: 'link', color: 'neutral' }, class: { root: 'bg-transparent p-0 text-fg shadow-none underline underline-offset-4 hover:text-fg-muted focus:ring-neutral-500' } },\n { variants: { variant: 'link', color: 'success' }, class: { root: 'bg-transparent p-0 text-success-700 shadow-none underline underline-offset-4 hover:text-success-800 focus:ring-success-500 dark:text-success-400' } },\n { variants: { variant: 'link', color: 'warning' }, class: { root: 'bg-transparent p-0 text-warning-700 shadow-none underline underline-offset-4 hover:text-warning-800 focus:ring-warning-500 dark:text-warning-400' } },\n { variants: { variant: 'link', color: 'error' }, class: { root: 'bg-transparent p-0 text-error-700 shadow-none underline underline-offset-4 hover:text-error-800 focus:ring-error-500 dark:text-error-400' } },\n { variants: { variant: 'link', color: 'info' }, class: { root: 'bg-transparent p-0 text-info-700 shadow-none underline underline-offset-4 hover:text-info-800 focus:ring-info-500 dark:text-info-400' } },\n ],\n defaultVariants: {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n },\n },\n formTextarea: {\n classes: { root: 'block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted' },\n variants: {\n size: {\n sm: { root: 'px-2 py-1 text-xs' },\n md: { root: '' },\n lg: { root: 'px-4 py-3 text-base' },\n },\n severity: {\n error: { root: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { root: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n validationGroup: {\n classes: { item: 'text-xs text-error-600' },\n // Severity-aware per-message colour. The base class\n // sets `text-error-600` as the no-severity default\n // (back-compat with consumers who used legacy\n // `validationMessages` without a severity). The\n // variant overrides per active severity — `tailwind-merge`\n // dedupes the conflicting `text-*-600` classes (last\n // colour wins).\n variants: {\n severity: {\n error: { item: 'text-error-600' },\n warning: { item: 'text-warning-600' },\n success: { item: 'text-success-600' },\n },\n },\n },\n list: {\n classes: {\n // `relative` anchors `<VCListLoading :overlay>`'s\n // `absolute inset-0` to the list container itself.\n // Without it the overlay escapes to the nearest\n // positioned ancestor (often the viewport).\n root: 'relative flex flex-col gap-1',\n // Header / footer chrome — consumer applies these to\n // their own `<header>` / `<footer>` markup inside the\n // `<VCList>` default slot. `empty:hidden` collapses\n // out of layout when no content provided.\n header: 'flex items-center empty:hidden',\n footer: 'flex items-center empty:hidden',\n },\n // Density axis controls the gap between items. `compact`\n // suits dense data tables, `normal` is the default,\n // `spacious` reads as breathing room around long-form\n // entries (e.g. activity feeds).\n variants: {\n density: {\n compact: { root: 'gap-0' },\n normal: { root: '' },\n spacious: { root: 'gap-3' },\n },\n },\n defaultVariants: { density: 'normal' },\n },\n listBody: { classes: { root: 'm-0 list-none p-0' } },\n // `<VCListItem>` owns the row's flex layout. The `text` slot\n // (consumer's `<span :class=\"classes.text\">`) takes `flex-1\n // min-w-0` so it consumes available space and truncates\n // cleanly. The `actions` slot is positionally unopinionated\n // so N clusters compose naturally.\n listItem: {\n classes: {\n root: 'flex flex-row items-center gap-2 py-1',\n text: 'inline-flex min-w-0 flex-1 flex-col',\n actions: 'inline-flex items-center gap-1',\n },\n variants: {\n density: {\n compact: { root: 'py-0.5' },\n normal: { root: '' },\n spacious: { root: 'py-3' },\n },\n disabled: { true: { root: 'cursor-not-allowed opacity-50' } },\n active: { true: { root: 'bg-primary-50 text-primary-900 dark:bg-primary-950 dark:text-primary-100' } },\n selected: { true: { root: 'bg-bg-muted' } },\n },\n defaultVariants: { density: 'normal' },\n },\n listLoading: {\n classes: { root: 'py-2 text-center text-sm text-fg-muted' },\n variants: { overlay: { true: { root: 'absolute inset-0 z-10 flex items-center justify-center bg-bg/75 backdrop-blur-sm' } } },\n },\n listEmpty: { classes: { root: 'rounded-md border border-warning-200 bg-warning-50 p-2 text-sm text-warning-800' } },\n navigation: {\n classes: {\n group: 'm-0 flex list-none flex-col p-0',\n item: 'list-none',\n itemNested: '',\n separator: 'my-2 text-xs font-semibold uppercase tracking-wide text-fg-muted',\n link: 'flex cursor-pointer items-center gap-2 px-3 py-2 text-sm text-fg no-underline hover:bg-bg-muted',\n linkRoot: 'font-medium text-fg',\n linkIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n linkText: 'flex-1 truncate',\n trigger: 'flex w-full cursor-pointer items-center gap-2 px-3 py-2 text-sm text-fg no-underline hover:bg-bg-muted',\n content: 'block pl-3 text-fg',\n viewport: 'relative block',\n },\n variants: {\n size: {\n sm: {\n link: 'px-2 py-1 text-xs',\n linkIcon: 'h-3 w-3',\n trigger: 'px-2 py-1 text-xs',\n },\n md: { link: '' },\n lg: {\n link: 'px-4 py-3 text-base',\n linkIcon: 'h-5 w-5',\n trigger: 'px-4 py-3 text-base',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n table: {\n classes: {\n root: 'w-full border-collapse text-sm text-fg',\n scrollContainer: 'relative overflow-auto rounded-md border border-border',\n },\n variants: {\n density: {\n compact: { root: '[&_td]:py-1 [&_th]:py-1.5' },\n normal: { root: '[&_td]:py-2 [&_th]:py-2.5' },\n spacious: { root: '[&_td]:py-3 [&_th]:py-3.5' },\n },\n striped: { true: { root: '[&_tbody_tr:nth-child(even)]:bg-bg-muted/40' } },\n bordered: { true: { root: '[&_td]:border [&_th]:border [&_td]:border-border [&_th]:border-border' } },\n hover: { true: { root: '[&_tbody_tr:hover]:bg-bg-muted/60' } },\n stickyHeader: { true: { root: '[&_thead_th]:sticky [&_thead_th]:top-0 [&_thead_th]:bg-bg [&_thead_th]:z-10' } },\n },\n defaultVariants: { density: 'normal' },\n },\n tableHeader: { classes: { root: 'border-b border-border bg-bg-muted/30 text-xs uppercase tracking-wide text-fg-muted' } },\n tableBody: { classes: { root: '' } },\n tableFooter: { classes: { root: 'border-t border-border bg-bg-muted/30 font-medium' } },\n tableRow: {\n classes: { root: 'border-b border-border last:border-b-0 transition-colors' },\n variants: {\n disabled: { true: { root: 'opacity-50 pointer-events-none' } },\n selected: { true: { root: 'bg-primary-50 dark:bg-primary-950/40' } },\n focused: { true: { root: 'outline outline-2 outline-ring outline-offset-[-2px]' } },\n rowVariant: {\n success: { root: 'bg-success-50 dark:bg-success-950/30' },\n warning: { root: 'bg-warning-50 dark:bg-warning-950/30' },\n error: { root: 'bg-error-50 dark:bg-error-950/30' },\n info: { root: 'bg-info-50 dark:bg-info-950/30' },\n neutral: { root: 'bg-neutral-50 dark:bg-neutral-900' },\n primary: { root: 'bg-primary-50 dark:bg-primary-950/30' },\n },\n },\n },\n tableCell: {\n classes: { root: 'px-3 align-middle' },\n variants: {\n align: {\n left: { root: 'text-left' },\n center: { root: 'text-center' },\n right: { root: 'text-right' },\n },\n stickyColumn: { true: { root: 'sticky left-0 bg-bg z-[1]' } },\n cellVariant: {\n success: { root: 'text-success-700 dark:text-success-300' },\n warning: { root: 'text-warning-700 dark:text-warning-300' },\n error: { root: 'text-error-700 dark:text-error-300' },\n info: { root: 'text-info-700 dark:text-info-300' },\n neutral: { root: 'text-neutral-700 dark:text-neutral-200' },\n primary: { root: 'text-primary-700 dark:text-primary-300' },\n },\n },\n },\n tableHeadCell: {\n classes: {\n root: 'px-3 text-left font-medium',\n sortIcon: 'ml-1 inline-block text-xs leading-none',\n },\n variants: {\n align: {\n left: { root: 'text-left' },\n center: { root: 'text-center' },\n right: { root: 'text-right' },\n },\n stickyColumn: { true: { root: 'sticky left-0 bg-bg-muted z-[2]' } },\n sorted: {\n asc: { root: 'text-fg' },\n desc: { root: 'text-fg' },\n none: { root: '' },\n },\n },\n },\n tableEmpty: {\n classes: { root: '' },\n variants: {\n filtered: {\n true: { root: '[&_td]:py-6 [&_td]:text-center [&_td]:text-fg-muted [&_td]:italic' },\n false: { root: '[&_td]:py-6 [&_td]:text-center [&_td]:text-fg-muted' },\n },\n },\n },\n tableLoading: {\n classes: {\n root: '[&_td]:py-6 [&_td]:text-center [&_td]:text-fg-muted',\n overlay: 'bg-bg/70 backdrop-blur-[1px] text-fg-muted',\n },\n },\n tableSortIndicators: {\n classes: {\n root: 'flex flex-wrap items-center gap-1.5 rounded-md border border-border bg-bg-muted px-3 py-2 text-xs',\n label: 'font-semibold text-fg-muted me-1',\n empty: 'italic text-fg-muted',\n // The chip is a non-interactive wrapper that\n // houses two inner buttons (toggle + remove).\n // Wrapper carries border + background; buttons\n // inside are borderless to inherit the look.\n chip: 'inline-flex items-center rounded-full border border-border bg-bg text-fg transition-colors focus-within:border-primary-500',\n chipToggle: 'inline-flex items-center gap-1.5 bg-transparent border-0 px-2 py-1 rounded-l-full text-fg cursor-pointer hover:bg-primary-50 focus-visible:bg-primary-50 focus-visible:outline-none',\n chipPosition: 'text-[0.625rem] font-bold text-fg-muted',\n chipLabel: '',\n chipArrow: 'font-bold text-primary-600',\n chipRemove: 'inline-flex h-7 w-6 items-center justify-center bg-transparent border-0 rounded-r-full text-fg-muted cursor-pointer hover:bg-error-100 hover:text-error-600 focus-visible:bg-error-100 focus-visible:text-error-600 focus-visible:outline-none',\n // addWrapper omitted — Tailwind styles the\n // <select> directly; no wrapper needed.\n add: 'rounded-full border border-border bg-bg px-2 py-1 text-fg',\n clear: 'ms-auto rounded-full border border-transparent bg-transparent px-2.5 py-1 text-fg-muted hover:bg-bg hover:border-border hover:text-fg focus-visible:bg-bg focus-visible:border-border focus-visible:text-fg focus-visible:outline-none',\n },\n },\n pagination: {\n classes: {\n root: 'inline-flex items-center',\n item: 'inline-flex',\n // Structural only — sizing/padding/typography come from the\n // `size` variant, bg/border/colors come from the `variant`\n // variant. Keeping concerns split lets consumers pick a\n // size and a visual treatment independently.\n link: 'inline-flex items-center justify-center gap-1.5 rounded-md leading-none focus:outline-none focus:ring-1 focus:ring-ring',\n linkActive: 'border-primary-600! bg-primary-600! text-on-primary! hover:bg-primary-700!',\n // The component composes `link + ellipsis` onto\n // PaginationEllipsis so it inherits the box styling\n // (size, border, bg) from the link slot. These overrides\n // turn the inherited interactivity off and mute the\n // text — matching the \"non-clickable spacer\" semantics.\n ellipsis: 'pointer-events-none cursor-default text-fg-muted',\n },\n variants: {\n variant: {\n // Default — clear edges that read as discrete buttons\n // on any page bg (including white-on-white surfaces).\n outline: { link: 'border border-neutral-300 bg-bg text-fg hover:bg-neutral-100 dark:border-neutral-700 dark:hover:bg-neutral-700' },\n // Tinted background, no border — for a softer feel\n // when the surrounding chrome already provides\n // visual separation.\n soft: { link: 'border border-transparent bg-bg-muted text-fg hover:bg-bg-elevated' },\n // Pre-pilot defaults — blends into a non-white page\n // bg. Available for consumers who liked the old look.\n ghost: { link: 'border border-border bg-bg text-fg hover:bg-bg-muted' },\n },\n size: {\n sm: { link: 'h-7 min-w-7 px-2 text-xs' },\n md: { link: 'h-8 min-w-8 px-3 text-sm' },\n lg: { link: 'h-10 min-w-10 px-4 text-base' },\n },\n },\n defaultVariants: { variant: 'outline', size: 'md' },\n },\n // VCGravatar wraps VCAvatar — sizing comes from the structural\n // `vc-gravatar` class (5rem default, ships with @vuecs/gravatar).\n // The `size` prop only drives the Gravatar URL's `?s=` parameter;\n // override visual size via per-instance `themeClass`.\n gravatar: { classes: { root: 'inline-block overflow-hidden rounded-full' } },\n separator: {\n classes: {\n // Reka encodes orientation as `data-orientation`; size each\n // axis off that so the same class drives horizontal +\n // vertical separators.\n root: 'shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n },\n },\n tag: {\n classes: {\n root: 'inline-flex items-center gap-1 rounded-full bg-primary-600 leading-tight text-on-primary',\n icon: 'inline-flex shrink-0 items-center',\n remove: 'inline-flex items-center justify-center rounded-full bg-transparent text-current hover:bg-black/15 focus:outline-none focus-visible:ring-2 focus-visible:ring-on-primary',\n },\n // Size axis mirrors @vuecs/elements badge so a `<VCTag size=\"lg\">`\n // and `<VCBadge size=\"lg\">` read at the same scale. The `!`\n // suffix is needed because the structural `.vc-tag` rule\n // (`@vuecs/elements/assets/tag.css`) sits unlayered and beats\n // utilities in `@layer utilities` — the suffix promotes each\n // utility above the structural padding/font-size defaults.\n variants: {\n size: {\n sm: { root: 'px-1.5! py-px! text-[0.625rem]! gap-0.5!', remove: 'h-3! w-3!' },\n md: { root: 'px-2! py-0.5! text-xs!', remove: 'h-4! w-4!' },\n lg: { root: 'px-2.5! py-1! text-sm!', remove: 'h-5! w-5!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n tags: {\n classes: {\n root: 'flex flex-wrap items-center gap-1.5',\n item: '',\n },\n // Gap scales with the chip size so the row reads at a\n // consistent visual rhythm. The Tags component forwards its\n // `size` prop to each <VCTag> child so the chips themselves\n // also resize.\n variants: {\n size: {\n sm: { root: 'gap-1' },\n md: { root: '' },\n lg: { root: 'gap-2' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n avatar: {\n classes: {\n root: 'inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-bg-muted text-fg-muted align-middle',\n image: 'h-full w-full object-cover',\n fallback: 'inline-flex h-full w-full items-center justify-center font-medium leading-none',\n },\n // Sizing references the structural `vc-avatar-{sm,md,lg}` helpers\n // (defined in @vuecs/elements/assets/avatar.css) — Tailwind\n // utility-class sizing like `h-8 w-8` lives in `@layer utilities`\n // which loses to the unlayered structural `.vc-avatar` rule.\n // `md` is the no-op default — the structural `.vc-avatar` rule\n // already sets the medium size. `vc-avatar-{sm,lg}` helpers\n // override at the structural level (utility classes lose to\n // unlayered structural; see form-checkbox.css rationale).\n variants: {\n size: {\n sm: { root: 'vc-avatar-sm', fallback: 'text-xs!' },\n md: { fallback: 'text-sm!' },\n lg: { root: 'vc-avatar-lg', fallback: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n aspectRatio: { classes: { root: 'block w-full' } },\n card: {\n classes: { root: 'rounded-lg' },\n variants: {\n variant: {\n outline: { root: 'border border-border bg-bg text-fg' },\n soft: { root: 'bg-bg-muted text-fg' },\n elevated: { root: 'border border-border bg-bg text-fg shadow-md' },\n },\n interactive: { true: { root: 'transition-shadow hover:shadow-lg focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-bg cursor-pointer' } },\n },\n defaultVariants: { variant: 'outline' },\n },\n cardHeader: {\n classes: { root: 'flex flex-col gap-1 border-b border-border' },\n variants: {\n padding: {\n compact: { root: 'px-3 py-2' },\n normal: { root: 'px-4 py-3' },\n spacious: { root: 'px-6 py-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardTitle: { classes: { root: 'text-base font-semibold leading-tight text-fg' } },\n cardDescription: { classes: { root: 'text-sm text-fg-muted' } },\n cardBody: {\n classes: { root: 'text-sm text-fg' },\n variants: {\n padding: {\n compact: { root: 'px-3 py-3' },\n normal: { root: 'px-4 py-4' },\n spacious: { root: 'px-6 py-6' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardFooter: {\n classes: { root: 'flex items-center justify-end gap-2 border-t border-border' },\n variants: {\n padding: {\n compact: { root: 'px-3 py-2' },\n normal: { root: 'px-4 py-3' },\n spacious: { root: 'px-6 py-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n collapse: { classes: { root: '' } },\n collapseTrigger: {\n // Chevron rotation lives in structural CSS\n // (`[data-state=\"open\"] .vc-collapse-chevron`) so themes can\n // skip a `group data-[state=open]:` rewire. Both Tailwind\n // and BS/Bulma get rotate-on-open for free via the\n // `.vc-collapse-chevron` structural class.\n classes: {\n root: 'inline-flex items-center justify-between gap-2 cursor-pointer select-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-md',\n chevron: 'h-4 w-4 shrink-0 text-fg-muted',\n },\n variants: {\n chevron: {\n auto: { chevron: 'inline-flex' },\n none: { chevron: 'hidden' },\n },\n },\n defaultVariants: { chevron: 'auto' },\n },\n // `collapsible-*` keyframes (not `accordion-*`) — they read\n // `--reka-collapsible-content-height` which Reka's\n // CollapsibleContent sets at runtime. Accordion variant would\n // silently fall back to height `auto` (no animation).\n collapseContent: { classes: { root: 'overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up' } },\n alert: {\n classes: {\n root: 'relative flex items-start gap-3 rounded-md border text-sm',\n icon: 'inline-flex shrink-0 items-center justify-center mt-0.5',\n content: 'flex flex-1 flex-col gap-1 min-w-0',\n closeIcon: 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n close: 'inline-flex items-center justify-center rounded-md px-2 py-1 text-xs font-medium hover:opacity-80 focus:outline-none focus:ring-2 focus:ring-ring',\n },\n variants: {\n size: {\n sm: { root: 'p-2 pr-8 text-xs' },\n md: { root: 'p-3 pr-9 text-sm' },\n lg: { root: 'p-4 pr-10 text-sm' },\n },\n },\n compoundVariants: [\n // solid\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary border-primary-700' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-600 text-on-neutral border-neutral-700' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success border-success-700' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning border-warning-700' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error border-error-700' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info border-info-700' } },\n // soft\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-50 text-primary-800 border-primary-200 dark:bg-primary-950 dark:text-primary-200 dark:border-primary-800' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-neutral-50 text-fg border-border dark:bg-neutral-900' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-50 text-success-800 border-success-200 dark:bg-success-950 dark:text-success-200 dark:border-success-800' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-50 text-warning-800 border-warning-200 dark:bg-warning-950 dark:text-warning-200 dark:border-warning-800' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-50 text-error-800 border-error-200 dark:bg-error-950 dark:text-error-200 dark:border-error-800' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-50 text-info-800 border-info-200 dark:bg-info-950 dark:text-info-200 dark:border-info-800' } },\n // outline\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border-primary-600 text-primary-700 bg-transparent dark:text-primary-200' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border-border text-fg bg-transparent' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border-success-600 text-success-700 bg-transparent dark:text-success-200' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border-warning-600 text-warning-700 bg-transparent dark:text-warning-200' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border-error-600 text-error-700 bg-transparent dark:text-error-200' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border-info-600 text-info-700 bg-transparent dark:text-info-200' } },\n ],\n defaultVariants: {\n variant: 'soft', \n color: 'neutral', \n size: 'md', \n },\n },\n alertTitle: { classes: { root: 'font-semibold leading-tight' } },\n alertDescription: { classes: { root: 'leading-snug opacity-90' } },\n badge: {\n classes: { root: 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium leading-tight' },\n // Size variants use the `!` suffix to override the unlayered\n // structural `.vc-badge` padding/font-size defaults — see\n // tag.size above for rationale.\n variants: {\n size: {\n sm: { root: 'px-1.5! py-px! text-[0.625rem]!' },\n md: { root: 'px-2! py-0.5! text-xs!' },\n lg: { root: 'px-2.5! py-1! text-sm!' },\n },\n },\n // Color × variant matrix for the `solid` / `soft` / `outline`\n // treatments. Mirrors the button matrix so a `<VCBadge color=\"error\" />`\n // and a `<VCButton color=\"error\" variant=\"soft\" />` read as the\n // same visual family.\n compoundVariants: [\n // solid — colored fill\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-700 text-on-neutral' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info' } },\n // soft — tinted bg + colored text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-100 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-200' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-100 text-success-700 dark:bg-success-900/30 dark:text-success-300' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-100 text-warning-700 dark:bg-warning-900/30 dark:text-warning-300' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-100 text-error-700 dark:bg-error-900/30 dark:text-error-300' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-100 text-info-700 dark:bg-info-900/30 dark:text-info-300' } },\n // outline — colored border, transparent fill\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary-600 bg-bg text-primary-700 dark:text-primary-400' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border border-border bg-bg text-fg' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success-600 bg-bg text-success-700 dark:text-success-400' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning-600 bg-bg text-warning-700 dark:text-warning-400' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-error-600 bg-bg text-error-700 dark:text-error-400' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info-600 bg-bg text-info-700 dark:text-info-400' } },\n ],\n defaultVariants: {\n variant: 'soft',\n color: 'neutral',\n size: 'md',\n },\n },\n modal: {\n classes: {\n overlay: 'fixed inset-0 z-50 bg-neutral-950/60 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n content: 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border border-border bg-bg p-6 text-fg shadow-lg outline-none focus:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n header: 'flex flex-col gap-1.5',\n title: 'text-lg font-semibold text-fg',\n description: 'text-sm text-fg-muted',\n body: 'flex flex-col gap-2 text-sm text-fg',\n footer: 'flex flex-row items-center justify-end gap-2',\n trigger: '',\n // Generic close trigger — neutral baseline so consumer\n // classes (`<VCModalClose class=\"...\">`) compose cleanly.\n // The corner-X pattern lives in `closeIcon` below.\n close: 'focus:outline-none focus:ring-2 focus:ring-ring',\n closeIcon: 'absolute right-3 top-3 inline-flex h-7 w-7 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n back: 'inline-flex h-7 w-7 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n },\n // Modal size axis = max-width tier. md (lg) is the default;\n // sm fits compact confirms, lg fits forms, xl fits dashboards.\n variants: {\n size: {\n sm: { content: 'max-w-sm p-4 gap-3' },\n md: { content: '' },\n lg: { content: 'max-w-2xl' },\n xl: { content: 'max-w-4xl' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n popover: {\n classes: {\n trigger: '',\n content: 'z-50 w-72 rounded-md border border-border bg-bg p-4 text-sm text-fg shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n arrow: 'fill-bg',\n // Generic close trigger — neutral baseline so consumer\n // classes compose cleanly. Corner-X lives in `closeIcon`.\n close: 'focus:outline-none focus:ring-2 focus:ring-ring',\n closeIcon: 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n },\n variants: {\n size: {\n sm: { content: 'w-56 p-3 text-xs' },\n md: { content: '' },\n lg: { content: 'w-96 p-5 text-base' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n hoverCard: {\n classes: {\n trigger: '',\n content: 'z-50 w-64 rounded-md border border-border bg-bg p-4 text-sm text-fg shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n arrow: 'fill-bg',\n },\n variants: {\n size: {\n sm: { content: 'w-48 p-3 text-xs' },\n md: { content: '' },\n lg: { content: 'w-80 p-5 text-base' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n stepper: {\n classes: {\n root: 'flex items-center gap-2 data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch',\n // `group` scopes the indicator's `group-data-[state=active]:`\n // / `group-data-[state=completed]:` variants. Without it,\n // every step renders identical (the variant prefix has\n // nothing to anchor to and never matches).\n item: 'group flex flex-1 items-center gap-2 data-[orientation=vertical]:flex-row',\n // The trigger is a circle that swaps colors based on the\n // step's `data-state` (active / completed / inactive). It\n // also receives `data-disabled` from Reka when the linear\n // option blocks navigation; muted styling reads as\n // \"currently unreachable\".\n trigger: 'inline-flex shrink-0 items-center justify-center rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-60 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60',\n // Active + completed both light up primary so the\n // \"where you've been\" trail reads as one continuous\n // progression. Completed-as-success made the row\n // visually noisy and broke the linear-progress metaphor.\n indicator: 'inline-flex h-8 w-8 items-center justify-center rounded-full border border-border bg-bg text-sm font-semibold text-fg-muted group-data-[state=active]:border-primary-600 group-data-[state=active]:bg-primary-600 group-data-[state=active]:text-on-primary group-data-[state=completed]:border-primary-600 group-data-[state=completed]:bg-primary-600 group-data-[state=completed]:text-on-primary',\n title: 'text-sm font-medium text-fg',\n description: 'text-xs text-fg-muted',\n separator: 'h-px flex-1 shrink bg-border data-[state=completed]:bg-primary-600 data-[orientation=vertical]:h-8 data-[orientation=vertical]:w-px',\n },\n // Indicator sizing references the structural\n // `vc-stepper-indicator-{sm,lg}` helpers (defined in\n // @vuecs/navigation/assets/index.css). Title / description\n // font-sizes use the `!` suffix to override base structural\n // text-size defaults set on neighboring elements.\n variants: {\n size: {\n sm: {\n indicator: 'vc-stepper-indicator-sm',\n title: 'text-xs!',\n description: 'text-[0.625rem]!',\n },\n md: { indicator: '' },\n lg: {\n indicator: 'vc-stepper-indicator-lg',\n title: 'text-base!',\n description: 'text-sm!',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n toastViewport: {\n // Fixed-position viewport. Each position variant pins the\n // viewport against one viewport corner / center. Stack\n // direction is bottom-up for `bottom-*` and top-down for\n // `top-*` so the most recent toast is always closest to\n // the user's pointer.\n classes: { root: 'fixed z-[100] flex max-h-screen w-full max-w-sm flex-col gap-2 p-4 list-none m-0 pointer-events-none [&>*]:pointer-events-auto outline-none' },\n variants: {\n position: {\n 'top-left': { root: 'top-0 left-0' },\n 'top-right': { root: 'top-0 right-0' },\n 'top-center': { root: 'top-0 left-1/2 -translate-x-1/2' },\n 'bottom-left': { root: 'bottom-0 left-0 flex-col-reverse' },\n 'bottom-right': { root: 'bottom-0 right-0 flex-col-reverse' },\n 'bottom-center': { root: 'bottom-0 left-1/2 -translate-x-1/2 flex-col-reverse' },\n },\n },\n defaultVariants: { position: 'top-right' },\n },\n toast: {\n classes: {\n root: 'relative pointer-events-auto flex w-full items-start gap-3 overflow-hidden rounded-md border border-border bg-bg p-4 pr-8 text-sm text-fg shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:slide-in-from-right-full data-[state=closed]:slide-out-to-right-full data-[swipe=move]:translate-x-[var(--reka-toast-swipe-move-x)] data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--reka-toast-swipe-end-x)] data-[swipe=end]:animate-out data-[swipe=end]:fade-out-80',\n body: 'flex flex-col gap-1 flex-1 min-w-0',\n close: 'inline-flex items-center justify-center rounded-md px-2 py-1 text-xs font-medium text-fg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n closeIcon: 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n },\n // Color × variant matrix mirrors `<VCBadge>`'s.\n compoundVariants: [\n // solid\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary border-primary-700' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-700 text-on-neutral border-neutral-800' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success border-success-700' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning border-warning-700' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error border-error-700' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info border-info-700' } },\n // soft — tinted bg + colored text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-50 text-primary-900 border-primary-200 dark:bg-primary-950/30 dark:text-primary-200 dark:border-primary-900' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-bg-muted text-fg border-border' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-50 text-success-900 border-success-200 dark:bg-success-950/30 dark:text-success-200 dark:border-success-900' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-50 text-warning-900 border-warning-200 dark:bg-warning-950/30 dark:text-warning-200 dark:border-warning-900' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-50 text-error-900 border-error-200 dark:bg-error-950/30 dark:text-error-200 dark:border-error-900' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-50 text-info-900 border-info-200 dark:bg-info-950/30 dark:text-info-200 dark:border-info-900' } },\n // outline — colored border, transparent fill\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border-primary-600 bg-bg text-primary-700 dark:text-primary-300' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border-border bg-bg text-fg' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border-success-600 bg-bg text-success-700 dark:text-success-300' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border-warning-600 bg-bg text-warning-700 dark:text-warning-300' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border-error-600 bg-bg text-error-700 dark:text-error-300' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border-info-600 bg-bg text-info-700 dark:text-info-300' } },\n ],\n defaultVariants: { variant: 'soft', color: 'neutral' },\n },\n toastTitle: { classes: { root: 'text-sm font-semibold leading-tight' } },\n toastDescription: { classes: { root: 'text-sm leading-snug opacity-90' } },\n toastAction: { classes: { root: 'inline-flex items-center justify-center rounded-md border border-current px-2 py-1 text-xs font-medium hover:bg-bg-muted focus:outline-none focus:ring-2 focus:ring-ring shrink-0' } },\n tooltip: {\n classes: {\n trigger: '',\n content: 'z-50 overflow-hidden rounded-md bg-neutral-900 px-3 py-1.5 text-xs text-on-neutral shadow-md data-[state=delayed-open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95 dark:bg-neutral-50 dark:text-neutral-900',\n arrow: 'fill-neutral-900 dark:fill-neutral-50',\n },\n variants: {\n size: {\n sm: { content: 'px-2 py-1 text-[0.625rem]' },\n md: { content: '' },\n lg: { content: 'px-4 py-2 text-sm' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n dropdownMenu: {\n classes: {\n trigger: '',\n content: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n item: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n checkboxItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioGroup: '',\n itemIndicator: 'absolute left-2 inline-flex h-3.5 w-3.5 items-center justify-center',\n label: 'px-2 py-1.5 text-xs font-semibold text-fg-muted',\n separator: '-mx-1 my-1 h-px bg-border',\n group: '',\n subTrigger: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[state=open]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n subContent: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n arrow: 'fill-bg',\n },\n variants: {\n size: {\n sm: {\n content: 'min-w-[6rem] text-xs',\n item: 'px-1.5 py-1',\n subTrigger: 'px-1.5 py-1',\n subContent: 'min-w-[6rem] text-xs',\n },\n md: { content: '' },\n lg: {\n content: 'min-w-[12rem] text-base',\n item: 'px-3 py-2',\n subTrigger: 'px-3 py-2',\n subContent: 'min-w-[12rem] text-base',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n contextMenu: {\n classes: {\n trigger: '',\n content: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n item: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n checkboxItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioGroup: '',\n itemIndicator: 'absolute left-2 inline-flex h-3.5 w-3.5 items-center justify-center',\n label: 'px-2 py-1.5 text-xs font-semibold text-fg-muted',\n separator: '-mx-1 my-1 h-px bg-border',\n group: '',\n subTrigger: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[state=open]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n subContent: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n },\n variants: {\n size: {\n sm: {\n content: 'min-w-[6rem] text-xs',\n item: 'px-1.5 py-1',\n subTrigger: 'px-1.5 py-1',\n subContent: 'min-w-[6rem] text-xs',\n },\n md: { content: '' },\n lg: {\n content: 'min-w-[12rem] text-base',\n item: 'px-3 py-2',\n subTrigger: 'px-3 py-2',\n subContent: 'min-w-[12rem] text-base',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n placeholder: {\n // Tailwind 4 ships `animate-pulse` for the glow\n // pattern. The wave variant inherits the default\n // (`vc-placeholder-wave`), which composes the\n // shipped mask-based gradient sweep from\n // `@vuecs/placeholder/assets/index.css`.\n classes: {\n root: 'bg-bg-muted text-fg-muted',\n glow: 'animate-pulse',\n },\n },\n tablePlaceholder: {\n classes: {\n root: 'w-full table-fixed border-collapse',\n header: 'border-b border-border',\n body: '',\n footer: 'border-t border-border',\n row: '[&>*]:py-2 [&>*]:px-3',\n cell: '',\n },\n },\n cardPlaceholder: {\n classes: {\n root: 'flex flex-col gap-2 rounded-md border border-border bg-bg p-4 text-fg-muted',\n image: 'overflow-hidden rounded-md',\n header: '',\n body: 'flex flex-col gap-1.5',\n footer: 'mt-2 flex gap-2',\n },\n },\n placeholderWrapper: { classes: { root: 'relative' } },\n tableRowExpansion: {\n classes: {\n root: 'bg-bg-muted/40',\n cell: 'p-0',\n panel: 'overflow-hidden',\n panelInner: 'px-4 py-3 text-fg',\n },\n },\n tableExpandTrigger: {\n classes: {\n root: 'inline-flex items-center justify-center rounded p-1 text-fg-muted hover:bg-bg-muted hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500',\n icon: 'h-4 w-4 transition-transform duration-200',\n },\n },\n tableExpandTriggerCell: { classes: { root: 'w-px whitespace-nowrap text-center align-middle' } },\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/palette.ts","../src/index.ts"],"sourcesContent":["import {\n COLOR_PALETTES,\n COLOR_PALETTE_SHADES,\n SEMANTIC_SCALES,\n applyColorPaletteCss,\n} from '@vuecs/design';\nimport type { ColorPaletteConfig, ColorPaletteName, SemanticScaleName } from '@vuecs/design';\n\nconst SEMANTIC_SCALE_SET = new Set<string>(SEMANTIC_SCALES);\nconst PALETTE_NAME_SET = new Set<string>(COLOR_PALETTES);\n\n/**\n * Build the CSS string that binds semantic scales to Tailwind palettes.\n *\n * Pure function — works identically on server and client. Returns a\n * `:root { ... }` block; inject it into `<head>` (server) or pass it to\n * `applyColorPaletteCss()` (client) to override the defaults from\n * `@vuecs/design`'s `assets/index.css`.\n *\n * Defense-in-depth: filters entries to known semantic scales + catalog\n * palette names so untrusted callers (cookie payloads, hand-edited\n * localStorage, ad-hoc `setColorPalette({ … })` calls) can't emit broken\n * `var(--color-undefined-…)` declarations.\n */\nexport function renderColorPaletteStyles(palette: ColorPaletteConfig): string {\n const entries = Object.entries(palette).filter(\n (entry): entry is [SemanticScaleName, ColorPaletteName] => (\n SEMANTIC_SCALE_SET.has(entry[0]) &&\n typeof entry[1] === 'string' &&\n PALETTE_NAME_SET.has(entry[1])\n ),\n );\n if (entries.length === 0) {\n return '';\n }\n\n const declarations: string[] = [];\n for (const [scale, paletteName] of entries) {\n for (const shade of COLOR_PALETTE_SHADES) {\n declarations.push(\n ` --vc-color-${scale}-${shade}: var(--color-${paletteName}-${shade});`,\n );\n }\n }\n\n return `:root {\\n${declarations.join('\\n')}\\n}\\n`;\n}\n\n/**\n * Apply a Tailwind palette override at runtime (client-side).\n * Composes `@vuecs/design`'s `applyColorPaletteCss()` with our\n * `renderColorPaletteStyles()` renderer.\n *\n * The optional `nonce` parameter wires CSP nonce attribution onto the\n * `<style id=\"vc-color-palette\">` block. CSP-strict consumers using\n * `useColorPalette` from `@vuecs/design` pass nonce via\n * `nonce: () => useConfig('nonce').value`.\n *\n * On the server this is a no-op; use `renderColorPaletteStyles()` directly\n * and inject the result into the SSR response head (or rely on\n * `@vuecs/nuxt`'s palette server plugin, which dispatches through the\n * theme runtime).\n */\nexport function setColorPalette(\n palette: ColorPaletteConfig,\n doc: Document | undefined = globalThis.document,\n nonce?: string,\n): void {\n applyColorPaletteCss(renderColorPaletteStyles(palette), doc, nonce);\n}\n","import type { ClassesMergeFn, Theme } from '@vuecs/core';\nimport { COLOR_PALETTES } from '@vuecs/design';\nimport { twMerge } from 'tailwind-merge';\nimport './config';\nimport { renderColorPaletteStyles } from './palette';\n\nexport { renderColorPaletteStyles, setColorPalette } from './palette';\n/**\n * @deprecated Import `useColorPalette` from `@vuecs/design` instead.\n *\n * The per-theme wrapper previously auto-wired the CSP nonce via\n * `useConfig('nonce')` from `@vuecs/core`. The design-level composable\n * does not. If you rely on CSP nonces, pass `nonce` explicitly:\n *\n * import { useColorPalette } from '@vuecs/design';\n * import { useConfig } from '@vuecs/core';\n * const { current, set } = useColorPalette({\n * nonce: () => useConfig('nonce').value,\n * });\n *\n * Will be removed in the next major version of `@vuecs/theme-tailwind`.\n */\nexport { useColorPalette } from '@vuecs/design';\n/** @deprecated Import from `@vuecs/design` instead. */\nexport type { UseColorPaletteOptions, UseColorPaletteReturn } from '@vuecs/design';\n// `applyColorPaletteCss`, `bindColorPalette`, and `COLOR_PALETTE_STYLE_ELEMENT_ID` are\n// theme-agnostic primitives — re-exported from `@vuecs/design`. Consumers\n// can import them from either source; we keep the re-export so downstream\n// code that picked up the imports from theme-tailwind in earlier versions\n// keeps working.\nexport {\n COLOR_PALETTE_STYLE_ELEMENT_ID,\n applyColorPaletteCss,\n bindColorPalette,\n} from '@vuecs/design';\n/** @deprecated Import from `@vuecs/design` instead — the canonical `ColorPaletteConfig` lives there since plan 026. */\nexport type { ColorPaletteConfig } from '@vuecs/design';\n\nexport const merge: ClassesMergeFn = (base, override) => twMerge(base, override);\n\n/**\n * Tailwind theme for vuecs components.\n *\n * Class strings reference **semantic Tailwind colors** that this package\n * exposes via a Tailwind v4 `@theme` block in `assets/index.css` — e.g.\n * `bg-primary-600`, `text-fg`, `border-border`. The `@theme` block maps\n * Tailwind's `--color-*` names onto `--vc-color-*` CSS variables, which\n * `@vuecs/design` defines as concrete OKLCH literals.\n *\n * Consumers must:\n * 1. Use Tailwind CSS v4 (v3 is not supported).\n * 2. Import `@vuecs/design` (concrete tokens) AND `@vuecs/theme-tailwind`\n * (Tailwind rebind + `@theme` block + safelist) alongside their\n * Tailwind stylesheet.\n *\n * Reskinning is done by redefining `--vc-color-*` variables (manually or\n * via `setColorPalette()`, exported from this package). No theme override\n * needed.\n */\nexport default function tailwindTheme(): Theme {\n return {\n classesMergeFn: merge,\n /*\n * Theme-runtime hook (plan 021): declare the Tailwind palette\n * renderer + catalog. `@vuecs/design`'s `useColorPalette()`\n * walks installed themes and routes through `palette.handle`,\n * so `@vuecs/theme-tailwind`'s `useColorPalette()` wrapper now\n * delegates here rather than wiring the renderer directly.\n */\n palette: {\n handle: renderColorPaletteStyles as (palette: Record<string, string>) => string,\n names: COLOR_PALETTES,\n },\n elements: {\n formGroup: {\n classes: {\n root: 'flex flex-col gap-1',\n label: 'text-sm font-medium text-fg',\n hint: 'text-xs text-fg-muted',\n validationError: 'text-xs text-error-600',\n validationWarning: 'text-xs text-warning-600',\n },\n },\n formInput: {\n classes: {\n root: 'block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted',\n rootGroupStart: 'rounded-l-none',\n rootGroupEnd: 'rounded-r-none',\n group: 'flex items-stretch',\n groupAppend: 'inline-flex items-center rounded-r-md border border-l-0 border-border bg-bg-muted px-3 text-sm text-fg-muted',\n groupPrepend: 'inline-flex items-center rounded-l-md border border-r-0 border-border bg-bg-muted px-3 text-sm text-fg-muted',\n },\n // Size axis mirrors the button family — `sm` shrinks padding\n // + font-size for dense forms, `lg` scales up for primary\n // call-to-action inputs. tailwind-merge dedupes the\n // overlap with the default `px-3 py-2 text-sm` chrome.\n //\n // Severity axis is folded in from the surrounding\n // `<VCFormGroup>`'s validation bundle (see\n // `useFormInputThemeProps` in @vuecs/forms). `error` /\n // `warning` repaint the border + focus ring; the default\n // primary-focus chrome is overridden via tailwind-merge.\n variants: {\n size: {\n xs: {\n root: 'px-1.5 py-0.5 text-[0.7rem]',\n groupAppend: 'px-1.5 text-[0.7rem]',\n groupPrepend: 'px-1.5 text-[0.7rem]',\n },\n sm: {\n root: 'px-2 py-1 text-xs',\n groupAppend: 'px-2 text-xs',\n groupPrepend: 'px-2 text-xs',\n },\n md: { root: '' },\n lg: {\n root: 'px-4 py-3 text-base',\n groupAppend: 'px-4 text-base',\n groupPrepend: 'px-4 text-base',\n },\n },\n severity: {\n error: { root: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { root: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formCheckbox: {\n classes: {\n root: 'inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border border-border bg-bg text-on-primary shadow-sm transition-colors hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 data-[state=checked]:bg-primary-600 data-[state=checked]:border-primary-600 data-[state=indeterminate]:bg-primary-600 data-[state=indeterminate]:border-primary-600 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n indicator: 'inline-flex items-center justify-center text-current',\n label: 'text-sm text-fg cursor-pointer select-none',\n group: 'inline-flex items-center gap-2',\n },\n // Sizing references the structural `vc-form-checkbox-{sm,lg}` helpers\n // (defined in @vuecs/forms/assets/form-checkbox.css) — utility-class\n // sizing like `h-3 w-3` lives in `@layer utilities` which loses to\n // the unlayered structural `.vc-form-checkbox` rule. Label\n // font-size uses Tailwind v4's `class!` important suffix to beat\n // the structural label rule.\n variants: {\n size: {\n xs: { root: 'vc-form-checkbox-xs', label: 'text-[0.7rem]!' },\n sm: { root: 'vc-form-checkbox-sm', label: 'text-xs!' },\n md: { root: '' },\n lg: { root: 'vc-form-checkbox-lg', label: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formCheckboxGroup: { classes: { root: 'flex flex-col gap-2 data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:items-center' } },\n formSwitch: {\n classes: {\n root: 'inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-border bg-bg-muted p-0.5 shadow-sm transition-colors hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 data-[state=checked]:bg-primary-600 data-[state=checked]:border-primary-600 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n thumb: 'block h-3.5 w-3.5 rounded-full bg-bg shadow ring-0 transition-transform translate-x-0 data-[state=checked]:translate-x-4',\n label: 'text-sm text-fg cursor-pointer select-none',\n group: 'inline-flex items-center gap-2',\n },\n // Sizing references the structural `vc-form-switch-{sm,lg}` helpers\n // (track + thumb + checked-translate scale together via descendant\n // selectors). See formCheckbox above for rationale.\n variants: {\n size: {\n xs: { root: 'vc-form-switch-xs', label: 'text-[0.7rem]!' },\n sm: { root: 'vc-form-switch-sm', label: 'text-xs!' },\n md: { root: '' },\n lg: { root: 'vc-form-switch-lg', label: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelect: {\n classes: {\n trigger: 'flex w-full items-center justify-between gap-2 rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring data-[disabled]:cursor-not-allowed data-[disabled]:bg-bg-muted data-[placeholder]:text-fg-muted',\n value: 'truncate',\n icon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-fg-muted',\n content: 'z-50 overflow-hidden rounded-md border border-border bg-bg text-sm text-fg shadow-md min-w-[var(--reka-select-trigger-width)] max-h-[var(--reka-select-content-available-height)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n viewport: 'p-1',\n item: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n itemIndicator: 'absolute left-2 inline-flex h-3.5 w-3.5 items-center justify-center text-primary-600',\n group: '',\n groupLabel: 'px-2 py-1.5 text-xs font-semibold uppercase tracking-wide text-fg-muted',\n separator: '-mx-1 my-1 h-px bg-border',\n },\n // Trigger size uses the structural `vc-form-select-trigger-{sm,lg}`\n // helpers — see formCheckbox above for rationale.\n variants: {\n size: {\n xs: { trigger: 'vc-form-select-trigger-xs', item: 'py-0.5 pl-6 text-[0.7rem]!' },\n sm: { trigger: 'vc-form-select-trigger-sm', item: 'py-1 pl-6 text-xs!' },\n md: { trigger: '' },\n lg: { trigger: 'vc-form-select-trigger-lg', item: 'py-2 pl-8 text-base!' },\n },\n severity: {\n error: { trigger: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { trigger: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formSelectSearch: {\n classes: {\n root: 'relative block',\n input: 'block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted',\n content: 'absolute inset-x-0 top-[calc(100%+0.25rem)] z-50 max-h-60 overflow-y-auto rounded-md border border-border bg-bg shadow-md',\n item: 'flex cursor-pointer select-none flex-col gap-0.5 px-3 py-2 text-sm text-fg outline-none hover:bg-bg-muted',\n itemActive: 'bg-bg-elevated! font-semibold',\n itemCurrent: 'bg-bg-muted',\n itemDescription: 'text-xs text-fg-muted',\n selected: 'mt-2 flex flex-wrap gap-1',\n selectedItem: 'inline-flex items-center gap-1 rounded-sm border border-border bg-bg-muted px-2 py-0.5 text-xs text-fg hover:bg-bg-elevated',\n selectedItemRemove: 'font-semibold leading-none text-fg-muted',\n },\n variants: {\n severity: {\n error: { input: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { input: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n },\n formRadio: {\n classes: {\n root: 'inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-bg shadow-sm transition-colors hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 data-[state=checked]:border-primary-600 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n indicator: 'block h-2 w-2 rounded-full bg-primary-600',\n label: 'text-sm text-fg cursor-pointer select-none',\n group: 'inline-flex items-center gap-2',\n },\n // Sizing references the structural `vc-form-radio-{sm,lg}` helpers\n // (root + indicator scale together via descendant selectors).\n variants: {\n size: {\n xs: { root: 'vc-form-radio-xs', label: 'text-[0.7rem]!' },\n sm: { root: 'vc-form-radio-sm', label: 'text-xs!' },\n md: { root: '' },\n lg: { root: 'vc-form-radio-lg', label: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formRadioGroup: { classes: { root: 'flex flex-col gap-2 data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:items-center data-[orientation=horizontal]:gap-4' } },\n formPin: {\n classes: {\n root: 'inline-flex items-center gap-2',\n input: 'h-10 w-10 rounded-md border border-border bg-bg text-center text-lg font-medium text-fg shadow-sm tabular-nums focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500 disabled:cursor-not-allowed disabled:bg-bg-muted disabled:opacity-50',\n },\n },\n formSlider: {\n classes: {\n root: 'relative flex items-center select-none touch-none w-full h-5 data-[orientation=vertical]:flex-col data-[orientation=vertical]:w-5 data-[orientation=vertical]:h-32',\n track: 'relative grow rounded-full bg-bg-muted h-1 data-[orientation=vertical]:w-1 data-[orientation=vertical]:h-full',\n range: 'absolute rounded-full bg-primary-600 h-full data-[orientation=vertical]:w-full',\n thumb: 'block h-4 w-4 rounded-full border-2 border-primary-600 bg-bg shadow-sm transition-shadow hover:shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n },\n },\n formNumber: {\n classes: {\n root: 'inline-flex w-fit items-stretch overflow-hidden rounded-md border border-border bg-bg shadow-sm focus-within:border-primary-500 focus-within:ring-1 focus-within:ring-primary-500',\n // `field-sizing: content` lets the input auto-grow to fit\n // formatted strings (e.g. \"$20.05\") instead of clipping.\n // `min-w-16` keeps a sensible floor for empty / short\n // values; the parent `w-fit` follows along.\n input: 'min-w-16 [field-sizing:content] bg-transparent border-0 px-3 py-2 text-center text-sm text-fg outline-none tabular-nums [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none',\n decrement: 'inline-flex w-8 items-center justify-center bg-bg-muted text-fg hover:bg-bg-elevated focus-visible:outline-2 focus-visible:outline-primary-500 -outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n increment: 'inline-flex w-8 items-center justify-center bg-bg-muted text-fg hover:bg-bg-elevated focus-visible:outline-2 focus-visible:outline-primary-500 -outline-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n },\n variants: {\n size: {\n xs: {\n input: 'px-1.5 py-0.5 text-[0.7rem]',\n decrement: 'w-5 text-[0.7rem]',\n increment: 'w-5 text-[0.7rem]',\n },\n sm: {\n input: 'px-2 py-1 text-xs',\n decrement: 'w-6 text-xs',\n increment: 'w-6 text-xs',\n },\n md: { input: '' },\n lg: {\n input: 'px-4 py-3 text-base',\n decrement: 'w-10 text-base',\n increment: 'w-10 text-base',\n },\n },\n severity: {\n error: { root: 'border-error-500 focus-within:border-error-500 focus-within:ring-error-500' },\n warning: { root: 'border-warning-500 focus-within:border-warning-500 focus-within:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n formTags: {\n classes: {\n root: 'flex flex-wrap items-center gap-1.5 rounded-md border border-border bg-bg px-2 py-1.5 text-sm shadow-sm cursor-text focus-within:border-primary-500 focus-within:ring-1 focus-within:ring-primary-500 data-[disabled]:cursor-not-allowed data-[disabled]:bg-bg-muted data-[disabled]:opacity-60',\n item: 'inline-flex items-center gap-1 rounded-full bg-primary-600 px-2 py-0.5 text-xs leading-tight text-on-primary',\n itemText: 'select-none',\n itemDelete: 'inline-flex h-4 w-4 items-center justify-center rounded-full bg-transparent text-current hover:bg-black/10',\n input: 'flex-1 min-w-24 bg-transparent border-0 outline-none text-fg px-0 py-0.5 text-sm',\n },\n variants: {\n size: {\n xs: {\n root: 'px-1! py-0.5!',\n item: 'px-1! py-px! text-[0.5625rem]!',\n input: 'text-[0.7rem]!',\n },\n sm: {\n root: 'px-1.5! py-1!',\n item: 'px-1.5! py-px! text-[0.625rem]!',\n input: 'text-xs!',\n },\n md: { root: '' },\n lg: {\n root: 'px-3! py-2! text-base!',\n item: 'px-2.5! py-1! text-sm!',\n input: 'text-base!',\n },\n },\n severity: {\n error: { root: 'border-error-500 focus-within:border-error-500 focus-within:ring-error-500' },\n warning: { root: 'border-warning-500 focus-within:border-warning-500 focus-within:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n button: {\n classes: {\n // Structural baseline — every visual treatment composes\n // on top via compound variants below. Focus ring uses the\n // active color's `-500` shade picked per variant. `gap-2`\n // (8px) keeps the leading-icon / spinner visually\n // separated from the label without looking spaced-out.\n root: 'inline-flex items-center justify-center gap-2 rounded-md font-medium shadow-sm transition-colors focus:outline-none focus:ring-2 focus:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-60',\n leading: 'inline-flex shrink-0 items-center',\n trailing: 'inline-flex shrink-0 items-center',\n label: '',\n },\n variants: {\n size: {\n xs: { root: 'px-2 py-0.5 text-[0.7rem]' },\n sm: { root: 'px-2.5 py-1 text-xs' },\n md: { root: 'px-3 py-1.5 text-sm' },\n lg: { root: 'px-4 py-2 text-base' },\n },\n },\n // Full color × variant matrix. The `ButtonColor` type\n // promises six semantic colors and the API contract is\n // that any (variant, color) pair renders correctly — so\n // every cell is filled, even rare ones like\n // `<VCButton variant=\"soft\" color=\"error\" />`. Consumers\n // who want different shades override via the `overrides`\n // layer on `app.use()`.\n compoundVariants: [\n // solid — colored fill, contrasting text\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary hover:bg-primary-700 focus:ring-primary-500' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-700 text-on-neutral hover:bg-neutral-800 focus:ring-neutral-500' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success hover:bg-success-700 focus:ring-success-500' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning hover:bg-warning-700 focus:ring-warning-500' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error hover:bg-error-700 focus:ring-error-500' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info hover:bg-info-700 focus:ring-info-500' } },\n // soft — tinted bg, colored text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-100 text-primary-700 hover:bg-primary-200 focus:ring-primary-500 dark:bg-primary-900/30 dark:text-primary-300 dark:hover:bg-primary-900/50' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-neutral-100 text-neutral-700 hover:bg-neutral-200 focus:ring-neutral-500 dark:bg-neutral-800 dark:text-neutral-200 dark:hover:bg-neutral-700' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-100 text-success-700 hover:bg-success-200 focus:ring-success-500 dark:bg-success-900/30 dark:text-success-300 dark:hover:bg-success-900/50' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-100 text-warning-700 hover:bg-warning-200 focus:ring-warning-500 dark:bg-warning-900/30 dark:text-warning-300 dark:hover:bg-warning-900/50' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-100 text-error-700 hover:bg-error-200 focus:ring-error-500 dark:bg-error-900/30 dark:text-error-300 dark:hover:bg-error-900/50' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-100 text-info-700 hover:bg-info-200 focus:ring-info-500 dark:bg-info-900/30 dark:text-info-300 dark:hover:bg-info-900/50' } },\n // outline — colored border, transparent fill\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary-600 bg-bg text-primary-700 shadow-none hover:bg-primary-50 focus:ring-primary-500 dark:text-primary-400 dark:hover:bg-primary-900/30' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border border-border bg-bg text-fg shadow-none hover:bg-bg-muted focus:ring-neutral-500' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success-600 bg-bg text-success-700 shadow-none hover:bg-success-50 focus:ring-success-500 dark:text-success-400 dark:hover:bg-success-900/30' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning-600 bg-bg text-warning-700 shadow-none hover:bg-warning-50 focus:ring-warning-500 dark:text-warning-400 dark:hover:bg-warning-900/30' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-error-600 bg-bg text-error-700 shadow-none hover:bg-error-50 focus:ring-error-500 dark:text-error-400 dark:hover:bg-error-900/30' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info-600 bg-bg text-info-700 shadow-none hover:bg-info-50 focus:ring-info-500 dark:text-info-400 dark:hover:bg-info-900/30' } },\n // ghost — no border, colored text, hover background\n { variants: { variant: 'ghost', color: 'primary' }, class: { root: 'bg-transparent text-primary-700 shadow-none hover:bg-primary-50 focus:ring-primary-500 dark:text-primary-400 dark:hover:bg-primary-900/30' } },\n { variants: { variant: 'ghost', color: 'neutral' }, class: { root: 'bg-transparent text-fg shadow-none hover:bg-bg-muted focus:ring-neutral-500' } },\n { variants: { variant: 'ghost', color: 'success' }, class: { root: 'bg-transparent text-success-700 shadow-none hover:bg-success-50 focus:ring-success-500 dark:text-success-400 dark:hover:bg-success-900/30' } },\n { variants: { variant: 'ghost', color: 'warning' }, class: { root: 'bg-transparent text-warning-700 shadow-none hover:bg-warning-50 focus:ring-warning-500 dark:text-warning-400 dark:hover:bg-warning-900/30' } },\n { variants: { variant: 'ghost', color: 'error' }, class: { root: 'bg-transparent text-error-700 shadow-none hover:bg-error-50 focus:ring-error-500 dark:text-error-400 dark:hover:bg-error-900/30' } },\n { variants: { variant: 'ghost', color: 'info' }, class: { root: 'bg-transparent text-info-700 shadow-none hover:bg-info-50 focus:ring-info-500 dark:text-info-400 dark:hover:bg-info-900/30' } },\n // link — underlined, no padding, no chrome\n { variants: { variant: 'link', color: 'primary' }, class: { root: 'bg-transparent p-0 text-primary-700 shadow-none underline underline-offset-4 hover:text-primary-800 focus:ring-primary-500 dark:text-primary-400' } },\n { variants: { variant: 'link', color: 'neutral' }, class: { root: 'bg-transparent p-0 text-fg shadow-none underline underline-offset-4 hover:text-fg-muted focus:ring-neutral-500' } },\n { variants: { variant: 'link', color: 'success' }, class: { root: 'bg-transparent p-0 text-success-700 shadow-none underline underline-offset-4 hover:text-success-800 focus:ring-success-500 dark:text-success-400' } },\n { variants: { variant: 'link', color: 'warning' }, class: { root: 'bg-transparent p-0 text-warning-700 shadow-none underline underline-offset-4 hover:text-warning-800 focus:ring-warning-500 dark:text-warning-400' } },\n { variants: { variant: 'link', color: 'error' }, class: { root: 'bg-transparent p-0 text-error-700 shadow-none underline underline-offset-4 hover:text-error-800 focus:ring-error-500 dark:text-error-400' } },\n { variants: { variant: 'link', color: 'info' }, class: { root: 'bg-transparent p-0 text-info-700 shadow-none underline underline-offset-4 hover:text-info-800 focus:ring-info-500 dark:text-info-400' } },\n ],\n defaultVariants: {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n },\n },\n formTextarea: {\n classes: { root: 'block w-full rounded-md border border-border bg-bg px-3 py-2 text-sm text-fg shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:bg-bg-muted' },\n variants: {\n size: {\n xs: { root: 'px-1.5 py-0.5 text-[0.7rem]' },\n sm: { root: 'px-2 py-1 text-xs' },\n md: { root: '' },\n lg: { root: 'px-4 py-3 text-base' },\n },\n severity: {\n error: { root: 'border-error-500 focus:border-error-500 focus:ring-error-500' },\n warning: { root: 'border-warning-500 focus:border-warning-500 focus:ring-warning-500' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n validationGroup: {\n classes: { item: 'text-xs text-error-600' },\n // Severity-aware per-message colour. The base class\n // sets `text-error-600` as the no-severity default\n // (back-compat with consumers who used legacy\n // `validationMessages` without a severity). The\n // variant overrides per active severity — `tailwind-merge`\n // dedupes the conflicting `text-*-600` classes (last\n // colour wins).\n variants: {\n severity: {\n error: { item: 'text-error-600' },\n warning: { item: 'text-warning-600' },\n success: { item: 'text-success-600' },\n },\n },\n },\n list: {\n classes: {\n // `relative` anchors `<VCListLoading :overlay>`'s\n // `absolute inset-0` to the list container itself.\n // Without it the overlay escapes to the nearest\n // positioned ancestor (often the viewport).\n root: 'relative flex flex-col gap-1',\n // Header / footer chrome — consumer applies these to\n // their own `<header>` / `<footer>` markup inside the\n // `<VCList>` default slot. `empty:hidden` collapses\n // out of layout when no content provided.\n header: 'flex items-center empty:hidden',\n footer: 'flex items-center empty:hidden',\n },\n // Density axis controls the gap between items. `compact`\n // suits dense data tables, `normal` is the default,\n // `spacious` reads as breathing room around long-form\n // entries (e.g. activity feeds).\n variants: {\n density: {\n compact: { root: 'gap-0' },\n normal: { root: '' },\n spacious: { root: 'gap-3' },\n },\n },\n defaultVariants: { density: 'normal' },\n },\n listBody: { classes: { root: 'm-0 list-none p-0' } },\n // `<VCListItem>` owns the row's flex layout. The `text` slot\n // (consumer's `<span :class=\"classes.text\">`) takes `flex-1\n // min-w-0` so it consumes available space and truncates\n // cleanly. The `actions` slot is positionally unopinionated\n // so N clusters compose naturally.\n listItem: {\n classes: {\n root: 'flex flex-row items-center gap-2 py-1',\n text: 'inline-flex min-w-0 flex-1 flex-col',\n actions: 'inline-flex items-center gap-1',\n },\n variants: {\n density: {\n compact: { root: 'py-0.5' },\n normal: { root: '' },\n spacious: { root: 'py-3' },\n },\n disabled: { true: { root: 'cursor-not-allowed opacity-50' } },\n active: { true: { root: 'bg-primary-50 text-primary-900 dark:bg-primary-950 dark:text-primary-100' } },\n selected: { true: { root: 'bg-bg-muted' } },\n },\n defaultVariants: { density: 'normal' },\n },\n listLoading: {\n classes: { root: 'py-2 text-center text-sm text-fg-muted' },\n variants: { overlay: { true: { root: 'absolute inset-0 z-10 flex items-center justify-center bg-bg/75 backdrop-blur-sm' } } },\n },\n listEmpty: { classes: { root: 'rounded-md border border-warning-200 bg-warning-50 p-2 text-sm text-warning-800' } },\n navigation: {\n classes: {\n group: 'm-0 flex list-none flex-col p-0',\n item: 'list-none',\n itemNested: '',\n separator: 'my-2 text-xs font-semibold uppercase tracking-wide text-fg-muted',\n link: 'flex cursor-pointer items-center gap-2 px-3 py-2 text-sm text-fg no-underline hover:bg-bg-muted',\n linkRoot: 'font-medium text-fg',\n linkIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n linkText: 'flex-1 truncate',\n trigger: 'flex w-full cursor-pointer items-center gap-2 px-3 py-2 text-sm text-fg no-underline hover:bg-bg-muted',\n content: 'block pl-3 text-fg',\n viewport: 'relative block',\n },\n variants: {\n size: {\n xs: {\n link: 'px-1.5 py-0.5 text-[0.7rem]',\n linkIcon: 'h-2.5 w-2.5',\n trigger: 'px-1.5 py-0.5 text-[0.7rem]',\n },\n sm: {\n link: 'px-2 py-1 text-xs',\n linkIcon: 'h-3 w-3',\n trigger: 'px-2 py-1 text-xs',\n },\n md: { link: '' },\n lg: {\n link: 'px-4 py-3 text-base',\n linkIcon: 'h-5 w-5',\n trigger: 'px-4 py-3 text-base',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n table: {\n classes: {\n root: 'w-full border-collapse text-sm text-fg',\n scrollContainer: 'relative overflow-auto rounded-md border border-border',\n },\n variants: {\n density: {\n compact: { root: '[&_td]:py-1 [&_th]:py-1.5' },\n normal: { root: '[&_td]:py-2 [&_th]:py-2.5' },\n spacious: { root: '[&_td]:py-3 [&_th]:py-3.5' },\n },\n striped: { true: { root: '[&_tbody_tr:nth-child(even)]:bg-bg-muted/40' } },\n bordered: { true: { root: '[&_td]:border [&_th]:border [&_td]:border-border [&_th]:border-border' } },\n hover: { true: { root: '[&_tbody_tr:hover]:bg-bg-muted/60' } },\n stickyHeader: { true: { root: '[&_thead_th]:sticky [&_thead_th]:top-0 [&_thead_th]:bg-bg [&_thead_th]:z-10' } },\n },\n defaultVariants: { density: 'normal' },\n },\n tableHeader: { classes: { root: 'border-b border-border bg-bg-muted/30 text-xs uppercase tracking-wide text-fg-muted' } },\n tableBody: { classes: { root: '' } },\n tableFooter: { classes: { root: 'border-t border-border bg-bg-muted/30 font-medium' } },\n tableRow: {\n classes: { root: 'border-b border-border last:border-b-0 transition-colors' },\n variants: {\n disabled: { true: { root: 'opacity-50 pointer-events-none' } },\n selected: { true: { root: 'bg-primary-50 dark:bg-primary-950/40' } },\n focused: { true: { root: 'outline outline-2 outline-ring outline-offset-[-2px]' } },\n rowVariant: {\n success: { root: 'bg-success-50 dark:bg-success-950/30' },\n warning: { root: 'bg-warning-50 dark:bg-warning-950/30' },\n error: { root: 'bg-error-50 dark:bg-error-950/30' },\n info: { root: 'bg-info-50 dark:bg-info-950/30' },\n neutral: { root: 'bg-neutral-50 dark:bg-neutral-900' },\n primary: { root: 'bg-primary-50 dark:bg-primary-950/30' },\n },\n },\n },\n tableCell: {\n classes: { root: 'px-3 align-middle' },\n variants: {\n align: {\n left: { root: 'text-left' },\n center: { root: 'text-center' },\n right: { root: 'text-right' },\n },\n stickyColumn: { true: { root: 'sticky left-0 bg-bg z-[1]' } },\n cellVariant: {\n success: { root: 'text-success-700 dark:text-success-300' },\n warning: { root: 'text-warning-700 dark:text-warning-300' },\n error: { root: 'text-error-700 dark:text-error-300' },\n info: { root: 'text-info-700 dark:text-info-300' },\n neutral: { root: 'text-neutral-700 dark:text-neutral-200' },\n primary: { root: 'text-primary-700 dark:text-primary-300' },\n },\n },\n },\n tableHeadCell: {\n classes: {\n root: 'px-3 text-left font-medium',\n sortIcon: 'ml-1 inline-block text-xs leading-none',\n },\n variants: {\n align: {\n left: { root: 'text-left' },\n center: { root: 'text-center' },\n right: { root: 'text-right' },\n },\n stickyColumn: { true: { root: 'sticky left-0 bg-bg-muted z-[2]' } },\n sorted: {\n asc: { root: 'text-fg' },\n desc: { root: 'text-fg' },\n none: { root: '' },\n },\n },\n },\n tableEmpty: {\n classes: { root: '' },\n variants: {\n filtered: {\n true: { root: '[&_td]:py-6 [&_td]:text-center [&_td]:text-fg-muted [&_td]:italic' },\n false: { root: '[&_td]:py-6 [&_td]:text-center [&_td]:text-fg-muted' },\n },\n },\n },\n tableLoading: {\n classes: {\n root: '[&_td]:py-6 [&_td]:text-center [&_td]:text-fg-muted',\n overlay: 'bg-bg/70 backdrop-blur-[1px] text-fg-muted',\n },\n },\n tableSortIndicators: {\n classes: {\n root: 'flex flex-wrap items-center gap-1.5 rounded-md border border-border bg-bg-muted px-3 py-2 text-xs',\n label: 'font-semibold text-fg-muted me-1',\n empty: 'italic text-fg-muted',\n // The chip is a non-interactive wrapper that\n // houses two inner buttons (toggle + remove).\n // Wrapper carries border + background; buttons\n // inside are borderless to inherit the look.\n chip: 'inline-flex items-center rounded-full border border-border bg-bg text-fg transition-colors focus-within:border-primary-500',\n chipToggle: 'inline-flex items-center gap-1.5 bg-transparent border-0 px-2 py-1 rounded-l-full text-fg cursor-pointer hover:bg-primary-50 focus-visible:bg-primary-50 focus-visible:outline-none',\n chipPosition: 'text-[0.625rem] font-bold text-fg-muted',\n chipLabel: '',\n chipArrow: 'font-bold text-primary-600',\n chipRemove: 'inline-flex h-7 w-6 items-center justify-center bg-transparent border-0 rounded-r-full text-fg-muted cursor-pointer hover:bg-error-100 hover:text-error-600 focus-visible:bg-error-100 focus-visible:text-error-600 focus-visible:outline-none',\n // addWrapper omitted — Tailwind styles the\n // <select> directly; no wrapper needed.\n add: 'rounded-full border border-border bg-bg px-2 py-1 text-fg',\n clear: 'ms-auto rounded-full border border-transparent bg-transparent px-2.5 py-1 text-fg-muted hover:bg-bg hover:border-border hover:text-fg focus-visible:bg-bg focus-visible:border-border focus-visible:text-fg focus-visible:outline-none',\n },\n },\n pagination: {\n classes: {\n root: 'inline-flex items-center',\n item: 'inline-flex',\n // Structural only — sizing/padding/typography come from the\n // `size` variant, bg/border/colors come from the `variant`\n // variant. Keeping concerns split lets consumers pick a\n // size and a visual treatment independently.\n link: 'inline-flex items-center justify-center gap-1.5 rounded-md leading-none focus:outline-none focus:ring-1 focus:ring-ring',\n linkActive: 'border-primary-600! bg-primary-600! text-on-primary! hover:bg-primary-700!',\n // The component composes `link + ellipsis` onto\n // PaginationEllipsis so it inherits the box styling\n // (size, border, bg) from the link slot. These overrides\n // turn the inherited interactivity off and mute the\n // text — matching the \"non-clickable spacer\" semantics.\n ellipsis: 'pointer-events-none cursor-default text-fg-muted',\n },\n variants: {\n variant: {\n // Default — clear edges that read as discrete buttons\n // on any page bg (including white-on-white surfaces).\n outline: { link: 'border border-neutral-300 bg-bg text-fg hover:bg-neutral-100 dark:border-neutral-700 dark:hover:bg-neutral-700' },\n // Tinted background, no border — for a softer feel\n // when the surrounding chrome already provides\n // visual separation.\n soft: { link: 'border border-transparent bg-bg-muted text-fg hover:bg-bg-elevated' },\n // Pre-pilot defaults — blends into a non-white page\n // bg. Available for consumers who liked the old look.\n ghost: { link: 'border border-border bg-bg text-fg hover:bg-bg-muted' },\n },\n size: {\n xs: { link: 'h-6 min-w-6 px-1.5 text-[0.7rem]' },\n sm: { link: 'h-7 min-w-7 px-2 text-xs' },\n md: { link: 'h-8 min-w-8 px-3 text-sm' },\n lg: { link: 'h-10 min-w-10 px-4 text-base' },\n },\n },\n defaultVariants: { variant: 'outline', size: 'md' },\n },\n // VCGravatar wraps VCAvatar — sizing comes from the structural\n // `vc-gravatar` class (5rem default, ships with @vuecs/gravatar).\n // The `size` prop only drives the Gravatar URL's `?s=` parameter;\n // override visual size via per-instance `themeClass`.\n gravatar: { classes: { root: 'inline-block overflow-hidden rounded-full' } },\n separator: {\n classes: {\n // Reka encodes orientation as `data-orientation`; size each\n // axis off that so the same class drives horizontal +\n // vertical separators.\n root: 'shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',\n },\n },\n tag: {\n classes: {\n root: 'inline-flex items-center gap-1 rounded-full bg-primary-600 leading-tight text-on-primary',\n icon: 'inline-flex shrink-0 items-center',\n remove: 'inline-flex items-center justify-center rounded-full bg-transparent text-current hover:bg-black/15 focus:outline-none focus-visible:ring-2 focus-visible:ring-on-primary',\n },\n // Size axis mirrors @vuecs/elements badge so a `<VCTag size=\"lg\">`\n // and `<VCBadge size=\"lg\">` read at the same scale. The `!`\n // suffix is needed because the structural `.vc-tag` rule\n // (`@vuecs/elements/assets/tag.css`) sits unlayered and beats\n // utilities in `@layer utilities` — the suffix promotes each\n // utility above the structural padding/font-size defaults.\n variants: {\n size: {\n xs: { root: 'px-1! py-px! text-[0.5625rem]! gap-0.5!', remove: 'h-2.5! w-2.5!' },\n sm: { root: 'px-1.5! py-px! text-[0.625rem]! gap-0.5!', remove: 'h-3! w-3!' },\n md: { root: 'px-2! py-0.5! text-xs!', remove: 'h-4! w-4!' },\n lg: { root: 'px-2.5! py-1! text-sm!', remove: 'h-5! w-5!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n tags: {\n classes: {\n root: 'flex flex-wrap items-center gap-1.5',\n item: '',\n },\n // Gap scales with the chip size so the row reads at a\n // consistent visual rhythm. The Tags component forwards its\n // `size` prop to each <VCTag> child so the chips themselves\n // also resize.\n variants: {\n size: {\n xs: { root: 'gap-0.5' },\n sm: { root: 'gap-1' },\n md: { root: '' },\n lg: { root: 'gap-2' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n avatar: {\n classes: {\n root: 'inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-full bg-bg-muted text-fg-muted align-middle',\n image: 'h-full w-full object-cover',\n fallback: 'inline-flex h-full w-full items-center justify-center font-medium leading-none',\n },\n // Sizing references the structural `vc-avatar-{sm,md,lg}` helpers\n // (defined in @vuecs/elements/assets/avatar.css) — Tailwind\n // utility-class sizing like `h-8 w-8` lives in `@layer utilities`\n // which loses to the unlayered structural `.vc-avatar` rule.\n // `md` is the no-op default — the structural `.vc-avatar` rule\n // already sets the medium size. `vc-avatar-{sm,lg}` helpers\n // override at the structural level (utility classes lose to\n // unlayered structural; see form-checkbox.css rationale).\n variants: {\n size: {\n xs: { root: 'vc-avatar-xs', fallback: 'text-[0.625rem]!' },\n sm: { root: 'vc-avatar-sm', fallback: 'text-xs!' },\n md: { fallback: 'text-sm!' },\n lg: { root: 'vc-avatar-lg', fallback: 'text-base!' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n aspectRatio: { classes: { root: 'block w-full' } },\n card: {\n classes: { root: 'rounded-lg' },\n variants: {\n variant: {\n outline: { root: 'border border-border bg-bg text-fg' },\n soft: { root: 'bg-bg-muted text-fg' },\n elevated: { root: 'border border-border bg-bg text-fg shadow-md' },\n },\n interactive: { true: { root: 'transition-shadow hover:shadow-lg focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-bg cursor-pointer' } },\n },\n defaultVariants: { variant: 'outline' },\n },\n cardHeader: {\n classes: { root: 'flex flex-col gap-1 border-b border-border' },\n variants: {\n padding: {\n compact: { root: 'px-3 py-2' },\n normal: { root: 'px-4 py-3' },\n spacious: { root: 'px-6 py-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardTitle: { classes: { root: 'text-base font-semibold leading-tight text-fg' } },\n cardDescription: { classes: { root: 'text-sm text-fg-muted' } },\n cardBody: {\n classes: { root: 'text-sm text-fg' },\n variants: {\n padding: {\n compact: { root: 'px-3 py-3' },\n normal: { root: 'px-4 py-4' },\n spacious: { root: 'px-6 py-6' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n cardFooter: {\n classes: { root: 'flex items-center justify-end gap-2 border-t border-border' },\n variants: {\n padding: {\n compact: { root: 'px-3 py-2' },\n normal: { root: 'px-4 py-3' },\n spacious: { root: 'px-6 py-4' },\n },\n },\n defaultVariants: { padding: 'normal' },\n },\n collapse: { classes: { root: '' } },\n collapseTrigger: {\n // Chevron rotation lives in structural CSS\n // (`[data-state=\"open\"] .vc-collapse-chevron`) so themes can\n // skip a `group data-[state=open]:` rewire. Both Tailwind\n // and BS/Bulma get rotate-on-open for free via the\n // `.vc-collapse-chevron` structural class.\n classes: {\n root: 'inline-flex items-center justify-between gap-2 cursor-pointer select-none focus:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-md',\n chevron: 'h-4 w-4 shrink-0 text-fg-muted',\n },\n variants: {\n chevron: {\n auto: { chevron: 'inline-flex' },\n none: { chevron: 'hidden' },\n },\n },\n defaultVariants: { chevron: 'auto' },\n },\n // `collapsible-*` keyframes (not `accordion-*`) — they read\n // `--reka-collapsible-content-height` which Reka's\n // CollapsibleContent sets at runtime. Accordion variant would\n // silently fall back to height `auto` (no animation).\n collapseContent: { classes: { root: 'overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up' } },\n alert: {\n classes: {\n root: 'relative flex items-start gap-3 rounded-md border text-sm',\n icon: 'inline-flex shrink-0 items-center justify-center mt-0.5',\n content: 'flex flex-1 flex-col gap-1 min-w-0',\n closeIcon: 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n close: 'inline-flex items-center justify-center rounded-md px-2 py-1 text-xs font-medium hover:opacity-80 focus:outline-none focus:ring-2 focus:ring-ring',\n },\n variants: {\n size: {\n xs: { root: 'p-1.5 pr-7 text-[0.7rem]' },\n sm: { root: 'p-2 pr-8 text-xs' },\n md: { root: 'p-3 pr-9 text-sm' },\n lg: { root: 'p-4 pr-10 text-sm' },\n },\n },\n compoundVariants: [\n // solid\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary border-primary-700' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-600 text-on-neutral border-neutral-700' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success border-success-700' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning border-warning-700' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error border-error-700' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info border-info-700' } },\n // soft\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-50 text-primary-800 border-primary-200 dark:bg-primary-950 dark:text-primary-200 dark:border-primary-800' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-neutral-50 text-fg border-border dark:bg-neutral-900' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-50 text-success-800 border-success-200 dark:bg-success-950 dark:text-success-200 dark:border-success-800' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-50 text-warning-800 border-warning-200 dark:bg-warning-950 dark:text-warning-200 dark:border-warning-800' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-50 text-error-800 border-error-200 dark:bg-error-950 dark:text-error-200 dark:border-error-800' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-50 text-info-800 border-info-200 dark:bg-info-950 dark:text-info-200 dark:border-info-800' } },\n // outline\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border-primary-600 text-primary-700 bg-transparent dark:text-primary-200' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border-border text-fg bg-transparent' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border-success-600 text-success-700 bg-transparent dark:text-success-200' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border-warning-600 text-warning-700 bg-transparent dark:text-warning-200' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border-error-600 text-error-700 bg-transparent dark:text-error-200' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border-info-600 text-info-700 bg-transparent dark:text-info-200' } },\n ],\n defaultVariants: {\n variant: 'soft', \n color: 'neutral', \n size: 'md', \n },\n },\n alertTitle: { classes: { root: 'font-semibold leading-tight' } },\n alertDescription: { classes: { root: 'leading-snug opacity-90' } },\n badge: {\n classes: { root: 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium leading-tight' },\n // Size variants use the `!` suffix to override the unlayered\n // structural `.vc-badge` padding/font-size defaults — see\n // tag.size above for rationale.\n variants: {\n size: {\n xs: { root: 'px-1! py-px! text-[0.5625rem]!' },\n sm: { root: 'px-1.5! py-px! text-[0.625rem]!' },\n md: { root: 'px-2! py-0.5! text-xs!' },\n lg: { root: 'px-2.5! py-1! text-sm!' },\n },\n },\n // Color × variant matrix for the `solid` / `soft` / `outline`\n // treatments. Mirrors the button matrix so a `<VCBadge color=\"error\" />`\n // and a `<VCButton color=\"error\" variant=\"soft\" />` read as the\n // same visual family.\n compoundVariants: [\n // solid — colored fill\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-700 text-on-neutral' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info' } },\n // soft — tinted bg + colored text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-100 text-primary-700 dark:bg-primary-900/30 dark:text-primary-300' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-neutral-100 text-neutral-700 dark:bg-neutral-800 dark:text-neutral-200' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-100 text-success-700 dark:bg-success-900/30 dark:text-success-300' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-100 text-warning-700 dark:bg-warning-900/30 dark:text-warning-300' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-100 text-error-700 dark:bg-error-900/30 dark:text-error-300' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-100 text-info-700 dark:bg-info-900/30 dark:text-info-300' } },\n // outline — colored border, transparent fill\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border border-primary-600 bg-bg text-primary-700 dark:text-primary-400' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border border-border bg-bg text-fg' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border border-success-600 bg-bg text-success-700 dark:text-success-400' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border border-warning-600 bg-bg text-warning-700 dark:text-warning-400' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border border-error-600 bg-bg text-error-700 dark:text-error-400' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border border-info-600 bg-bg text-info-700 dark:text-info-400' } },\n ],\n defaultVariants: {\n variant: 'soft',\n color: 'neutral',\n size: 'md',\n },\n },\n modal: {\n classes: {\n overlay: 'fixed inset-0 z-50 bg-neutral-950/60 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n content: 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 rounded-lg border border-border bg-bg p-6 text-fg shadow-lg outline-none focus:outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n header: 'flex flex-col gap-1.5',\n title: 'text-lg font-semibold text-fg',\n description: 'text-sm text-fg-muted',\n body: 'flex flex-col gap-2 text-sm text-fg',\n footer: 'flex flex-row items-center justify-end gap-2',\n trigger: '',\n // Generic close trigger — neutral baseline so consumer\n // classes (`<VCModalClose class=\"...\">`) compose cleanly.\n // The corner-X pattern lives in `closeIcon` below.\n close: 'focus:outline-none focus:ring-2 focus:ring-ring',\n closeIcon: 'absolute right-3 top-3 inline-flex h-7 w-7 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n back: 'inline-flex h-7 w-7 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n },\n // Modal size axis = max-width tier. md (lg) is the default;\n // sm fits compact confirms, lg fits forms, xl fits dashboards.\n variants: {\n size: {\n xs: { content: 'max-w-xs p-3 gap-2' },\n sm: { content: 'max-w-sm p-4 gap-3' },\n md: { content: '' },\n lg: { content: 'max-w-2xl' },\n xl: { content: 'max-w-4xl' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n popover: {\n classes: {\n trigger: '',\n content: 'z-50 w-72 rounded-md border border-border bg-bg p-4 text-sm text-fg shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n arrow: 'fill-bg',\n // Generic close trigger — neutral baseline so consumer\n // classes compose cleanly. Corner-X lives in `closeIcon`.\n close: 'focus:outline-none focus:ring-2 focus:ring-ring',\n closeIcon: 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n },\n variants: {\n size: {\n xs: { content: 'w-48 p-2 text-[0.7rem]' },\n sm: { content: 'w-56 p-3 text-xs' },\n md: { content: '' },\n lg: { content: 'w-96 p-5 text-base' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n hoverCard: {\n classes: {\n trigger: '',\n content: 'z-50 w-64 rounded-md border border-border bg-bg p-4 text-sm text-fg shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n arrow: 'fill-bg',\n },\n variants: {\n size: {\n xs: { content: 'w-40 p-2 text-[0.7rem]' },\n sm: { content: 'w-48 p-3 text-xs' },\n md: { content: '' },\n lg: { content: 'w-80 p-5 text-base' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n stepper: {\n classes: {\n root: 'flex items-center gap-2 data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch',\n // `group` scopes the indicator's `group-data-[state=active]:`\n // / `group-data-[state=completed]:` variants. Without it,\n // every step renders identical (the variant prefix has\n // nothing to anchor to and never matches).\n item: 'group flex flex-1 items-center gap-2 data-[orientation=vertical]:flex-row',\n // The trigger is a circle that swaps colors based on the\n // step's `data-state` (active / completed / inactive). It\n // also receives `data-disabled` from Reka when the linear\n // option blocks navigation; muted styling reads as\n // \"currently unreachable\".\n trigger: 'inline-flex shrink-0 items-center justify-center rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-60 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60',\n // Active + completed both light up primary so the\n // \"where you've been\" trail reads as one continuous\n // progression. Completed-as-success made the row\n // visually noisy and broke the linear-progress metaphor.\n indicator: 'inline-flex h-8 w-8 items-center justify-center rounded-full border border-border bg-bg text-sm font-semibold text-fg-muted group-data-[state=active]:border-primary-600 group-data-[state=active]:bg-primary-600 group-data-[state=active]:text-on-primary group-data-[state=completed]:border-primary-600 group-data-[state=completed]:bg-primary-600 group-data-[state=completed]:text-on-primary',\n title: 'text-sm font-medium text-fg',\n description: 'text-xs text-fg-muted',\n separator: 'h-px flex-1 shrink bg-border data-[state=completed]:bg-primary-600 data-[orientation=vertical]:h-8 data-[orientation=vertical]:w-px',\n },\n // Indicator sizing references the structural\n // `vc-stepper-indicator-{sm,lg}` helpers (defined in\n // @vuecs/navigation/assets/index.css). Title / description\n // font-sizes use the `!` suffix to override base structural\n // text-size defaults set on neighboring elements.\n variants: {\n size: {\n xs: {\n indicator: 'vc-stepper-indicator-xs',\n title: 'text-[0.7rem]!',\n description: 'text-[0.5625rem]!',\n },\n sm: {\n indicator: 'vc-stepper-indicator-sm',\n title: 'text-xs!',\n description: 'text-[0.625rem]!',\n },\n md: { indicator: '' },\n lg: {\n indicator: 'vc-stepper-indicator-lg',\n title: 'text-base!',\n description: 'text-sm!',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n toastViewport: {\n // Fixed-position viewport. Each position variant pins the\n // viewport against one viewport corner / center. Stack\n // direction is bottom-up for `bottom-*` and top-down for\n // `top-*` so the most recent toast is always closest to\n // the user's pointer.\n classes: { root: 'fixed z-[100] flex max-h-screen w-full max-w-sm flex-col gap-2 p-4 list-none m-0 pointer-events-none [&>*]:pointer-events-auto outline-none' },\n variants: {\n position: {\n 'top-left': { root: 'top-0 left-0' },\n 'top-right': { root: 'top-0 right-0' },\n 'top-center': { root: 'top-0 left-1/2 -translate-x-1/2' },\n 'bottom-left': { root: 'bottom-0 left-0 flex-col-reverse' },\n 'bottom-right': { root: 'bottom-0 right-0 flex-col-reverse' },\n 'bottom-center': { root: 'bottom-0 left-1/2 -translate-x-1/2 flex-col-reverse' },\n },\n },\n defaultVariants: { position: 'top-right' },\n },\n toast: {\n classes: {\n root: 'relative pointer-events-auto flex w-full items-start gap-3 overflow-hidden rounded-md border border-border bg-bg p-4 pr-8 text-sm text-fg shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:slide-in-from-right-full data-[state=closed]:slide-out-to-right-full data-[swipe=move]:translate-x-[var(--reka-toast-swipe-move-x)] data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--reka-toast-swipe-end-x)] data-[swipe=end]:animate-out data-[swipe=end]:fade-out-80',\n body: 'flex flex-col gap-1 flex-1 min-w-0',\n close: 'inline-flex items-center justify-center rounded-md px-2 py-1 text-xs font-medium text-fg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n closeIcon: 'absolute right-2 top-2 inline-flex h-6 w-6 items-center justify-center rounded-md text-fg-muted hover:bg-bg-muted hover:text-fg focus:outline-none focus:ring-2 focus:ring-ring',\n },\n // Color × variant matrix mirrors `<VCBadge>`'s.\n compoundVariants: [\n // solid\n { variants: { variant: 'solid', color: 'primary' }, class: { root: 'bg-primary-600 text-on-primary border-primary-700' } },\n { variants: { variant: 'solid', color: 'neutral' }, class: { root: 'bg-neutral-700 text-on-neutral border-neutral-800' } },\n { variants: { variant: 'solid', color: 'success' }, class: { root: 'bg-success-600 text-on-success border-success-700' } },\n { variants: { variant: 'solid', color: 'warning' }, class: { root: 'bg-warning-600 text-on-warning border-warning-700' } },\n { variants: { variant: 'solid', color: 'error' }, class: { root: 'bg-error-600 text-on-error border-error-700' } },\n { variants: { variant: 'solid', color: 'info' }, class: { root: 'bg-info-600 text-on-info border-info-700' } },\n // soft — tinted bg + colored text\n { variants: { variant: 'soft', color: 'primary' }, class: { root: 'bg-primary-50 text-primary-900 border-primary-200 dark:bg-primary-950/30 dark:text-primary-200 dark:border-primary-900' } },\n { variants: { variant: 'soft', color: 'neutral' }, class: { root: 'bg-bg-muted text-fg border-border' } },\n { variants: { variant: 'soft', color: 'success' }, class: { root: 'bg-success-50 text-success-900 border-success-200 dark:bg-success-950/30 dark:text-success-200 dark:border-success-900' } },\n { variants: { variant: 'soft', color: 'warning' }, class: { root: 'bg-warning-50 text-warning-900 border-warning-200 dark:bg-warning-950/30 dark:text-warning-200 dark:border-warning-900' } },\n { variants: { variant: 'soft', color: 'error' }, class: { root: 'bg-error-50 text-error-900 border-error-200 dark:bg-error-950/30 dark:text-error-200 dark:border-error-900' } },\n { variants: { variant: 'soft', color: 'info' }, class: { root: 'bg-info-50 text-info-900 border-info-200 dark:bg-info-950/30 dark:text-info-200 dark:border-info-900' } },\n // outline — colored border, transparent fill\n { variants: { variant: 'outline', color: 'primary' }, class: { root: 'border-primary-600 bg-bg text-primary-700 dark:text-primary-300' } },\n { variants: { variant: 'outline', color: 'neutral' }, class: { root: 'border-border bg-bg text-fg' } },\n { variants: { variant: 'outline', color: 'success' }, class: { root: 'border-success-600 bg-bg text-success-700 dark:text-success-300' } },\n { variants: { variant: 'outline', color: 'warning' }, class: { root: 'border-warning-600 bg-bg text-warning-700 dark:text-warning-300' } },\n { variants: { variant: 'outline', color: 'error' }, class: { root: 'border-error-600 bg-bg text-error-700 dark:text-error-300' } },\n { variants: { variant: 'outline', color: 'info' }, class: { root: 'border-info-600 bg-bg text-info-700 dark:text-info-300' } },\n ],\n defaultVariants: { variant: 'soft', color: 'neutral' },\n },\n toastTitle: { classes: { root: 'text-sm font-semibold leading-tight' } },\n toastDescription: { classes: { root: 'text-sm leading-snug opacity-90' } },\n toastAction: { classes: { root: 'inline-flex items-center justify-center rounded-md border border-current px-2 py-1 text-xs font-medium hover:bg-bg-muted focus:outline-none focus:ring-2 focus:ring-ring shrink-0' } },\n tooltip: {\n classes: {\n trigger: '',\n content: 'z-50 overflow-hidden rounded-md bg-neutral-900 px-3 py-1.5 text-xs text-on-neutral shadow-md data-[state=delayed-open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95 dark:bg-neutral-50 dark:text-neutral-900',\n arrow: 'fill-neutral-900 dark:fill-neutral-50',\n },\n variants: {\n size: {\n xs: { content: 'px-1.5 py-0.5 text-[0.5625rem]' },\n sm: { content: 'px-2 py-1 text-[0.625rem]' },\n md: { content: '' },\n lg: { content: 'px-4 py-2 text-sm' },\n },\n },\n defaultVariants: { size: 'md' },\n },\n dropdownMenu: {\n classes: {\n trigger: '',\n content: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n item: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n checkboxItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioGroup: '',\n itemIndicator: 'absolute left-2 inline-flex h-3.5 w-3.5 items-center justify-center',\n label: 'px-2 py-1.5 text-xs font-semibold text-fg-muted',\n separator: '-mx-1 my-1 h-px bg-border',\n group: '',\n subTrigger: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[state=open]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n subContent: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n arrow: 'fill-bg',\n },\n variants: {\n size: {\n xs: {\n content: 'min-w-[5rem] text-[0.7rem]',\n item: 'px-1 py-0.5',\n subTrigger: 'px-1 py-0.5',\n subContent: 'min-w-[5rem] text-[0.7rem]',\n },\n sm: {\n content: 'min-w-[6rem] text-xs',\n item: 'px-1.5 py-1',\n subTrigger: 'px-1.5 py-1',\n subContent: 'min-w-[6rem] text-xs',\n },\n md: { content: '' },\n lg: {\n content: 'min-w-[12rem] text-base',\n item: 'px-3 py-2',\n subTrigger: 'px-3 py-2',\n subContent: 'min-w-[12rem] text-base',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n contextMenu: {\n classes: {\n trigger: '',\n content: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n item: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n checkboxItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioItem: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm py-1.5 pl-7 pr-2 outline-none data-[highlighted]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n radioGroup: '',\n itemIndicator: 'absolute left-2 inline-flex h-3.5 w-3.5 items-center justify-center',\n label: 'px-2 py-1.5 text-xs font-semibold text-fg-muted',\n separator: '-mx-1 my-1 h-px bg-border',\n group: '',\n subTrigger: 'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none data-[highlighted]:bg-bg-muted data-[state=open]:bg-bg-muted data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n subContent: 'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-bg p-1 text-sm text-fg shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n },\n variants: {\n size: {\n xs: {\n content: 'min-w-[5rem] text-[0.7rem]',\n item: 'px-1 py-0.5',\n subTrigger: 'px-1 py-0.5',\n subContent: 'min-w-[5rem] text-[0.7rem]',\n },\n sm: {\n content: 'min-w-[6rem] text-xs',\n item: 'px-1.5 py-1',\n subTrigger: 'px-1.5 py-1',\n subContent: 'min-w-[6rem] text-xs',\n },\n md: { content: '' },\n lg: {\n content: 'min-w-[12rem] text-base',\n item: 'px-3 py-2',\n subTrigger: 'px-3 py-2',\n subContent: 'min-w-[12rem] text-base',\n },\n },\n },\n defaultVariants: { size: 'md' },\n },\n placeholder: {\n // Tailwind 4 ships `animate-pulse` for the glow\n // pattern. The wave variant inherits the default\n // (`vc-placeholder-wave`), which composes the\n // shipped mask-based gradient sweep from\n // `@vuecs/placeholder/assets/index.css`.\n classes: {\n root: 'bg-bg-muted text-fg-muted',\n glow: 'animate-pulse',\n },\n },\n tablePlaceholder: {\n classes: {\n root: 'w-full table-fixed border-collapse',\n header: 'border-b border-border',\n body: '',\n footer: 'border-t border-border',\n row: '[&>*]:py-2 [&>*]:px-3',\n cell: '',\n },\n },\n cardPlaceholder: {\n classes: {\n root: 'flex flex-col gap-2 rounded-md border border-border bg-bg p-4 text-fg-muted',\n image: 'overflow-hidden rounded-md',\n header: '',\n body: 'flex flex-col gap-1.5',\n footer: 'mt-2 flex gap-2',\n },\n },\n placeholderWrapper: { classes: { root: 'relative' } },\n tableRowExpansion: {\n classes: {\n root: 'bg-bg-muted/40',\n cell: 'p-0',\n panel: 'overflow-hidden',\n panelInner: 'px-4 py-3 text-fg',\n },\n },\n tableExpandTrigger: {\n classes: {\n root: 'inline-flex items-center justify-center rounded p-1 text-fg-muted hover:bg-bg-muted hover:text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500',\n icon: 'h-4 w-4 transition-transform duration-200',\n },\n },\n tableExpandTriggerCell: { classes: { root: 'w-px whitespace-nowrap text-center align-middle' } },\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuecs/theme-tailwind",
3
- "version": "6.0.1",
3
+ "version": "6.1.0",
4
4
  "type": "module",
5
5
  "description": "Tailwind CSS theme for vuecs components.",
6
6
  "exports": {
@@ -49,15 +49,15 @@
49
49
  "tailwind-merge": "^3.6.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@vuecs/button": "^1.1.1",
52
+ "@vuecs/button": "^1.2.0",
53
53
  "@vuecs/core": "^3.2.2",
54
54
  "@vuecs/countdown": "^2.0.6",
55
55
  "@vuecs/design": "^1.0.6",
56
- "@vuecs/elements": "^1.2.5",
57
- "@vuecs/forms": "^5.2.3",
58
- "@vuecs/gravatar": "^2.0.7",
56
+ "@vuecs/elements": "^1.3.0",
57
+ "@vuecs/forms": "^5.3.0",
58
+ "@vuecs/gravatar": "^2.0.8",
59
59
  "@vuecs/list": "^1.0.6",
60
- "@vuecs/navigation": "^4.0.4",
60
+ "@vuecs/navigation": "^4.1.0",
61
61
  "@vuecs/overlays": "^1.1.2",
62
62
  "@vuecs/pagination": "^2.1.5",
63
63
  "@vuecs/placeholder": "^1.0.6",