"use client"; import { useCallback, useState } from "react"; import { useDropzone } from "react-dropzone"; import { Button } from "./ui/button"; import { Upload as UploadIcon, File as FileIcon, X } from "lucide-react"; import PdfViewer from "./PdfViewer"; interface FileUploadProps { onFileSelect: (file: File) => void; } export function formatFileSize(bytes: number): string { if (bytes === 0) return "0 Bytes"; const k = 1024; const sizes = ["Bytes", "KB", "MB", "GB", "TB"]; const i = Math.floor(Math.log(bytes) / Math.log(k)); return ( Number.parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i] ); } export function FileUpload({ onFileSelect }: FileUploadProps) { const [selectedFile, setSelectedFile] = useState(null); const [file, setFile] = useState(null); const onDrop = useCallback( (acceptedFiles: File[]) => { const file = acceptedFiles[0]; setSelectedFile(file); onFileSelect(file); setFile(file); }, [onFileSelect] ); const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop, accept: { "application/pdf": [".pdf"], }, maxSize: 100 * 1024 * 1024, // 100MB multiple: false, }); return (
{!selectedFile ? (

Drop your PDF here or click to browse

Maximum file size: 100MB

) : (

{selectedFile?.name}

{formatFileSize(selectedFile?.size ?? 0)}

{file && }
)}
); }