"use client"; import { Icon } from "@iconify/react"; import { Input } from "@nextui-org/react"; import React, { useState } from "react"; import { Control, FieldPath, FieldValues } from "react-hook-form"; import { FormControl, FormField, FormMessage } from "@/components/ui/form"; interface CustomInputProps { control: Control; name: FieldPath; label?: string; labelPlacement?: "inside" | "outside"; variant?: "flat" | "bordered" | "underlined" | "faded"; type?: string; placeholder?: string; password?: boolean; confirmPassword?: boolean; isRequired?: boolean; isInvalid?: boolean; } export const CustomInput = ({ control, name, type = "text", label = name, labelPlacement = "inside", placeholder, variant = "bordered", confirmPassword = false, password = false, isRequired = true, isInvalid, }: CustomInputProps) => { const [isPasswordVisible, setIsPasswordVisible] = useState(false); const [isConfirmPasswordVisible, setIsConfirmPasswordVisible] = useState(false); const inputLabel = confirmPassword ? "Confirm Password" : password ? "Password" : label; const inputPlaceholder = confirmPassword ? "Confirm Password" : password ? "Password" : placeholder; const inputType = password || confirmPassword ? isPasswordVisible || isConfirmPasswordVisible ? "text" : "password" : type; const inputIsRequired = password || confirmPassword ? true : isRequired; const toggleVisibility = () => { if (password) { setIsPasswordVisible(!isPasswordVisible); } else if (confirmPassword) { setIsConfirmPasswordVisible(!isConfirmPasswordVisible); } }; const endContent = (password || confirmPassword) && ( ); return ( ( <> )} /> ); };