import React, { InputHTMLAttributes, useEffect, useRef, useState } from "react"; import { defaultTheme } from "@/lib"; import FlexContainer from "../FlexContainer"; import Typography from "../Typography"; import * as S from "./styles"; export type CustomInputProps = { icon?: React.ReactNode; isInvalid?: boolean; accentColor?: "console" | "secondary" | "error" | "warning"; disabled?: boolean; padding?: string; errorText?: string | false; leftIcon?: React.ReactNode; } & InputHTMLAttributes; export default function CustomInput({ icon, isInvalid, accentColor = "console", disabled, padding = "1.2rem", errorText, leftIcon, ...props }: CustomInputProps) { const [focused, setFocused] = useState(false); const inputRef = useRef(null); const [touched, setTouched] = useState(false); const setToFocused = () => { setFocused(true); !touched && setTouched(true); }; const setToUnfocused = () => { setFocused(false); }; useEffect(() => { if (focused && inputRef.current) { inputRef.current.focus(); } }, [focused]); return ( {!!leftIcon && leftIcon} {!!icon && icon} {touched && isInvalid && errorText && ( {errorText} )} ); }