{i18n.t("home.hero.title")}
{i18n.t("home.hero.subtitle")}
{/* CTAs */}import React, { useState, useEffect } from "react"; import { Calendar, Users, UserCheck, Clock, ArrowRight } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { listPatients } from "../services/pacienteService"; import medicoService from "../services/medicoService"; import consultaService from "../services/consultaService"; import { MetricCard } from "../components/MetricCard"; import { i18n } from "../i18n"; import { telemetry } from "../services/telemetry"; const Home: React.FC = () => { const [stats, setStats] = useState({ totalPacientes: 0, totalMedicos: 0, consultasHoje: 0, consultasPendentes: 0, }); const [loading, setLoading] = useState(true); const [error, setError] = useState(false); const navigate = useNavigate(); useEffect(() => { fetchStats(); }, []); const fetchStats = async () => { try { setLoading(true); setError(false); const [pacientesResult, medicosResult, consultasResult] = await Promise.all([ listPatients().catch(() => ({ data: [] })), medicoService.listarMedicos().catch(() => ({ data: { data: [] } })), consultaService .listarConsultas() .catch(() => ({ data: { data: [] } })), ]); const hoje = new Date().toISOString().split("T")[0]; const consultas = consultasResult.data?.data || []; const consultasHoje = consultas.filter((consulta) => consulta.data_hora?.startsWith(hoje)) .length || 0; const consultasPendentes = consultas.filter( (consulta) => consulta.status === "agendada" || consulta.status === "confirmada" ).length || 0; const medicos = medicosResult.data?.data || []; setStats({ totalPacientes: pacientesResult.data?.length || 0, totalMedicos: medicos.length || 0, consultasHoje, consultasPendentes, }); } catch (err) { console.error("Erro ao carregar estatísticas:", err); setError(true); telemetry.trackError("stats_load_error", String(err)); } finally { setLoading(false); } }; const handleCTA = (action: string, destination: string) => { telemetry.trackCTA(action, destination); navigate(destination); }; return (
{i18n.t("home.hero.subtitle")}
{/* CTAs */}{description}