{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "empty-state",
  "title": "Empty State",
  "author": "Ballmac <https://ui.ballmac.com>",
  "description": "A ready-to-use empty screen with guidance and primary and secondary action slots.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "https://ui.ballmac.com/r/empty.json",
    "utils"
  ],
  "files": [
    {
      "path": "registry/ballmac/components/empty-state.tsx",
      "content": "// Ballmac UI: Empty State. https://ui.ballmac.com/components/empty-state\nimport * as React from \"react\"\nimport { Inbox } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport {\n  Empty,\n  EmptyAction,\n  EmptyDescription,\n  EmptyMedia,\n  EmptyTitle,\n} from \"@/components/ballmac/empty\"\n\ntype EmptyStateProps = Omit<React.ComponentProps<typeof Empty>, \"children\"> & {\n  /** Plain-language explanation of what is missing. */\n  title: string\n  /** Next-step guidance. */\n  description: string\n  /** Decorative icon; defaults to an inbox. */\n  icon?: React.ReactNode\n  /** Primary action, usually a link or button. */\n  action?: React.ReactNode\n  /** Optional secondary action. */\n  secondaryAction?: React.ReactNode\n}\n\nfunction EmptyState({\n  className,\n  title,\n  description,\n  icon,\n  action,\n  secondaryAction,\n  ...props\n}: EmptyStateProps) {\n  return (\n    <Empty\n      data-slot=\"empty-state\"\n      className={cn(\"bg-card/70\", className)}\n      {...props}\n    >\n      <EmptyMedia>{icon ?? <Inbox aria-hidden=\"true\" />}</EmptyMedia>\n      <EmptyTitle>{title}</EmptyTitle>\n      <EmptyDescription>{description}</EmptyDescription>\n      {(action || secondaryAction) && (\n        <EmptyAction>\n          {action}\n          {secondaryAction}\n        </EmptyAction>\n      )}\n    </Empty>\n  )\n}\n\nexport { EmptyState, type EmptyStateProps }\n",
      "type": "registry:ui",
      "target": "@components/ballmac/empty-state.tsx"
    }
  ],
  "meta": {
    "schema": 1,
    "tier": "free",
    "tags": [
      "empty",
      "placeholder",
      "action"
    ],
    "version": "1.0.0",
    "updated": "2026-09-30",
    "ai": {
      "summary": "A ready-to-use empty screen with guidance and primary and secondary action slots.",
      "whenToUse": [
        "Explain an empty collection",
        "Offer a clear first action"
      ],
      "whenNotToUse": [
        "Use empty for a custom composition"
      ],
      "composesWith": [
        "empty",
        "button"
      ],
      "a11y": [
        {
          "keys": "Tab / Enter",
          "action": "Focus and activate supplied actions"
        }
      ],
      "customization": [
        "Compact layout",
        "Icon and actions"
      ]
    },
    "examples": [
      "empty-state-demo",
      "empty-state-states"
    ],
    "url": "https://ui.ballmac.com/components/empty-state"
  },
  "categories": [
    "feedback"
  ],
  "type": "registry:ui"
}