/* ============================================================ Shared site navigation: mega menu, header, footer + data. Exposes to window: SERVICE_GROUPS, ServicesMenu, SiteHeader, SiteFooter, serviceHref. Load AFTER React/ReactDOM/Babel and BEFORE the page script. ============================================================ */ /* --- icons (simple line marks, one per group) --- */ function _icoDoc(c){return ;} function _icoGlobe(c){return ;} function _icoBank(c){return ;} function _icoLock(c){return ;} function _icoId(c){return ;} function _icoPeople(c){return ;} /* --- data: groups -> items (English) --- */ const SERVICE_GROUPS = [ { key: "formation", label: "Company Formation", icon: _icoDoc, items: [ { name: "Dubai (Free Zone & Mainland)", href: "Company Setup in Dubai.html" }, { name: "US (LLC or C-Corp)", slug: "us-llc" }, { name: "Cyprus Ltd", slug: "cyprus-ltd" }, { name: "Panama (IBC or S.A.)", slug: "panama-corp" } ] }, { key: "relocation", label: "Relocation", icon: _icoGlobe, items: [ { name: "Dubai (Golden) Visa", slug: "dubai-golden-visa" }, { name: "Panama Residency", slug: "panama-residency" }, { name: "Paraguay Residency", slug: "paraguay-residency" }, { name: "Cyprus Non-Dom", slug: "cyprus-nondom" } ] }, { key: "banking", label: "Banking", icon: _icoBank, items: [ { name: "Bank Account — Dubai", slug: "bank-dubai" }, { name: "Bank Account — Georgia", slug: "bank-georgia" }, { name: "Bank Account — Liechtenstein", slug: "bank-liechtenstein" }, { name: "Bank Account — Switzerland", slug: "bank-switzerland" } ] }, { key: "foundations", label: "Foundations", icon: _icoLock, items: [ { name: "Liechtenstein Foundation", slug: "liechtenstein-foundation" }, { name: "DIFC Foundation", slug: "difc-foundation" } ] }, { key: "cbi", label: "Passports (CBI)", icon: _icoId, items: [ { name: "Antigua & Barbuda", slug: "antigua" }, { name: "Dominica", slug: "dominica" }, { name: "Grenada", slug: "grenada" }, { name: "St. Kitts & Nevis", slug: "st-kitts-nevis" }, { name: "Turkey", slug: "turkey" }, { name: "Vanuatu", slug: "vanuatu" } ] }, { key: "advisory", label: "Advisory", icon: _icoPeople, promo: { text: "Book a consultation and get answers to your questions on tax, asset protection, relocation and more.", cta: "Book now", href: "Contact.html" } } ]; const _byKey = Object.fromEntries(SERVICE_GROUPS.map((g) => [g.key, g])); function serviceHref(it){ return it.href ? it.href : ("Service.html?s=" + it.slug); } /* short count label per group (mirrors the Services page) */ const _GROUP_COUNT = { formation: "4 jurisdictions", relocation: "4 programmes", banking: "4 jurisdictions", foundations: "2 structures", cbi: "6 passports" }; /* --- a single service link row inside the mega menu --- */ function _MegaItem({ it }) { const [h, setH] = React.useState(false); return ( setH(true)} onMouseLeave={() => setH(false)} style={{ display: "flex", alignItems: "center", justifyContent: "space-between", gap: 10, margin: "0 -12px", padding: "8px 12px", borderRadius: 12, background: h ? "var(--tint)" : "transparent", color: h ? "var(--ink)" : "var(--ink-soft)", transition: "background .15s, color .15s" }}> {it.name} ); } /* --- a single service group (icon header + links) --- */ function _MegaCol({ g }) { return (
{g.icon("var(--ink)")}
{g.label}
{_GROUP_COUNT[g.key]}
{g.items.map((it) => <_MegaItem key={it.name} it={it} />)}
); } /* --- the dark Advisory promo rail --- */ function _MegaPromo({ g }) { const [h, setH] = React.useState(false); return (
{g.icon("#cfe0ee")} {g.label}

{g.promo.text}

setH(true)} onMouseLeave={() => setH(false)} style={{ marginTop: "auto", alignSelf: "flex-start", display: "inline-flex", alignItems: "center", gap: 8, padding: "12px 22px", borderRadius: 999, background: h ? "#fff" : "#ffffffea", color: "var(--ink)", fontSize: 12, fontWeight: 700, letterSpacing: "0.08em", textTransform: "uppercase", transition: "background .15s" }}>{g.promo.cta}
); } /* --- "view all services" link in the panel header --- */ function _MegaAllLink() { const [h, setH] = React.useState(false); return ( setH(true)} onMouseLeave={() => setH(false)} style={{ display: "inline-flex", alignItems: "center", gap: 8, whiteSpace: "nowrap", fontSize: 13, fontWeight: 600, color: h ? "var(--ink)" : "var(--ink-soft)", transition: "color .15s" }}> View all services ); } /* --- the Services nav item with hover mega panel (portaled to body) --- */ function ServicesMenu({ active }) { const [open, setOpen] = React.useState(false); const timer = React.useRef(null); const show = () => { clearTimeout(timer.current); setOpen(true); }; const hide = () => { clearTimeout(timer.current); timer.current = setTimeout(() => setOpen(false), 140); }; const panel = open ? ReactDOM.createPortal(
Our services <_MegaAllLink />
<_MegaPromo g={_byKey.advisory} />
{[["formation", "foundations"], ["relocation", "banking"], ["cbi"]].map((col, i) =>
{col.map((k) => <_MegaCol key={k} g={_byKey[k]} />)}
)}
, document.body) : null; return (
Services {panel}
); } /* --- shared header bits --- */ function _SNMark() { return ( Global Setup ); } function _SNPill({ children, href }) { const [h, setH] = React.useState(false); return setH(true)} onMouseLeave={() => setH(false)} style={{ display: "inline-flex", alignItems: "center", gap: 10, padding: "14px 24px", borderRadius: 999, fontSize: 13, fontWeight: 700, letterSpacing: "0.08em", textTransform: "uppercase", whiteSpace: "nowrap", background: h ? "#fff" : "#ffffffea", color: "var(--ink)" }}>{children}; } function _SNArrow() { return ; } /* --- full dark header; pass children for the hero band underneath --- */ function SiteHeader({ active, children }) { const links = [ { label: "Home", href: "Homepage v5 (sky).html", key: "home" }, { label: "Services", services: true, key: "services" }, { label: "Our Method", href: "Our Method.html", key: "method" }, { label: "Articles", href: "Articles.html", key: "articles" }, { label: "Case Studies", href: "Case Studies.html", key: "cases" }, { label: "About", href: "About.html", key: "about" }, { label: "Contact", href: "Contact.html", key: "contact" }]; return (
<_SNMark />
<_SNPill href="Contact.html">Book a call <_SNArrow />
{children}
); } /* --- shared footer --- */ function SiteFooter() { const cols = [ ["Services", [["Company formation", "Homepage v5 (sky).html#services"], ["Tax planning", "Homepage v5 (sky).html#services"], ["Residency & CBI", "Homepage v5 (sky).html#services"], ["Trusts", "Homepage v5 (sky).html#services"], ["Banking", "Homepage v5 (sky).html#services"]]], ["Jurisdictions", [["UAE", "Company Setup in Dubai.html"], ["Cyprus", "Service.html?s=cyprus-ltd"], ["Panama", "Service.html?s=panama-corp"], ["Vanuatu", "Service.html?s=vanuatu"], ["See all 27", "Homepage v5 (sky).html#services"]]], ["Firm", [["About", "About.html"], ["Our Method", "Our Method.html"], ["Case Studies", "Case Studies.html"], ["Articles", "Articles.html"], ["Contact", "Contact.html"]]]]; return ( ); } Object.assign(window, { SERVICE_GROUPS, ServicesMenu, SiteHeader, SiteFooter, serviceHref });