/* Multi-step charter quote modal */ const { useState: useStateC, useEffect: useEffectC, useMemo: useMemoC } = React; const CHARTER_AIRCRAFT = [ { id: "g650", name: "Gulfstream G650", cls: "Ultra-Long-Range", thumb: "media/fleet-gulfstream-g650-exterior.webp" }, { id: "global7500", name: "Bombardier Global 7500", cls: "Ultra-Long-Range", thumb: "media/fleet-global-7500-managed.webp" }, { id: "global6000", name: "Bombardier Global 6000", cls: "Long-Range", thumb: "media/fleet-global-6000-exterior-1.webp" }, { id: "g600", name: "Gulfstream G600", cls: "Long-Range", thumb: "media/fleet-gulfstream-g600-exterior-1.webp" }, { id: "legacy650",name: "Embraer Legacy 650", cls: "Super-Midsize", thumb: "media/fleet-legacy-650-empire-livery.webp" }, { id: "bbj", name: "Boeing Business Jet", cls: "Airliner Class", thumb: "media/fleet-boeing-business-jet-bbj.webp" }, { id: "any", name: "Operator's Choice", cls: "We'll recommend", thumb: "media/managed-jet-on-ramp.webp" }, ]; const ROUTE_SUGGESTIONS = [ ["DXB → LHR", "Dubai → London"], ["DXB → MLE", "Dubai → Maldives"], ["DXB → CDG", "Dubai → Paris"], ["DXB → LCA", "Dubai → Larnaca"], ["BOM → DXB", "Mumbai → Dubai"], ["DXB → JFK", "Dubai → New York"], ]; function CharterFlow({ open, onClose }) { const [step, setStep] = useStateC(0); const [data, setData] = useStateC({ from: "DXB", to: "", tripType: "one-way", date: "", returnDate: "", pax: 6, aircraft: "", name: "", company: "", email: "", phone: "", notes: "", }); const [submitted, setSubmitted] = useStateC(false); useEffectC(() => { if (!open) { // reset when closed setStep(0); setSubmitted(false); setData(d => ({ ...d })); } }, [open]); useEffectC(() => { const onKey = (e) => { if (e.key === "Escape" && open) onClose(); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); }, [open, onClose]); if (!open) return null; const steps = ["Route", "Date", "Aircraft", "Details", "Confirm"]; const canNext = (() => { if (step === 0) return data.from.trim().length > 1 && data.to.trim().length > 1; if (step === 1) return data.date.length > 0 && (data.tripType !== "round-trip" || data.returnDate.length > 0); if (step === 2) return data.aircraft.length > 0; if (step === 3) return data.name.trim() && data.email.trim() && data.phone.trim(); return true; })(); const update = (k, v) => setData(d => ({ ...d, [k]: v })); const handleSubmit = () => { setSubmitted(true); }; const ac = CHARTER_AIRCRAFT.find(a => a.id === data.aircraft); return (
Use IATA codes or city names. We'll resolve the FBO at quote.
Add the return leg if needed. All times confirmed at quote.
If you're unsure, choose Operator's Choice — we'll recommend based on range, passengers and ground times.
A member of the Dubai operations desk will respond personally.
No price will be quoted here — a member of our team will respond with a bespoke quote.
Reference EAG-{Math.random().toString(36).substring(2, 8).toUpperCase()} has been routed to charter@empire.aero. A member of the Dubai team will respond personally.