"use client"; import Image from "next/image"; import { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { Icon } from "@iconify/react"; interface Props { src: string; alt: string; width: number; height: number; className?: string; } export default function ImageViewer({ src, alt, width, height, className }: Props) { const [isOpen, setIsOpen] = useState(false); const [isVisible, setIsVisible] = useState(false); const close = () => { setIsVisible(false); setTimeout(() => { setIsOpen(false); }, 300); }; useEffect(() => { if (isOpen) { // slight delay to trigger animation setTimeout(() => setIsVisible(true), 10); } }, [isOpen]); return ( <> {alt} setIsOpen(true)} /> {isOpen && createPortal(
{alt}
, document.body )} ); }