/* ===== screen-jurisdictions.jsx — jurisdictions hub with comparison + DMCC detail ===== */ function JurisdictionsScreen({ locale, setRoute }) { const [filter, setFilter] = React.useState("All"); const [open, setOpen] = React.useState(null); const groups = ["All", "Mainland", "Free Zone", "Offshore", "Regional"]; const list = filter === "All" ? DATA.jurisdictions : DATA.jurisdictions.filter(j => j.group === filter); return (
Jurisdictions

25+ jurisdictions, one honest comparison.

UAE mainland, free zones, offshore and the wider GCC. We compare qualitatively — ownership, scope, visas, activities — and never publish government fees that change without notice.

{/* filter */}
{groups.map(g => ( ))}
Showing {list.length} of {DATA.jurisdictions.length}
{/* cards */}
{list.map(j => ( ))}
{/* deeper comparison */}
{open && setOpen(null)} setRoute={setRoute}/>}
); } function CompareTable() { const rows = [ { label: "Ownership", values: ["100% foreign (most activities)", "100% foreign", "100% foreign", "100% foreign"] }, { label: "Trade scope", values: ["UAE-wide + abroad", "Zone + abroad", "International only", "Country-specific"] }, { label: "Office", values: ["Ejari office", "Flexi-desk → private", "Registered agent", "Varies"] }, { label: "Visa eligibility", values: ["Tied to office size", "Tied to package", "Generally none", "MISA / Qatari rules"] }, { label: "Setup speed", values: ["2–4 weeks", "5–10 days", "3–7 days", "4–8 weeks"] }, { label: "Best for", values: ["UAE-facing retail & services", "Trade, services, tech, finance", "Holding, succession", "GCC market access"] }, { label: "Examples", values: ["Dubai Mainland", "DMCC · DIFC · IFZA · Meydan", "RAK ICC · BVI · Mauritius", "KSA · Qatar Free Zone"] }, ]; const heads = ["Mainland", "Free Zone", "Offshore", "Regional"]; return (
Property
{heads.map((h, i) => (
{h} {i === 1 &&
MOST FLEXIBLE
}
))}
{rows.map((r, ri) => (
{r.label}
{r.values.map((v, i) => (
{v}
))}
))}
); } function JurisdictionDrawer({ j, onClose, setRoute }) { React.useEffect(() => { const onKey = (e) => e.key === "Escape" && onClose(); window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [onClose]); return (
e.stopPropagation()} style={{ width: "min(640px, 100vw)", height: "100vh", background: "#fff", boxShadow: "var(--sh-3)", overflowY: "auto", animation: "slide-in .3s ease", }}>
{j.group}

Setting up in {j.name}

{j.suited}

{j.benefit}

Best suited for
{(j.id === "dmcc" ? ["General trading","Commodities","Crypto & blockchain","Professional services","Consulting"] : j.id === "difc" ? ["Asset management","Fintech","Family offices","Foundations","Holding"] : j.id === "meydan" ? ["Consulting","Holding","Digital","Remote-first SMEs"] : ["Trading","Services","Consulting","E-commerce"]).map(t => ( {t} ))}
What's typical (qualitative)
{[ ["Ownership", "100% foreign"], ["Office", j.group === "Offshore" ? "Registered agent" : j.id === "meydan" ? "Virtual / flexi" : "Flexi-desk → private"], ["Visa quota", j.group === "Offshore" ? "Generally none" : j.id === "meydan" ? "Up to 3 with virtual office" : "Scales with office size"], ["Setup speed", j.group === "Offshore" ? "3–7 working days" : j.group === "Mainland" ? "2–4 weeks" : "5–10 working days"], ["Renewal cycle", "Annual"], ].map(([k, v], i) => (
{k}
{v}
))}
No fixed price here. {j.name} fees depend on activity, visas, office and packages. Use the calculator for an indicative range — an advisor confirms.
Ask on WhatsApp
); } Object.assign(window, { JurisdictionsScreen });