Lunar Kit LogoLunar Kit
Components

Input

A text input component with variants and adornments

Input

A text input field for collecting user input.

Demo
Code

Installation

lunar add input

Usage

import { Input } from '@/components/ui/input';

Basic Usage

const [value, setValue] = useState('');
 
<Input
value={value}
onChangeText={setValue}
placeholder="Enter your name"
/>

Variants

// Outline (default)
<Input variant="outline" placeholder="Outline variant" />
 
// Underline
<Input variant="underline" placeholder="Underline variant" />

Sizes

<Input size="sm" placeholder="Small" />
<Input size="md" placeholder="Medium (default)" />
<Input size="lg" placeholder="Large" />

With Prefix/Suffix

import { Mail, Eye, Search, DollarSign } from 'lucide-react-native';
 
// Prefix icon
<Input
placeholder="Email"
prefix={<Mail size={18} color="#6b7280" />}
/>
 
// Suffix icon
<Input
placeholder="Password"
secureTextEntry
suffix={<Eye size={18} color="#6b7280" />}
/>
 
// Both
<Input
placeholder="Search..."
prefix={<Search size={18} color="#6b7280" />}
suffix={<Text className="text-muted-foreground text-sm">⌘K</Text>}
/>
 
// With text prefix
<Input
placeholder="0.00"
prefix={<DollarSign size={18} color="#6b7280" />}
/>

Error State

<Input
placeholder="Email"
error
value={email}
onChangeText={setEmail}
/>

Disabled State

<Input
placeholder="Disabled input"
editable={false}
value="Cannot edit this"
/>

API Reference

Input

PropTypeDefaultDescription
variant'outline' | 'underline''outline'Visual variant
size'sm' | 'md' | 'lg''md'Input size
prefixReactNodeLeft side adornment
suffixReactNodeRight side adornment
errorbooleanfalseShow error state
containerClassNamestringClasses for container
inputClassNamestringClasses for input

On this page