import { FormControl as ChakraFormControl, FormControlProps, FormErrorMessage, FormErrorMessageProps, FormHelperText, FormLabel, FormLabelProps, HelpTextProps, } from '@chakra-ui/react'; import { useField } from 'formik'; import React, { FC } from 'react'; export interface BaseProps extends Omit { name: string; label?: React.ReactNode; labelProps?: FormLabelProps; helperText?: React.ReactNode; helperTextProps?: HelpTextProps; errorMessageProps?: FormErrorMessageProps; } export const FormControl: FC = (props: BaseProps) => { const { children, name, label, labelProps, helperText, helperTextProps, errorMessageProps, ...rest } = props; const [, { error, touched }] = useField(name); return ( {label && typeof label === 'string' ? ( {label} ) : ( label )} {children} {error && ( {error} )} {helperText && typeof helperText === 'string' ? ( {helperText} ) : ( helperText )} ); }; export default FormControl;