/* eslint-disable no-undef */
/* ──────────────────────────────────────────────────────────────────────
Pages part 1: Home, Services hub, Single Service detail.
────────────────────────────────────────────────────────────────────── */
const { Ic: I, services: SERVICES, jurisdictions: JURIS, freeZones: FZ, T: COPY, trust: TRUST, guides: GUIDES, team: TEAM } = window.VZ_DATA;
const { useState: uS, useEffect: uE } = React;
/* ====================================================================
HOME
==================================================================== */
function HomePage({ locale, nav, openConsult }) {
const t = COPY[locale] || COPY.en;
return (
);
}
window.HomePage = HomePage;
/* ── Hero — editorial split: 7/5 with real photo, ink type ───────────── */
function HomeHero({ t, openConsult, nav }) {
return (
{/* Left: type */}
{t.hero.eyebrow}
Business setup in
the UAE,
made simple.
Mainland, free zone, offshore — formation, visas, banking, accounting, and compliance handled by one team. Your #1 partner since 2009.
{t.cta.consult} {I.arrow()}
nav("calculator")}>
{t.cta.estimate}
Trusted by
founders from 180+ countries
Acquired by Ascentium · Jan 2025
* Country & founder counts self-reported by Virtuzone.
{/* Right: photography column */}
{/* floating card 1 */}
Service journey
License → Visa → Bank → Live
One handover, one timeline.
{/* floating card 2 */}
Indicative
From AED 12,500
Range only — Govt. & free-zone fees change. Confirmed on consultation.
);
}
/* ── Trust strip ─────────────────────────────────────────────────────── */
function TrustStripBand() {
return (
{TRUST.map((tr, i) => (
{tr.num}
{tr.lab}
{tr.attr &&
{tr.attr}
}
))}
Group
Part of Ascentium
Singapore-headquartered group · Hillhouse-backed
);
}
/* ── Services grid ───────────────────────────────────────────────────── */
function HomeServices({ t, nav, openConsult }) {
return (
{SERVICES.slice(0, 8).map((s, i) => (
nav("service:" + s.id)} />
))}
);
}
function ServiceCard({ s, idx, onClick }) {
const big = idx === 0;
return (
{s.name}
{s.one}
Start your journey {I.arrow()}
);
}
/* ── Journey strip (rail) ────────────────────────────────────────────── */
function HomeJourney({ t }) {
const steps = [
{ n: "01", k: "Discover", one: "Free 30-min consultation. Activity, structure, jurisdiction shortlist." },
{ n: "02", k: "Shortlist", one: "Indicative quote + comparison: free zone vs mainland vs offshore." },
{ n: "03", k: "Form", one: "License application, MOA, initial approval, lease, notarisation." },
{ n: "04", k: "Visa", one: "Investor visa, Emirates ID, medical, status changes — handled by PRO." },
{ n: "05", k: "Bank", one: "KYC pack, bank shortlist, interviews, source-of-funds dossier." },
{ n: "06", k: "Operate", one: "Accounting, tax, compliance, IT, insurance, ongoing PRO." },
];
return (
The journey
License to live UAE entity, in six steps.
Each stage is owned by a dedicated specialist — formation, PRO, banking, finance — so handovers don't drop.
{steps.map((s, i) => (
))}
);
}
/* ── Jurisdictions teaser ────────────────────────────────────────────── */
function HomeJurisdictions({ t, nav }) {
return (
);
}
/* Comparison table — used in Home + Jurisdictions page */
function JurisdictionTable({ compact = false }) {
const rows = [
{ k: "Ownership", rd: "ownership" },
{ k: "Visa eligibility", rd: "visas" },
{ k: "Market access", rd: "market" },
{ k: "Audit", rd: "audit" },
{ k: "Best for", rd: "best" },
];
return (
{/* head */}
Compare paths
{JURIS.map((j, i) => (
{i === 1 ? "Recommended starting point" : "Path " + (i + 1)}
{j.name}
{!compact &&
{j.summary}
}
))}
{/* rows */}
{rows.map((r, ri) => (
{r.k}
{JURIS.map((j) => (
{j[r.rd]}
))}
))}
{/* footnote */}
Indicative comparison. Final eligibility, audit, and visa terms depend on activity & zone.
{FZ.slice(0, 5).map((f) => (
{f.name}
))}
+ more
);
}
window.JurisdictionTable = JurisdictionTable;
/* ── Estimator teaser ────────────────────────────────────────────────── */
function HomeEstimatorTeaser({ t, nav }) {
return (
{t.sections.calculator.eyebrow}
{t.sections.calculator.title}
{t.sections.calculator.sub}
nav("calculator")}>
Open the estimator {I.arrow()}
{I.check()} Takes 60 seconds · {I.check()} No commitment · {I.check()} CRM-ready
{/* faux estimator card */}
Indicative range
60s estimator
Free zone · Trading · 2 visas · Flexi-desk
AED 23,400
—
AED 31,800
≈ USD 6,370 – 8,660 · year-one all-in
{[
["License", "AED 11–13.5k"],
["Visa & PRO", "AED 6.5–9k"],
["Lease (flexi)", "AED 5.9–9.3k"],
].map(([k, v]) => (
))}
Indicative only. Government & free-zone fees change. Final figure confirmed on consultation.
);
}
/* ── "Why Virtuzone" with imagery ────────────────────────────────────── */
function HomeWhy({ t }) {
const pts = [
{ k: "One team", one: "Formation, visas, banking, accounting, compliance, legal — under one roof. No handovers between agencies." },
{ k: "Speed & accuracy", one: "A dedicated PRO + corporate liaison per case. Predictable timelines, fewer back-and-forths with authorities." },
{ k: "After setup", one: "Ongoing accounting, tax, ESR/UBO, payroll, and renewals — so you don't have to rebuild relationships annually." },
{ k: "Multilingual", one: "English, Arabic, Russian, Chinese — natural-speaker advisors for the 180+ nationalities we serve." },
];
return (
Why founders pick Virtuzone
End-to-end, not "set it up and leave you."
{pts.map((p, i) => (
{String(i + 1).padStart(2, "0")}
))}
);
}
/* ── Resources teaser ────────────────────────────────────────────────── */
function HomeResources({ t, nav }) {
return (
);
}
/* ── Closing CTA banner ──────────────────────────────────────────────── */
function HomeContactCTA({ t, openConsult }) {
return (
{/* decorative diagonal gradient stripe */}
Ready when you are
Your UAE company, started this week.
Free 30-min consultation with a senior advisor. We'll walk through structure, jurisdiction, and an indicative range — no commitment.
);
}
/* ====================================================================
SERVICES HUB
==================================================================== */
function ServicesHubPage({ locale, nav, openConsult }) {
const t = COPY[locale] || COPY.en;
const tags = ["All", ...Array.from(new Set(SERVICES.map((s) => s.tag)))];
const [activeTag, setActiveTag] = uS("All");
const filtered = activeTag === "All" ? SERVICES : SERVICES.filter((s) => s.tag === activeTag);
return (
{t.sections.services.eyebrow}
End-to-end UAE corporate services, one team.
Ten service lines under one roof — so you don't stitch together five vendors. Every service ships with a dedicated specialist and a single project plan.
{tags.map((t) => (
setActiveTag(t)}>{t}
))}
{filtered.map((s) => (
nav("service:" + s.id)} />
))}
);
}
window.ServicesHubPage = ServicesHubPage;
function ServiceTile({ s, onClick }) {
return (
{s.tag}
{s.name}
{s.one}
Service detail {I.arrow()}
);
}
/* ====================================================================
SERVICE DETAIL
==================================================================== */
function ServiceDetailPage({ id, locale, nav, openConsult }) {
const t = COPY[locale] || COPY.en;
const s = SERVICES.find((x) => x.id === id) || SERVICES[0];
const others = SERVICES.filter((x) => x.id !== s.id).slice(0, 3);
return (
{/* hero */}
{s.tag}
{s.name}
{s.one}
{t.cta.consult} {I.arrow()}
nav("calculator")} style={{ background: "rgba(255,255,255,0.08)", color: "white", borderColor: "rgba(255,255,255,0.18)" }}>{t.cta.estimate}
{/* body */}
What's included
{s.includes.map((it, i) => (
{I.check()}
{it}
))}
How it works
{["Discovery & shortlist","Documentation & approvals","Submission & follow-through","Hand-off, plus ongoing support"].map((step, i) => (
{String(i+1).padStart(2,"0")}
{step}
))}
{/* sticky aside */}
Free consultation
Indicative range for {s.name.toLowerCase()}
Pricing depends on activity, jurisdiction, # of visas, and office setup. We share an indicative range live during the call.
{/* related */}
Often paired with
{others.map((o) => nav("service:" + o.id)} />)}
);
}
window.ServiceDetailPage = ServiceDetailPage;