/** * Dashboard Home Page * * Main dashboard with CSV Booking KPIs and carrier analytics */ 'use client'; import { useQuery } from '@tanstack/react-query'; import { dashboardApi } from '@/lib/api'; import Link from 'next/link'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Package, PackageCheck, PackageX, Clock, Weight, TrendingUp, Plus, ArrowRight, } from 'lucide-react'; export default function DashboardPage() { // Fetch CSV booking KPIs const { data: csvKpis, isLoading: csvKpisLoading } = useQuery({ queryKey: ['dashboard', 'csv-booking-kpis'], queryFn: () => dashboardApi.getCsvBookingKPIs(), }); // Fetch top carriers const { data: topCarriers, isLoading: carriersLoading } = useQuery({ queryKey: ['dashboard', 'top-carriers'], queryFn: () => dashboardApi.getTopCarriers(), }); return (
{/* Header Section */}

Dashboard

Suivez vos bookings et vos performances

{/* CTA Button */}
{/* KPI Cards Grid */}
{/* Bookings Acceptés */} Bookings Acceptés {csvKpisLoading ? (
) : ( <>
{csvKpis?.totalAccepted || 0}

+{csvKpis?.acceptedThisMonth || 0} ce mois

)} {/* Bookings Refusés */} Bookings Refusés {csvKpisLoading ? (
) : ( <>
{csvKpis?.totalRejected || 0}

+{csvKpis?.rejectedThisMonth || 0} ce mois

)} {/* Bookings En Attente */} En Attente {csvKpisLoading ? (
) : ( <>
{csvKpis?.totalPending || 0}

{csvKpis?.acceptanceRate.toFixed(1)}% taux d'acceptation

)} {/* Poids Total Accepté */} Poids Total Accepté {csvKpisLoading ? (
) : ( <>
{(csvKpis?.totalWeightAcceptedKG || 0).toLocaleString()}

KG ({(csvKpis?.totalVolumeAcceptedCBM || 0).toFixed(2)} CBM)

)}
{/* Stats Overview Card */} Vue d'ensemble Statistiques globales de vos bookings

Taux d'acceptation

{csvKpisLoading ? '--' : `${csvKpis?.acceptanceRate.toFixed(1)}%`}

Total bookings

{csvKpisLoading ? '--' : (csvKpis?.totalAccepted || 0) + (csvKpis?.totalRejected || 0) + (csvKpis?.totalPending || 0)}

Volume total accepté

{csvKpisLoading ? '--' : `${(csvKpis?.totalVolumeAcceptedCBM || 0).toFixed(1)}`} CBM

{/* Top Carriers Section */}
Meilleures Compagnies Top 5 des transporteurs avec qui vous avez le plus booké
{carriersLoading ? (
{Array.from({ length: 5 }).map((_, i) => (
))}
) : topCarriers && topCarriers.length > 0 ? (
{topCarriers.map((carrier, index) => (
#{index + 1}

{carrier.carrierName}

{carrier.totalBookings} bookings • {carrier.totalWeightKG.toLocaleString()} KG

{carrier.acceptedBookings} acceptés {carrier.rejectedBookings > 0 && ( {carrier.rejectedBookings} refusés )}

Taux: {carrier.acceptanceRate.toFixed(0)}% • Moy:{' '} ${carrier.avgPriceUSD.toFixed(0)}

))}
) : (

Aucun booking pour l'instant

Créez votre premier booking pour voir vos statistiques

)} {/* Quick Actions */}

Rechercher des tarifs

Trouver les meilleurs prix

Mes Bookings

Voir tous mes envois

Paramètres

Configuration du compte

); }