'use client' import React, { useState, useEffect } from 'react'; import { useTranslations } from 'next-intl'; import { Users, Clock, CalendarCheck, School, TrendingUp, UserCheck } from 'lucide-react'; import Loader from '@/components/Loader'; import ClasseDetails from '@/components/ClasseDetails'; import { fetchClasses } from '@/app/lib/schoolAction'; // Composant StatCard pour afficher une statistique const StatCard = ({ title, value, icon, change, color = "blue" }) => (

{title}

{value}

{change && (

0 ? 'text-green-500' : 'text-red-500'}`}> {change > 0 ? '+' : ''}{change}% depuis le mois dernier

)}
{icon}
); // Composant EventCard pour afficher les événements const EventCard = ({ title, date, description, type }) => (

{title}

{date}

{description}

); export default function DashboardPage() { const t = useTranslations('dashboard'); const [isLoading, setIsLoading] = useState(true); const [stats, setStats] = useState({ totalStudents: 0, averageInscriptionTime: 0, reInscriptionRate: 0, structureCapacity: 0, upcomingEvents: [], monthlyStats: { inscriptions: [], completionRate: 0 } }); const [classes, setClasses] = useState([]); useEffect(() => { // Fetch data for classes fetchClasses().then(data => { setClasses(data); }) .catch(error => { console.error('Error fetching classes:', error); }); // Simulation de chargement des données setTimeout(() => { setStats({ totalStudents: 245, averageInscriptionTime: 3.5, reInscriptionRate: 85, structureCapacity: 300, upcomingEvents: [ { title: "Réunion de rentrée", date: "2024-09-01", description: "Présentation de l'année scolaire", type: "meeting" }, { title: "Date limite inscriptions", date: "2024-08-15", description: "Clôture des inscriptions", type: "deadline" } ], monthlyStats: { inscriptions: [150, 180, 210, 245], completionRate: 78 } }); setIsLoading(false); }, 1000); }, []); if (isLoading) return ; return (

{t('dashboard')}

{/* Statistiques principales */}
} change={12} /> } color="green" /> } color="purple" /> } color="orange" />
{/* Événements et KPIs */}
{/* Graphique des inscriptions */}

{t('inscriptionTrends')}

{/* Insérer ici un composant de graphique */}
{/* Événements à venir */}

{t('upcomingEvents')}

{stats.upcomingEvents.map((event, index) => ( ))}
{classes.map((classe) => (
))}
); }