{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "empty",
  "type": "registry:ui",
  "files": [
    {
      "path": "ui/empty.tsx",
      "content": "import type { Component, ComponentProps } from \"solid-js\"\nimport { splitProps } from \"solid-js\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Empty: Component<ComponentProps<\"div\">> = (props) => {\n  const [local, others] = splitProps(props, [\"class\"])\n  return (\n    <div\n      class={cn(\n        \"cn-empty flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12\",\n        local.class\n      )}\n      data-slot=\"empty\"\n      {...others}\n    />\n  )\n}\n\nconst EmptyHeader: Component<ComponentProps<\"div\">> = (props) => {\n  const [local, others] = splitProps(props, [\"class\"])\n  return (\n    <div\n      class={cn(\n        \"cn-empty-header flex max-w-sm flex-col items-center gap-2 text-center\",\n        local.class\n      )}\n      data-slot=\"empty-header\"\n      {...others}\n    />\n  )\n}\n\nconst emptyMediaVariants = cva(\n  \"cn-empty-media mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-empty-media-variant-default bg-transparent\",\n        icon: \"cn-empty-media-variant-icon flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6\"\n      }\n    },\n    defaultVariants: {\n      variant: \"default\"\n    }\n  }\n)\n\ntype EmptyMediaProps = ComponentProps<\"div\"> & VariantProps<typeof emptyMediaVariants>\n\nconst EmptyMedia: Component<EmptyMediaProps> = (props) => {\n  const [local, others] = splitProps(props, [\"class\", \"variant\"])\n  return (\n    <div\n      class={cn(emptyMediaVariants({ variant: local.variant }), local.class)}\n      data-slot=\"empty-icon\"\n      data-variant={local.variant}\n      {...others}\n    />\n  )\n}\n\nconst EmptyTitle: Component<ComponentProps<\"div\">> = (props) => {\n  const [local, others] = splitProps(props, [\"class\"])\n  return (\n    <div\n      class={cn(\"cn-empty-title font-medium text-lg tracking-tight\", local.class)}\n      data-slot=\"empty-title\"\n      {...others}\n    />\n  )\n}\n\nconst EmptyDescription: Component<ComponentProps<\"p\">> = (props) => {\n  const [local, others] = splitProps(props, [\"class\"])\n  return (\n    <div\n      class={cn(\n        \"cn-empty-description text-muted-foreground text-sm/relaxed [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n        local.class\n      )}\n      data-slot=\"empty-description\"\n      {...others}\n    />\n  )\n}\n\nconst EmptyContent: Component<ComponentProps<\"div\">> = (props) => {\n  const [local, others] = splitProps(props, [\"class\"])\n  return (\n    <div\n      class={cn(\n        \"cn-empty-content flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-balance text-sm\",\n        local.class\n      )}\n      data-slot=\"empty-content\"\n      {...others}\n    />\n  )\n}\n\nexport {\n  Empty,\n  EmptyHeader,\n  EmptyTitle,\n  EmptyDescription,\n  EmptyContent,\n  EmptyMedia,\n  emptyMediaVariants\n}\n",
      "type": "registry:ui"
    }
  ]
}