'use client'; import React, { useState } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { Check, X, ArrowRight, Shield } from 'lucide-react'; type BillingInterval = 'monthly' | 'yearly'; const PLANS = [ { name: 'Bronze', key: 'BRONZE' as const, monthlyPrice: 0, yearlyPrice: 0, description: 'Pour démarrer et tester la plateforme', maxUsers: 1, maxShipments: '12/an', commission: '5%', support: 'Aucun', badge: null, features: [ { name: 'Recherche de tarifs', included: true }, { name: 'Réservations', included: true }, { name: 'Tableau de bord', included: false }, { name: 'Wiki Maritime', included: false }, { name: 'Gestion des utilisateurs', included: false }, { name: 'Import CSV', included: false }, { name: 'Accès API', included: false }, { name: 'Interface personnalisée', included: false }, { name: 'KAM dédié', included: false }, ], cta: 'Commencer gratuitement', ctaStyle: 'bg-gray-900 text-white hover:bg-gray-800', popular: false, }, { name: 'Silver', key: 'SILVER' as const, monthlyPrice: 249, yearlyPrice: 2739, description: 'Pour les équipes en croissance', maxUsers: 5, maxShipments: 'Illimitées', commission: '3%', support: 'Email', badge: 'silver' as const, features: [ { name: 'Recherche de tarifs', included: true }, { name: 'Réservations', included: true }, { name: 'Tableau de bord', included: true }, { name: 'Wiki Maritime', included: true }, { name: 'Gestion des utilisateurs', included: true }, { name: 'Import CSV', included: true }, { name: 'Accès API', included: false }, { name: 'Interface personnalisée', included: false }, { name: 'KAM dédié', included: false }, ], cta: 'Choisir Silver', ctaStyle: 'bg-brand-turquoise text-white hover:opacity-90', popular: true, }, { name: 'Gold', key: 'GOLD' as const, monthlyPrice: 899, yearlyPrice: 9889, description: 'Pour les entreprises établies', maxUsers: 20, maxShipments: 'Illimitées', commission: '2%', support: 'Direct', badge: 'gold' as const, features: [ { name: 'Recherche de tarifs', included: true }, { name: 'Réservations', included: true }, { name: 'Tableau de bord', included: true }, { name: 'Wiki Maritime', included: true }, { name: 'Gestion des utilisateurs', included: true }, { name: 'Import CSV', included: true }, { name: 'Accès API', included: true }, { name: 'Interface personnalisée', included: false }, { name: 'KAM dédié', included: false }, ], cta: 'Choisir Gold', ctaStyle: 'bg-yellow-500 text-white hover:bg-yellow-600', popular: false, }, { name: 'Platinium', key: 'PLATINIUM' as const, monthlyPrice: -1, yearlyPrice: -1, description: 'Solutions sur mesure', maxUsers: 'Illimité', maxShipments: 'Illimitées', commission: '1%', support: 'KAM dédié', badge: 'platinium' as const, features: [ { name: 'Recherche de tarifs', included: true }, { name: 'Réservations', included: true }, { name: 'Tableau de bord', included: true }, { name: 'Wiki Maritime', included: true }, { name: 'Gestion des utilisateurs', included: true }, { name: 'Import CSV', included: true }, { name: 'Accès API', included: true }, { name: 'Interface personnalisée', included: true }, { name: 'KAM dédié', included: true }, ], cta: 'Nous contacter', ctaStyle: 'bg-purple-600 text-white hover:bg-purple-700', popular: false, }, ]; function formatPrice(amount: number): string { return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', minimumFractionDigits: 0, maximumFractionDigits: 0, }).format(amount); } export default function PricingPage() { const [billing, setBilling] = useState('monthly'); return (
{/* Header */}
Xpeditis
Connexion Inscription
{/* Hero */}

Des tarifs simples et transparents

Choisissez la formule adaptée à votre activité de transport maritime. Commencez gratuitement, évoluez selon vos besoins.

{/* Billing toggle */}
Mensuel Annuel {billing === 'yearly' && ( -1 mois offert )}
{/* Plans grid */}
{PLANS.map((plan) => (
{plan.popular && (
Populaire
)} {/* Plan name & badge */}

{plan.name}

{plan.badge && ( )}

{plan.description}

{/* Price */}
{plan.monthlyPrice === -1 ? (

Sur devis

) : plan.monthlyPrice === 0 ? (

Gratuit

) : ( <>

{billing === 'monthly' ? formatPrice(plan.monthlyPrice) : formatPrice(Math.round(plan.yearlyPrice / 12))} /mois

{billing === 'yearly' && (

{formatPrice(plan.yearlyPrice)}/an (11 mois)

)} )}
{/* Quick stats */}
Utilisateurs {plan.maxUsers}
Expéditions {plan.maxShipments}
Commission {plan.commission}
Support {plan.support}
{/* Features */}
{plan.features.map((feature) => (
{feature.included ? ( ) : ( )} {feature.name}
))}
{/* CTA */} {plan.cta}
))}
{/* Footer */}
); }