// screens-mobile.jsx — Mobile screens (used inside ) // 360 × 740 inner area. Each function returns the screen contents only. function MHeader({ title, back, action }) { return (
{back ? : } {title} {action || }
); } /* ── Mobile Home ──────────────────────────────────── */ function MScreenHome() { return (
{/* hero image */}
24/7 · Paris & IDF

Le luxe d'arriver
à l'heure.

{/* Booking widget */}
} label="Départ" value="12 rue de Rivoli" /> } label="Destination" value="CDG, Terminal 2E" />
{/* services row */}
Nos gammes Tout voir
{[ { t: 'Berline', p: '35 €', img: 'photo-1503376780353-7e6692767b70' }, { t: 'Van', p: '65 €', img: 'photo-1610465299996-30f240ac2b1c' }, { t: 'Premium', p: '95 €', img: 'photo-1494976388531-d1058494cdd8' }, ].map(s => (
{s.t}
dès {s.p}
))}
{/* Reassurance */}
{[['shield', 'Prix fixe', 'Sans surprise'], ['bolt', '60 sec', 'Réservation'], ['star', '4,9/5', '12 400 avis'], ['phone', '24/7', 'Concierge']].map(([i, t, s]) => (
{t}
{s}
))}
); } /* ── Mobile Booking step (combined typeform-style) ─── */ function MScreenBooking() { const times = ['07:30', '08:00', '08:30', '09:00']; return (
2/5} />
{[1, 1, 0, 0, 0].map((s, i) =>
)}
Étape 2 — Date & heure

Quand partez-vous ?

Mai 2026
{['L', 'M', 'M', 'J', 'V', 'S', 'D'].map((d, i) =>
{d}
)} {[11, 12, 13, 14, 15, 16, 17].map(d => { const sel = d === 14; return ; })}
{times.map(t => { const sel = t === '08:30'; return ; })}
); } /* ── Mobile Confirmation ─────────────────────────── */ function MScreenConfirm() { return (

Réservation
confirmée.

Coordonnées du chauffeur 30 min avant le départ.

Référence MV-26-5891-CDG
} label="Départ" value="12 rue de Rivoli" /> } label="Arrivée" value="CDG · Terminal 2E" />
Chauffeur
Marc D.
Mercedes Classe E · AB-123-CD
Affecté
); } /* ── Mobile Espace client ────────────────────────── */ function MScreenAccount() { return (
Bonjour
Camille R.
{/* Next trip card */}
Confirmé · dans 2j
12 rue de Rivoli → CDG T2E
Mardi 14 mai · 08:30 · 49,60 €
{[ ['cal', 'Réserver', 'Nouveau trajet'], ['heart', 'Favoris', '3 adresses'], ['cards', 'Paiement', 'Visa · 4242'], ['user', 'Profil', 'Préférences'], ].map(([i, t, s]) => ( ))}
Trajets récents Tout voir
{[ ['7 mai', '19:15', 'Tour First → Rivoli', '34,00 €'], ['2 mai', '07:45', 'Rivoli → CDG T2E', '58,00 €'], ['28 avr.', '21:00', 'Le Bristol → Gare Lyon', '78,00 €'], ].map(([d, t, r, p]) => (
{r}
{d} · {t}
{p}
))}
{/* tab bar */}
{[['user', 'Compte', true], ['cal', 'Réserver', false], ['cards', 'Trajets', false], ['settings', 'Réglages', false]].map(([i, l, sel]) => ( ))}
); } /* ── Mobile Login ────────────────────────────────── */ function MScreenLogin() { return (

Bon retour.

Continuez là où vous vous étiez arrêté.

ou

Pas encore de compte ? Inscrivez-vous

); } /* ── Mobile FAQ ─────────────────────────────────── */ function MScreenFAQ() { const qs = [ { q: 'Comment réserver un trajet ?', open: true, a: 'Saisissez votre itinéraire, choisissez date et véhicule, puis confirmez. ≈ 60s.' }, { q: 'Délai d\'annulation gratuite ?' }, { q: 'Le prix affiché est-il final ?' }, { q: 'Comment ajouter un siège bébé ?' }, { q: 'Si mon vol est en retard ?' }, { q: 'Facture entreprise ?' }, ]; return (
} />

Comment vous aider ?

{['Réservation', 'Paiement', 'Annulation', 'Bagages'].map((c, i) => ( ))}
{qs.map((it, i) => (
{it.q}
{it.open &&

{it.a}

}
))}
); } Object.assign(window, { MScreenHome, MScreenBooking, MScreenConfirm, MScreenAccount, MScreenLogin, MScreenFAQ });