import {useState} from 'react'; import {Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle} from '@/components/ui/dialog'; import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from '@/components/ui/select'; import {Button} from '@/components/ui/button'; import {Input} from '@/components/ui/input'; import {Label} from '@/components/ui/label'; import {useAppDispatch, useAppSelector, addTransaction} from '@/store'; interface Props { open: boolean; onOpenChange: (open: boolean) => void; } export default function AddTransactionDialog({open, onOpenChange}: Props) { const dispatch = useAppDispatch(); const {categories} = useAppSelector(state => state.cashflow); const [form, setForm] = useState({type: 'expense' as 'income' | 'expense', name: '', amount: '', category: '', date: new Date().toISOString().split('T')[0]}); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); dispatch( addTransaction({ id: crypto.randomUUID(), type: form.type, name: form.name, amount: parseFloat(form.amount) || 0, category: form.category, date: form.date }) ); onOpenChange(false); setForm({type: 'expense', name: '', amount: '', category: '', date: new Date().toISOString().split('T')[0]}); }; const categoryList = form.type === 'income' ? categories.income : categories.expense; return ( Add Transaction Record a one-time transaction
setForm({...form, name: e.target.value})} className="input-depth" required />
setForm({...form, amount: e.target.value})} className="input-depth" required />
setForm({...form, date: e.target.value})} className="input-depth" required />
); }