{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "empty-state",
  "title": "Empty State",
  "description": "A composable empty surface with optional media, guidance, actions, and compact presentation.",
  "dependencies": [
    "class-variance-authority"
  ],
  "files": [
    {
      "path": "registry/rivetui/components/empty-state/empty-state.tsx",
      "content": "import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst emptyStateVariants = cva(\"flex min-w-0 flex-col items-center justify-center text-center\", {\n  variants: {\n    variant: {\n      plain: \"\",\n      outline: \"border border-dashed border-border bg-background\",\n    },\n    size: {\n      sm: \"min-h-0 gap-4 px-5 py-8\",\n      md: \"min-h-72 gap-6 px-6 py-12 sm:px-10\",\n    },\n  },\n  defaultVariants: {\n    variant: \"outline\",\n    size: \"md\",\n  },\n});\n\ntype EmptyStateProps = React.ComponentProps<\"div\"> & VariantProps<typeof emptyStateVariants>;\n\nfunction EmptyState({ className, variant = \"outline\", size = \"md\", ...props }: EmptyStateProps) {\n  return (\n    <div\n      data-slot=\"empty-state\"\n      data-variant={variant}\n      data-size={size}\n      className={cn(emptyStateVariants({ variant, size, className }))}\n      {...props}\n    />\n  );\n}\n\nconst emptyStateMediaVariants = cva(\n  \"flex shrink-0 items-center justify-center text-muted-foreground [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        plain: \"[&_svg:not([class*='size-'])]:size-8\",\n        icon: \"size-12 border border-border bg-muted/30 text-foreground [&_svg]:size-5\",\n      },\n    },\n    defaultVariants: {\n      variant: \"icon\",\n    },\n  },\n);\n\ntype EmptyStateMediaProps = React.ComponentProps<\"div\"> &\n  VariantProps<typeof emptyStateMediaVariants>;\n\nfunction EmptyStateMedia({ className, variant = \"icon\", ...props }: EmptyStateMediaProps) {\n  return (\n    <div\n      data-slot=\"empty-state-media\"\n      data-variant={variant}\n      aria-hidden=\"true\"\n      className={cn(emptyStateMediaVariants({ variant, className }))}\n      {...props}\n    />\n  );\n}\n\nfunction EmptyStateHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-header\"\n      className={cn(\"flex max-w-md flex-col items-center gap-2\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction EmptyStateLabel({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"empty-state-label\"\n      className={cn(\n        \"font-mono text-[0.625rem] uppercase tracking-[0.16em] text-muted-foreground\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction EmptyStateTitle({ className, ...props }: React.ComponentProps<\"h3\">) {\n  return (\n    <h3\n      data-slot=\"empty-state-title\"\n      className={cn(\"text-lg font-semibold tracking-[-0.025em]\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction EmptyStateDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  return (\n    <p\n      data-slot=\"empty-state-description\"\n      className={cn(\"text-sm leading-6 text-muted-foreground\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction EmptyStateActions({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-actions\"\n      className={cn(\"flex flex-wrap items-center justify-center gap-2\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction EmptyStateFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"empty-state-footer\"\n      className={cn(\"max-w-md text-xs leading-5 text-muted-foreground\", className)}\n      {...props}\n    />\n  );\n}\n\nexport type { EmptyStateMediaProps, EmptyStateProps };\nexport {\n  EmptyState,\n  EmptyStateActions,\n  EmptyStateDescription,\n  EmptyStateFooter,\n  EmptyStateHeader,\n  EmptyStateLabel,\n  EmptyStateMedia,\n  EmptyStateTitle,\n  emptyStateMediaVariants,\n  emptyStateVariants,\n};\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}