import { useState, useCallback } from "react"; import { Upload, Video, X, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/utils"; interface UploadZoneProps { onUpload: (file: File) => void; isLoading: boolean; } export const UploadZone = ({ onUpload, isLoading }: UploadZoneProps) => { const [isDragging, setIsDragging] = useState(false); const [selectedFile, setSelectedFile] = useState(null); const handleDrag = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); }, []); const handleDragIn = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(true); }, []); const handleDragOut = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); }, []); const handleDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); const files = e.dataTransfer.files; if (files && files.length > 0) { const file = files[0]; if (file.type.startsWith("video/")) { setSelectedFile(file); } } }, []); const handleFileSelect = (e: React.ChangeEvent) => { const files = e.target.files; if (files && files.length > 0) { setSelectedFile(files[0]); } }; const handleSubmit = () => { if (selectedFile) { onUpload(selectedFile); } }; const clearFile = () => { setSelectedFile(null); }; return (
{!selectedFile ? ( <>

Upload Echocardiography Video

Drag and drop your video file here, or click to browse

Supported formats: MP4, AVI, MOV, DICOM

) : (

{selectedFile.name}

{(selectedFile.size / (1024 * 1024)).toFixed(2)} MB

)}
); };