/* ===== screen-calculator.jsx ===== */
// Indicative cost coefficients — clearly typed, NOT a fixed price list.
// All values are illustrative ranges (AED) for design demonstration only.
const CALC_RANGES = (() => {
// jurisdiction base ranges
const J = {
"dubai-mainland": [18000, 32000],
"dmcc": [22000, 38000],
"difc": [48000, 92000],
"jafza": [28000, 46000],
"meydan": [12500, 22000],
"dubai-south": [18000, 30000],
"ifza-d3": [14000, 26000],
"adgm": [44000, 86000],
"rakez": [10500, 19000],
"rak-icc": [9500, 16000],
"bvi": [14000, 24000],
"ksa": [42000, 78000],
"qatar": [38000, 72000],
};
// activity multiplier
const A = {
"trading": 1.0,
"consulting": 0.92,
"ecommerce": 0.98,
"tech": 1.05,
"fnb": 1.18,
"financial": 1.55,
};
// office multiplier
const O = {
"flexi": 1.0,
"shared": 1.18,
"private": 1.55,
"warehouse":2.1,
};
// visa cost (per visa)
const visa = [4800, 7600];
function estimate({ zone, activity, visas, office, shareholders }) {
const base = J[zone] || [15000, 28000];
const am = A[activity] || 1;
const om = O[office] || 1;
const lo = Math.round((base[0] * am * om + visa[0] * visas) / 100) * 100;
const hi = Math.round((base[1] * am * om + visa[1] * visas) / 100) * 100;
return { low: lo, high: hi };
}
return { estimate, J, A, O };
})();
window.CALC_RANGES = CALC_RANGES;
function CalculatorScreen({ locale, setRoute }) {
const s = STR[locale];
const [step, setStep] = React.useState(0);
const [form, setForm] = React.useState({
zone: "dmcc",
activity: "trading",
visas: 2,
shareholders: 1,
office: "flexi",
name: "", email: "", phone: "",
});
const update = (k, v) => setForm(f => ({ ...f, [k]: v }));
const r = CALC_RANGES.estimate(form);
const steps = ["Jurisdiction", "Activity", "Visas & team", "Office", "See estimate", "Talk to an advisor"];
return (
Cost calculator
Indicative setup cost, in about two minutes.
We show a range — never a fixed number. Government fees move, packages bundle, and your specific activity matters. An advisor confirms the exact figure on a free call.
This is an indicative range, not a quote. Government fees change without notice; activity-specific approvals can add or reduce cost. Your advisor will confirm the exact figure and lock it on a proposal.
);
}
function StepLead({ form, update, r }) {
const [submitted, setSubmitted] = React.useState(false);
if (submitted) {
return (
Thanks {form.name.split(" ")[0] || "there"} — your estimate is on its way.
An advisor will reach out within 30 minutes during UAE business hours (Mon–Fri 09:00–18:00, GMT+4). Want to chat now?