import { useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Plus, Trash2 } from "lucide-react"; import type { Category } from "../../shared/types"; import type { AdjustmentFormData, EntryFormData } from "../../hooks/useAdjustments"; interface Props { initialData: AdjustmentFormData; initialEntries: EntryFormData[]; categories: Category[]; isCreating: boolean; isSaving: boolean; onSave: (data: AdjustmentFormData, entries: EntryFormData[]) => void; onCancel: () => void; onDelete?: () => void; } export default function AdjustmentForm({ initialData, initialEntries, categories, isCreating, isSaving, onSave, onCancel, onDelete, }: Props) { const { t } = useTranslation(); const [form, setForm] = useState(initialData); const [entries, setEntries] = useState(initialEntries); useEffect(() => { setForm(initialData); setEntries(initialEntries); }, [initialData, initialEntries]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!form.name.trim()) return; onSave({ ...form, name: form.name.trim() }, entries); }; const addEntry = () => { const defaultCategoryId = categories.length > 0 ? categories[0].id : 0; setEntries([...entries, { category_id: defaultCategoryId, amount: 0, description: "" }]); }; const updateEntryField = (index: number, field: keyof EntryFormData, value: unknown) => { setEntries(entries.map((e, i) => (i === index ? { ...e, [field]: value } : e))); }; const removeEntry = (index: number) => { setEntries(entries.filter((_, i) => i !== index)); }; return (
setForm({ ...form, name: e.target.value })} className="w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--card)] text-sm focus:outline-none focus:ring-1 focus:ring-[var(--primary)]" autoFocus />
setForm({ ...form, date: e.target.value })} className="w-full px-3 py-2 rounded-lg border border-[var(--border)] bg-[var(--card)] text-sm focus:outline-none focus:ring-1 focus:ring-[var(--primary)]" />