'use client';
import {
DetailedHTMLProps, FC, InputHTMLAttributes, ReactNode, useEffect, useMemo
} from 'react';
import { clsx } from 'clsx';
import { useFormContext, useWatch } from 'react-hook-form';
import interClass from '../helpers/inter.font';
export const Input: FC<
DetailedHTMLProps, HTMLInputElement> & {
removeError?: boolean;
error?: any;
disableForm?: boolean;
customUpdate?: () => void;
label: string;
name: string;
icon?: ReactNode;
}
> = (props) => {
const {
label,
icon,
removeError,
customUpdate,
className,
disableForm,
error,
...rest
} = props;
const form = useFormContext();
const err = useMemo(() => {
if (error) return error;
if (!form || !form.formState.errors[props?.name!]) return;
return form?.formState?.errors?.[props?.name!]?.message! as string;
}, [form?.formState?.errors?.[props?.name!]?.message, error]);
const watch = customUpdate ? form?.watch(props.name) : null;
useEffect(() => {
if (customUpdate) {
customUpdate();
}
}, [watch]);
return (
{!!label && (
{label}
)}
{!removeError && (
{err || <> >}
)}
);
};