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}
)}
);
}