'use client'; import { useState } from 'react'; interface Transaction { id: string; envelopeId?: string; amount: number; description: string; date: Date; accountId: string; } interface TransactionEditProps { transaction: Transaction; envelopes: { id: string; name: string }[]; accounts: { id: string; name: string }[]; onSave: (updatedTransaction: Transaction) => void; onCancel: () => void; } export default function TransactionEdit({ transaction, envelopes, accounts, onSave, onCancel }: TransactionEditProps) { const [amount, setAmount] = useState(Math.abs(transaction.amount).toString()); const [description, setDescription] = useState(transaction.description); const [date, setDate] = useState(transaction.date.toISOString().split('T')[0]); const [selectedEnvelope, setSelectedEnvelope] = useState(transaction.envelopeId || ''); const [selectedAccount, setSelectedAccount] = useState(transaction.accountId); const [isExpense, setIsExpense] = useState(transaction.amount < 0); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const numAmount = parseFloat(amount); if (isNaN(numAmount) || !description.trim()) { alert('Please enter a valid amount and description'); return; } const transactionAmount = isExpense ? -Math.abs(numAmount) : Math.abs(numAmount); onSave({ ...transaction, amount: transactionAmount, description: description.trim(), date: new Date(date), envelopeId: selectedEnvelope || undefined, accountId: selectedAccount, }); }; return (

Edit Transaction

$ setAmount(e.target.value)} placeholder="0.00" className="w-full pl-8 pr-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" required />
setDate(e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" required />
setDescription(e.target.value)} placeholder="Enter transaction description" className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" required />
); }