/* global React, IK */ // Real-wedding components: filterable grid + case-study deep-dive const { useState, useMemo } = React; function ConsentRibbon({ lang }) { const c = window.__ikLang === "ar" ? IK.t.ar.consent : IK.t.en.consent; return ( {c} ); } function WeddingCard({ w, lang, onOpen, size = "md" }) { const ratio = size === "tall" ? "3 / 4" : size === "wide" ? "5 / 3" : "4 / 5"; return ( ); } function RealWeddingsSection({ lang, onOpen }) { const [filter, setFilter] = useState("all"); const T = IK.t[lang]; const dests = [{ slug: "all", label: { en: "All", ar: "الكل" } }, ...IK.destinations]; const filtered = useMemo( () => filter === "all" ? IK.weddings : IK.weddings.filter(w => w.destination === filter), [filter] ); return (
  {T.realEyebrow}

{T.realTitle}

{T.realSub}

{/* Filter chips */}
{dests.map(d => ( ))}
{/* Editorial grid: irregular spans */}
{filtered.map((w, i) => { const span = (i % 5 === 0) ? 7 : (i % 5 === 1) ? 5 : (i % 5 === 2) ? 4 : (i % 5 === 3) ? 4 : 4; const size = span === 7 ? "wide" : span === 5 ? "tall" : "md"; return (
); })}
e.preventDefault()}> {T.seeAll}
); } // Case-study deep dive function CaseStudy({ slug, onClose, lang }) { const w = IK.weddings.find(x => x.slug === slug); const [lightbox, setLightbox] = useState(null); if (!w) return null; const T = IK.t[lang]; return (
{/* top bar */}
Case study · {w.year} Plan yours
{/* Hero */}
  A wedding story

{w.title[lang]}

{w.destinationLabel[lang]} · {w.venue} · {w.year}

{/* Meta row */}
{[ ["Destination", w.destinationLabel[lang]], ["Venue", w.venue], ["Functions", w.functions.join(" · ")], ["Guest count", w.guestBand], ].map(([k, v]) => (
{k} {v}
))}
{/* Narrative */}

{w.excerpt[lang]} A celebration is rarely about one evening — it's about the small kindnesses that make a week feel like one long, slow exhale. We held the calendar, the budget, the difficult conversation about cousins; the couple held everything else.

{w.functions.map(f => ( {f} ))}
{/* Gallery */}
{w.gallery.map((src, i) => { const span = i === 0 ? 6 : (i % 3 === 1) ? 4 : 2; const ratio = span === 6 ? "16 / 9" : span === 4 ? "5 / 4" : "3 / 4"; return ( ); })}
{/* Photographer credit + consent */}
Photography credit · {w.photographer}
{/* CTA band */}

Plan a wedding like this — quietly,  over many evenings.

{T.enquire} WhatsApp
{/* Lightbox */} {lightbox && (
setLightbox(null)} role="dialog" aria-modal="true">
)}
); } Object.assign(window, { RealWeddingsSection, CaseStudy, ConsentRibbon });