Prodular UI

Feedback

Empty

A calm, centered placeholder for views with nothing to show yet, with an icon, a title, a description and actions.

npx prodular-ui add empty

First use

Explain what will appear here and offer the action that fills it.

No invoices yet
Invoices appear here once a customer is charged. Create one by hand or connect Stripe to import your history.

Anatomy

<Empty>  <EmptyHeader>    <EmptyMedia variant="icon"><ReceiptTextIcon /></EmptyMedia>    <EmptyTitle>No invoices yet</EmptyTitle>    <EmptyDescription>Invoices appear here once a customer is charged.</EmptyDescription>  </EmptyHeader>  <EmptyActions>    <Button>Create invoice</Button>  </EmptyActions></Empty>

Guidance

Use it when

  • A list, table or view that has no data yet, or no results for the current filters.
  • First run states where the next step is clear.

Avoid

  • Errors. Use an Alert that says what failed and how to retry.
  • Illustrations or emoji. One muted icon is enough.
  • More than two actions.

Rules for AI agents

Published in llms-full.txt and the registry, so coding agents follow them when they build with this component.

  • Write EmptyTitle as a plain statement: No invoices yet, No customers match these filters.
  • Use EmptyDescription to say what will appear here and how to make it appear, in one or two sentences.
  • Put buttons in EmptyActions, primary first. For no results states use a single outline Clear filters button.
  • Use EmptyMedia variant="icon" with a lucide icon that names the content type.
  • Inside a card, place Empty in CardContent and reduce padding with className="py-6". Do not add a border.

API

EmptyMedia

PropTypeDefaultDescription
variant"default" | "icon""default"icon puts a lucide icon on a muted tile.

EmptyActions

PropTypeDefaultDescription
childrenReactNodeA centered row of buttons.

EmptyContent

PropTypeDefaultDescription
childrenReactNodeFree form content under the header, such as a search field or a link.