'use client' import { AlertCircle, CreditCard, PiggyBank, Wallet } from 'lucide-react' import { MetricCard } from './MetricCard' import { ExpenseChart } from './ExpenseChart' import { useFinanzasStore } from '@/lib/store' import { calculateTotalFixedDebts, calculateTotalVariableDebts, } from '@/lib/utils' import { getCurrentMonthBudget, calculateCurrentSpending, } from '@/lib/alerts' import { cn } from '@/lib/utils' export function SummarySection() { const { fixedDebts, variableDebts, creditCards, monthlyBudgets, alerts, currentMonth, currentYear, } = useFinanzasStore() // Calcular métricas const totalFixedDebts = calculateTotalFixedDebts(fixedDebts) const totalVariableDebts = calculateTotalVariableDebts(variableDebts) const totalPendingDebts = totalFixedDebts + totalVariableDebts const totalCardBalance = creditCards.reduce( (sum, card) => sum + card.currentBalance, 0 ) const currentBudget = getCurrentMonthBudget( monthlyBudgets, currentMonth, currentYear ) const currentSpending = calculateCurrentSpending(fixedDebts, variableDebts) // Presupuesto disponible (ingresos - gastos actuales) const availableBudget = currentBudget ? currentBudget.totalIncome - currentSpending : 0 // Meta de ahorro proyectada const projectedSavings = currentBudget ? currentBudget.totalIncome - currentSpending : 0 const savingsGoal = currentBudget?.savingsGoal || 0 // Alertas no leídas (primeras 3) const unreadAlerts = alerts .filter((alert) => !alert.isRead) .slice(0, 3) // Colores por severidad de alerta const severityColors = { danger: 'border-rose-500 bg-rose-500/10 text-rose-400', warning: 'border-amber-500 bg-amber-500/10 text-amber-400', info: 'border-blue-500 bg-blue-500/10 text-blue-400', } return (
{/* Grid de métricas */}
!d.isPaid).length + variableDebts.filter((d) => !d.isPaid).length} pagos pendientes`} icon={Wallet} color="text-rose-400" /> 0 ? `${((projectedSavings / savingsGoal) * 100).toFixed(0)}% de la meta` : 'Sin meta definida' } icon={PiggyBank} color="text-violet-400" />
{/* Gráfico y alertas */}
{/* Gráfico de distribución */} {/* Alertas destacadas */}

Alertas Destacadas

{unreadAlerts.length === 0 ? (

No hay alertas pendientes

) : (
{unreadAlerts.map((alert) => (

{alert.title}

{alert.message}

))}
)}
) }