import { ReactNode } from "react"; import { get } from "lodash"; import { useFormContext } from "react-hook-form"; import { twMerge } from "tailwind-merge"; import { ErrorMessage } from "./ErrorMessage"; import { Label } from "./Label"; export type FieldProps = { name: string; className?: string; labelClassName?: string; childrenWrapperClassName?: string; label?: React.ReactNode; hideErrorMessage?: boolean; }; export const Field = ( props: Omit & { required?: boolean; name?: string; children: ReactNode; }, ) => { const { name, className, labelClassName, childrenWrapperClassName, label, children, required, hideErrorMessage = false, } = props; const form = useFormContext(); const { formState: { errors }, } = form; const hasError = name && !!get(errors, name)?.message; return (
{label ? ( ) : null}
{children}
{hideErrorMessage || !hasError ? null : ( )}
); };