import { cva } from 'class-variance-authority';

/**
 * DS-003: Shared form field variant system.
 *
 * Centralises the base classes for Input, Textarea, and Select so they
 * are consistent and only need to be updated in one place.
 *
 * Variants:
 *   - default  — standard bordered field
 *   - ghost    — borderless, background-free (e.g. inline editing)
 *   - error    — destructive border for invalid state
 *
 * Usage:
 *   import { inputVariants } from './input-variants';
 *   className={cn(inputVariants({ variant }), className)}
 */
export const inputVariants = cva(
  // Base classes shared by all form fields
  [
    'flex w-full rounded-md bg-background text-base',
    'ring-offset-background transition-shadow duration-150',
    'placeholder:text-muted-foreground',
    'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
    'disabled:cursor-not-allowed disabled:opacity-50',
    'md:text-sm',
  ],
  {
    variants: {
      variant: {
        default: 'border border-input px-3 py-2',
        ghost: 'border-0 bg-transparent px-3 py-2 focus-visible:ring-0 focus-visible:ring-offset-0',
        error: 'border border-destructive px-3 py-2 focus-visible:ring-destructive',
      },
      fieldSize: {
        sm: 'h-8 text-sm',
        md: 'h-10',
        lg: 'h-12 text-base',
      },
    },
    defaultVariants: {
      variant: 'default',
      fieldSize: 'md',
    },
  },
);
