"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import Link from 'next/link'; import { BuildingOfficeIcon, UserGroupIcon, LinkIcon, ChartBarIcon, ArrowTrendingUpIcon, CheckCircleIcon, XCircleIcon, } from '@heroicons/react/24/outline'; interface Agency { id: string; name: string; subdomain: string; is_active: boolean; created_at: string; } interface Stats { totalAgencies: number; activeAgencies: number; inactiveAgencies: number; totalUsers: number; } export default function SuperAdminDashboard() { const router = useRouter(); const [loading, setLoading] = useState(true); const [agencies, setAgencies] = useState([]); const [stats, setStats] = useState({ totalAgencies: 0, activeAgencies: 0, inactiveAgencies: 0, totalUsers: 0, }); useEffect(() => { const token = localStorage.getItem('token'); const userData = localStorage.getItem('user'); if (!token || !userData) { router.push('/login'); return; } const user = JSON.parse(userData); if (user.role !== 'SUPERADMIN') { localStorage.removeItem('token'); localStorage.removeItem('user'); router.push('/login'); return; } loadData(); }, [router]); const loadData = async () => { try { const response = await fetch('/api/admin/agencies', { headers: { 'Authorization': `Bearer ${localStorage.getItem('token')}`, }, }); if (response.ok) { const data = await response.json(); setAgencies(data.slice(0, 5)); // Apenas as 5 primeiras // Calcular estatísticas setStats({ totalAgencies: data.length, activeAgencies: data.filter((a: Agency) => a.is_active).length, inactiveAgencies: data.filter((a: Agency) => !a.is_active).length, totalUsers: data.length * 2, // Mock - implementar depois }); } } catch (error) { console.error('Erro ao carregar dados:', error); } finally { setLoading(false); } }; const statCards = [ { name: 'Total de Agências', value: stats.totalAgencies, icon: BuildingOfficeIcon, color: 'orange', href: '/superadmin/agencies', }, { name: 'Agências Ativas', value: stats.activeAgencies, icon: CheckCircleIcon, color: 'green', href: '/superadmin/agencies', }, { name: 'Links de Cadastro', value: '5', // Mock icon: LinkIcon, color: 'pink', href: '/superadmin/signup-templates', }, { name: 'Total de Usuários', value: stats.totalUsers, icon: UserGroupIcon, color: 'rose', href: '/superadmin/users', }, ]; if (loading) { return (
); } return (
{/* Header */}

Dashboard

Visão geral da plataforma Aggios

{/* Stats Grid */}
{statCards.map((stat) => { const Icon = stat.icon; return (

{stat.name}

{stat.value}

); })}
{/* Recent Agencies */}

Agências Recentes

Ver todas →
{agencies.length === 0 ? (

Nenhuma agência

Comece criando uma nova agência.

) : ( agencies.map((agency) => (
{agency.name.charAt(0).toUpperCase()}

{agency.name}

{agency.subdomain}.aggios.app

{agency.is_active ? ( Ativo ) : ( Inativo )} {new Date(agency.created_at).toLocaleDateString('pt-BR')}
)) )}
{/* Quick Actions */}

Gerenciar Agências

Ver e editar agências

Links de Cadastro

Criar links personalizados

Relatórios

Análises e métricas

); }