// screens-b2b.jsx — déclinaison Entreprise / B2B /* ── B2B Landing ──────────────────────────────────── */ function ScreenB2BLanding() { return (
monvtc · Entreprise

Le déplacement
de vos équipes,
centralisé.

Une plateforme unique pour réserver, suivre et facturer les courses de vos collaborateurs et invités. Politique de voyage configurable, factures consolidées, reporting mensuel.

240+
entreprises clientes
−18%
budget mobilité moyen
SSO
SAML · SCIM · API
{/* Quote widget */}
Estimation entreprise · 30s

Réponse personnalisée sous 24h ouvrées.

{/* Features */}
Fonctionnalités

Une console pour piloter tous vos déplacements.

{[ { ic: 'users', t: 'Comptes équipes', d: 'Invitez vos collaborateurs en bulk via CSV ou SCIM. Définissez profils, autorisations et budgets par équipe.' }, { ic: 'shield', t: 'Politique de voyage', d: 'Plafonds par trajet, gammes autorisées, validation manager au-delà d\'un seuil. Tout est paramétrable.' }, { ic: 'cards', t: 'Facturation centralisée', d: 'Une facture mensuelle unique, ventilée par centre de coût. Export comptable Sage, Pennylane, Quickbooks.' }, { ic: 'cal', t: 'Réservation invité', d: 'Envoyez un lien à un client ou un candidat — il réserve sans compte, vous êtes facturé.' }, { ic: 'bolt', t: 'API & SSO', d: 'SAML 2.0, SCIM, webhooks et API REST. S\'intègre à Concur, Workday et vos outils internes.' }, { ic: 'star', t: 'Concierge dédié', d: 'Un chargé de compte attitré dès 50 trajets/mois. Support prioritaire 24/7.' }, ].map(f => (
{f.t}
{f.d}
))}
{/* Logos */}
Ils nous font confiance
{['HELIOS', 'meridien&', 'NORDIA', 'ARTEMIS · co', 'studio sept', 'volta'].map(l => ( {l} ))}
{/* Pricing */}

Trois formules. Pas d'engagement.

{[ { n: 'Essentiel', p: 'Sans frais', s: 'Le tarif des courses. Parfait pour démarrer.', f: ['Comptes illimités', 'Facturation consolidée', 'Export CSV'], cta: 'Démarrer' }, { n: 'Business', p: '49 €', u: '/mois', s: 'Pour les équipes qui voyagent régulièrement.', f: ['Politique de voyage', 'Centre de coût', 'SSO SAML', 'Reporting mensuel'], cta: 'Choisir Business', tag: 'Le plus choisi' }, { n: 'Enterprise', p: 'Sur mesure', s: 'Volumes >200 trajets / mois, SLA garanti.', f: ['Chargé de compte dédié', 'API & webhooks', 'SLA 99,9 %', 'Tarifs négociés', 'Concierge VIP'], cta: 'Nous contacter' }, ].map((p, i) => (
{p.tag && {p.tag}}
{p.n}
{p.p}{p.u}

{p.s}

    {p.f.map(item => (
  • {item}
  • ))}
))}
); } /* ── B2B Console / Dashboard ──────────────────────── */ function B2BShell({ active, children }) { const items = [ ['Tableau de bord', 'home'], ['Réservations', 'bookings'], ['Collaborateurs', 'team'], ['Centres de coût', 'cost'], ['Politique', 'policy'], ['Factures', 'invoices'], ['Reporting', 'reporting'], ['Réglages', 'settings'], ]; return (
{children}
); } function ScreenB2BDashboard() { return (

Bonjour, Sophie.

Mai 2026 · 47 collaborateurs actifs · 8 trajets en cours
{/* KPIs */}
{[ ['Trajets ce mois', '186', '+24 vs avr.', 'ok'], ['Dépenses', '3 240 €', '64% du budget', ''], ['Trajet moyen', '17,42 €', '−2 € vs marché', 'ok'], ['Collaborateurs actifs', '47', 'sur 52 invités', ''], ].map(([k, v, d, t]) => (
{k}
{v}
{d}
))}
{/* Chart + Top centres de coût */}

Dépenses · 30 derniers jours

{['7j', '30j', '90j', '12m'].map((p, i) => ( ))}
{[40, 80, 120, 160].map(y => )} {[[420, 35], [600, 20]].map(([x, y], i) => )}
{['10 avr.', '17 avr.', '24 avr.', '1 mai', '8 mai', '14 mai'].map(d => {d})}

Top centres de coût

{[ ['Direction commerciale', 1240, 64], ['Conseil', 820, 42], ['Direction générale', 540, 28], ['Marketing', 320, 16], ['Support client', 180, 10], ].map(([n, v, w]) => (
{n} {v} €
))}
{/* Pending validations */}

À valider · 3 demandes

Trajets dépassant la politique de voyage en vigueur
Voir tout →
{[ { n: 'Antoine Decroix', from: 'Tour First → Le Bristol', dt: 'Demain · 09:00', tier: 'Premium', amount: '78 €', reason: 'Plafond Berline dépassé' }, { n: 'Léa Marchand', from: 'Le Bristol → Opéra', dt: 'Demain · 14:00', tier: 'Berline', amount: '42 €', reason: 'Hors heures bureau' }, { n: 'Karim Bensaïd', from: 'Helios HQ → CDG', dt: 'Vendredi · 06:30', tier: 'Van', amount: '94 €', reason: 'Week-end' }, ].map((r, i) => (
{r.n.split(' ').map(s => s[0]).join('')}
{r.n}
{r.from}
{r.dt}
{r.reason}
{r.amount}
))}
); } /* ── B2B Team / Collaborateurs ───────────────────── */ function ScreenB2BTeam() { const team = [ { n: 'Antoine Decroix', r: 'Direction commerciale', mail: 'a.decroix@helios.fr', trips: 18, spend: '342 €', status: 'Actif', cc: 'Commercial' }, { n: 'Léa Marchand', r: 'Marketing', mail: 'l.marchand@helios.fr', trips: 12, spend: '218 €', status: 'Actif', cc: 'Marketing' }, { n: 'Karim Bensaïd', r: 'Conseil', mail: 'k.bensaid@helios.fr', trips: 24, spend: '486 €', status: 'Actif', cc: 'Conseil' }, { n: 'Sofia Marini', r: 'DG', mail: 's.marini@helios.fr', trips: 8, spend: '212 €', status: 'Actif', cc: 'Direction' }, { n: 'Marc Durand', r: 'Support', mail: 'm.durand@helios.fr', trips: 4, spend: '64 €', status: 'Actif', cc: 'Support' }, { n: 'Inès Lopez', r: 'Conseil', mail: 'i.lopez@helios.fr', trips: 15, spend: '298 €', status: 'Actif', cc: 'Conseil' }, { n: 'Patrick Aubert', r: 'Commercial', mail: 'p.aubert@helios.fr', trips: 0, spend: '—', status: 'Invité', cc: 'Commercial' }, { n: 'Valérie Henry', r: 'Marketing', mail: 'v.henry@helios.fr', trips: 6, spend: '124 €', status: 'Actif', cc: 'Marketing' }, ]; return (

Collaborateurs

47 actifs · 5 invitations en attente · synchro SCIM
CollaborateurEmailCentre de coûtTrajetsDépenseStatut
{team.map((p, i) => (
{p.n.split(' ').map(s => s[0]).join('')}
{p.n}
{p.r}
{p.mail} {p.cc} {p.trips} {p.spend}
))}
); } /* ── B2B Politique de voyage ─────────────────────── */ function ScreenB2BPolicy() { return (

Politique de voyage

Règles appliquées automatiquement à toute réservation. Modifications loggées.

Plafonds par véhicule

Au-delà, validation manager requise.

{[ ['Berline', 'Tous collaborateurs', '60 €'], ['Van', 'Manager + DG', '120 €'], ['Premium', 'DG uniquement', '180 €'], ].map(([t, who, cap]) => (
{t}
{who}
Plafond
Actif
))}

Horaires & jours

Trajets autorisés sans validation supplémentaire.

{['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'].map((d, i) => ( ))}

Validateurs

{[ { n: 'Sophie Garnier', r: 'CFO · validateur final', av: 'photo-1573496359142-b8d87734a5a2' }, { n: 'Antoine Decroix', r: 'Manager · Commercial', av: 'photo-1500648767791-00dcc994a43e' }, { n: 'Karim Bensaïd', r: 'Manager · Conseil', av: 'photo-1544005313-94ddf0286df2' }, ].map((p, i) => (
{p.n}
{p.r}
))}
); } Object.assign(window, { ScreenB2BLanding, ScreenB2BDashboard, ScreenB2BTeam, ScreenB2BPolicy });