// ============================================================ // components.jsx — Shared components // ============================================================ const { useState, useEffect, useRef } = React; // Original geometric sun motif — not the existing logo, our own interpretation function SunMark({ size = 36, color = "#B8975A", strokeColor }) { const stroke = strokeColor || color; return ( ); } function ArrowRight({ size = 14 }) { return ( ); } // ============================================================ // Nav // ============================================================ function Nav({ route, go, locale, setLocale }) { const [mobileOpen, setMobileOpen] = useState(false); const links = [ { id: "treatments", label: "Treatments" }, { id: "dentists", label: "Our Dentists" }, { id: "about", label: "About" }, { id: "gallery", label: "Smile Gallery" }, { id: "tourism", label: "Dental Tourism" }, { id: "contact", label: "Contact" } ]; return (
{ e.preventDefault(); go("home"); }}>
Versailles Dental Clinic · Dubai
/
{ e.preventDefault(); go("book"); }}> Book a Consultation
Versailles Dental Clinic · Dubai
{ e.preventDefault(); go("home"); setMobileOpen(false); }}>Home {links.map((l) => ( { e.preventDefault(); go(l.id); setMobileOpen(false); }}> {l.label} ))} { e.preventDefault(); go("book"); setMobileOpen(false); }}> Book a Consultation
); } // ============================================================ // Footer // ============================================================ function Footer({ go }) { const { TREATMENTS, DENTISTS } = window.__VDC_DATA__; return ( ); } // ============================================================ // Mobile bottom bar // ============================================================ function MobileBar({ go }) { return (
Call +971 4 429 8288 { e.preventDefault(); go("contact"); }}> WhatsApp To be confirmed { e.preventDefault(); go("book"); }}> Book Consultation
); } // ============================================================ // Section header (numbered, editorial) // ============================================================ function SectionHead({ num, title, meta }) { return (
{num}

{title}

{meta}
); } // ============================================================ // Trust strip // ============================================================ function TrustStrip() { const items = [ { k: "Est. 2007", v: "Dubai Healthcare City" }, { k: "French heritage", v: "Founder-led practice" }, { k: ~4.9, v: "Google — 300+ reviews · re-verify" }, { k: "DHA-licensed", v: "Licence [client to supply]" }, { k: "EN · FR · AR · ZH", v: "Multilingual care" } ]; return (
{items.map((it, i) => (
{it.k}
{it.v}
))}
); } // ============================================================ // CTA Band // ============================================================ function CTABand({ go }) { return (
Bonjour — welcome

Begin with a consultation.
The rest will follow.

A first visit at Versailles is unhurried — examination, photographs and a written plan, before any treatment is agreed.

{ e.preventDefault(); go("book"); }}> Book a Consultation Call +971 4 429 8288
); } // ============================================================ // Toast (small confirmation popups) // ============================================================ function useToast() { const [msg, setMsg] = useState(null); useEffect(() => { if (!msg) return; const t = setTimeout(() => setMsg(null), 2400); return () => clearTimeout(t); }, [msg]); return [msg, setMsg]; } Object.assign(window, { SunMark, ArrowRight, Nav, Footer, MobileBar, SectionHead, TrustStrip, CTABand, useToast });