Four empty states with illustrations drawn from shapes — an archive drawer, a searching lens, an inbox-zero tray and a blank kanban board — each looping gently beside one clear action.
Archive drawer
archive-drawer.tsxA cabinet drawer slides out, empty folder tabs peek up, and it rolls shut again.
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | — | Heading under the illustration. |
description | string | — | One or two sentences of guidance. |
secondaryLabel / onSecondary | string / () => void | — | Secondary action. Pass an empty label to hide it. |
actionLabel / onAction | string / () => void | — | Primary action. Pass an empty label to hide it. |
className | string | — | Extra classes on the section. |
Search lens
search-lens.tsxA lens drifts over skeleton results, flashes a no-match mark at each stop, and offers suggestion chips.
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | — | Heading under the illustration. |
description | string | — | One or two sentences of guidance. |
query | string | — | Quoted in the default title. |
suggestions / onSuggestion | string[] / (term: string) => void | — | Alternative searches as chips. |
actionLabel / onAction | string / () => void | — | Primary action. Pass an empty label to hide it. |
className | string | — | Extra classes on the section. |
Inbox zero
inbox-zero.tsxThe last letter drops into an empty tray, a check badge pops and sparkles twinkle.
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | — | Heading under the illustration. |
description | string | — | One or two sentences of guidance. |
secondaryLabel / onSecondary | string / () => void | — | Secondary action. Pass an empty label to hide it. |
actionLabel / onAction | string / () => void | — | Primary action. Pass an empty label to hide it. |
className | string | — | Extra classes on the section. |
Blank board
blank-board.tsxA cursor drags a ghost card across empty kanban columns over pulsing placeholders.
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | — | Heading under the illustration. |
description | string | — | One or two sentences of guidance. |
columns | [string, string, string] | ["To do", "In progress", "Done"] | Column names in the illustration. |
secondaryLabel / onSecondary | string / () => void | — | Secondary action. Pass an empty label to hide it. |
actionLabel / onAction | string / () => void | — | Primary action. Pass an empty label to hide it. |
className | string | — | Extra classes on the section. |
Install the whole set
Installs every empty states variant at once. Each section above has its own command for a single variant.
Pro installs use your private registry token. Add the @geturui-pro registry once — setup guide. The command works after you get Pro.
Accessibility
- Each state is a labelled section; the illustration is aria-hidden so only the heading, copy and actions are read.
- Actions are real buttons with visible focus; suggestion chips are buttons too.
- With reduced motion the illustrations render a single still frame.