-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinput.tsx
30 lines (26 loc) · 1.18 KB
/
input.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { cn } from "@/lib/utils";
import * as React from "react";
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
leftIcon?: React.ReactNode; // Nuevo prop para el icono
}
const Input = React.forwardRef<HTMLInputElement, InputProps>(({ className, type, leftIcon, ...props }, ref) => {
return (
<div className="relative flex items-center">
{leftIcon && (
<div className="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none">{leftIcon}</div>
)}
<input
type={type}
className={cn(
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 ", // Agregamos un padding a la izquierda para evitar que el texto se superponga con el icono
leftIcon ? "pl-10" : "", // Agregamos padding a la izquierda si hay un icono
className
)}
ref={ref}
{...props}
/>
</div>
);
});
Input.displayName = "Input";
export { Input };