import { cn } from '@/lib/utils';
import { FileArchive, FileCode, FileSpreadsheet, FileText, Film, File as GenericFile, Image, Music } from 'lucide-react';

interface FileIconProps {
    mimeType: string;
    className?: string;
}

export function FileIcon({ mimeType, className }: FileIconProps) {
    const getIcon = () => {
        if (mimeType.startsWith('image/')) return <Image className={cn('text-purple-500', className)} />;
        if (mimeType.startsWith('video/')) return <Film className={cn('text-red-500', className)} />;
        if (mimeType.startsWith('audio/')) return <Music className={cn('text-pink-500', className)} />;

        switch (mimeType) {
            case 'application/pdf':
                return <FileText className={cn('text-red-500', className)} />;
            case 'application/vnd.ms-excel':
            case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':
            case 'text/csv':
                return <FileSpreadsheet className={cn('text-green-600', className)} />;
            case 'application/json':
            case 'text/javascript':
            case 'text/html':
            case 'text/css':
                return <FileCode className={cn('text-yellow-500', className)} />;
            case 'application/zip':
            case 'application/x-rar-compressed':
            case 'application/x-7z-compressed':
                return <FileArchive className={cn('text-orange-500', className)} />;
            case 'text/plain':
                return <FileText className={cn('text-gray-500', className)} />;
            default:
                return <GenericFile className={cn('text-gray-400', className)} />;
        }
    };

    return getIcon();
}
