Skip to content
TrademarkTrademark
Docs
Components

EmptyState

Updated: November 6, 2026
View on GitHub

An empty page is the first thing a new user sees, so it should say what belongs there and offer the one step that puts it there. EmptyState does that in one tag, at three sizes, with a Mascot, a Cube Emote or an icon above it.

Sizes

l is for a whole page with nothing in it yet, m for a card or panel, and s for inside a table, list, select or chart. DataTable's own empty and no-results states use s.

Writing it

  • The title says what is missing, plainly: "No clients yet", not "Nothing to see here".
  • The description is one sentence on what fills the space, or what happens next.
  • One primary action. When the page header has the same button, hide it there while the page is empty, so the step shows once.
  • A Mascot reads best with surface="flat". A Cube Emote from once-ui.com/emotes goes in visual the same way.

API reference

Type
Default
visual
What sits above the title: a Mascot, a Cube Emote, an illustration. Wins over icon.
ReactNode—
icon
A plain icon above the title, when there is no visual.
IconName—
titlerequired
What is empty, said plainly.
ReactNode—
description
One sentence on what fills it, or what to do next.
ReactNode—
action
The one next step, usually the page's primary button.
ReactNode—
secondaryAction
A second, quieter step.
ReactNode—
size
s inside a table or list, m in a card, l for a whole page.
lms
m
titleAs
The title's element.
h1h2h3h4h5h6
h2
…and every FlexProps propinherited—
Edit this page on GitHub