/* global React */ const { useState, useEffect, useRef } = React; // Curated safe imagery — only sky/clouds/sunset and abstract scenes. // All other slots use a styled SVG placeholder via getPlaceholder() until // the client provides real photography from eclair.aero. const SKY = 'https://images.unsplash.com/photo-1469854523086-cc02fe5d8800?w=2400&q=85&auto=format&fit=crop'; const SUNSET = 'https://images.unsplash.com/photo-1488229297570-58520851e868?w=2000&q=85&auto=format&fit=crop'; const CLOUDS = 'https://images.unsplash.com/photo-1534088568595-a066f410bcda?w=2400&q=85&auto=format&fit=crop'; const PRAGUE = 'https://images.unsplash.com/photo-1519677100203-a0e668c92439?w=1600&q=85&auto=format&fit=crop'; // Inline SVG placeholder factory — branded, monospace label, no external fetch. function getPlaceholder(label, w = 1600, h = 1000) { const svg = ` ${label} `; return 'data:image/svg+xml;utf8,' + svg.replace(/\n\s+/g, ' '); } const IMG = { hero: SKY, heroAlt: CLOUDS, clouds: CLOUDS, sunset: SUNSET, prague: PRAGUE, // Service tiles — branded placeholders cabin1: 'images/aircraft-management.jpg', vipLounge: 'images/aircraft-management.jpg', tarmac: 'images/aircraft-management.jpg', meeting: 'images/aircraft-management.jpg', dispatch: 'images/aircraft-management.jpg', hangar: 'images/aircraft-management.jpg', cargo: 'images/aircraft-management.jpg', // Fleet global: 'images/ok-mbs.jpg', g280: 'images/ok-mbs.jpg', challenger: 'images/ok-mbs.jpg', learjet: 'images/ok-mbs.jpg', g200: 'images/ok-mbs.jpg', cockpit: getPlaceholder('COCKPIT'), cabin2: getPlaceholder('CABIN INTERIOR'), cabin3: getPlaceholder('CABIN INTERIOR'), exterior: getPlaceholder('EXTERIOR'), }; window.IMG = IMG; /* ============================================================ ECLAIR LOGO ============================================================ */ function EclairLogo() { return (
); } /* ============================================================ NAV — variant V2 always-dark on hero, flips on scroll ============================================================ */ function NavV2({ active = 'home', theme, onThemeToggle, transparent = true }) { const [scrolled, setScrolled] = useState(false); const [menuOpen, setMenuOpen] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 60); window.addEventListener('scroll', onScroll, { passive: true }); onScroll(); return () => window.removeEventListener('scroll', onScroll); }, []); // Zamknout scroll při otevřeném menu useEffect(() => { document.body.style.overflow = menuOpen ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [menuOpen]); const isOnDarkHero = transparent && !scrolled && !menuOpen; const NAV_LINKS = [ ['services', 'Services'], ['fleet', 'Fleet'], ['empty-legs', 'Empty Legs'], ['about', 'About'], ['contact', 'Contact'], ]; return ( <> {/* Mobile drawer */}
{/* Drawer footer */}
setMenuOpen(false)} style={{ width: '100%', justifyContent: 'center', padding: '16px', fontSize: 14 }}> Request a quote
OPS · 24/7
); } /* ============================================================ HERO V2 — full-bleed video with parallax overlay ============================================================ */ function HeroVideoV2({ heroStyle = 'video' }) { return (
{/* Background media */}
{heroStyle === 'video' ? ( ) : ( )}
{/* Dark gradient veil */}
{/* Content */}
Private aviation · Est. 2008 · Prague

Feel the
difference
in the sky.

A Czech-flagged operator running five business jets out of Prague — from super-light Learjets to ultra-long-range Globals. Quoted in minutes, wheels-up in hours.

{/* Live stats card */}
{[ { v: '5', l: 'Aircraft' }, { v: '11.1k', l: 'km range' }, { v: '< 4h', l: 'Avg. response' }, { v: '24/7', l: 'Dispatch' }, ].map(s => (
{s.v}
{s.l}
))}
{/* Marker bar */}
LKPR · 50.1008°N · 14.2632°E Wind 240° / 8kt · QNH 1018 Visibility 10km+ OAT 14°C
{/* Scroll hint */}
Scroll
); } /* ============================================================ FOOTER ============================================================ */ function FooterV2() { return ( ); } Object.assign(window, { EclairLogo, NavV2, HeroVideoV2, FooterV2 });