The Input component provides a styled text input field with multiple visual variants, sizes, and states for form data entry.
Basic Usage
import { Input } from "@paramanu/forms-react"
export default function App() {
return <Input placeholder="Enter text..." />
<input class="pm-input pm-input--outline pm-input--md" type="text" placeholder="Enter text..." />
Variants
import { Input } from "@paramanu/forms-react"
export default function App() {
<Input variant="outline" placeholder="Outline" />
<Input variant="filled" placeholder="Filled" />
<Input variant="unstyled" placeholder="Unstyled" />
<input class="pm-input pm-input--outline pm-input--md" placeholder="Outline" />
<input class="pm-input pm-input--filled pm-input--md" placeholder="Filled" />
<input class="pm-input pm-input--unstyled pm-input--md" placeholder="Unstyled" />
Sizes
import { Input } from "@paramanu/forms-react"
export default function App() {
<Input size="xs" placeholder="Extra small" />
<Input size="sm" placeholder="Small" />
<Input size="md" placeholder="Medium" />
<Input size="lg" placeholder="Large" />
<input class="pm-input pm-input--outline pm-input--xs" placeholder="Extra small" />
<input class="pm-input pm-input--outline pm-input--sm" placeholder="Small" />
<input class="pm-input pm-input--outline pm-input--md" placeholder="Medium" />
<input class="pm-input pm-input--outline pm-input--lg" placeholder="Large" />
States
import { Input } from "@paramanu/forms-react"
export default function App() {
<Input disabled placeholder="Disabled" />
<Input invalid placeholder="Invalid" />
<Input readOnly defaultValue="Read only" />
<input class="pm-input pm-input--outline pm-input--md pm-input--disabled" placeholder="Disabled" disabled aria-disabled="true" />
<input class="pm-input pm-input--outline pm-input--md pm-input--invalid" placeholder="Invalid" aria-invalid="true" />
<input class="pm-input pm-input--outline pm-input--md pm-input--read-only" value="Read only" readonly />
Accessibility
| Feature | Detail |
|---|
| Keyboard navigation | Standard input keyboard behavior |
aria-invalid | Applied when invalid is true |
aria-disabled | Applied when disabled is true |
| Focus ring | Visible via :focus-visible |
Best Practices
- Always pair inputs with a visible
<label> or aria-label.
- Use the
invalid prop with an error message for validation feedback.
- Prefer
readOnly over disabled when the value should be copyable.
Props
| Prop | Type | Default | Description |
|---|
variant | "outline" | "filled" | "unstyled" | "outline" | Visual variant |
size | "xs" | "sm" | "md" | "lg" | "md" | Input size |
invalid | boolean | false | Invalid state |
disabled | boolean | false | Disabled state |
readOnly | boolean | false | Read-only state |
fullWidth | boolean | false | Full-width layout |
CSS Classes
| Class | Description |
|---|
pm-input | Base class |
pm-input--outline | Outline variant |
pm-input--filled | Filled variant |
pm-input--unstyled | Unstyled variant |
pm-input--xs | Extra small size |
pm-input--sm | Small size |
pm-input--md | Medium size |
pm-input--lg | Large size |
pm-input--invalid | Invalid state |
pm-input--disabled | Disabled state |
pm-input--read-only | Read-only state |
pm-input--full-width | Full-width layout |