import { useCallback, useState } from "react"; interface UseResourceFormOptions { canCancel?: () => boolean; } interface UseResourceFormResult { creating: boolean; editingId: TId | null; formActive: boolean; formError: string | null; startCreate: () => void; startEdit: (id: TId) => void; cancel: () => void; close: () => void; setFormError: (message: string | null) => void; } export const useResourceForm = ( options: UseResourceFormOptions = {}, ): UseResourceFormResult => { const { canCancel } = options; const [creating, setCreating] = useState(false); const [editingId, setEditingId] = useState(null); const [formError, setFormError] = useState(null); const startCreate = useCallback(() => { setEditingId(null); setFormError(null); setCreating(true); }, []); const startEdit = useCallback((id: TId) => { setCreating(false); setFormError(null); setEditingId(id); }, []); const close = useCallback(() => { setCreating(false); setEditingId(null); setFormError(null); }, []); const cancel = useCallback(() => { if (canCancel && canCancel() === false) return; close(); }, [canCancel, close]); return { creating, editingId, formActive: creating || editingId !== null, formError, startCreate, startEdit, cancel, close, setFormError, }; };