import { useEffect, useState } from 'react' type PreviewImageLinkProps = { href: string src: string alt: string caption: string } export function PreviewImageLink({ href, src, alt, caption }: PreviewImageLinkProps) { const [open, setOpen] = useState(false) useEffect(() => { if (!open) return const onKeyDown = (event: KeyboardEvent) => { if (event.key === 'Escape') { setOpen(false) } } window.addEventListener('keydown', onKeyDown) return () => window.removeEventListener('keydown', onKeyDown) }, [open]) return (
{caption} (click to enlarge)
{open ? (
setOpen(false)} >
event.stopPropagation()} >
{caption} event.stopPropagation()} > open image
{alt}
) : null}
) }