"use client"; import FloatingLabelInput from "../floatingLabelInput" import { FormProps } from "#/types" import { FormEvent, useState } from "react" export default function Form({ fields, submit, className, child, title, schema } : FormProps) { const [errors, setErrors] = useState>({}); const handleSubmit = (e: FormEvent) => { e.preventDefault() const formData = new FormData(e.currentTarget) const data = Object.fromEntries(formData) console.log("FORM DATA = ", data) const result = schema.safeParse(data); console.log("ZOD = ", result.error?.format()) if(!result.success) { const formatedErrors = result.error.format() as Record; const newErrors: Record = {}; Object.keys(formatedErrors).forEach((field) => { if (field !== "_errors" && formatedErrors[field]._errors?.length) { newErrors[field] = formatedErrors[field]._errors[0]; } }); setErrors(newErrors) } else { setErrors({}) submit(result.data) } } return (

{title}

{ fields.map((item, index) => (
{errors[item.name]}
)) } {child}
) }