Components
40 components across 6 groups. Every preview below is the real component.
Actions
Trigger an action — submit a form, open a dialog, confirm a destructive change.
A square, icon-only button with the tooltip and accessible name built in.
A pressed/unpressed control, and the segmented group built from it.
Forms
A single-line text field, in the two densities the app uses.
An input with a search icon and a clear affordance, for filtering a list.
A multi-line text field for descriptions, snippets and free-form copy.
Choose one option from a short, known list.
An independent on/off choice, on its own or in a set.
Choose exactly one option from a set that is worth showing in full.
Turn a setting on or off, applied immediately rather than on save.
Pick a number from a continuous range where the rough value matters more than the exact one.
The text that names a field and puts the browser's click target on it.
The style panel's label-beside-field row, so dense forms line up without bespoke grids.
Containers
A bordered surface grouping related content, with optional header and footer.
Custom domain
Point your own domain at this project.
No domain is connected yet.
The builder's flush surface for a docked column of controls.
The title row at the top of a builder panel, with room for actions.
Collapse long content into labelled sections the reader opens on demand.
A scrolling region with a styled scrollbar that matches the app on every platform.
Overlays
A focused, modal task lifted out of the page.
Confirm something destructive or irreversible before it happens.
A floating surface anchored to a trigger — a dense menu, a padded box, or a full header/body/footer form.
A list of actions launched from a button, with separators, shortcuts and checkable items.
A short label on hover or focus, naming a control that shows only an icon.
The ⌘K palette — a searchable, keyboard-driven list of everything you can jump to.
Data display
Rows and columns of comparable data, with a sticky header row.
| Page | Status | Updated |
|---|---|---|
| Home | Published | 2 hours ago |
| About | Draft | Yesterday |
| Pricing | Scheduled | Last week |
A small status chip — published, draft, scheduled, failed.
An inline message about the surface it sits on, not about the whole app.
Draft not published
Publish failed
What to show when a list has nothing in it yet, and what to do about it.
No pages yet
Add a page to start building.
No results
Try a different search.
A person or workspace, as an image or initials.
A placeholder in the shape of the content that is still loading.
How far along a determinate task is.
A colour value as a chip, with a checkerboard behind anything translucent.
A keyboard key, rendered as the chip used in tooltips and the command palette.
⌘KEscA rule separating groups of content, horizontally or vertically.
The account row at the foot of a sidebar: avatar, name, secondary line.