16 : 9
Layout
16 pieces
One dimension, two dimensions, or something else?
One dimension (a row or a column)
Two dimensions (a grid)
Compare
| Component | Axis | Use for |
|---|---|---|
| Box | — | zero-opinion wrapper — the sanctioned naked-element escape hatch |
| Flex | 1D | explicit flexbox (direction / justify / align / wrap) |
| Stack | 1D | gapped stack (HStack / VStack variants) |
| Group | 1D | horizontal cluster with wrap / position |
| Center | — | center a single child |
| Grid | 2D | full grid (spans, start, order) |
| SimpleGrid | 2D | equal columns, responsive cols |
| Container | page | max-width + inset wrapper |
| Section | page | vertical page rhythm |
Rules of thumb
- All layout primitives take responsive props (gap={{ base, md, … }}) and are RSC-safe — no "use client".
- Box vs Container: Container injects mx-auto + a max-width + the page gutter; Box is the neutral one (zero classes of its own).
Zero-opinion wrapper
object-cover
Sidebar
Canvas
Materials
Vertical rhythm between grouped blocks.
Porcelain & Stone
Rectified porcelain and honed stone, filtered to in-stock finishes.
Overview
Specifications
Availability
Typography
5 pieces
Actions
6 pieces
Forms
29 pieces
Free-text entry, or choosing from options?
Free-text entry
Choosing from options
What kind of chooser?
Compare
| Component | Kind | Reach for it when |
|---|---|---|
| Input | text | a plain single-line value |
| InputGroup | text | addons / icons / buttons wrap the field |
| SearchInput | text | search with icon + clear + shortcut |
| Combobox | choice | searchable / filterable, big or async lists |
| Select | choice | styled dropdown, grouped options |
| NativeSelect | choice | native select semantics / simplest case |
| SegmentedControl | choice | always-one-selected visible mode switcher |
Rules of thumb
- For discrete controls reach for Checkbox / Radio / RadioGroup / Switch / Toggle / Slider / SegmentedControl instead.
- Wrap any labelled control in Field to wire up its label, description and error.
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Get an alert when this material is back in stock.
Terrazzo — Veneto
Marble — Carrara
Available from
Delivery year
Navigation
12 pieces
Compare the terracotta finishes, then read the care guide before ordering samples.
Glazed terracotta with a matte, hand-finished surface.
200 × 200 mm · 10 mm thick · PEI III wear rating.
Three verified suppliers across the EU and UK.
Overlays
13 pieces
Is it triggered by hover, or by click / programmatically?
Hover
How much content does it carry?
Click / programmatic
How does it sit on the page?
A centered modal that blocks the page until dismissed
Slides in from an edge of the screen
Compare
| Component | Trigger | Blocks page | Best for |
|---|---|---|---|
| Tooltip | hover / focus | no | one-line hint on an icon / control |
| HoverCard | hover | no | rich preview on hover |
| Popover | click | no | anchored floating panel, dismiss on outside |
| Dialog | click / prog | yes | modal form / details with header + footer |
| AlertDialog | click / prog | yes | confirmations, warnings, destructive actions |
| MorphDialog | click | yes | modal that morphs from its trigger (shared-layout) |
| Sheet | click / prog | yes | edge panel for a focused form / settings |
| Drawer | click / prog | yes | bottom sheet with gesture / drag dismissal |
| Sidepanel | click / prog | either | side panel with nesting + modal / non-modal modes |
Rules of thumb
- Destructive confirmations should always be an AlertDialog with a destructive action — never a plain Dialog.
Remove this material?
Terrazzo Bianco will be taken off your Coastal Kitchen board. This can't be undone.
Add to palette
Choose a palette to file Terrazzo Bianco under, or start a new one.
Coastal Kitchen · 12 materials
Filter materials
Narrow the catalog by finish and origin.
Terrazzo Bianco
Fibonacci Stone
Recycled marble aggregate in a warm white matrix — matte honed finish.
A cut sample of Terrazzo Bianco ships to your studio in 3–5 days.
Finish
Applies to every swatch in this palette.
Terrazzo Bianco
Material details
Specification, finish, and availability for the selected swatch.
Origin · Italy
Palette
Coastal Kitchen
12 materials · updated today
Feedback
13 pieces
Is it a transient notification (appears, then auto-dismisses)?
No — persistent and inline
What is it, exactly?
A short label chip
Does it do anything when clicked?
Compare
| Component | Text? | Interactive | Use for |
|---|---|---|---|
| Dot | no | no | status / presence marker |
| Badge | short | no | display-only status / category / count |
| Tag | short | yes | selectable / removable / filter chip (dismiss, click) |
| Pill | — | — | internal primitive behind Badge / Tag — don't use directly |
| Alert | block | no | inline important notice (default / destructive) |
| Banner | block | optional | contextual message with actions / progress / dismiss |
| Sonner | block | — | transient toast notifications |
Rules of thumb
- Badge vs Tag: if the chip does nothing when clicked, it's a Badge. The moment it needs a dismiss ×, a click handler, or selection state, it's a Tag.
- Pill is the internal primitive behind Badge and Tag — never reach for it directly.
- Banner is documented above but is not yet a shipped unit; use Alert for an inline notice until it lands.
What are you loading?
An in-place placeholder that mirrors the final layout
Rules of thumb
- Prefer Skeleton (a layout-stable placeholder) over a spinner for content areas.
- Reserve LoadingState for genuinely blocking, full-region loads; reserve Spinner for small inline / action loading.
What's the situation?
Compare
| Situation | Component |
|---|---|
| No data / nothing to show | Empty (with EmptyActions) |
| Something failed + retry | ErrorState — composes Empty |
| Full-page error boundary | ErrorState / boundary |
Rules of thumb
- ErrorState now ships and composes Empty, so you no longer need to hand-roll a retry Empty for failures.
Data
25 pieces
Do you need sorting / filtering / column visibility / pagination / row selection?
Compare
| Component | Use for |
|---|---|
| Table | static / semantic tables — full control, no data-grid machinery |
| DataGrid | interactive grids: sort, filter, paginate, select, column config |
Rules of thumb
- Reach for DataGrid only when you need its machinery — a static Table is lighter and gives you full markup control.
Finish options
Honed
Polished
Brushed
| Material | Substrate | Finish |
|---|---|---|
| Carrara Marble | Stone | Honed |
| White Oak Plank | Wood | Matte |
| Basalt Slab | Stone | Polished |
| Material | Substrate | Finish | |
|---|---|---|---|
| Carrara Marble | Stone | Honed | |
| White Oak Plank | Wood | Matte | |
| Basalt Slab | Stone | Polished |
- Material
- Natural marble
- Finish
- Polished
- Origin
- Carrara, Italy
- Lead time
- 3–5 business days
- Technical Specification.pdf2.4mb
- Care & Maintenance.pdf1.2mb
- Warranty.pdf340kb
In stock
Low stock
Discontinued
Stone · Honed
| Material | Substrate | Finish | Price |
|---|---|---|---|
| Carrara Marble | Stone | Honed | $18.50 |
| White Oak Plank | Wood | Matte | $9.20 |
| Brass Sheet | Metal | Brushed | $31.75 |
| Linen Weave | Textile | Woven | $6.40 |
Color
8 pieces
Motion
14 pieces
materials indexed
New arrival
ReducedMotionProvider
Calacatta Gold marble
Reclaimed oak plank
Brushed stainless steel
Terracotta hex tile
Sage linen weave
Board-formed concrete
Honed basalt
Cane webbing
Ready to specify
Agent UX
7 pieces
What kind of signal is it?
Rules of thumb
- ThinkingOrb = state; DotMatrixLoader = intent; ThinkingLoader = narrated progress.
- Compose ThinkingLoader with an orb or glyph — don't invent a fourth loader.
Composites
11 pieces
Materials
128 in library
What would you like to do?
Featured collection
Handcrafted tiles

