Input
A component that allows users to input text.
input-demo.tsx
import { Input } from "@/components/ui/input"
export function InputDemo() {
return <Input placeholder="Name" inputContainerClassName="w-80" />
}
Installation
npx shadcn@latest add https://9ui.dev/r/input.json
Usage
Imports
import { Input } from "@/components/ui/input"
Anatomy
<Input />
Examples
With Icons
input-with-icons.tsx
import { useState } from "react"
import { EyeIcon, EyeOffIcon, LockIcon } from "lucide-react"
import { Input } from "@/components/ui/input"
export function InputWithIcons() {
const [isPasswordVisible, setIsPasswordVisible] = useState(false)
const togglePasswordVisibility = () => {
setIsPasswordVisible(!isPasswordVisible)
}
const passwordType = isPasswordVisible ? "text" : "password"
return (
<Input
placeholder="Password"
inputContainerClassName="w-80"
type={passwordType}
leadingIcon={<LockIcon />}
trailingIcon={
isPasswordVisible ? (
<EyeIcon
className="hover:text-foreground pointer-events-auto cursor-pointer transition-colors duration-200"
onClick={togglePasswordVisibility}
/>
) : (
<EyeOffIcon
className="hover:text-foreground pointer-events-auto cursor-pointer transition-colors duration-200"
onClick={togglePasswordVisibility}
/>
)
}
/>
)
}
Disabled
input-disabled.tsx
import { Input } from "@/components/ui/input"
export function InputDisabled() {
return <Input inputContainerClassName="w-80" placeholder="Name" disabled />
}
Error
input-error.tsx
import { Input } from "@/components/ui/input"
export function InputError() {
return (
<Input inputContainerClassName="w-80" placeholder="Name" aria-invalid />
)
}