'use client'; import { useState, useEffect } from 'react'; import { Filter, Download, RefreshCw } from 'lucide-react'; import StatsCards from './StatsCards'; import MessageChart from './MessageChart'; import SentimentChart from './SentimentChart'; import TopContactsTable from './TopContactsTable'; import MessageTimeline from './MessageTimeline'; export default function Dashboard() { const [loading, setLoading] = useState(true); const [stats, setStats] = useState({ totalMessages: 0, totalContacts: 0, avgResponseTime: '0min', activeConversations: 0, }); const [filters, setFilters] = useState({ instanceId: '', startDate: '', endDate: '', }); useEffect(() => { fetchDashboardData(); }, [filters]); const fetchDashboardData = async () => { setLoading(true); try { // Construir query string com filtros const params = new URLSearchParams(); if (filters.instanceId) params.append('instanceId', filters.instanceId); if (filters.startDate) params.append('startDate', filters.startDate); if (filters.endDate) params.append('endDate', filters.endDate); const response = await fetch(`/api/stats?${params.toString()}`); if (!response.ok) { throw new Error('Erro ao buscar dados'); } const data = await response.json(); setStats({ totalMessages: data.totalMessages || 0, totalContacts: data.totalContacts || 0, avgResponseTime: data.avgResponseTime || '0min', activeConversations: data.activeConversations || 0, }); setLoading(false); } catch (error) { console.error('Erro ao buscar dados:', error); // Manter dados vazios em caso de erro setStats({ totalMessages: 0, totalContacts: 0, avgResponseTime: '0min', activeConversations: 0, }); setLoading(false); } }; const handleExport = () => { // Implementar exportação console.log('Exportando dados...'); }; if (loading) { return (