Launch prototype

Components

Input

Single-line text field built on React Aria for full accessibility. Sizes and demo sections are driven from config/design-system.config.ts.

Component Playground

Live instance - the controls read their options from the same config that drives the Variants section below.

This is a hint text to help user.
md

Controls

Size

Label

Placeholder

Hint

Default

Label, placeholder, and hint text - the anatomy of a complete input field.

Default

This is a hint text to help user.

States

All states: default, focused (click into it), disabled, error with hint text, and required.

Default / disabled / error / required

Hint text.
Hint text.
This is an error message.
Hint text.

With icons

Pass any @untitledui/icons component as the icon prop to add a leading icon.

Leading icon

Password

Pass type="password" and a built-in show/hide toggle appears automatically - no extra prop needed.

Password

Must be at least 8 characters.

With tooltip

Use the tooltip prop to show a help tooltip on the trailing icon.

Tooltip

With shortcut

Use the shortcut prop to display a keyboard shortcut hint inside the field.

Shortcut

Sizes

Size affects padding, font-size, and icon sizing.

Small / Medium / Large

size='sm'
size='md'
size='lg'

Input group

Attach prefix text or addon elements (dropdowns, buttons) to create compound inputs.

Prefix / leading addon

https://

Include the full URL.
@

Date input

A segmented date field - each part (day/month/year) is independently focusable and typeable, built on React Aria's DateField.

Date field

Date of birth
mmddyyyy
DD / MM / YYYY

Number input

Increment/decrement controls in two layouts: stacked vertical (default) or split horizontal.

Vertical / horizontal

orientation='vertical' - default
orientation='horizontal'

Payment input

Auto-formats digits into groups of four and swaps the leading icon to match the detected card network (Visa, Mastercard, Amex, Discover, UnionPay).

Card number

We accept all major cards.

Tag input

Type and press Enter to add a tag; Backspace on an empty field to focus the last tag. Two layouts: tags inline with the field, or in a separate row beneath it.

Inline / outer

Design
Engineering
Press Enter to add.
Design
Engineering

File upload

Combines an InputGroup read-only field with a trailing Upload button that opens the native file picker.

File picker

PDF, DOC up to 10MB.

PIN input

One-time-passcode style entry - each digit is its own slot, auto-advancing focus as the user types.

4-digit code

0
0
0
0
Enter the 4-digit code sent to your phone.

API

PropTypeDefault
labelstring-
hintReactNode-
placeholderstring-
size"sm" | "md" | "lg""md"
iconComponentType-
tooltipstring-
shortcutstring | booleanfalse
isInvalidbooleanfalse
isDisabledbooleanfalse
isRequiredbooleanfalse
hideRequiredIndicatorbooleanfalse
onClear() => void-
clearLabelstring"Clear"
typeHTMLInputTypeAttribute"text"

Token anatomy

The visual decisions Untitled UI encodes into the input. All values come from DEW tokens in globals.css.

StateRing tokenValue
Defaultring-primarygray-300 (#D2D0CE)
Focusedring-brandbrand-500 (#2A667C)
Errorring-error_subtleerror-300 (#FDA29B)
Error + focusedring-errorerror-500 (#F04438)
Disabledring-primary + opacity-50same, dimmed

Usage

import { Input } from "@/components/base/input/input";

<Input
  label="Email address"
  placeholder="olivia@untitledui.com"
  hint="This is a hint text to help user."
/>

Figma

No linked Figma file yet - this component was pulled in via the Untitled UI CLI, not designed in Figma first.