'use client'; import React, { useRef, useState } from "react"; import { FiTrash2 } from "react-icons/fi"; // Use trash bin icon interface ImageInputProps { image: File | null; setImage: (f: File | null) => void; classify: (input: string | Blob) => void; ready: boolean | null; } export const ImageInput = ({ image, setImage, classify, ready }: ImageInputProps) => { const inputRef = useRef(null); const [dragOver, setDragOver] = useState(false); // NEW: Track drag-over state const handleFile = (file: File) => { setImage(file); const reader = new FileReader(); reader.onload = (ev) => { classify(ev.target?.result as string); }; reader.readAsDataURL(file); }; // NEW: Handle delete image const handleDelete = (e: React.MouseEvent) => { e.stopPropagation(); setImage(null); }; return (
inputRef.current?.click()} onDrop={e => { e.preventDefault(); setDragOver(false); if (e.dataTransfer.files.length > 0 && e.dataTransfer.files[0].type.startsWith('image/')) { handleFile(e.dataTransfer.files[0]); } }} onDragOver={e => { e.preventDefault(); setDragOver(true); }} onDragLeave={() => setDragOver(false)} > {image ? (
{/* Delete button at top-right of image container */} Uploaded
) : ( Drop image here, or click to select )} { if (e.target.files && e.target.files[0]) { handleFile(e.target.files[0]); } }} />
); };