Empty states

Stands in for content that is not there: one EmptyState export with eleven parts and six kinds of art. Three sizes, no states or breakpoints of its own.

Demo

Pick a composition, size, and pattern, then copy the result. The composition is children — the snippet is the assembly.

No projects found

Your search “Landing page design” did not match any projects. Please try again.

Composition
size
pattern
import { Plus } from "@untitledui/icons"; import { Button } from "@/components/base/buttons/button"; import { EmptyState } from "@/components/application/empty-state/empty-state"; <EmptyState size="sm"> <EmptyState.Header> <EmptyState.FeaturedIcon color="gray" /> </EmptyState.Header> <EmptyState.Content> <EmptyState.Title>No projects found</EmptyState.Title> <EmptyState.Description> Your search “Landing page design” did not match any projects. Please try again. </EmptyState.Description> </EmptyState.Content> <EmptyState.Footer> <Button size="sm" color="secondary">Clear search</Button> <Button size="sm" iconLeading={Plus}>New project</Button> </EmptyState.Footer> </EmptyState>

One root, eleven parts

EmptyState owns the size and hands it to every part through context. Header holds the art and reads the types of its direct children to pick its spacing, Content holds the Title and Description, and Footer is a bare row for your buttons. The copied snippet carries all of it, because no single element reproduces what the preview shows.

Contextual demo

An empty state stands in for something, so the thing it replaces is most of the argument. Three of them in real screens.

The command menus are a consumer

Every command menu in the kit renders this family when a search finds nothing: size="sm", a gray featured icon, no pattern, and className="overflow-hidden p-6 pb-10" on the root. The command menus page shows it live inside a real menu.

The family

One export, eleven parts, one file. Six of the parts are art; the other five are the frame, the copy, and the buttons.

The components in this family, with their descriptions and import paths
ComponentDescriptionImport from
EmptyStateThe root: a centered column capped at 512px, and the size every part below reads through context. A section element since 2026-08-23.@/​components/​application/​empty-state/​empty-state
EmptyState.HeaderThe art slot. Reads the types of its direct children to pick its spacing, and draws an optional background pattern behind them.@/​components/​application/​empty-state/​empty-state
EmptyState.FeaturedIconThe foundations FeaturedIcon with the sheet’s defaults seated: gray, modern, a search glyph, sized from the root.@/​components/​application/​empty-state/​empty-state
EmptyState.IllustrationOne of five drawings, cloud, box, documents, credit card, or the DrumKit-authored folder, sized from the root. The first four carry a blurred icon disc; the folder draws none.@/​components/​application/​empty-state/​empty-state
EmptyState.FileTypeIconA 40px file icon on a 104px gradient disc, with the sheet’s circle pattern behind it.@/​components/​application/​empty-state/​empty-state
EmptyState.ContentThe text block, capped at 352px: Title then Description, with the gap and the margin below set by the size. A div since 2026-08-23.@/​components/​application/​empty-state/​empty-state
EmptyState.TitleThe heading, an h1 at 16, 18, or 20px semibold. There is no as prop.@/​components/​application/​empty-state/​empty-state
EmptyState.DescriptionThe body copy, centered, at 14px, or 16px at lg.@/​components/​application/​empty-state/​empty-state
EmptyState.FooterA bare flex row with a 12px gap. The buttons, and their sizes, are yours.@/​components/​application/​empty-state/​empty-state
EmptyState.AvatarRadiusFive concentric rings in a 480px box behind the header, with up to nine avatars on fixed slots. Absolutely positioned, so the header makes room with 64px above and below.@/​components/​application/​empty-state/​empty-state
EmptyState.AvatarRowFour avatars each side of whatever you put between them, usually the FeaturedIcon, shrinking away from the center.@/​components/​application/​empty-state/​empty-state
EmptyState.AvatarGridTwo marquee rows of tiles that stand in for the header art entirely: the sheet’s Integrations type has no featured icon.@/​components/​application/​empty-state/​empty-state

Built from

Six pieces make up the family; three have their own docs page.

Component
Where it’s used here
FeaturedIconEmptyState.FeaturedIcon wraps the foundations component with the sheet’s defaults seated: color gray, theme modern, SearchLg, and a size read from the root, lg at sm and md and xl at lg.
FileIconEmptyState.FileTypeIcon draws one from @untitledui/file-icons at 40px on its gradient disc; type and theme pass through as the icon’s type and variant.
@untitledui/iconsSearchLg, the default glyph in the featured icon and on the cloud drawing; UploadCloud02 on box and documents; AlertCircle on the credit card.

The variant space

All eight of the sheet’s icon types plus Illustration’s four styles: eleven live compositions, all at size sm.

No projects found

Your search “Landing page design” did not match any projects. Please try again.

Featured icon: the default, a search glyph on a modern featured icon

No results found

Your search “Landing page design” did not match any projects. Please try again.

Illustration, cloud: type="cloud"

No files uploaded

Upload your first file to get started. PNG, JPG, or PDF up to 10 MB.

Illustration, box: type="box"

No documents yet

Documents you create or import will show up here, newest first.

Illustration, documents: type="documents"

No payment method

Add a card to keep your workspace active when the trial ends on 30 September.

Illustration, credit card: type="credit-card"

No files found

Your search did not match any files. Try a different name, or upload a new one.

File type icon: a folder on its gradient disc, with pattern="circle" as the sheet draws it

No projects found

Your search “Landing page design” did not match any projects. Please try again.

Folder icon: the DrumKit-authored 54×48 glyph, with pattern="grid" nearest the sheet's 640px one

No projects found

Your search “Landing page design” did not match any projects. Please try again.

Folder icon transparent: the DrumKit-authored folder drawing, Illustration type="folder"

No users found

Your search did not match any users.

Users radius: FeaturedIcon size="md" beside AvatarRadius, nine avatars on five rings

Invite your first user

Add your team members and external users.

Users row: AvatarRow wrapping the FeaturedIcon with icon={UsersPlus}, four avatars each side

No integrations found

We couldn’t find any apps or commands. Please try again or browse all apps.

Integrations: AvatarGrid alone, two marquee rows and no featured icon

The two folder types, closed 2026-08-28

Both were recorded as Figma-only until this read, and both are drawn by DrumKit-authored art now, since @untitledui/file-icons has no counterpart: its three folder variants all draw a document-shaped icon. Folder icon is FolderIcon, the sheet’s bare 54×48 glyph, constant across all three sizes, with pattern="grid" behind it — the kit’s grid draws 480px at a 48px pitch, lines only, where the sheet’s draws 640 at 42.7 with scattered fills, which stays recorded on the Code tab. Folder icon transparent is the family’s authored illustration, <EmptyState.Illustration type="folder" />: the sheet’s own flattened export at 80/96/112, minus its 10% noise overlay and backdrop blur, with the header’s gap pulled to the sheet’s 12/16/20 by a className the cells above pass.

The featured icon follows the root, not the composition

Read from the source: EmptyState.FeaturedIcon is 48px at an sm or md root and 56px at lg, wherever it sits. The sheet draws it at 40/48/48 inside Users radius and 48/56/56 inside Users row, and the kit has no composition axis, so the two cells above pass size where the sheet and the default differ: size="md" inside the radius at sm, size="lg" inside it at lg, and size="xl" inside the row at md. Nothing to pass at the other three. The glyph moves once too, read 2026-08-28: the sheet draws a users-plus inside Users row where the wrapper defaults SearchLg, so that cell passes icon={UsersPlus}; everywhere else the search default is the sheet’s.

The spacing changes with the art

Read from the source, since 2026-08-23: the header keeps 16px below a bare icon at sm and 20px at md and lg, 24px below an lg illustration, 24px at sm and md and 32px at lg below an AvatarRow or an AvatarGrid, and with an AvatarRadius present it drops its margin and takes 64px of padding above and below, so the rings center on the icon instead of overlapping the copy. The header detects the art by reading its direct children’s types, so the art has to be a direct child.

Sizes

Three sizes on the root, and nothing else takes one — everything follows it through context. The buttons are yours.

No projects found

Your search “Landing page design” did not match any projects. Please try again.

size="sm": 16px title, 48px icon, 36px buttons

No projects found

Your search “Landing page design” did not match any projects. Please try again.

size="md": 18px title, 48px icon, 40px buttons

No projects found

Your search “Landing page design” did not match any projects. Please try again.

size="lg": 20px title, 56px icon, 44px buttons

No results found

Your search “Landing page design” did not match any projects. Please try again.

size="lg" with the cloud illustration: the 220×160 drawing, a 56px icon disc, and 24px to the title

Size moves the type, the icon, and the gaps together

Read from the source and resolved on the theme scale: the title is 16/24 at sm, 18/28 at md, and 20/30 at lg, semibold; the description 14/20 at sm and md and 16/24 at lg; the featured icon 48, 48, then 56px; the content block 24px above the buttons at sm and 32px at md and lg, with 4px then 8px between title and description. The buttons in every cell are the kit’s Button at the matching size: 36, 40, and 44px tall. All of it matched the sheet in the 2026-08-23 parity read.

No states, and no breakpoints

The sheet has no State axis and no breakpoint frames, and neither does the kit: nothing in the family is interactive, so the only states on this page belong to the buttons, and the same state renders at every width. The root is w-full up to 512px and the copy wraps at 352px; a container narrower than that narrows both.

Background patterns

Four drawings behind the art, centered and hidden from assistive tech. Off by default since 2026-08-23.

No projects found

Your search “Landing page design” did not match any projects. Please try again.

pattern="circle": the sheet’s, 480px at the default patternSize="md"

No projects found

Your search “Landing page design” did not match any projects. Please try again.

pattern="square": 480px at md

No projects found

Your search “Landing page design” did not match any projects. Please try again.

pattern="grid": 480px at md

No projects found

Your search “Landing page design” did not match any projects. Please try again.

pattern="grid-check": 960px, at sm and md alike

Off by default since 2026-08-23

Header used to default pattern to circle, so every empty state in the kit painted 480px of rings behind its icon. The sheet draws a pattern on its File type icon and Folder icon types only, which the Featured icon sm screenshot confirmed, and the command-menu sheet’s own empty state draws none either; the ten call sites in this repo, nine command-menu files and the command menus docs config, all rendered the Featured icon composition and relied on the default. It is none now, and pattern="circle" is one prop where the sheet wants it. Measured 2026-08-23 against a production build: the only pattern SVGs on this page are the five behind File type icons.