{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "avatar", "title": "Avatar", "description": "User avatar displaying a profile image with a text or icon fallback.", "dependencies": [ "@base-ui/react" ], "files": [ { "path": "packages/ui/src/avatar.tsx", "content": "\"use client\";\n\nimport { Avatar as AvatarPrimitive } from \"@base-ui/react/avatar\";\nimport type * as React from \"react\";\nimport { cn } from \"./utils\";\n\n// =============================================================================\n// Avatar (Root)\n// =============================================================================\nexport interface AvatarProps extends AvatarPrimitive.Root.Props {\n /**\n * Size variant of the avatar\n * @default \"default\"\n */\n size?: \"xs\" | \"default\" | \"sm\" | \"lg\";\n}\n\nfunction Avatar({ className, size = \"default\", ...props }: AvatarProps) {\n return (\n \n );\n}\n\n// =============================================================================\n// AvatarImage\n// =============================================================================\nexport interface AvatarImageProps extends AvatarPrimitive.Image.Props {}\n\nfunction AvatarImage({ className, ...props }: AvatarImageProps) {\n return (\n \n );\n}\n\n// =============================================================================\n// AvatarFallback\n// =============================================================================\nexport interface AvatarFallbackProps extends AvatarPrimitive.Fallback.Props {}\n\nfunction AvatarFallback({ className, ...props }: AvatarFallbackProps) {\n return (\n \n );\n}\n\n// =============================================================================\n// AvatarBadge\n// =============================================================================\nexport interface AvatarBadgeProps extends React.ComponentProps<\"span\"> {}\n\nfunction AvatarBadge({ className, ...props }: AvatarBadgeProps) {\n return (\n svg]:hidden\",\n \"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>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 data-slot=\"avatar-badge\"\n {...props}\n />\n );\n}\n\n// =============================================================================\n// AvatarGroup\n// =============================================================================\nexport interface AvatarGroupProps extends React.ComponentProps<\"div\"> {}\n\nfunction AvatarGroup({ className, ...props }: AvatarGroupProps) {\n return (\n \n );\n}\n\n// =============================================================================\n// AvatarGroupCount\n// =============================================================================\nexport interface AvatarGroupCountProps extends React.ComponentProps<\"div\"> {}\n\nfunction AvatarGroupCount({ className, ...props }: AvatarGroupCountProps) {\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 data-slot=\"avatar-group-count\"\n {...props}\n />\n );\n}\n\nexport {\n Avatar,\n AvatarBadge,\n AvatarFallback,\n AvatarGroup,\n AvatarGroupCount,\n AvatarImage,\n};\n", "type": "registry:ui" } ], "type": "registry:ui" }