{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "avatar", "title": "Integrated Avatar", "description": "Thin flat-props Avatar wrapper with caller-owned fallback and badge slots, optional image source, primitive sizes, and explicit per-part class ownership.", "registryDependencies": [ "avatar" ], "files": [ { "path": "registry/ui/avatar.tsx", "content": "\"use client\";\n\nimport type { ClassValue } from \"clsx\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport {\n AvatarBadge,\n AvatarFallback,\n AvatarImage,\n Avatar as AvatarRoot,\n} from \"@/components/ui/avatar\";\nimport { cn } from \"@/lib/utils\";\n\ntype AvatarRootProps = ComponentProps;\ntype AvatarImageProps = ComponentProps;\n\nexport interface AvatarProps\n extends Omit<\n AvatarRootProps,\n \"children\" | \"className\" | \"dangerouslySetInnerHTML\" | \"render\"\n > {\n /** Alternative text for an informative image. Defaults to an empty string. */\n alt?: AvatarImageProps[\"alt\"];\n /** Caller-owned content rendered through AvatarBadge. */\n badge?: ReactNode;\n /** Class override for AvatarBadge. */\n badgeClassName?: ClassValue;\n /** Class override for the Avatar root. */\n className?: ClassValue;\n /** Required caller-owned content rendered through AvatarFallback. */\n fallback: ReactNode;\n /** Class override for AvatarFallback. */\n fallbackClassName?: ClassValue;\n /** Class override for AvatarImage. */\n imageClassName?: ClassValue;\n /** Optional image source. Undefined and empty strings use the fallback path. */\n src?: AvatarImageProps[\"src\"];\n}\n\nconst hasNode = (node: ReactNode): boolean =>\n node !== null && node !== undefined && typeof node !== \"boolean\";\n\nexport const Avatar = ({\n src,\n alt = \"\",\n fallback,\n fallbackClassName,\n badge,\n badgeClassName,\n imageClassName,\n className,\n ...rootProps\n}: AvatarProps) => (\n \n \n {hasNode(fallback) ? (\n \n {fallback}\n \n ) : null}\n {hasNode(badge) ? (\n {badge}\n ) : null}\n \n);\n\nexport default Avatar;\n", "type": "registry:component", "target": "components/easy/avatar.tsx" } ], "type": "registry:component" }