{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "avatar",
  "title": "Avatar",
  "description": "A square identity primitive with image loading, fallback content, sizes, and compact groups.",
  "dependencies": [
    "@base-ui/react",
    "class-variance-authority"
  ],
  "files": [
    {
      "path": "registry/rivetui/components/avatar/avatar.tsx",
      "content": "import { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst avatarVariants = cva(\n  \"group/avatar relative inline-flex shrink-0 overflow-hidden border border-border bg-muted align-middle\",\n  {\n    variants: {\n      size: {\n        sm: \"size-8\",\n        md: \"size-10\",\n        lg: \"size-12\",\n      },\n    },\n    defaultVariants: {\n      size: \"md\",\n    },\n  },\n);\n\ntype AvatarProps = AvatarPrimitive.Root.Props & VariantProps<typeof avatarVariants>;\n\nfunction Avatar({ className, size = \"md\", ...props }: AvatarProps) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      data-size={size}\n      className={cn(avatarVariants({ size, className }))}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\"absolute inset-0 size-full object-cover\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"flex size-full items-center justify-center bg-muted font-mono text-[0.625rem] font-medium uppercase tracking-[0.08em] text-muted-foreground group-data-[size=sm]/avatar:text-[0.5625rem] group-data-[size=lg]/avatar:text-xs\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"avatar-group\"\n      className={cn(\n        \"flex -space-x-2 [&_[data-slot=avatar]]:ring-2 [&_[data-slot=avatar]]:ring-background\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"avatar-group-count\"\n      className={cn(\n        \"relative inline-flex size-10 shrink-0 items-center justify-center border border-border bg-muted font-mono text-[0.625rem] font-medium tracking-[0.08em] text-muted-foreground ring-2 ring-background\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport type { AvatarProps };\nexport { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, avatarVariants };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}