"use client"; import { useCallback, useState } from "react"; import { useTranslations } from "next-intl"; import { Upload, FolderPlus, FilePlus } from "lucide-react"; import { Button } from "@/components/ui/button"; import { getDroppedFilesAndFolders } from "@/lib/webdav/drop-utils"; interface FileUploadAreaProps { onUpload: (files: File[]) => Promise; onUploadFolder?: (files: File[]) => Promise; onCreateFolder: () => void; onCreateTextFile?: () => void; } export function FileUploadArea({ onUpload, onUploadFolder, onCreateFolder, onCreateTextFile }: FileUploadAreaProps) { const t = useTranslations("files"); const [isDragging, setIsDragging] = useState(false); const handleDragOver = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(true); }, []); const handleDragLeave = useCallback((e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); }, []); const handleDrop = useCallback(async (e: React.DragEvent) => { e.preventDefault(); e.stopPropagation(); setIsDragging(false); const { files, hasDirectories } = await getDroppedFilesAndFolders(e.dataTransfer); if (files.length > 0) { if (hasDirectories && onUploadFolder) { await onUploadFolder(files); } else { await onUpload(files); } } }, [onUpload, onUploadFolder]); return (

{t("empty_state_title")}

{t("empty_state_description")}

{t("drop_files_here")}

{onCreateTextFile && ( )}
); }