Something went wrong. Try again.
I'm going to build my own OpenClaw, with blackjack... and bun!
Something went wrong. Try again.
707 B · 24 lines
TypeScript
12345678910111213141516171819202122232425// @ts-nocheckimport { html, useEffect } from '../vendor/preact-htm.js';import { BodyPortal } from './body-portal.js';
/** * Image modal for zooming */export function ImageModal({ src, onClose }) { useEffect(() => { const handleEsc = (e) => { if (e.key === 'Escape') onClose(); }; document.addEventListener('keydown', handleEsc); return () => document.removeEventListener('keydown', handleEsc); }, [onClose]);
return html` <${BodyPortal} className="image-modal-portal-root"> <div class="image-modal" onClick=${onClose}> <img src=${src} alt="Full size" /> </div> </${BodyPortal}> `;}