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

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();
}
