/** * 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 (
Suivez vos bookings et vos performances
+{csvKpis?.acceptedThisMonth || 0} ce mois
> )}+{csvKpis?.rejectedThisMonth || 0} ce mois
> )}{csvKpis?.acceptanceRate.toFixed(1)}% taux d'acceptation
> )}KG ({(csvKpis?.totalVolumeAcceptedCBM || 0).toFixed(2)} CBM)
> )}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
{carrier.totalBookings} bookings • {carrier.totalWeightKG.toLocaleString()} KG
Taux: {carrier.acceptanceRate.toFixed(0)}% • Moy:{' '} ${carrier.avgPriceUSD.toFixed(0)}
Créez votre premier booking pour voir vos statistiques
Trouver les meilleurs prix
Voir tous mes envois
Configuration du compte