import { useState, type ChangeEvent, type DragEvent, type MouseEvent } from 'react'; import { formatFileSize } from '../lib/ids'; interface DropZoneProps { file: File | null; onFileChange: (file: File | null) => void; accept?: string; } export function DropZone({ file, onFileChange, accept = '.ipa,application/octet-stream' }: DropZoneProps) { const [isDragOver, setIsDragOver] = useState(false); const handleDragOver = (event: DragEvent) => { event.preventDefault(); setIsDragOver(true); }; const handleDragLeave = () => { setIsDragOver(false); }; const handleDrop = (event: DragEvent) => { event.preventDefault(); setIsDragOver(false); const dropped = event.dataTransfer?.files?.[0] ?? null; if (dropped) onFileChange(dropped); }; const handleInputChange = (event: ChangeEvent) => { const selected = event.target.files?.[0] ?? null; onFileChange(selected); }; const handleClear = (event: MouseEvent) => { event.preventDefault(); onFileChange(null); }; return (
); }