import { File, Paperclip } from "lucide-react"; import { useEffect, useState } from "react"; import { FileInput, FileUploader, FileUploaderContent, FileUploaderItem, } from "~/components/extensions/file-upload"; interface DocumentUploaderProps { id: string; maxFiles?: number; files: (File | string)[] | null | undefined; setFiles: (files: (File | string)[] | null) => void; defaultFileUrl?: string; } export default function DocumentUploader({ id, maxFiles = 1, files, setFiles, defaultFileUrl, }: DocumentUploaderProps) { const [displayFiles, setDisplayFiles] = useState<(File | string)[]>([]); useEffect(() => { if (defaultFileUrl && (!files || files.length === 0)) { setFiles([defaultFileUrl]); } }, [defaultFileUrl, files, setFiles]); useEffect(() => { setDisplayFiles(files || []); }, [files]); const dropZoneConfig = { maxFiles: maxFiles, maxSize: 1024 * 1024 * 4, multiple: maxFiles > 1, }; const handleValueChange = (newFiles: File[] | null) => { if (newFiles) { setFiles(newFiles); } else { setFiles(null); } }; return ( {displayFiles.length === 0 && (

Tarik file di sini atau klik untuk mengunggah.

Unggah hingga {maxFiles} file.

)} {displayFiles.map((file, i) => ( {typeof file === "string" ? file.split("/").pop() : file.name} ))}
); }