'use client' import { useEffect, useState } from 'react' import Link from 'next/link' import { Users, UserCheck, Mail, Eye, ArrowRight } from 'lucide-react' import StatCard from '@/components/pitch-admin/StatCard' import AuditLogTable from '@/components/pitch-admin/AuditLogTable' interface DashboardData { totals: { total_investors: number pending_invites: number active_7d: number slides_viewed_total: number active_sessions: number active_admins: number } recent_logins: Array<{ investor_id: string email: string name: string | null company: string | null created_at: string ip_address: string | null }> recent_activity: Array<{ id: number action: string created_at: string details: Record | null investor_email: string | null investor_name: string | null target_investor_email: string | null admin_email: string | null admin_name: string | null }> } export default function DashboardPage() { const [data, setData] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { fetch('/api/admin/dashboard') .then((r) => r.json()) .then(setData) .finally(() => setLoading(false)) }, []) if (loading) { return (
) } if (!data) return
Failed to load dashboard
return (

Dashboard

Investor activity overview

+ Invite Investor

Recent Logins

All investors
{data.recent_logins.length === 0 ? (
No logins yet
) : (
    {data.recent_logins.map((row, i) => (
  • {row.name || row.email}
    {row.company || row.email}
    {new Date(row.created_at).toLocaleString()}
  • ))}
)}

Recent Activity

Full log
) }