All components

83 components. 49 render in a Server Component with no client JavaScript; the other 34 declare 'use client' because they genuinely need state, effects or event handlers.

Layout (9)

Reserves space at a fixed ratio so media cannot cause layout shift.

Compound component: `BentoGrid` and `BentoGrid.Item`.

Box

server

The lowest-level layout primitive: a styled `div` you can retag.

Container

server

Centres content and caps its width, with a responsive gutter.

Divider

server

A separator.

Grid

server

Responsive grid at zero runtime cost. Responsive `cols` become inline custom properties that the static stylesheet reads inside fixed media queries — no style computation, no CSS generation, SSR-identical.

A styled overflow container.

Section

server

Compound component: `Section` and `Section.Header`.

Stack

server

Flex container with a token-based gap. `Flex` is the horizontal alias.

Typography (5)

Code

server

Monospaced code. Inline by default; `block` wraps it in a scrollable `pre`.

Heading

server

A heading, `h1` through `h6`.

Kbd

server

A keyboard key, for documenting shortcuts.

Prose

server

Compound component: `Prose` and `Prose.Link`.

Text

server

Body text.

Actions (4)

Button

server

A button.

Groups related buttons. `attached` joins them into a single segmented control.

Copy to clipboard, with a transient confirmation.

A square button holding a single icon.

Forms (17)

Calendar

client

A month grid, keyboard-navigable per the WAI-ARIA Authoring Practices grid pattern.

Checkbox

server

A checkbox built on the native input.

Combobox

client

A filterable select, following the ARIA combobox pattern.

A text input with a `Calendar` in a popup.

Field

client

Wires a label, hint and error message to a form control.

A dropzone over a real `<input type="file">`.

Input

server

A text input. Native by design: no wrapper element, so `type`, `pattern`, `autoComplete`, form validation and the browser's own UI all keep working.

Label

server

A form label.

Otp input

client

A one-time-code field: one box per character, one string of state.

A password field with a reveal toggle and an optional strength meter.

A group of radios.

Rating

client

A star rating that is a real radio group.

Select

server

A native `<select>`.

Slider

client

A slider built on `<input type="range">`.

Switch

server

An on/off toggle.

Tag input

client

A list of tags with a text field on the end.

Textarea

server

A multi-line text input.

Overlays (9)

Accordion

client

Accordion — `Accordion`, `Accordion.Item`, `Accordion.Trigger`, `Accordion.Content`.

Drawer

client

A modal dialog attached to an edge of the viewport.

A button that opens a list of commands.

Modal

client

A centred modal dialog.

Popover

client

A click-triggered non-modal dialog anchored to its trigger.

Portal

client

Renders its children somewhere else in the DOM — the escape hatch every overlay needs to get out from under `overflow: hidden` and a parent's stacking context.

Tabs

client

Tabs — `Tabs`, `Tabs.List`, `Tabs.Tab`, `Tabs.Panels`, `Tabs.Panel`.

Toast

server

One notification. `ToastProvider` renders these for you, but it is exported so a static toast can be dropped into a docs page or a form's inline slot.

Tooltip

client

A description that appears on hover and on focus.

Navigation (5)

Compound component: `Breadcrumb`, `Breadcrumb.Item`, `Breadcrumb.Separator`.

The ⌘K palette: a search box over a flat list of commands.

Navbar

client

Compound component: `Navbar`, `Navbar.Brand`, `Navbar.Links`, `Navbar.Link`, `Navbar.Actions`, `Navbar.Toggle`.

Page-by-page navigation.

Sidebar

client

Compound component: `Sidebar`, `Sidebar.Section`, `Sidebar.Item`, `Sidebar.Toggle`.

Data display (7)

Avatar

server

Compound component: `Avatar` and `Avatar.Group`.

Badge

server

A small status or category label.

Card

server

Compound component: `Card`, `Card.Header`, `Card.Body`, `Card.Footer`.

A table with sorting, search, pagination and row selection built in.

Stepper

client

Where the user is in a multi-step flow.

Table

server

Compound component: `Table`, `Table.Head`, `Table.Body`, `Table.Foot`, `Table.Row`, `Table.Cell`, `Table.HeaderCell`, `Table.Caption`.

Timeline

server

Compound component: `Timeline` and `Timeline.Item`.

AI chat (5)

A fenced code block with a copy button, built on `Code`.

The composer: an auto-growing textarea, an attachment slot, and a send button.

One turn in a conversation.

Compound component: `ChatThread`, `ChatThread.Message`, `ChatThread.Empty`.

Three animated dots meaning "a reply is coming".

Feedback (5)

Alert

server

A static, inline message. `danger` and `warning` get `role="alert"` so screen readers interrupt for them; `info` and `success` use `role="status"`, which waits for a pause instead of talking over the user.

The "nothing here yet" block: a glyph, a line explaining what is missing, and the action that fixes it.

Progress

server

A determinate or indeterminate progress bar.

Skeleton

server

A loading placeholder. Hidden from assistive tech — the live region announces state.

Spinner

server

An indeterminate loading indicator. Inherits `currentColor`.

Sections (9)

Cta

server

The closing ask.

Faq

server

A frequently-asked-questions list built on native `<details>`/`<summary>`.

A responsive grid of icon + title + description cells.

Footer

server

The site footer.

Hero

server

The top-of-page pitch. Renders from props alone; pass `children` to take the inner layout over completely.

A row of customer or partner logos.

Pricing

server

A plan comparison table built out of `Card`s.

Stats

server

A row of headline figures.

Customer quotes.

Media & time (6)

A number that counts up to its value the first time it is scrolled into view.

Carousel

server

A carousel built on CSS scroll-snap.

Clock

client

The current time, ticking, via `Intl.DateTimeFormat` — no date library.

Countdown

client

A countdown to a fixed moment.

Marquee

server

An infinite ticker: the content, then an `aria-hidden` copy of it, translated by exactly half the track so the seam is invisible.

"3 minutes ago", via `Intl.RelativeTimeFormat` — no date library.

Theming (2)

Owns the theme: resolves it, applies it to `<html>`, persists it, and follows the OS.

The theme switch every consumer asks for.