'use client'; import { useState } from 'react'; import { Header } from '@/components/layouts/header'; import { KpiCard } from '@/components/charts/kpi-card'; import { BarChart } from '@/components/charts/bar-chart'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { PeriodSelector } from '@/components/period-selector'; import { useKpis, useIngresosEgresos, useAlertas, useResumenFiscal } from '@/lib/hooks/use-dashboard'; import { TrendingUp, TrendingDown, Wallet, Receipt, FileText, AlertTriangle, } from 'lucide-react'; export default function DashboardPage() { const [año, setAño] = useState(new Date().getFullYear()); const [mes, setMes] = useState(new Date().getMonth() + 1); const { data: kpis, isLoading: kpisLoading } = useKpis(año, mes); const { data: chartData, isLoading: chartLoading } = useIngresosEgresos(año); const { data: alertas, isLoading: alertasLoading } = useAlertas(5); const { data: resumenFiscal } = useResumenFiscal(año, mes); const formatCurrency = (value: number) => new Intl.NumberFormat('es-MX', { style: 'currency', currency: 'MXN', minimumFractionDigits: 0, }).format(value); return ( <>
{/* KPIs */}
} trend="up" trendValue="+12.5%" subtitle="vs mes anterior" /> } trend="down" trendValue="-3.2%" subtitle="vs mes anterior" /> } trend={kpis?.utilidad && kpis.utilidad > 0 ? 'up' : 'down'} trendValue={`${kpis?.margen || 0}% margen`} /> } trend={kpis?.ivaBalance && kpis.ivaBalance > 0 ? 'up' : 'down'} trendValue={kpis?.ivaBalance && kpis.ivaBalance > 0 ? 'Por pagar' : 'A favor'} />
{/* Charts and Alerts */}
Alertas {alertasLoading ? (

Cargando...

) : alertas?.length === 0 ? (

No hay alertas pendientes

) : ( alertas?.map((alerta) => (

{alerta.titulo}

{alerta.mensaje}

)) )}
{/* Resumen Fiscal */}

CFDIs Emitidos

{kpis?.cfdisEmitidos || 0}

CFDIs Recibidos

{kpis?.cfdisRecibidos || 0}

IVA a Favor Acumulado

{formatCurrency(resumenFiscal?.ivaAFavor || 0)}

Declaraciones Pendientes

{resumenFiscal?.declaracionesPendientes || 0}

); }