Display

Empty State

A dashed-border resting place for nothing-yet moments, with room for one gentle joke.

Nothing here yet. Lovely, actually.

A blank page is just a project that hasn't happened yet. Start your first one and watch this space fill up.

Show code
"use client";

import { Button } from "@/registry/lilt/ui/button";
import {
  EmptyState,
  EmptyStateActions,
  EmptyStateDescription,
  EmptyStateIcon,
  EmptyStateTitle,
} from "@/registry/lilt/ui/empty-state";
import { SparkIcon } from "@/registry/lilt/ui/icons";

export default function EmptyStateDemo() {
  return (
    <EmptyState className="w-full max-w-md">
      <EmptyStateIcon>
        <SparkIcon size={24} />
      </EmptyStateIcon>
      <EmptyStateTitle>Nothing here yet. Lovely, actually.</EmptyStateTitle>
      <EmptyStateDescription>
        A blank page is just a project that hasn&apos;t happened yet. Start your
        first one and watch this space fill up.
      </EmptyStateDescription>
      <EmptyStateActions>
        <Button variant="soft">Start a project</Button>
      </EmptyStateActions>
    </EmptyState>
  );
}

Installation

npx shadcn@latest add @lilt/empty-state

Accessibility

  • The title is a real heading, so screen-reader users can jump to it.
  • The icon slot is decorative (aria-hidden) — meaning lives in the text.