// PropertyModal.jsx — full property detail in a luxury modal const { useState: useStatePM, useEffect: useEffectPM } = React; function PropertyModal({ p, onClose, navigate }) { const [imgIdx, setImgIdx] = useStatePM(0); useEffectPM(() => { const onKey = (e) => { if (e.key === 'Escape') onClose(); }; window.addEventListener('keydown', onKey); document.body.style.overflow = 'hidden'; return () => { window.removeEventListener('keydown', onKey); document.body.style.overflow = ''; }; }, [onClose]); if (!p) return null; return (
e.stopPropagation()} className="modal-scroll" style={{ background: 'var(--color-cloud-white)', color: 'var(--color-midnight-navy)', borderRadius: 24, width: '100%', maxWidth: 1180, overflow: 'hidden', position: 'relative', animation: 'modal-in 380ms var(--ease-luxury)', boxShadow: '0 50px 120px rgba(0,0,0,0.5)', }}> {/* Close */} {/* Image collage */}
{p.gallery.map((g, i) => (
{p.gallery.slice(1, 3).map((g, i) => (
setImgIdx(i + 1)} style={{ background: `url('${g}') center/cover no-repeat`, cursor: 'pointer' }} /> ))}
{/* Body */}
{/* Left content */}
{p.neighborhood} · Seattle

{p.title}

{p.address}
{[ ['Bedrooms', p.beds === 0 ? 'Studio' : p.beds], ['Bathrooms', p.baths], ['Square Feet', p.sqft.toLocaleString()], ['Walk Score', p.walkScore], ].map(([l, v]) => (
{l}
{v}
))}

About this home

{p.description}

Amenities

{p.amenities.map(a => (
{a}
))}
{/* Right sticky card */}
); } window.SantirmaPropertyModal = PropertyModal;