{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "item",
  "type": "registry:ui",
  "dependencies": [
    "@radix-ui/react-slot",
    "class-variance-authority"
  ],
  "registryDependencies": [
    "https://wigggle-ui.vercel.app/r/separator.json"
  ],
  "files": [
    {
      "path": "registry/default/ui/item.tsx",
      "content": "import * as React from \"react\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\nimport { Separator } from \"@/components/ui/separator\";\r\n\r\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      role=\"list\"\r\n      data-slot=\"item-group\"\r\n      className={cn(\"group/item-group flex flex-col\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemSeparator({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof Separator>) {\r\n  return (\r\n    <Separator\r\n      data-slot=\"item-separator\"\r\n      orientation=\"horizontal\"\r\n      className={cn(\"my-0\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nconst itemVariants = cva(\r\n  \"group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-transparent\",\r\n        outline: \"border-border\",\r\n        muted: \"bg-muted/50\",\r\n      },\r\n      size: {\r\n        default: \"p-4 gap-4 \",\r\n        sm: \"py-3 px-4 gap-2.5\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n      size: \"default\",\r\n    },\r\n  },\r\n);\r\n\r\nfunction Item({\r\n  className,\r\n  variant = \"default\",\r\n  size = \"default\",\r\n  asChild = false,\r\n  ...props\r\n}: React.ComponentProps<\"div\"> &\r\n  VariantProps<typeof itemVariants> & { asChild?: boolean }) {\r\n  const Comp = asChild ? Slot : \"div\";\r\n  return (\r\n    <Comp\r\n      data-slot=\"item\"\r\n      data-variant={variant}\r\n      data-size={size}\r\n      className={cn(itemVariants({ variant, size, className }))}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nconst itemMediaVariants = cva(\r\n  \"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"bg-transparent\",\r\n        icon: \"size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4\",\r\n        image:\r\n          \"size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n    },\r\n  },\r\n);\r\n\r\nfunction ItemMedia({\r\n  className,\r\n  variant = \"default\",\r\n  ...props\r\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\r\n  return (\r\n    <div\r\n      data-slot=\"item-media\"\r\n      data-variant={variant}\r\n      className={cn(itemMediaVariants({ variant, className }))}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"item-content\"\r\n      className={cn(\r\n        \"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"item-title\"\r\n      className={cn(\r\n        \"flex w-fit items-center gap-2 text-sm leading-snug font-medium\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\r\n  return (\r\n    <p\r\n      data-slot=\"item-description\"\r\n      className={cn(\r\n        \"text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance\",\r\n        \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"item-actions\"\r\n      className={cn(\"flex items-center gap-2\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"item-header\"\r\n      className={cn(\r\n        \"flex basis-full items-center justify-between gap-2\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"item-footer\"\r\n      className={cn(\r\n        \"flex basis-full items-center justify-between gap-2\",\r\n        className,\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nexport {\r\n  Item,\r\n  ItemMedia,\r\n  ItemContent,\r\n  ItemActions,\r\n  ItemGroup,\r\n  ItemSeparator,\r\n  ItemTitle,\r\n  ItemDescription,\r\n  ItemHeader,\r\n  ItemFooter,\r\n};\r\n",
      "type": "registry:ui"
    }
  ]
}