import { cn } from "@/lib/utils"; import { FormControl, FormDescription, FormField, FormItem, FormMessage, Input, InputProps, } from "@/ui"; import * as React from "react"; import { createElement } from "react"; import { FieldErrors, FieldPath, FieldValues, UseControllerProps, } from "react-hook-form"; import { FormLabel, FormLabelProps } from "./FormLabel"; import { FormInputProps, FormInputWithIconProps } from "./FormProps"; export type FormTextFieldProps< TFieldValues extends FieldValues = FieldValues, TName extends FieldPath = FieldPath, > = { button?: (props?) => React.ReactNode; } & InputProps & FormInputProps & Partial & FormInputWithIconProps & UseControllerProps & { errors?: FieldErrors; }; export function FormTextField({ label, placeholder, hint, description, required, className, leadIcon, trailIcon, button, disabled, errors, name, control, type, }: FormTextFieldProps) { //const error = Boolean(errors && errors[name]); return ( ( {label && }
{leadIcon && (
{React.createElement( leadIcon, { className: "h-5 w-5 text-muted-foreground", "aria-hidden": true, }, null, )}
)} {trailIcon && (
{createElement( trailIcon, { className: "h-5 w-5 text-muted-foreground", "aria-hidden": true, }, null, )}
)}
{button && <>{createElement(button)}}
{description && {description}}
)} /> ); }