import { describe, expect, it, } from 'vitest'; import { cn } from './cn'; describe('cn utility', () => { it('should merge classes with clsx', () => { expect(cn('class1', 'class2')).toBe('class1 class2'); expect(cn('class1', { class2: true, class3: false })).toBe('class1 class2'); }); it('should resolve tailwind specificity conflicts', () => { // text-neutral-400 vs text-brand (text-brand should win) expect(cn('text-neutral-400', 'text-brand')).toBe('text-brand'); // p-4 vs p-2 expect(cn('p-4', 'p-2')).toBe('p-2'); // dark mode classes should be handled correctly too expect(cn('text-neutral-400 dark:text-neutral-400', 'text-brand dark:text-brand')).toBe( 'text-brand dark:text-brand', ); }); it('should handle undefined and null inputs', () => { expect(cn('class1', undefined, null, 'class2')).toBe('class1 class2'); }); });