Create a component with the below code name FloatingLabelInput
import { useState } from "react"; function FloatingLabelInput({ type, name, children, label }) { const [active, setActive] = useState(false); function handleActivation(e) { setActive(!!e.target.value); } return ( <div className="relative rounded mb-2 bg-gray-200 text-ciaoamigos_gray "> {type == 'select' ? <select className={[ "outline-none w-full rounded bg-transparent text-sm transition-all h-14 duration-200 ease-in-out p-2", "pt-6" ].join(" ")} id={name} name={name} type={type} onChange={handleActivation}> {children} </select> : <input className={[ "outline-none w-full rounded bg-transparent text-sm transition-all duration-200 ease-in-out h-14 p-2 pl-3", active ? "pt-6" : "pt-2" ].join(" ")} id={name} name={name} type={type} onChange={handleActivation} />} <label className={[ "absolute top-0 left-0 flex items-center text-white text-opacity-50 pb-2 pl-3 transition-all duration-200 text-ciaoamigos_gray ease-in-out", active ? "text-xs pt-3" : type == 'select' ? "text-sm pt-2" : "text-sm pt-4" ].join(" ")} htmlFor={name} > {label} </label> </div> ); } export default FloatingLabelInput;
using in the input type text
<FloatingLabelInput name="name" type="text" label="Name"/>
using in the input type select
<FloatingLabelInput name="tag" type="select" label="Tag"> <option value="free">Free</option> <option value="Paid">Paid</option> </FloatingLabelInput>