"use client" import { Eye, EyeSlash, MagnifyingGlassMini } from "@medusajs/icons" import { VariantProps, cva } from "cva" import * as React from "react" import { clx } from "@/utils/clx" const inputBaseStyles = clx( "caret-ui-fg-base bg-ui-bg-field hover:bg-ui-bg-field-hover shadow-borders-base placeholder-ui-fg-muted text-ui-fg-base transition-fg relative w-full appearance-none rounded-md outline-none", "focus:shadow-borders-interactive-with-active", "disabled:text-ui-fg-disabled disabled:!bg-ui-bg-disabled disabled:placeholder-ui-fg-disabled disabled:cursor-not-allowed", "aria-[invalid=true]:!shadow-borders-error invalid:!shadow-borders-error" ) const inputVariants = cva({ base: clx( inputBaseStyles, "[&::--webkit-search-cancel-button]:hidden [&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden" ), variants: { size: { base: "txt-compact-medium h-10 px-3 py-[9px]", small: "txt-compact-small h-8 px-2 py-[5px]", }, }, defaultVariants: { size: "base", }, }) const Input = React.forwardRef< HTMLInputElement, VariantProps & Omit, "size"> >(({ className, type, size = "base", ...props }, ref) => { const [typeState, setTypeState] = React.useState(type) const isPassword = type === "password" const isSearch = type === "search" return (
{isSearch && (
)} {isPassword && (
)}
) }) Input.displayName = "Input" export { Input, inputBaseStyles }