/** * Composant widget d'alertes (factures en retard, devis expirant) */ import React from 'react'; import { Card } from 'primereact/card'; import { Message } from 'primereact/message'; import { Button } from 'primereact/button'; import { Skeleton } from 'primereact/skeleton'; import { FactureEnRetard, DevisEnAttente } from '../../types/btp'; interface AlertsWidgetProps { facturesEnRetard: FactureEnRetard[]; devisEnAttente: DevisEnAttente[]; loading?: boolean; onViewFacture?: (id: string) => void; onViewDevis?: (id: string) => void; } const AlertsWidget: React.FC = ({ facturesEnRetard, devisEnAttente, loading = false, onViewFacture, onViewDevis }) => { const getAlertSeverity = (jours: number) => { if (jours <= 3) return 'warn'; if (jours <= 7) return 'info'; return 'error'; }; const header = (
Alertes
); if (loading) { return (
{[...Array(3)].map((_, i) => (
))}
); } const hasAlerts = facturesEnRetard.length > 0 || devisEnAttente.length > 0; return (
Alertes
{!hasAlerts ? ( ) : (
{/* Factures en retard */} {facturesEnRetard.map((facture) => (
Facture {facture.numero} en retard
{facture.client} • {facture.montantTTC.toLocaleString()} € • {facture.joursRetard} jour{facture.joursRetard > 1 ? 's' : ''} de retard
{onViewFacture && (
))} {/* Devis expirant bientôt */} {devisEnAttente.map((devis) => (
Devis {devis.numero} expire bientôt
{devis.client} • {devis.montantTTC.toLocaleString()} € • {devis.joursRestants} jour{devis.joursRestants > 1 ? 's' : ''} restant{devis.joursRestants > 1 ? 's' : ''}
{onViewDevis && (
))}
)}
); }; export default AlertsWidget;