import React, { useState } from 'react'; import { Shield, Home, Users, Car, DollarSign, TrendingUp, AlertCircle } from 'lucide-react'; export default function LifeInsuranceCalculator() { // Información del proveedor const [age, setAge] = useState(35); const [annualIncome, setAnnualIncome] = useState(60000); const [yearsToReplace, setYearsToReplace] = useState(10); // Deudas const [mortgageBalance, setMortgageBalance] = useState(200000); const [carLoans, setCarLoans] = useState(25000); const [creditCards, setCreditCards] = useState(10000); const [otherDebts, setOtherDebts] = useState(5000); // Gastos futuros const [numChildren, setNumChildren] = useState(2); const [collegePerChild, setCollegePerChild] = useState(50000); const [funeralCosts, setFuneralCosts] = useState(15000); const [emergencyFund, setEmergencyFund] = useState(30000); // Recursos existentes const [currentSavings, setCurrentSavings] = useState(20000); const [existingLifeInsurance, setExistingLifeInsurance] = useState(100000); const [otherAssets, setOtherAssets] = useState(10000); // Gastos del hogar const [monthlyExpenses, setMonthlyExpenses] = useState(4000); const [incomeReplacement, setIncomeReplacement] = useState(70); const calculateNeeds = () => { // 1. Reemplazo de ingresos const incomeNeeded = (annualIncome * (incomeReplacement / 100)) * yearsToReplace; // 2. Total de deudas const totalDebts = mortgageBalance + carLoans + creditCards + otherDebts; // 3. Gastos futuros const educationCosts = numChildren * collegePerChild; const finalExpenses = funeralCosts + emergencyFund; // 4. Gastos de transición (6 meses de gastos) const transitionExpenses = monthlyExpenses * 6; // 5. Total necesario const totalNeeded = incomeNeeded + totalDebts + educationCosts + finalExpenses + transitionExpenses; // 6. Recursos disponibles const totalAssets = currentSavings + existingLifeInsurance + otherAssets; // 7. Seguro adicional necesario const insuranceGap = Math.max(0, totalNeeded - totalAssets); // 8. Costo mensual estimado (varía por edad y salud) const costPer1000 = age < 30 ? 0.08 : age < 40 ? 0.12 : age < 50 ? 0.20 : 0.35; const estimatedMonthlyCost = (insuranceGap / 1000) * costPer1000; return { incomeNeeded, totalDebts, educationCosts, finalExpenses, transitionExpenses, totalNeeded, totalAssets, insuranceGap, estimatedMonthlyCost, recommendedCoverage: Math.ceil(insuranceGap / 50000) * 50000 // Redondear a $50k }; }; const results = calculateNeeds(); const formatCurrency = (value) => { return new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'USD', minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(value); }; return (

Calculadora de Seguro de Vida

Protege el futuro financiero de tu familia

{/* Panel Izquierdo - Inputs */}
{/* Información del Proveedor */}

Información del Proveedor Principal

setAge(Number(e.target.value))} className="w-full" />
setAnnualIncome(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500" />
setYearsToReplace(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500" />
setIncomeReplacement(Number(e.target.value))} className="w-full" />
{/* Deudas */}

Deudas Pendientes

setMortgageBalance(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500" />
setCarLoans(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500" />
setCreditCards(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500" />
setOtherDebts(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500" />
{/* Gastos Futuros */}

Gastos Futuros y Emergencias

setNumChildren(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500" />
setCollegePerChild(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500" />
setFuneralCosts(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500" />
setEmergencyFund(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500" />
setMonthlyExpenses(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500" />
{/* Recursos Existentes */}

Recursos Financieros Existentes

setCurrentSavings(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" />
setExistingLifeInsurance(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" />
setOtherAssets(Number(e.target.value))} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" />
{/* Panel Derecho - Resultados */}
{/* Resultado Principal */}

Análisis de Cobertura

Cobertura Recomendada

{formatCurrency(results.recommendedCoverage)}

Déficit de Seguro

{formatCurrency(results.insuranceGap)}

Costo Mensual Estimado

{formatCurrency(results.estimatedMonthlyCost)}

Basado en edad y salud promedio

{/* Desglose de Necesidades */}

Desglose de Necesidades

Reemplazo de Ingresos {formatCurrency(results.incomeNeeded)}
Total de Deudas {formatCurrency(results.totalDebts)}
Educación ({numChildren} hijos) {formatCurrency(results.educationCosts)}
Gastos Finales {formatCurrency(results.finalExpenses)}
Período de Transición {formatCurrency(results.transitionExpenses)}
Total Necesario {formatCurrency(results.totalNeeded)}
Recursos Existentes -{formatCurrency(results.totalAssets)}
Seguro Adicional Necesario {formatCurrency(results.insuranceGap)}
{/* Recomendaciones */}

Recomendaciones

  • • Considera una póliza de término a {20 + (numChildren * 2)} años para cubrir hasta que los hijos sean independientes
  • • Revisa tu cobertura anualmente o después de eventos importantes (nacimientos, compras grandes)
  • • Complementa con seguro de vida del empleador si está disponible
  • • Mantén un testamento actualizado y designa beneficiarios
  • • Considera un seguro permanente para dejar un legado
{/* Escenarios */}

📊 Comparación de Coberturas

Cobertura Básica (10x ingresos)

{formatCurrency(annualIncome * 10)}

Cubre solo reemplazo de ingresos

Cobertura Recomendada

{formatCurrency(results.recommendedCoverage)}

Protección completa para tu familia

Cobertura Premium (+ 25%)

{formatCurrency(results.recommendedCoverage * 1.25)}

Margen extra para imprevistos

{/* Nota Final */}

Nota Importante: Esta calculadora proporciona una estimación general basada en tus circunstancias. El costo real del seguro puede variar según tu salud, estilo de vida, tipo de póliza y aseguradora. Te recomendamos consultar con un agente de seguros profesional para obtener cotizaciones específicas y asesoría personalizada. El seguro de vida es una decisión importante que debe tomarse considerando todos los aspectos de tu situación familiar y financiera.

); }