'use client' import { useActionState } from 'react' import { useFormStatus } from 'react-dom' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' type ActionResult = { error: string | Record } | undefined function SubmitButton({ label }: { label: string }) { const { pending } = useFormStatus() return ( ) } function getErrorMessage(error: ActionResult): string | null { if (!error) return null if (typeof error.error === 'string') return error.error // Field errors object — flatten to first message const first = Object.values(error.error).flat()[0] return first ?? null } interface AuthFormProps { action: (_prevState: unknown, formData: FormData) => Promise submitLabel: string } export function AuthForm({ action, submitLabel }: AuthFormProps) { const [state, formAction] = useActionState(action, undefined) const errorMessage = getErrorMessage(state) return (
{errorMessage && (
{errorMessage}
)} ) }