cn utility

Conditionally combine Tailwind CSS classes and de-duplicate utilities.

The cn utility joins string classes, evaluates conditional expressions, and merges Tailwind CSS classes to prevent specificity collisions (similar to the standard clsx and tailwind-merge implementations).

SignatureLink

ts
function cn(...inputs: ClassValue[]): string

ParametersLink

  • inputs: Any combination of strings, boolean conditionals, nested arrays, or object maps.

Example: Building a Button ComponentLink

tsx
import { cn } from 'boltdocs/client'

interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary'
  isLoading?: boolean
}

export function CustomButton({ variant = 'primary', isLoading, className, children, ...props }: ButtonProps) {
  return (
    <button
      className={cn(
        'px-4 py-2 rounded font-medium transition-colors duration-150',
        variant === 'primary' && 'bg-blue-600 text-white hover:bg-blue-700',
        variant === 'secondary' && 'bg-zinc-200 text-zinc-800 hover:bg-zinc-300',
        isLoading && 'opacity-50 cursor-not-allowed',
        className // Allows users to override base styles
      )}
      disabled={isLoading}
      {...props}
    >
      {children}
    </button>
  )
}
Last updated on October 18, 2026

Was this page helpful?