import { ChevronLeft, ChevronRight, Loader2, TrendingUp } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { useBudget } from '@/hooks/useBudget'; import { formatAmount } from '@/lib/format'; import { cn } from '@/lib/utils'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import ErrorState from '@/components/ErrorState'; import YearlyOverview from '@/components/budget/YearlyOverview'; const MIN_YEAR = 2026; const MAX_YEAR = 2030; export default function Proyecciones() { const currentYear = Math.max(MIN_YEAR, new Date().getFullYear()); const { year, setYear, setSelectedMonth, projection, loading, error, refresh, saveBalanceOverride, clearBalanceOverride, } = useBudget(currentYear); const navigate = useNavigate(); return (
{/* Header */}

Proyecciones

{year}
{/* Annual summary cards */} {projection && (

Ingresos Anuales

{formatAmount(projection.annual_income, 'CRC')}

Egresos Anuales

{formatAmount(projection.annual_expenses, 'CRC')}

Balance Neto Anual

= 0 ? 'text-primary' : 'text-destructive', )} > {projection.annual_net >= 0 ? '+' : ''} {formatAmount(projection.annual_net, 'CRC')}

)} {/* Yearly table */} {loading ? (
) : projection ? ( {error ? ( ) : ( { setSelectedMonth(m); navigate('/budget'); }} onSaveOverride={async (month, value) => { await saveBalanceOverride(year, month, value); }} onClearOverride={async (month) => { await clearBalanceOverride(year, month); }} /> )} ) : null}
); }