'use client'; import { useState } from 'react'; import { WeeklySummary, WeeklyActivity } from '@/services/weekly-summary'; import { Card, CardHeader, CardContent } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Badge } from '@/components/ui/Badge'; interface WeeklySummaryClientProps { initialSummary: WeeklySummary; } export default function WeeklySummaryClient({ initialSummary }: WeeklySummaryClientProps) { const [summary] = useState(initialSummary); const [selectedDay, setSelectedDay] = useState(null); const [isRefreshing, setIsRefreshing] = useState(false); const handleRefresh = async () => { setIsRefreshing(true); // Recharger la page pour refaire le fetch côté serveur window.location.reload(); }; const formatDate = (date: Date) => { return new Date(date).toLocaleDateString('fr-FR', { weekday: 'long', day: 'numeric', month: 'long' }); }; const getActivityIcon = (activity: WeeklyActivity) => { if (activity.type === 'checkbox') { return activity.completed ? '✅' : '☐'; } return activity.completed ? '🎯' : '📝'; }; const getActivityTypeLabel = (type: 'checkbox' | 'task') => { return type === 'checkbox' ? 'Daily' : 'Tâche'; }; const filteredActivities = selectedDay ? summary.activities.filter(a => a.dayName === selectedDay) : summary.activities; return (

📅 Résumé de la semaine

Du {formatDate(summary.period.start)} au {formatDate(summary.period.end)}

{/* Statistiques globales */}
{summary.stats.completedCheckboxes}
Daily items
sur {summary.stats.totalCheckboxes} ({summary.stats.checkboxCompletionRate.toFixed(0)}%)
{summary.stats.completedTasks}
Tâches
sur {summary.stats.totalTasks} ({summary.stats.taskCompletionRate.toFixed(0)}%)
{summary.stats.completedCheckboxes + summary.stats.completedTasks}
Total complété
sur {summary.stats.totalCheckboxes + summary.stats.totalTasks}
{summary.stats.mostProductiveDay}
Jour le plus productif
{/* Breakdown par jour */}

📊 Répartition par jour

{summary.stats.dailyBreakdown.map((day) => ( ))}
{selectedDay && (
📍 Filtré sur: {selectedDay}
)}
{/* Timeline des activités */}

🕒 Timeline des activités ({filteredActivities.length} items)

{filteredActivities.length === 0 ? (
{selectedDay ? 'Aucune activité ce jour-là' : 'Aucune activité cette semaine'}
) : (
{filteredActivities.map((activity) => (
{getActivityIcon(activity)}
{activity.title} {getActivityTypeLabel(activity.type)}
{activity.dayName} • {new Date(activity.createdAt).toLocaleDateString('fr-FR')} {activity.completedAt && ( • Complété le {new Date(activity.completedAt).toLocaleDateString('fr-FR')} )}
))}
)}
); }