"use client"; import { useEffect, useState } from "react"; interface EngagementStats { totalLogs: number; totalMedicines: number; totalVaccinations: number; totalGrowth: number; totalMemories: number; totalChatSessions: number; logsByDay: { date: string; count: number }[]; topFeatures: { name: string; count: number }[]; } export default function AdminAnalytics() { const [stats, setStats] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { fetchAnalytics(); }, []); const fetchAnalytics = async () => { try { const res = await fetch("/api/admin/analytics", { credentials: "include" }); const data = await res.json(); setStats(data); } catch (err) { console.error("Failed to fetch analytics:", err); } setLoading(false); }; if (loading || !stats) { return
Loading...
; } return (

Analytics

Feature usage and engagement

{/* Usage Overview */}
{/* Activity Chart */}

Daily Activity (Last 30 days)

{stats.logsByDay.slice(-30).map((d, i) => (
l.count), 1)) * 100, 100)}%`, minHeight: d.count > 0 ? "4px" : "0" }} />
{d.date?.slice(5) || ""}
))}
{stats.logsByDay.length === 0 && (
No activity data yet
)}
{/* Feature Breakdown */}

Top Features

{stats.topFeatures.map((feature, i) => (
{feature.name} {feature.count}
))} {stats.topFeatures.length === 0 && (
No data yet
)}

Engagement Summary

Avg Logs per Family {stats.totalLogs > 0 ? (stats.totalLogs / 1).toFixed(1) : "0"}
Avg Children per Family 1.0
Chat Adoption {stats.totalChatSessions > 0 ? "Active" : "None"}
); } function StatCard({ label, value, icon }: { label: string; value: number; icon: string }) { return (
{icon}
{value}
{label}
); }