{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "avatar", "dependencies": [], "registryDependencies": [ "@seamless/utils" ], "files": [ { "path": "src/components/ui/avatar.tsx", "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n size?: \"default\" | \"sm\" | \"lg\"\n}) {\n return (\n \n )\n}\n\ntype ImageState = \"loading\" | \"loaded\" | \"error\"\n\nfunction AvatarImage({ className, ...props }: React.ComponentProps<\"img\">) {\n const [state, setState] = React.useState(\n props.src ? \"loading\" : \"error\"\n )\n return (\n setState(\"loaded\")}\n onError={() => setState(\"error\")}\n className={cn(\n \"peer aspect-square size-full rounded-full object-cover data-[state=error]:hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n svg]:hidden\",\n \"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2\",\n \"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n )\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Avatar,\n AvatarImage,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarBadge,\n}\n", "type": "registry:ui" } ], "type": "registry:ui" }