"use client"; import React, { useEffect, useState } from "react"; import Image from "next/image"; import { X } from "lucide-react"; interface FilePreviewListProps { files: File[]; onRemoveFile: (fileToRemove: File) => void; } export function FilePreviewList({ files, onRemoveFile }: FilePreviewListProps) { const [selectedImage, setSelectedImage] = useState(null); // Cleanup object URLs on unmount useEffect(() => { const objectUrls = files .filter((file) => file.type.startsWith("image/")) .map((file) => URL.createObjectURL(file)); return () => { objectUrls.forEach(URL.revokeObjectURL); }; }, [files]); if (files.length === 0) return null; return ( <>
{files.map((file, index) => { const imageUrl = file.type.startsWith("image/") ? URL.createObjectURL(file) : null; return (
imageUrl && setSelectedImage(imageUrl)} > {file.type.startsWith("image/") ? ( {file.name} ) : (
{file.name}
)}
); })}
{/* Image Modal/Lightbox */} {selectedImage && (
setSelectedImage(null)} >
Full size preview of uploaded diagram or image e.stopPropagation()} />
)} ); }