import React from 'react'; import { Card } from '../ui/card'; import { UploadProgressBar } from './UploadProgressBar'; import { FileAudio, FileImage, FolderArchive, File, CheckCircle, AlertCircle, } from 'lucide-react'; export interface UploadFile { id: string; file: File; progress: number; status: 'uploading' | 'paused' | 'completed' | 'error' | 'processing'; previewUrl?: string; } interface FilePreviewCardProps { fileData: UploadFile; onPause: () => void; onResume: () => void; onCancel: () => void; } export const FilePreviewCard: React.FC = ({ fileData, onPause, onResume, onCancel, }) => { const { file, progress, status, previewUrl } = fileData; const formatSize = (bytes: number) => { if (bytes === 0) return '0 B'; const k = 1024; const sizes = ['B', 'KB', 'MB', 'GB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`; }; const getIcon = () => { if (file.type.startsWith('image/')) return ; if (file.type.startsWith('audio/')) return ; if (file.type.includes('zip') || file.type.includes('compressed')) return ; return ; }; return ( {/* Thumbnail / Icon */}
{previewUrl && file.type.startsWith('image/') ? ( Preview ) : ( getIcon() )}
{/* Info & Progress */}

{file.name}

{formatSize(file.size)}
{status === 'completed' ? (
Ready
) : status === 'error' ? (
Failed
) : ( )}
); };