@vuecs/theme-tailwind 1.0.0 → 1.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,CAm/B7C"}
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,CAkhC7C"}
package/dist/index.mjs CHANGED
@@ -1387,7 +1387,27 @@ function tailwindTheme() {
1387
1387
  }
1388
1388
  } },
1389
1389
  defaultVariants: { size: "md" }
1390
- }
1390
+ },
1391
+ placeholder: { classes: {
1392
+ root: "bg-bg-muted text-fg-muted",
1393
+ glow: "animate-pulse"
1394
+ } },
1395
+ tablePlaceholder: { classes: {
1396
+ root: "w-full table-fixed border-collapse",
1397
+ header: "border-b border-border",
1398
+ body: "",
1399
+ footer: "border-t border-border",
1400
+ row: "[&>*]:py-2 [&>*]:px-3",
1401
+ cell: ""
1402
+ } },
1403
+ cardPlaceholder: { classes: {
1404
+ root: "flex flex-col gap-2 rounded-md border border-border bg-bg p-4 text-fg-muted",
1405
+ image: "overflow-hidden rounded-md",
1406
+ header: "",
1407
+ body: "flex flex-col gap-1.5",
1408
+ footer: "mt-2 flex gap-2"
1409
+ } },
1410
+ placeholderWrapper: { classes: { root: "relative" } }
1391
1411
  }
1392
1412
  };
1393
1413
  }
@@ -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 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 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 },\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 },\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 },\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 },\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 },\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 },\n defaultVariants: { size: 'md' },\n },\n validationGroup: { classes: { item: 'text-xs text-error-600' } },\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 },\n variants: {\n size: {\n sm: { link: 'px-2 py-1 text-xs', linkIcon: 'h-3 w-3' },\n md: { link: '' },\n lg: { link: 'px-4 py-3 text-base', linkIcon: 'h-5 w-5' },\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 },\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 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 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 },\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 },\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 },\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 },\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 },\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 },\n defaultVariants: { size: 'md' },\n },\n validationGroup: { classes: { item: 'text-xs text-error-600' } },\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 },\n variants: {\n size: {\n sm: { link: 'px-2 py-1 text-xs', linkIcon: 'h-3 w-3' },\n md: { link: '' },\n lg: { link: 'px-4 py-3 text-base', linkIcon: 'h-5 w-5' },\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 },\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": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "Tailwind CSS theme for vuecs components.",
6
6
  "exports": {
@@ -53,13 +53,14 @@
53
53
  "@vuecs/core": "^3.0.0",
54
54
  "@vuecs/countdown": "^2.0.0",
55
55
  "@vuecs/design": "^1.0.0",
56
- "@vuecs/elements": "^1.0.0",
56
+ "@vuecs/elements": "^1.1.0",
57
57
  "@vuecs/forms": "^4.0.0",
58
- "@vuecs/gravatar": "^2.0.0",
58
+ "@vuecs/gravatar": "^2.0.1",
59
59
  "@vuecs/list": "^1.0.0",
60
60
  "@vuecs/navigation": "^3.0.0",
61
61
  "@vuecs/overlays": "^1.0.0",
62
62
  "@vuecs/pagination": "^2.0.0",
63
+ "@vuecs/placeholder": "^1.0.0",
63
64
  "@vuecs/timeago": "^2.0.0",
64
65
  "@vueuse/core": "^14.3.0",
65
66
  "jsdom": "^29.1.1",