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 (
{user?.first_name || user?.username ? `Bonjour, ${user.first_name || user.username} !` : 'Bienvenue sur Veza'}
{stat.change} par rapport au mois dernier
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
{item.title}
{item.description || 'Aucune description'}
Aucune piste dans votre bibliothèque
)}