"use client"; import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { CheckCircleIcon, ClockIcon, UserCircleIcon, EnvelopeIcon, PhoneIcon, BuildingOfficeIcon, CalendarIcon, ChartBarIcon, } from '@heroicons/react/24/outline'; interface Lead { id: string; name: string; email: string; phone: string; status: string; source: string; created_at: string; } interface CustomerData { customer: { id: string; name: string; email: string; phone: string; company: string; portal_last_login: string | null; portal_created_at: string; has_portal_access: boolean; is_active: boolean; }; leads?: Lead[]; stats?: { total_leads: number; active_leads: number; converted: number; }; } export default function CustomerDashboardPage() { const router = useRouter(); const [data, setData] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { fetchDashboard(); }, []); const fetchDashboard = async () => { try { const token = localStorage.getItem('token'); const response = await fetch('/api/portal/dashboard', { headers: { 'Authorization': `Bearer ${token}`, }, }); if (!response.ok) throw new Error('Erro ao buscar dados'); const result = await response.json(); setData(result); } catch (error) { console.error('Error fetching dashboard:', error); } finally { setLoading(false); } }; if (loading) { return (

Carregando...

); } const customer = data?.customer; const stats = data?.stats; const leads = data?.leads || []; const firstName = customer?.name?.split(' ')[0] || 'Cliente'; const getStatusColor = (status: string) => { const colors: Record = { novo: 'bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300', qualificado: 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400', negociacao: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300', convertido: 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400', perdido: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400', }; return colors[status] || 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300'; }; return (
{/* Header - Template Pattern */}

Olá, {firstName}! 👋

Bem-vindo ao seu portal. Acompanhe seus leads e o desempenho da sua conta.

Meu Perfil Ver Todos os Leads
{/* Stats Cards */}

Total de Leads

{stats?.total_leads || 0}

Leads Convertidos

{stats?.converted || 0}

Em Andamento

{stats?.active_leads || 0}

{/* Recent Leads List - Template Pattern */}

Leads Recentes

Ver todos →
{leads.length === 0 ? ( ) : ( leads.slice(0, 5).map((lead) => ( )) )}
Lead Contato Status Data

Nenhum lead encontrado.

{lead.name.charAt(0).toUpperCase()}
{lead.name}
{lead.email} {lead.phone || 'Sem telefone'}
{lead.status.charAt(0).toUpperCase() + lead.status.slice(1)} {new Date(lead.created_at).toLocaleDateString('pt-BR')}
{/* Quick Info Section */}

Informações da Conta

Empresa {customer?.company}
E-mail {customer?.email}
Status Ativo

Suporte e Ajuda

Precisa de ajuda com seus leads ou tem alguma dúvida sobre o portal? Nossa equipe está à disposição.

); }