{[
{ ico: 'shield', t: 'Prix fixe garanti', d: 'Le tarif annoncé est définitif. Aucun supplément, aucune surprise.' },
{ ico: 'bolt', t: 'Réservation 60s', d: 'Trajet immédiat ou planifié à la minute près, jusqu\'à 6 mois à l\'avance.' },
{ ico: 'star', t: 'Chauffeurs sélectionnés', d: 'Carte VTC, formation continue, note minimale 4,8/5 maintenue.' },
{ ico: 'phone', t: 'Concierge 24/7', d: 'Une équipe joignable instantanément, par téléphone ou messagerie.' },
].map((b, i) => (
{b.t}
{b.d}
))}
{/* TESTIMONIALS */}
Avis clients
12 400 trajets notés 4,9 sur 5.
{[
{ n: 'Camille R.', r: 'Cliente régulière', q: 'Service irréprochable depuis 2 ans. Mes rendez-vous client se passent sans stress, le chauffeur attend toujours en bas.', av: 'photo-1573496359142-b8d87734a5a2' },
{ n: 'Antoine D.', r: 'Voyage d\'affaires', q: 'CDG → La Défense en 35 min un mardi à 8h. Le chauffeur connaissait déjà mon arrêt et le code de l\'immeuble. Bluffant.', av: 'photo-1500648767791-00dcc994a43e' },
{ n: 'Léa M.', r: 'Mariage Le Bristol', q: 'On a réservé 4 véhicules pour les invités VIP. Coordination parfaite, chauffeurs en costume, fleurs prévues. Une équipe à la hauteur.', av: 'photo-1544005313-94ddf0286df2' },
].map((t, i) => (
« {t.q} »
{t.n}
{t.r}
))}
{/* CTA BAND */}
Programmez votre prochain trajet en moins d'une minute.
Pas d'application à télécharger. Premier trajet ? Code WELCOME20 pour −20 %.
);
}
/* ── Reusable booking widget for hero ───────────────── */
function BookingWidget() {
return (
{['Trajet', 'Mise à disposition', 'Aéroport'].map((t, i) => (
))}
} label="Départ" value="12 rue de Rivoli, Paris 4e" />
} label="Destination" value="Aéroport Charles de Gaulle, T2E" />
Estimation
62 € · prix fixe
);
}
function Dot({ color = 'var(--ink-dim)', ring }) {
return ;
}
function ConnectorLine() {
return (
);
}
function FieldRow({ icon, label, value }) {
return (
{icon}
{label}
{value}
);
}
function FieldBox({ icon, label, value }) {
return (
{label}
{value}
);
}
/* ───────────────── BOOKING FLOW ─────────────────
One screen per step, Typeform-like: large question, single focused input.
*/
function BookingShell({ stepIdx, total, children, footer }) {
const labels = ['Itinéraire', 'Date & heure', 'Véhicule', 'Coordonnées', 'Récapitulatif'];
return (
{/* Left: form */}
{/* Stepper */}
{labels.map((_, i) => (
))}
Étape {stepIdx + 1} sur {total} · {labels[stepIdx]}
{children}
{footer || (
)}
{/* Right: contextual map / illustration */}
);
}
function BookingMapPanel({ stepIdx }) {
return (
{/* Stylised map route */}
{/* Trip info card */}
Distance
32,4 km
Durée
42 min
Estimation
62 €
);
}
function ScreenBookingStep1() {
return (
Quel est votre itinéraire ?
Adresse précise, hôtel, gare ou aéroport. Nous calculons un prix fixe à la seconde.
{/* autocomplete dropdown */}
{[
['Aéroport Paris-Charles de Gaulle', 'Terminal 2E · Roissy-en-France', true],
['Aéroport Paris-Charles de Gaulle', 'Terminal 1 · Roissy-en-France'],
['Aéroport Paris-Orly', 'ORY · Orly'],
['Gare du Nord', '18 rue de Dunkerque, 75010 Paris'],
].map(([t, s, hi], i) => (