'use client' import { useState } from 'react' import { useFinanzasStore } from '@/lib/store' import { FixedDebt, VariableDebt } from '@/lib/types' import { DebtCard } from './DebtCard' import { FixedDebtForm } from './FixedDebtForm' import { VariableDebtForm } from './VariableDebtForm' import { Plus, Wallet } from 'lucide-react' import { cn, formatCurrency, calculateTotalFixedDebts, calculateTotalVariableDebts } from '@/lib/utils' type DebtType = 'fixed' | 'variable' export function DebtSection() { const [activeTab, setActiveTab] = useState('fixed') const [isModalOpen, setIsModalOpen] = useState(false) const [editingDebt, setEditingDebt] = useState(null) const { fixedDebts, variableDebts, addFixedDebt, updateFixedDebt, deleteFixedDebt, toggleFixedDebtPaid, addVariableDebt, updateVariableDebt, deleteVariableDebt, toggleVariableDebtPaid, } = useFinanzasStore() const currentDebts = activeTab === 'fixed' ? fixedDebts : variableDebts const totalUnpaid = activeTab === 'fixed' ? calculateTotalFixedDebts(fixedDebts) : calculateTotalVariableDebts(variableDebts) const handleAdd = () => { setEditingDebt(null) setIsModalOpen(true) } const handleEdit = (debt: FixedDebt | VariableDebt) => { setEditingDebt(debt) setIsModalOpen(true) } const handleCloseModal = () => { setIsModalOpen(false) setEditingDebt(null) } const handleSubmitFixed = (data: Omit) => { if (editingDebt?.id) { updateFixedDebt(editingDebt.id, data) } else { addFixedDebt({ ...data, isPaid: false }) } handleCloseModal() } const handleSubmitVariable = (data: Omit) => { if (editingDebt?.id) { updateVariableDebt(editingDebt.id, data) } else { addVariableDebt({ ...data, isPaid: false }) } handleCloseModal() } const handleDelete = (debt: FixedDebt | VariableDebt) => { if (confirm('¿Estás seguro de que deseas eliminar esta deuda?')) { if (activeTab === 'fixed') { deleteFixedDebt(debt.id) } else { deleteVariableDebt(debt.id) } } } const handleTogglePaid = (debt: FixedDebt | VariableDebt) => { if (activeTab === 'fixed') { toggleFixedDebtPaid(debt.id) } else { toggleVariableDebtPaid(debt.id) } } const paidCount = currentDebts.filter(d => d.isPaid).length const unpaidCount = currentDebts.filter(d => !d.isPaid).length return (
{/* Header */}

Deudas

Gestiona tus gastos fijos y variables

{/* Summary Cards */}

Total pendiente

{formatCurrency(totalUnpaid)}

Pagadas

{paidCount}

Pendientes

{unpaidCount}

{/* Tabs */}
{/* Debt List */}
{currentDebts.length === 0 ? (

No hay deudas {activeTab === 'fixed' ? 'fijas' : 'variables'}

Haz clic en "Agregar" para crear una nueva deuda

) : ( currentDebts.map((debt) => ( handleTogglePaid(debt)} onEdit={() => handleEdit(debt)} onDelete={() => handleDelete(debt)} /> )) )}
{/* Modal */} {isModalOpen && (

{editingDebt ? 'Editar deuda' : activeTab === 'fixed' ? 'Nueva deuda fija' : 'Nueva deuda variable'}

{activeTab === 'fixed' ? ( | undefined} onSubmit={handleSubmitFixed} onCancel={handleCloseModal} /> ) : ( | undefined} onSubmit={handleSubmitVariable} onCancel={handleCloseModal} /> )}
)}
) }