/* global React */ const { useState, useEffect, useRef, useMemo, useCallback } = React; /* ============================================================ Only One Design — Shared UI components ============================================================ */ // ---------- Logo (placeholder wordmark + monogram) ---------- function LogoWordmark({ height = 36, dark = false }) { const ink = dark ? "#FBF8F2" : "#1A1916"; const brass = "#A8884E"; const rule = dark ? "rgba(251,248,242,0.3)" : "#E4DCCD"; return ( ONLY ONE DESIGN DUBAI DESIGN DISTRICT — d3 ); } function LogoMark({ size = 40, dark = false }) { const ink = dark ? "#FBF8F2" : "#1A1916"; const brass = "#A8884E"; return ( ); } // ---------- Eyebrow ---------- function Eyebrow({ children, rule = true, style }) { return ( {children} ); } // ---------- Flag (CLIENT-FILL etc) ---------- function Flag({ children, kind = "fill" }) { return {children}; } // ---------- Breadcrumb ---------- function Crumb({ items, onNav }) { return ( ); } // ---------- Navbar ---------- const NAV_LINKS = [ { to: "home", label: "Home", labelAr: "الرئيسية" }, { to: "services", label: "Services", labelAr: "الخدمات" }, { to: "process", label: "Process", labelAr: "المسار" }, { to: "lookbook", label: "Lookbook", labelAr: "المعرض" }, { to: "atelier", label: "Atelier", labelAr: "الأتيليه" }, { to: "contact", label: "Contact", labelAr: "تواصل" }, ]; function Navbar({ route, onNav, locale, onLocale }) { const [open, setOpen] = useState(false); useEffect(() => { setOpen(false); }, [route]); return (
{ e.preventDefault(); onNav("home"); }}>
{NAV_LINKS.map(l => ( { e.preventDefault(); onNav(l.to); }}> {locale === "ar" ? l.labelAr : l.label} ))} {e.preventDefault(); onNav("appointments");}}> {locale === "ar" ? "احجز موعد" : "Book Appointment"} →
); } function LocaleSwitcher({ locale, onLocale }) { const locales = [ { id: "en", label: "EN" }, { id: "ar", label: "AR" }, { id: "ru", label: "RU", disabled: true }, { id: "zh", label: "ZH", disabled: true }, ]; return (
{locales.map((l, i) => ( {i > 0 && ·} ))}
); } // ---------- Footer ---------- function Footer({ onNav, locale, callConfirmed }) { return ( ); } // ---------- Trust strip ---------- function TrustStrip({ locale }) { const items = [ { k: locale === "ar" ? "بالموعد" : "By appointment", v: locale === "ar" ? "زيارة خاصة" : "Private visit" }, { k: locale === "ar" ? "الموقع" : "Location", v: locale === "ar" ? "حي دبي للتصميم" : "Dubai Design District" }, { k: locale === "ar" ? "الأسلوب" : "Approach", v: locale === "ar" ? "تفصيل حسب القياس" : "Made-to-measure" }, ]; return (
{items.map((it, i) => (
{it.k}
{it.v}
))}
); } // ---------- Callout (CTA band) ---------- function Callout({ title, onNav, locale }) { return (
{locale === "ar" ? "ابدأ من هنا" : "Begin here"}

{title || (locale === "ar" ? "زيارة الأتيليه تبدأ بموعد." : "A visit to the atelier begins with an appointment.")}

); } // ---------- Lightbox ---------- function Lightbox({ src, caption, onClose }) { useEffect(() => { const onKey = (e) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [onClose]); return (
e.stopPropagation()} />
{caption}
); } // ---------- Empty state ---------- function EmptyState({ title, body, action }) { return (
Empty by design

{title}

{body}

{action}
); } Object.assign(window, { LogoWordmark, LogoMark, Eyebrow, Flag, Crumb, Navbar, LocaleSwitcher, Footer, TrustStrip, Callout, Lightbox, EmptyState, NAV_LINKS });