import { useState } from "react"; import { LineChart, Line, XAxis, YAxis, Tooltip, CartesianGrid, ResponsiveContainer } from "recharts"; import ActivityHeatmap from "../stats/ActivityHeatmap"; import { ReactWordcloud } from '@cp949/react-wordcloud'; import StatsStyling from "../styles/stats_styling"; import Card from "../components/Card"; import UserModal from "../components/UserModal"; import { type SummaryResponse, type FrequencyWord, type UserAnalysisResponse, type TimeAnalysisResponse, type ContentAnalysisResponse, type User } from '../types/ApiTypes' const styles = StatsStyling; type SummaryStatsProps = { userData: UserAnalysisResponse | null; timeData: TimeAnalysisResponse | null; contentData: ContentAnalysisResponse | null; summary: SummaryResponse | null; } function formatDateRange(startUnix: number, endUnix: number) { const start = new Date(startUnix * 1000); const end = new Date(endUnix * 1000); const fmt = (d: Date) => d.toLocaleDateString(undefined, { year: "numeric", month: "short", day: "2-digit", }); return `${fmt(start)} → ${fmt(end)}`; } function convertFrequencyData(data: FrequencyWord[]) { return data.map((d: FrequencyWord) => ({ text: d.word, value: d.count, })) } const SummaryStats = ({userData, timeData, contentData, summary}: SummaryStatsProps) => { const [selectedUser, setSelectedUser] = useState(null); const selectedUserData: User | null = userData?.users.find((u) => u.author === selectedUser) ?? null; console.log(summary) return (
{/* main grid*/}
3 ? "…" : "") : "—" } style={{ gridColumn: "span 4" }} /> {/* events per day */}

Events per Day

Trend of activity over time

new Date(d.date) >= new Date('2026-01-10'))}>
{/* Word Cloud */}

Word Cloud

Most common terms across events

{/* Top Users */}

Top Users

Most active authors

{userData?.top_users.slice(0, 100).map((item) => (
setSelectedUser(item.author)} >
{item.author}
{item.source} • {item.count} events
))}
{/* Heatmap */}

Heatmap

Activity density across time

setSelectedUser(null)} username={selectedUser ?? ""} userData={selectedUserData} />
); } export default SummaryStats;