Nuxt UI & Design Systems

22. Nuxt UI & Headless Design Systems

Build design system components using Nuxt UI and shadcn-svelte headless primitives with Class Variance Authority (CVA) and Tailwind tokens.

nuxt-ui.ts
// Modern Headless UI Design Tokens with CVA & Tailwind v4
import { cva, type VariantProps } from 'class-variance-authority';
import { clsx, type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs));
}

export const buttonStyles = cva(
  'inline-flex items-center justify-center font-medium transition focus:outline-none rounded-xl',
  {
    variants: {
      variant: {
        primary: 'bg-indigo-600 text-white hover:bg-indigo-500 shadow-sm',
        secondary: 'border border-slate-200 bg-white text-slate-800 dark:bg-slate-900 dark:text-slate-100',
        danger: 'bg-rose-600 text-white hover:bg-rose-500'
      },
      size: {
        sm: 'px-3 py-1.5 text-sm',
        base: 'px-4 py-2 text-base',
        lg: 'px-6 py-3 text-lg'
      }
    },
    defaultVariants: { variant: 'primary', size: 'base' }
  }
);

Nuxt UI & Headless Design Systems

Modern headless design architectures decouple accessibility and keyboard interaction mechanics (Reka UI / Bits UI) from atomic styling tokens (Tailwind CSS v4 & CVA).

  • Headless Primitives: Zero-dependency accessible primitives guarantee WAI-ARIA compliance, roving tabindex, and screen reader announcements.
  • Class Variance Authority (CVA): Type-safe variant configuration maps component properties cleanly to atomic Tailwind classes.
  • Tailwind Merge: Safely resolves conflicting utility classes without CSS specificity wars.
CVA Token Variant Synthesizer Headless UI Primitives
Select Variant:
Select Size: