+ {/* Current file info */}
+ {currentFilename && !file && (
+
+
+
+ {currentFilename}
+
+
+
+ )}
+
+ {/* Drop zone */}
+ {!file ? (
+
{ e.preventDefault(); setIsDragOver(true); }}
+ onDragLeave={() => setIsDragOver(false)}
+ onDrop={handleDrop}
+ className={cn(
+ "relative flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-10 transition-colors cursor-pointer",
+ isDragOver
+ ? "border-amber-500 bg-amber-500/10"
+ : "border-zinc-700 hover:border-amber-500/50 hover:bg-zinc-800/50"
+ )}
+ onClick={() => document.getElementById("highres-file-input")?.click()}
+ >
+
e.target.files?.[0] && handleFileSelect(e.target.files[0])}
+ />
+
+
+ {currentFilename ? "Drop replacement file here or click to browse" : "Drop high-res file here or click to browse"}
+
+
MOV, MP4 or any video format
+
+ ) : (
+
+
+
+
{file.name}
+
{formatFileSize(file.size)}
+
+ {uploadState === "idle" && (
+
+ )}
+ {uploadState === "done" && (
+
+ )}
+
+ )}
+
+ {/* Upload progress */}
+ {(uploadState === "uploading" || uploadState === "done") && (
+
+
+
+ {uploadState === "uploading" ? "Uploading…" : "Complete!"}
+
+ {uploadProgress}%
+
+
+
+ )}
+
+
+