"use client"; import { CheckCircleIcon } from "@heroicons/react/24/solid"; import clsx from "clsx"; import React, { ChangeEvent, DetailedHTMLProps, forwardRef, InputHTMLAttributes, ReactNode, } from "react"; export type TextInputProps = DetailedHTMLProps< InputHTMLAttributes, HTMLInputElement > & { label: string; placeholder?: string; defaultValue?: string; error?: string | ReactNode; success?: string | ReactNode; disabled?: boolean; onChange?: (value: ChangeEvent) => void; onBlur?: (value: ChangeEvent) => void; }; const styles = (error: boolean, disabled: boolean) => clsx({ "h-[40px] mb-[2px] rounded p-[7px] bg-input-light-background dark:bg-input-dark-background transition-colors duration-300 grow": true, "border border-input-light-border dark:border-input-dark-border hover:border-black hover:dark:border-white focus:border-primary-light-500 focus:dark:border-primary-dark-500": true, "focus:outline-none focus:ring-0 text-base text-black dark:text-white placeholder:italic placeholder-gray-700 dark:placeholder-gray-700": true, "border border-warn-light-500 dark:border-warn-dark-500 hover:border-warn-light-500 hover:dark:border-warn-dark-500 focus:border-warn-light-500 focus:dark:border-warn-dark-500": error, "pointer-events-none text-gray-500 dark:text-gray-800 border border-input-light-border dark:border-input-dark-border hover:border-light-hoverborder hover:dark:border-hoverborder cursor-default": disabled, }); // eslint-disable-next-line react/display-name export const TextInput = forwardRef( ( { label, placeholder, defaultValue, required = false, error, disabled, success, onChange, onBlur, ...props }, ref ) => { return ( ); } );