/* Extra sections — LiveOps, VVIPLounge, Timeline, MROMatrix. Each is content the home page genuinely benefits from, not filler. */ const { useState: useStateX, useEffect: useEffectX, useRef: useRefX } = React; // ─── Live Ops panel ─── // Engineering-grade strip just under the hero. Earns trust by showing we're a // real 24-h operation — UTC + ramp-local clocks update live; the other tiles // are placeholder-labelled mono data (NOT invented facts — labelled as // "indicative" so the user can wire them to a real flight-info feed later). function LiveOps({ t }) { const [now, setNow] = useStateX(() => new Date()); useEffectX(() => { const id = setInterval(() => setNow(new Date()), 1000); return () => clearInterval(id); }, []); const fmtUTC = (d) => `${String(d.getUTCHours()).padStart(2,'0')}:${String(d.getUTCMinutes()).padStart(2,'0')}:${String(d.getUTCSeconds()).padStart(2,'0')}`; const fmtLocal = (d) => { const dxb = new Date(d.getTime() + 4 * 3600 * 1000); // UTC+4 return `${String(dxb.getUTCHours()).padStart(2,'0')}:${String(dxb.getUTCMinutes()).padStart(2,'0')}`; }; const tiles = [ { k: t.liveops.utc, v: fmtUTC(now), live: true }, { k: t.liveops.local, v: fmtLocal(now) + " GST", live: true }, { k: t.liveops.metar, v: "OMDW 04 1009/15", sub: "FEW035 · 32°C", indicative: true }, { k: t.liveops.runway, v: "RWY 30", sub: t.liveops.activeRunway, indicative: true }, { k: t.liveops.ramp, v: t.liveops.standsValue, sub: t.liveops.standsLabel, indicative: true }, { k: t.liveops.status, v: t.liveops.statusValue, open: true }, ]; return (
{t.liveops.title} {t.liveops.subtitle}
{tiles.map((tile, i) => (
{tile.k}
{tile.open && } {tile.v}
{tile.sub &&
{tile.sub}
} {tile.indicative &&
indicative
}
))}
); } // ─── VVIP Lounge cinematic moment ─── function VVIPLounge({ t }) { return (
DCAF VVIP lounge
{t.lounge.eyebrow}

{t.lounge.h2a}{t.lounge.h2b}{t.lounge.h2c}

{t.lounge.lede}

{t.lounge.chips.map((c, i) => ( / {String(i+1).padStart(2,'0')} {c} ))}
); } // ─── Since 2013 Timeline ─── function Timeline({ t }) { return (
{t.timeline.eyebrow}

{t.timeline.h2a}{t.timeline.h2b}.

{t.timeline.items.map((m, i) => (
{m.year}
{m.label}
{m.sub &&
{m.sub}
}
))}
); } // ─── MRO capability matrix ─── function MROMatrix({ t }) { return (
{t.mro.eyebrow}

{t.mro.h2a}{t.mro.h2b}{t.mro.h2c}

{t.mro.lede}

{t.mro.typesTitle}
    {t.mro.types.map((tp, i) => (
  • / {String(i+1).padStart(2,'0')} {tp.name} {tp.scope}
  • ))}
{t.mro.registryTitle}
{t.mro.registries.map((r, i) => (
{r.prefix}
{r.name}
))}
{t.mro.capTitle}
{t.mro.caps.map((c, i) => ( {c} ))}
); } Object.assign(window, { LiveOps, VVIPLounge, Timeline, MROMatrix });