Components

Foundations

Layout

Typography

Actions

Data Display

Media

Forms

Calendar

An inline month grid for picking a date, with no popup. Each day is a button, and the chosen day shows in color.

Cascader

A picker that shows nested levels, such as prefecture then city, as side-by-side columns. Choosing an option opens its children in the next column, and the value is the path you land on.

Checkbox

A labeled checkbox that toggles on and off.

Color Picker

A grid of swatches for choosing a color. Click a swatch to pick it, and add the browser’s native color input when you need it.

Combobox

A text field that filters a list as you type. Up and Down move through matches; Enter confirms.

Date Picker

A field for picking a date from a calendar. It pairs a text field you can type into with a calendar you can move through by keyboard.

Date Range Picker

Two linked DatePickers for a start and end date. Each one limits the other’s range.

Date Time Picker

A date-and-time picker that pairs a month calendar with hour and minute steppers to choose a Temporal.PlainDateTime. It works from the keyboard and clamps the result to any min and max bounds.

Duration Input

A duration input backed by Temporal.Duration. It uses number fields with steppers for hours and minutes, plus an optional seconds field, and drops into a form as is.

Fieldset

A group for related form controls built on a native fieldset and legend. The disabled prop turns off every control inside, and an optional description sits under the legend.

File Upload

A drop zone that takes files by drag and drop, with a list of the ones you picked. You can open the zone from the keyboard too.

Floating Label

A label that slides up when you focus or type in the field. Wrap one Input, Select, or Textarea with it.

Form Field

A wrapper that ties a label, help text, and error to a field. It wires up the links so screen readers read the right description.

Input

A single-line text field. Inside a FormField, it picks up the label and description links on its own.

Input Group

A field with units, symbols, or buttons attached before or after it.

Month Picker

A month picker that chooses a Temporal.PlainYearMonth from a twelve-month grid. Arrow keys move the focus, Enter selects, and the prev and next buttons step the year.

Number Input

A number field with step buttons. Up and Down keys change the value too.

Pin Input

A field for entering a code or one-time password, one character per box. Typing moves to the next box.

Radio

One option in a radio group. Options share a name to form the group.

Range

A slider you drag to pick a value. Inside a FormField, it picks up the label link on its own.

Range (Dual)

A slider with two thumbs for a range, such as a price band.

Rating

A star rating. By default you set it with arrow keys; readOnly turns it into a display.

Segmented Control

A toggle that picks one option from a row. Arrow keys move between options.

Select

A native dropdown select. Use it when the options are fixed; for type-to-filter, use Combobox.

Switch

A switch you slide on and off. It works by keyboard, and screen readers announce its state.

Tag Input

A field for entering several tags, such as emails or keywords. Enter or a separator adds one; Backspace in an empty field removes the last.

Textarea

A multi-line text field. Inside a FormField, it picks up the label and description links on its own.

Time Picker

A field for entering a time by hour and minute. Add an AM/PM toggle when you need one.

Time Zone Select

A select for IANA time zones. The options come from Intl.supportedValuesOf with a small static fallback, and the value is the id string that Temporal consumes.

Transfer

Two lists you move items between. Each row is a labeled checkbox.

Tree Select

A select that opens a tree panel to pick a node from a hierarchy. Arrow keys move through the tree, Enter selects, and Escape closes the panel.

Navigation

Disclosure

Feedback

Overlay

Alert Dialog

A confirmation dialog for actions you cannot undo. It carries role="alertdialog", keeps focus inside, and stays open on a backdrop click so the user picks confirm or cancel. Escape closes it.

Command Palette

A searchable command list that opens with ⌘K. Type to filter, move with Up and Down, and run with Enter.

ContextMenu

A menu that opens at the pointer on right-click, and from the keyboard with Shift+F10 or the menu key. Arrow keys move between items, Enter activates, and Escape closes it.

Drawer

A panel against a screen edge, in three variants. temporary (the default) opens over a backdrop and traps keyboard focus inside, like a Modal. persistent sits beside the page and pushes content aside as it opens. permanent stays open, like a desktop sidebar. Many layouts use permanent on wide screens and temporary on narrow ones.

Dropdown

A menu tied to a trigger button. For a standalone menu with no trigger, use Menu.

HoverCard

A card that opens when its trigger is hovered or focused. It shows supplementary content after a short delay and closes on blur or Escape, so the keyboard reaches it too.

Modal

A dialog that opens over a backdrop. While open, it keeps keyboard focus inside so you stay oriented.

Offcanvas

A panel that slides in from a screen edge. Its keyboard and screen-reader handling matches Modal.

Popover

A bubble panel that opens on click. It holds a title and any content, and closes on Escape or an outside click without blocking the page.

Tooltip

A small label that appears on hover or focus. Screen readers tie it to the element it describes.