Files
finanzas/lib/store/slices/debtsSlice.ts
renato97 712b06f118 feat: initial commit - finanzas app
Complete personal finance management application with:
- Dashboard with financial metrics and alerts
- Credit card management and payments
- Fixed and variable debt tracking
- Monthly budget planning
- Intelligent alert system
- Responsive design with Tailwind CSS

Tech stack: Next.js 14, TypeScript, Zustand, Recharts

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-01-29 00:00:32 +00:00

74 lines
2.0 KiB
TypeScript

import { StateCreator } from 'zustand'
import { v4 as uuidv4 } from 'uuid'
import { FixedDebt, VariableDebt } from '@/lib/types'
export interface DebtsSlice {
fixedDebts: FixedDebt[]
variableDebts: VariableDebt[]
// Actions Fixed
addFixedDebt: (debt: Omit<FixedDebt, 'id'>) => void
updateFixedDebt: (id: string, debt: Partial<FixedDebt>) => void
deleteFixedDebt: (id: string) => void
toggleFixedDebtPaid: (id: string) => void
// Actions Variable
addVariableDebt: (debt: Omit<VariableDebt, 'id'>) => void
updateVariableDebt: (id: string, debt: Partial<VariableDebt>) => void
deleteVariableDebt: (id: string) => void
toggleVariableDebtPaid: (id: string) => void
}
export const createDebtsSlice: StateCreator<DebtsSlice> = (set) => ({
fixedDebts: [],
variableDebts: [],
addFixedDebt: (debt) =>
set((state) => ({
fixedDebts: [...state.fixedDebts, { ...debt, id: uuidv4() }],
})),
updateFixedDebt: (id, debt) =>
set((state) => ({
fixedDebts: state.fixedDebts.map((d) =>
d.id === id ? { ...d, ...debt } : d
),
})),
deleteFixedDebt: (id) =>
set((state) => ({
fixedDebts: state.fixedDebts.filter((d) => d.id !== id),
})),
toggleFixedDebtPaid: (id) =>
set((state) => ({
fixedDebts: state.fixedDebts.map((d) =>
d.id === id ? { ...d, isPaid: !d.isPaid } : d
),
})),
addVariableDebt: (debt) =>
set((state) => ({
variableDebts: [...state.variableDebts, { ...debt, id: uuidv4() }],
})),
updateVariableDebt: (id, debt) =>
set((state) => ({
variableDebts: state.variableDebts.map((d) =>
d.id === id ? { ...d, ...debt } : d
),
})),
deleteVariableDebt: (id) =>
set((state) => ({
variableDebts: state.variableDebts.filter((d) => d.id !== id),
})),
toggleVariableDebtPaid: (id) =>
set((state) => ({
variableDebts: state.variableDebts.map((d) =>
d.id === id ? { ...d, isPaid: !d.isPaid } : d
),
})),
})