// Shared UI components — Nav, Hero, sections.
const { useState, useEffect, useRef, useMemo } = React;
// --- ICONS (simple geometric only, no illustrative SVG) ---
const Icon = {
Phone: (p) => (
),
WhatsApp: (p) => (
),
Pin: (p) => (
),
Clock: (p) => (
),
Arrow: (p) => (
),
ArrowL: (p) => (
),
Lock: (p) => (
),
Check: (p) => (
),
Star: (p) => (
),
Quote: (p) => (
),
Menu: (p) => (
),
Globe: (p) => (
),
X: (p) => (
),
};
// --- LOGO LOCKUP (live HTML, not the baked-in webp) ---
function Logo({ light }) {
const color = light ? 'white' : 'var(--ink)';
const accent = light ? 'var(--mint-deep)' : 'var(--clinic)';
return (
tds
The Dental Studio
because smiling matters
);
}
// --- TOP UTILITY STRIP ---
function UtilityBar({ branch, onBranchClick }) {
return (
Showing {branch.name}
· change branch
|
EN · العربية · РУС · 中文
);
}
// --- NAVBAR ---
function Nav({ branch, onBranchClick, onBook }) {
const [scrolled, setScrolled] = useState(false);
useEffect(() => {
const onScroll = () => setScrolled(window.scrollY > 12);
window.addEventListener('scroll', onScroll);
return () => window.removeEventListener('scroll', onScroll);
}, []);
return (
);
}
// --- HERO ---
function Hero({ branch, heroVariant, onBook }) {
const heroImg = {
'clinic-interior': 'media/clinic-interior.webp',
'clinic-env': 'media/clinic-env.webp',
'treatment-room': 'media/treatment-room.webp',
}[heroVariant] || 'media/clinic-interior.webp';
return (
{/* LEFT: live HTML headline */}
MOH-licensed · EH6NKOMI-220725
Since 1976
Dubai's trusted dental home
{' '}since 1976 —
{' '}specialist care across
8 clinics
.
Award-winning, multi-specialty dentistry across Dubai — the only Dental Phobia Certified clinic in the UAE, with a 40+ specialist team, biodentistry niche, and 24/7 emergency care. Because smiling matters.
{/* RIGHT: photo + floating credential cards */}
{/* floating credential card top-left */}
49
Years of ethical care
Brand-stated, established 1976
{/* floating bottom-right */}
★ Recognised by
Global Brands Magazine
Excellence in Dental Care · 2021
);
}
// --- TRUST STRIP ---
function TrustStrip() {
const items = [
{ k: '1976', l: 'Established (brand-stated)' },
{ k: '8', l: 'Clinics across Dubai' },
{ k: '52', l: 'Named practitioners' },
{ k: '8', l: 'Specialties under one roof' },
{ k: 'DHA / MOH', l: 'Licensed & registered' },
];
return (
{items.map((i, idx) => (
))}
);
}
// --- SECTION HEADING ---
function SectionHead({ eyebrow, title, kicker, action, children, dark }) {
return (
{eyebrow &&
{eyebrow}
}
{title &&
{title} }
{kicker &&
{kicker}
}
{children}
{action}
);
}
Object.assign(window, { Icon, Logo, UtilityBar, Nav, Hero, TrustStrip, SectionHead });