"use client"; import { useState, useCallback } from "react"; interface UseFormOptions { initialValues: T; onSubmit: (values: T) => Promise; } export function useForm>({ initialValues, onSubmit }: UseFormOptions) { const [values, setValues] = useState(initialValues); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const setField = useCallback((field: K, value: T[K]) => { setValues(prev => ({ ...prev, [field]: value })); }, []); const handleSubmit = useCallback(async (e: React.FormEvent) => { e.preventDefault(); try { setSubmitting(true); setError(null); await onSubmit(values); } catch (err) { setError(err instanceof Error ? err.message : "Submit failed"); } finally { setSubmitting(false); } }, [values, onSubmit]); return { values, setField, submitting, error, handleSubmit }; }