{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "empty",
  "title": "Empty",
  "description": "Empty state with icon, title, description and actions.",
  "dependencies": [
    "class-variance-authority@^0.7.1"
  ],
  "files": [
    {
      "path": "registry/rapid/ui/empty/empty.tsx",
      "content": "import { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '@/lib/utils'\n\nfunction Empty({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty\"\n\t\t\tclassName={cn(\n\t\t\t\t'flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div data-slot=\"empty-header\" className={cn('flex max-w-sm flex-col items-center gap-2', className)} {...props} />\n\t)\n}\n\nconst emptyMediaVariants = cva(\n\t'mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-transparent',\n\t\t\t\ticon:\n\t\t\t\t\t\"flex size-8 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t},\n\t},\n)\n\nfunction EmptyMedia({\n\tclassName,\n\tvariant = 'default',\n\t...props\n}: React.ComponentProps<'div'> & VariantProps<typeof emptyMediaVariants>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-icon\"\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(emptyMediaVariants({ variant, className }))}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction EmptyTitle({\n\tclassName,\n\tas: Title = 'div',\n\t...props\n}: React.ComponentProps<'div'> & {\n\t/** Render a heading (`h1`–`h6`) when the empty state needs a place in the page's heading outline, e.g. a 404 page */\n\tas?: 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n}) {\n\treturn (\n\t\t<Title\n\t\t\tdata-slot=\"empty-title\"\n\t\t\tclassName={cn('font-heading text-sm font-medium tracking-tight', className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<'p'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-description\"\n\t\t\tclassName={cn(\n\t\t\t\t'text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"empty-content\"\n\t\t\tclassName={cn('flex w-full max-w-sm min-w-0 flex-col items-center gap-2.5 text-sm text-balance', className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia }\n",
      "type": "registry:ui",
      "target": "components/ui/empty.tsx"
    }
  ],
  "meta": {
    "new": true
  },
  "type": "registry:ui"
}