"use client"; import { useCallback, useState } from "react"; import { cn } from "@/lib/utils"; import { Upload, FileText } from "lucide-react"; interface FileDropZoneProps { onFile: (content: string, filename: string) => void; accept?: string; label?: string; } export function FileDropZone({ onFile, accept = ".csv", label = "Drop your CSV file here" }: FileDropZoneProps) { const [dragging, setDragging] = useState(false); const [filename, setFilename] = useState(null); const processFile = useCallback((file: File) => { const reader = new FileReader(); reader.onload = (e) => { onFile(e.target?.result as string, file.name); setFilename(file.name); }; reader.readAsText(file); }, [onFile]); const onDrop = useCallback((e: React.DragEvent) => { e.preventDefault(); setDragging(false); const file = e.dataTransfer.files[0]; if (file) processFile(file); }, [processFile]); const onInputChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) processFile(file); }; return ( ); }