import { useState, useEffect } from 'react'; import { X, Plus, Edit2 } from 'lucide-react'; const INCOME_CATEGORIES = [ 'Sales', 'Services', 'Consulting', 'Subscriptions', 'Refunds', 'Other Income', ]; const EXPENSE_CATEGORIES = [ 'Supplies', 'Equipment', 'Marketing', 'Utilities', 'Software', 'Travel', 'Professional Services', 'Taxes', 'Other', ]; export default function TransactionModal({ isOpen, onClose, onSubmit, type = 'income', editingTransaction = null, }) { const [formData, setFormData] = useState({ amount: '', category: '', description: '', date: new Date().toISOString().split('T')[0], }); useEffect(() => { if (editingTransaction) { setFormData({ amount: editingTransaction.amount.toString(), category: editingTransaction.category, description: editingTransaction.description || '', date: editingTransaction.date, }); } else { setFormData({ amount: '', category: '', description: '', date: new Date().toISOString().split('T')[0], }); } }, [editingTransaction, isOpen]); if (!isOpen) return null; const categories = type === 'income' ? INCOME_CATEGORIES : EXPENSE_CATEGORIES; const handleSubmit = (e) => { e.preventDefault(); const amount = parseFloat(formData.amount); if (!amount || isNaN(amount)) return; onSubmit({ id: editingTransaction?.id || Date.now(), type, amount: Math.abs(amount), category: formData.category, description: formData.description, date: formData.date, createdAt: editingTransaction?.createdAt || new Date().toISOString(), }); onClose(); }; return (