Input Component
Componente de entrada de texto versátil com suporte a validação, máscaras, ícones e diferentes estados visuais.
Acessibilidade
Todos os inputs incluem suporte completo a screen readers, navegação por teclado e associação adequada com labels para máxima acessibilidade.
Variações Básicas
Input Básico
Input simples com label e placeholder
Input com Ícones
Inputs com ícones para melhor UX
Password Input
Input de senha com toggle de visibilidade
Validação e Estados
Estados de Validação
Inputs com diferentes estados visuais
Máscara de Telefone
Input com formatação automática
Implementação
components/ui/input.tsxtsx
import * as React from "react"
import { cn } from "@/lib/utils"
export interface InputProps
extends React.InputHTMLAttributes<HTMLInputElement> {}
const Input = React.forwardRef<HTMLInputElement, InputProps>(
({ className, type, ...props }, ref) => {
return (
<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",
className
)}
ref={ref}
{...props}
/>
)
}
)
Input.displayName = "Input"
export { Input }
Dica
Para inputs com ícones, use padding personalizado:
pl-10
para ícone à esquerda e pr-10
para ícone à direita. Posicione o ícone com absolute
e centralize com top-1/2 transform -translate-y-1/2
.Boas Práticas
✅ Faça
- • Sempre associe inputs com labels usando htmlFor/id
- • Use placeholders descritivos mas não como substituto de labels
- • Implemente validação em tempo real para melhor UX
- • Use tipos apropriados (email, tel, password, etc.)
- • Forneça feedback visual claro para estados de erro
❌ Evite
- • Usar apenas placeholders sem labels
- • Validação apenas no submit do formulário
- • Mensagens de erro genéricas ou pouco úteis
- • Inputs muito pequenos em dispositivos móveis
- • Máscaras muito restritivas que impedem a entrada