// Shared components — navbar, footer, mark, FAB, building blocks. const { useState, useEffect, useRef } = React; // EBS monogram — original interpretation (not the supplied logo, which is too low-res / placeholder). // A flourished "S" framed within a hairline diamond. Renders in currentColor so it adapts to nav state. function Mark({ size = 36 }) { return ( EBS ); } function LogoLockup({ light }) { return ( Events by Saniya ); } function LocaleToggle({ locale, setLocale }) { return (
{["EN", "AR", "HI"].map((l) => ( ))}
); } function Navbar({ route, locale, setLocale }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 60); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); const overHero = route === "home" && !scrolled; return (
Enquire
); } function WhatsAppFab() { return ( ); } function Footer() { return ( ); } function FooterCol({ title, links }) { return (
{title}
); } // CTA band — for end of pages function CtaBand({ heading = "Plan your wedding with us", sub = "Tell us about your celebration. We'll come back with a single, considered point of view." }) { return (
Begin

{heading}

{sub}

Book a Consultation Chat on WhatsApp
); } // Section header — eyebrow + ornament + heading + optional kicker function SectionHeader({ eyebrow, heading, kicker, align = "left" }) { return (
{eyebrow}

{heading}

{kicker && (

{kicker}

)}
); } // Real wedding card — used on home + index function WeddingCard({ wedding, size = "md" }) { const isLarge = size === "lg"; return (
{wedding.destination}
{wedding.location} · {wedding.year}

{wedding.display}

{wedding.events} events · {wedding.days} days · {wedding.guests} guests

Read the story →
); } Object.assign(window, { Mark, LogoLockup, Navbar, Footer, WhatsAppFab, CtaBand, SectionHeader, WeddingCard, LocaleToggle, });