/* House of Windsor — UI primitives & chrome */
const { useState, useEffect, useRef } = React;
/* ─── Wordmark ──────────────────────────────────────────────── */
function Wordmark({ variant = 'stacked', color }) {
const style = color ? { color } : undefined;
if (variant === 'compact') {
return (
HOUSE OF WINDSORJEWELLERS
);
}
return (
HOUSE OFWINDSORJEWELLERS
);
}
/* ─── Diamond glyph used as ornament ────────────────────────── */
function DiamondGlyph({ size = 14, color = 'currentColor' }) {
return (
);
}
/* ─── Stars row ─────────────────────────────────────────────── */
function Stars({ n = 5, size = 14 }) {
return (
{Array.from({ length: 5 }).map((_, i) => (
))}
);
}
/* ─── Tripadvisor 5.0 chip ─────────────────────────────────── */
function TripadvisorChip({ tone = 'light' }) {
const dark = tone === 'dark';
return (
{HOWJ.rating.score.toFixed(1)} · {HOWJ.rating.count} reviews on Tripadvisor
);
}
/* ─── Nav ──────────────────────────────────────────────────── */
function Nav({ route, setRoute, onBook, scrolled }) {
const [mobileOpen, setMobileOpen] = useState(false);
return (
{/* Mobile drawer */}
{mobileOpen && (
)}
);
}
/* ─── WhatsApp FAB ──────────────────────────────────────────── */
function WhatsAppFab() {
const href = `https://wa.me/${HOWJ.contact.whatsapp}?text=${encodeURIComponent("Hi House of Windsor, I'd like to book a consultation.")}`;
return (
e.currentTarget.style.transform = 'scale(1.06)'}
onMouseLeave={e => e.currentTarget.style.transform = 'scale(1)'}
>
);
}
/* ─── Mobile bottom CTA bar ─────────────────────────────────── */
function MobileBookBar({ onBook }) {
return (