{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "empty-state",
  "type": "registry:ui",
  "title": "Empty State",
  "description": "Zero-data placeholder — a debossed well with an embossed icon key, copy, and actions.",
  "dependencies": [],
  "registryDependencies": [
    "https://seamui.dev/r/utils.json"
  ],
  "files": [
    {
      "path": "registry/seam/ui/empty-state.tsx",
      "content": "import type * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\n// The zero-data surface: a slot waiting for content, so it reads as a\n// debossed well (§1 — slots are carved in). The icon sits on a small\n// embossed key rising from it. Deliberately still, like Alert — persistent\n// page state gets no entrance motion.\nfunction EmptyState({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state\"\n      className={cn(\n        \"border-border/60 bg-muted shadow-well flex w-full flex-col items-center justify-center rounded-lg squircle border px-6 py-10 text-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyStateMedia({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-media\"\n      className={cn(\n        \"bg-secondary text-muted-foreground shadow-resting mb-3 flex size-12 items-center justify-center rounded-lg squircle [&>svg]:size-6\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyStateTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-title\"\n      className={cn(\"text-sm font-medium\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction EmptyStateDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-description\"\n      className={cn(\n        \"text-muted-foreground mt-1 max-w-sm text-sm leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\n// Drop Buttons in here — they bring their own press depth and haptics.\nfunction EmptyStateActions({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-actions\"\n      className={cn(\"mt-4 flex flex-wrap items-center gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  EmptyState,\n  EmptyStateMedia,\n  EmptyStateTitle,\n  EmptyStateDescription,\n  EmptyStateActions,\n}\n",
      "type": "registry:ui",
      "target": "components/ui/empty-state.tsx"
    }
  ]
}