/* ============================================================
SHARED COMPONENTS — Nav, Footer, WhatsAppFab, LeadModal, Logo
============================================================ */
const WA_URL = "https://wa.me/971800776655?text=Hi%20Driven%20Properties%2C%20I%27d%20like%20to%20speak%20with%20a%20broker";
const TEL = "tel:+97142454800";
/* ----- Logo (redrawn from supplied svg — placeholder quality) ----- */
function Logo({ light, withForbes }) {
const stroke = light ? "#FBF9F4" : "#0E1216";
return (
window.__nav("home")}>
{withForbes ? (
Exclusive UAE member
Forbes Global Properties
) : null}
);
}
/* ----- Nav ----- */
function Nav({ page, t, lang, setLang, onPage, dark, openLead }) {
return (
);
}
/* ----- Footer ----- */
function Footer({ t, onPage }) {
return (
);
}
/* ----- WhatsApp FAB ----- */
function WhatsAppFab() {
return (
WhatsApp a broker
);
}
/* ============================================================
LEAD MODAL — viewing / valuation / list / talk / brochure
============================================================ */
function LeadModal({ open, kind, ctx, t, onClose }) {
const [active, setActive] = React.useState(kind || "viewing");
const [sent, setSent] = React.useState(false);
React.useEffect(() => {
if (open) { setActive(kind || "viewing"); setSent(false); }
}, [open, kind]);
React.useEffect(() => {
function key(e) { if (e.key === "Escape") onClose(); }
document.addEventListener("keydown", key);
return () => document.removeEventListener("keydown", key);
}, [onClose]);
function submit(e) { e.preventDefault(); setTimeout(() => setSent(true), 250); }
const m = t.leadModal;
const title = m.titles[active] || m.titles.viewing;
const isList = active === "listProp" || active === "valuation";
return (
e.target.classList.contains("modal-bd") && onClose()}>
DRIVEN · {t.nav.contact}
{title}
{m.strap}
{ctx ? (
Re: {ctx}
) : null}
{m.trust.map((s, i) => {s})}
{sent ? (
) : (
{m.tabs.map((tab) => (
))}
)}
);
}
Object.assign(window, { Nav, Footer, WhatsAppFab, LeadModal, Logo, WA_URL, TEL });