"use client" import * as React from "react" import { cn } from "cn" function Avatar({ className, size = "default", ...props }: React.ComponentProps<"div"> & { size?: "default" | "sm" | "lg" }) { return (
) } type ImageState = "loading" | "loaded" | "error" function AvatarImage({ className, ...props }: React.ComponentProps<"img">) { const [state, setState] = React.useState( props.src ? "loading" : "error" ) return ( {props.alt setState("loaded")} onError={() => setState("error")} className={cn( "cn-avatar-image peer aspect-square size-full object-cover data-[state=error]:hidden", className )} {...props} /> ) } function AvatarFallback({ className, ...props }: React.ComponentProps<"div">) { return (
) } function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) { return ( svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className )} {...props} /> ) } function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) { return (
) } function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">) { return (
) } export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, }