/* global React */ const { useState } = React; /* ============================================================ WORLD MAP — clickable destinations ============================================================ */ const DESTINATIONS = [ { id: 'lcy', city: 'London', code: 'LCY', x: 460, y: 220, time: '2h 10m', popular: true }, { id: 'cdg', city: 'Paris', code: 'CDG', x: 475, y: 245, time: '1h 45m', popular: true }, { id: 'fra', city: 'Frankfurt', code: 'FRA', x: 510, y: 235, time: '1h 10m' }, { id: 'mxp', city: 'Milan', code: 'MXP', x: 515, y: 270, time: '1h 30m' }, { id: 'gva', city: 'Geneva', code: 'GVA', x: 495, y: 265, time: '1h 35m', popular: true }, { id: 'mad', city: 'Madrid', code: 'MAD', x: 445, y: 295, time: '2h 45m' }, { id: 'ist', city: 'Istanbul', code: 'IST', x: 615, y: 285, time: '2h 30m' }, { id: 'dxb', city: 'Dubai', code: 'DXB', x: 720, y: 340, time: '5h 30m', popular: true }, { id: 'jfk', city: 'New York', code: 'JFK', x: 220, y: 280, time: '8h 45m', popular: true }, { id: 'mia', city: 'Miami', code: 'MIA', x: 230, y: 360, time: '10h 30m' }, { id: 'sin', city: 'Singapore', code: 'SIN', x: 920, y: 440, time: '12h 15m' }, { id: 'hkg', city: 'Hong Kong', code: 'HKG', x: 940, y: 365, time: '11h 30m' }, { id: 'jnb', city: 'Johannesburg', code: 'JNB', x: 565, y: 540, time: '11h 00m' }, { id: 'gru', city: 'São Paulo', code: 'GRU', x: 295, y: 510, time: '12h 30m' }, ]; const HOME = { x: 530, y: 240 }; // Prague-ish function WorldMap() { const [active, setActive] = useState('dxb'); const [hover, setHover] = useState(null); const dest = DESTINATIONS.find(d => d.id === active); return (
05 — Network

Anywhere
in one trip.

Our Global 6000 reaches 11,000 km nonstop from Prague — that's New York, Dubai, Singapore. Click any destination for direct flight time.

{/* MAP */}
{/* Dotted world lat/long grid */} {[100, 200, 300, 400, 500].map(y => ( ))} {[100, 200, 300, 400, 500, 600, 700, 800, 900].map(x => ( ))} {/* Continent dots — simplified abstract world */} {Array.from({ length: 600 }).map((_, i) => { // Simple deterministic landmass approximation const x = (i * 37) % 1000; const y = (i * 73) % 600; const inLand = (x > 150 && x < 280 && y > 180 && y < 400) || // Americas (x > 240 && x < 320 && y > 380 && y < 540) || (x > 430 && x < 620 && y > 180 && y < 320) || // EU (x > 540 && x < 700 && y > 280 && y < 540) || // Africa (x > 600 && x < 920 && y > 200 && y < 380) || // Asia (x > 850 && x < 970 && y > 430 && y < 510); // AUS return inLand ? : null; })} {/* Routes from home */} {DESTINATIONS.map(d => { const isActive = d.id === active || d.id === hover; return ( ); })} {/* Home (Prague) */} PRG HOME BASE {/* Destinations */} {DESTINATIONS.map(d => { const isActive = d.id === active; const isHover = d.id === hover; return ( setHover(d.id)} onMouseLeave={() => setHover(null)} onClick={() => setActive(d.id)} style={{ cursor: 'pointer' }}> {(isActive || isHover) && ( <> {d.code} )} ); })} {/* Map legend overlay */}
World Network · {DESTINATIONS.length}+ direct
Click any city
{/* DETAIL PANEL */}
Selected route
PRG {dest.code}

{dest.city}

{[ ['Direct flight time', dest.time], ['Recommended', dest.id === 'jfk' || dest.id === 'sin' || dest.id === 'hkg' ? 'Global 6000' : 'Gulfstream G280'], ['Stopover', 'None'], ['Status', 'Available'], ].map(([l, v]) => (
{l} {v}
))}
Quote PRG → {dest.code}
Popular
{DESTINATIONS.filter(d => d.popular).map(d => ( ))}
); } /* ============================================================ EMPTY LEGS ============================================================ */ function EmptyLegs() { const legs = [ { from: 'PRG', to: 'NCE', date: 'May 14', time: '10:30', aircraft: 'Learjet 75', seats: 6, price: 8400 }, { from: 'LCY', to: 'PRG', date: 'May 17', time: '15:00', aircraft: 'Gulfstream G200', seats: 8, price: 11200 }, { from: 'PRG', to: 'IBZ', date: 'May 22', time: '11:45', aircraft: 'Challenger 605', seats: 10, price: 14800 }, { from: 'GVA', to: 'PRG', date: 'May 26', time: '17:20', aircraft: 'Gulfstream G280', seats: 9, price: 9600 }, ]; return (
06 — Empty Legs

Pre-positioned
flights, half the price.

When an aircraft repositions empty between bookings, that leg is yours — same jet, same crew, often 50% off the standard rate.

{['Date', 'From', 'To', 'Aircraft', 'Seats', 'From price', ''].map(h => (
{h}
))}
{legs.map((l, i) => (
e.currentTarget.style.background = 'var(--bg-inset)'} onMouseOut={e => e.currentTarget.style.background = 'transparent'}>
{l.date}
{l.time}
{l.from}
{l.to}
{l.aircraft}
{l.seats} pax
€{l.price.toLocaleString('en-US')}
))}
); } /* ============================================================ ABOUT / TRUST STRIP ============================================================ */ function About() { return (
07 — About Eclair

Czech aviation, served the Prague way.

Eclair Aviation operates from Václav Havel Airport's Private Terminal 3, with hand-picked crews and an in-house dispatch desk that has been running continuously since the company was founded.

We are members of EBAA, hold ACA Stage 2 sustainability certification, and our safety management system is registered to IS-BAO standards.

About the company
{[ { v: '2008', l: 'Founded' }, { v: '5', l: 'Aircraft' }, { v: '160+', l: 'Destinations' }, { v: '24/7', l: 'Operations' }, { v: '50+', l: 'Crew & staff' }, { v: 'EBAA', l: 'Member' }, ].map(s => (
{s.v}
{s.l}
))}
); } /* ============================================================ CONTACT CTA ============================================================ */ function ContactCTA() { return (
08 — Get in touch

Ready when
you are.

Dispatch is staffed twenty-four hours a day. Call, email, or send a quote request — we'll come back within four working hours.

Request a quote +420 778 403 535 info@eclair.aero
); } Object.assign(window, { WorldMap, EmptyLegs, About, ContactCTA });