import React, { useMemo } from 'react'; import { ResponsiveContainer, LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, BarChart, Bar, PieChart, Pie, Cell, Legend, } from 'recharts'; const PIE_COLORS = ['#0A39DF', '#059669', '#333F48', '#D97706', '#DC2626', '#0891B2', '#DB2777']; function last7Days() { const days = []; for (let i = 6; i >= 0; i--) { const d = new Date(); d.setDate(d.getDate() - i); days.push(d.toISOString().split('T')[0]); } return days; } export default function ActivityCharts({ activities }) { const timeSeries = useMemo(() => { const days = last7Days(); return days.map((day) => { const dayActivities = activities.filter((a) => (a.created_date || '').slice(0, 10) === day); return { date: day.slice(5), signups: dayActivities.filter((a) => a.event_type === 'signup').length, logins: dayActivities.filter((a) => a.event_type === 'login').length, actions: dayActivities.length, }; }); }, [activities]); const byType = useMemo(() => { const counts = {}; activities.forEach((a) => { counts[a.event_type] = (counts[a.event_type] || 0) + 1; }); return Object.entries(counts).map(([name, value]) => ({ name, value })); }, [activities]); const byRole = useMemo(() => { const counts = {}; activities.forEach((a) => { counts[a.account_type] = (counts[a.account_type] || 0) + 1; }); return Object.entries(counts).map(([name, value]) => ({ name, value })); }, [activities]); return (