/* Unsaved preview only. Receives calculated builder lines; never saves or publishes. */ (function(host){ const {useEffect,useRef}=React; function PromotionSheetPreview({lines=[],isPrice,say,startsOn,endsOn,theme,themes,onClose}){ const dialog=useRef(null),close=useRef(onClose);close.current=onClose; useEffect(()=>{ const previous=document.activeElement,overflow=document.body.style.overflow;document.body.style.overflow='hidden';dialog.current?.querySelector('button')?.focus(); const keydown=e=>{if(e.key==='Escape'){e.preventDefault();e.stopPropagation();close.current?.();}if(e.key==='Tab'){e.preventDefault();dialog.current?.querySelector('button')?.focus();}}; document.addEventListener('keydown',keydown,true); return()=>{document.removeEventListener('keydown',keydown,true);document.body.style.overflow=overflow;if(previous?.isConnected)previous.focus();}; },[]); const Artwork=host.PromotionTicketArtwork,pages=Math.ceil(lines.length/10); return host.ReactDOM.createPortal(
UNSAVED DRAFT PREVIEW · {lines.length} tickets · {pages} A4 sheet{pages===1?'':'s'} · 70 × 50 mm