import { useEffect } from 'react'; import { useAuthStore } from '@/stores/auth'; import { useLibraryStore } from '@/stores/library'; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from '@/components/ui/card'; import { Music, MessageSquare, Users, Heart } from 'lucide-react'; /** * Page principale du dashboard avec statistiques et aperçu de l'activité. */ export function DashboardPage() { const { user } = useAuthStore(); const { items, fetchItems, isLoading } = useLibraryStore(); useEffect(() => { fetchItems({ limit: 5 }); }, [fetchItems]); // Sécuriser items pour s'assurer que c'est toujours un tableau const safeItems = Array.isArray(items) ? items : []; const stats = [ { title: 'Pistes écoutées', value: '1,234', change: '+12%', icon: Music, color: 'text-blue-600', }, { title: 'Messages envoyés', value: '567', change: '+8%', icon: MessageSquare, color: 'text-green-600', }, { title: 'Favoris', value: '89', change: '+23%', icon: Heart, color: 'text-red-600', }, { title: 'Amis actifs', value: '45', change: '+5%', icon: Users, color: 'text-purple-600', }, ]; return (

Dashboard

{/* En-tête avec salutation */}

{user?.first_name || user?.username ? `Bonjour, ${user.first_name || user.username} !` : 'Bienvenue sur Veza'}

{/* Statistiques */}
{stats.map((stat) => ( {stat.title}
{stat.value}

{stat.change} par rapport au mois dernier

))}
{/* Aperçu récent */}
{/* Activité récente */} Activité récente Vos dernières interactions sur la plateforme

Nouvelle piste ajoutée

Il y a 2 heures

Message reçu de @alice

Il y a 4 heures

Nouveau favori ajouté

Il y a 6 heures

{/* Pistes récentes */} Pistes récentes Dernières pistes de votre bibliothèque {isLoading ? (
{[...Array(3)].map((_, i) => (
))}
) : (
{safeItems.slice(0, 3).map((item) => (

{item.title}

{item.description || 'Aucune description'}

))} {safeItems.length === 0 && (

Aucune piste dans votre bibliothèque

)}
)}
); }