'use client'; import React, { useState, useEffect, useCallback } from 'react'; import Link from 'next/link'; import { useAuth } from '@/contexts/AuthContext'; import { useRouter } from 'next/navigation'; const SITES = ['avbeat','avbeat','backlotbeat','broadcastengineering']; function DnsCheck({ label, valid }: { label: string; valid: boolean | null }) { return ( {valid === true ? '✓' : valid === false ? '✗' : '?'} {label} ); } export default function EmailDashboard() { const { user, loading } = useAuth(); const router = useRouter(); const [domains, setDomains] = useState([]); const [stats, setStats] = useState(null); const [loadingData, setLoadingData] = useState(true); useEffect(() => { if (!loading && !user) router.push('/login?next=' + encodeURIComponent(window.location.pathname)); }, [user, loading, router]); const load = useCallback(async () => { setLoadingData(true); const [domainsR, statsR] = await Promise.all([ fetch('/api/email/rmp/domains'), fetch('/api/email/rmp/stats'), ]); const [dd, sd] = await Promise.all([domainsR.json(), statsR.json()]); setDomains(dd.domains ?? []); setStats(sd); setLoadingData(false); }, []); useEffect(() => { if (user) load(); }, [user, load]); const bySite = SITES.map(site => ({ site, domains: domains.filter((d: any) => d.site === site), })); if (loading) return
; if (!user) return null; return (

Email Infrastructure

Sending domains, DNS health, suppressions

{/* Network Stats */}
{[ { label: 'Sends Today', value: stats?.sends_today ?? 0, color: 'text-blue-400' }, { label: 'Sends This Month', value: stats?.sends_month ?? 0, color: 'text-blue-400' }, { label: 'Total Suppressions', value: stats?.total_suppressions ?? 0, color: 'text-red-400' }, { label: 'Blacklisted Domains', value: stats?.blacklisted ?? 0, color: 'text-red-400' }, ].map(c => (

{c.value}

{c.label}

))}
{/* Per-site property cards */}
{bySite.map(({ site, domains: siteDomains }) => { const primary = siteDomains.find((d: any) => d.is_primary); const suppCount = stats?.suppressions_by_site?.[site] ?? 0; return (

{site}

Manage →
{primary?.domain ?? 'No primary'} {primary && ( {primary.dns_fully_verified ? 'DNS OK' : 'DNS Pending'} )}
{siteDomains.length} domains {siteDomains.filter((d: any) => d.is_active).length} active {suppCount} suppressions
{primary && (
)}
); })}
{/* Quick links */}
{[ { label: 'Sending Domains', href: '/admin/email/domains' }, { label: 'Suppressions', href: '/admin/email/suppressions' }, { label: 'Send Log', href: '/admin/email/send-log' }, ].map(l => ( {l.label} ))}
); }