"use client"; import { Fragment, useState } from "react"; import { Icon } from "@iconify/react"; import { useDropzone } from "react-dropzone"; import { Button } from "@/components/ui/button"; import Image from "next/image"; import { CloudUpload } from "lucide-react"; interface FileWithPreview extends File { preview: string; } const FileUploaderMultiple = () => { const [files, setFiles] = useState([]); const { getRootProps, getInputProps } = useDropzone({ onDrop: (acceptedFiles) => { setFiles(acceptedFiles.map((file) => Object.assign(file))); }, }); const renderFilePreview = (file: FileWithPreview) => { if (file.type.startsWith("image")) { return ( {file.name} ); } else { return ; } }; const handleRemoveFile = (file: FileWithPreview) => { const uploadedFiles = files; const filtered = uploadedFiles.filter((i) => i.name !== file.name); setFiles([...filtered]); }; const fileList = files.map((file) => (
{renderFilePreview(file)}
{file.name}
{Math.round(file.size / 100) / 10 > 1000 ? ( <>{(Math.round(file.size / 100) / 10000).toFixed(1)} ) : ( <>{(Math.round(file.size / 100) / 10).toFixed(1)} )} {" kb"}
)); const handleRemoveAllFiles = () => { setFiles([]); }; return (

Drop files here or click to upload.

( This is just a demo drop zone. Selected files are not actually uploaded.)
{files.length ? (
{fileList}
) : null}
); }; export default FileUploaderMultiple;