Input
Input is the standard control for short free-text values, search fields, and compact form data.
Purpose
Input is the standard control for short free-text values, search fields, and compact form data.
Text input states
Installation
With the Siteplane registry alias configured, add the component and import the installed source from your app.
CLI
pnpm dlx shadcn@4.16.1 add @siteplane/inputImport
import { Input } from "@/components/ui/input";Need the machine-readable source metadata? View registry JSON.
Usage
Use Input for single-line text entry. Put it inside Field when it needs a visible label. Two functional special cases without a visual example: size also accepts a number for the native character-width attribute, and type="hidden" renders a bare input without the control shell.
import { Input } from "@/components/ui/input";
export function Example() {
return <Input aria-label="Workspace name" placeholder="Workspace name" />;
}Examples
Sizes, states, native input types, the soft variant and Field composition are props and compositions of the same primitive.
Sizes
Disabled and invalid states
Search and email types
File input
Soft variant
With Field
With input group
Icons, hints and shortcuts compose around the input. See the Input Group docs for the full API.
With button
Unstyled
unstyled drops the form control shell so a custom surface can provide its own.
API Reference
The reference lists the source-owned exports and props that are easy to miss in visual examples. Inherited Base UI props remain available unless the wrapper narrows them.
- Use native input props for value, type, autocomplete, required, disabled, and form participation.
variant="soft"provides the borderless search and filter surface.- Visual
sizeaccepts Siteplane control sizes and otherwise inheritsSiteplaneUIProvider controlSize; the numeric native HTMLsizeattribute remains a width hint. size="xl"uses the customer-facing single-line field format: 56px outer height, 16px/24px input text and 16px horizontal inset including the border. Pair it with a surroundingSiteplaneUIProvider radius="sm"for the global 8px main corner; size itself never overrides radius.- Use Input Group for tightly connected icons, units, shortcuts, or actions.
Motion
Component motion uses the shared Siteplane motion contract. See the global motion guide for provider setup, tokens and reduced-motion behavior.
- Input does not translate or scale.
- Focus remains visible through the native border, surface, ring, and shadow contract.
- Disabled and invalid state do not change dimensions.
Accessibility
- Use a visible label in product forms; placeholder text is supporting context, not a label.
- Connect invalid state to the Input and render a visible FieldError.
- Keep browser autocomplete and input type appropriate to the value.
- File inputs remain the Input primitive with the native file input behavior.
Implementation Guidance
- Use Input for free text and Select for a closed option set.
- Do not use placeholder-only labels.
- Preserve native focus, disabled, invalid, and form semantics.