import { Header } from "@/components/layout/Header"; import { Footer } from "@/components/layout/Footer"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { PageLoader } from "@/components/ui/loading-spinner"; import useAuth from "@/hooks/useAuth"; import useDashboardStats from "@/hooks/useDashboardStats"; import { useNavigate, Link } from "react-router-dom"; import { useEffect } from "react"; import { CalendarIcon, MessageSquareIcon, BriefcaseIcon, ChevronRightIcon, UserCircleIcon, UsersIcon, } from "lucide-react"; import ArtisanStats from "@/components/dashboard/ArtisanStats"; const DashboardStats = () => { const { isArtisan } = useAuth(); if (!isArtisan) return null; return ; }; const Dashboard = () => { const { currentUser, userData, isLoading, isClient, isArtisan } = useAuth(); const navigate = useNavigate(); const { activeProjects, artisansContacted, messagesNonLus, totalClients, acceptanceRate } = useDashboardStats(); useEffect(() => { if (!isLoading && !currentUser) { navigate("/auth?mode=login"); } }, [currentUser, isLoading, navigate]); if (isLoading) { return ; } if (!currentUser || !userData) { return null; } const statCards = isClient ? [ { label: "Projets en cours", value: activeProjects.toString(), icon: }, { label: "Artisans contactés", value: artisansContacted.toString(), icon: }, { label: "Messages non lus", value: messagesNonLus.toString(), icon: }, ] : [ { label: "Projets en cours", value: activeProjects.toString(), icon: }, { label: "Clients actifs", value: totalClients.toString(), icon: }, { label: "Taux d'acceptation", value: `${acceptanceRate}%`, icon: }, ]; const dashboardItems = isClient ? [ { icon: , color: "bg-blue-100 text-blue-600", title: "Mes projets", description: "Gérez tous vos projets en cours et passés", link: "/projects", }, { icon: , color: "bg-green-100 text-green-600", title: "Messages", description: "Consultez vos conversations avec les artisans", link: "/messages", }, { icon: , color: "bg-purple-100 text-purple-600", title: "Rendez-vous", description: "Gérez votre calendrier de rendez-vous", link: "/appointments", }, { icon: , color: "bg-amber-100 text-amber-600", title: "Mes artisans", description: "Liste de vos artisans favoris", link: "/my-artisans", }, ] : [ { icon: , color: "bg-blue-100 text-blue-600", title: "Mes chantiers", description: "Gérez vos projets en cours et propositions", link: "/projects", }, { icon: , color: "bg-green-100 text-green-600", title: "Messages", description: "Consultez vos conversations avec les clients", link: "/messages", }, { icon: , color: "bg-purple-100 text-purple-600", title: "Planning", description: "Gérez votre calendrier et disponibilités", link: "/planning", }, ]; return (

Bienvenue, {userData.displayName}

{isClient ? "Gérez vos projets et trouvez les meilleurs artisans" : "Gérez vos chantiers et développez votre activité"}

{statCards.map((stat, index) => (

{stat.label}

{stat.value}

{stat.icon}
))}
{dashboardItems.map((item, index) => (
{item.icon}

{item.title}

{item.description}

))}
{!isClient && }

Complétez votre profil !

{isClient ? "Ajoutez vos préférences et détails pour trouver les artisans idéaux" : "Ajoutez vos compétences et réalisations pour attirer plus de clients"}

{!isClient && ( Portfolio Présentez vos réalisations pour attirer de nouveaux clients

Un portfolio bien rempli augmente de 70% vos chances d'être contacté par un client.

)}
); }; export default Dashboard;