Conditionally join class names. Tailwind and clsx-style helper.
export function cn(...inputs: (string | undefined | null | false)[]): string {
return inputs
.flat()
.filter(Boolean)
.join(' ')
.replace(/\s+/g, ' ')
.trim();
}
// cn('base', isActive && 'active', className) => "base active ..."
Joins class names; skips falsy values. Flat so you can pass arrays. Use with Tailwind or any CSS.
Conditional and merged classes. Often named cn or classNames.
className={cn('btn', variant === 'primary' && 'btn-primary', className)}