/* 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 (
);
}
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 (
);
}
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) => (
))}
);
}
// ---------- 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
});