import * as React from "react" import { View, Image } from "@tarojs/components" import { cn } from "@/lib/utils" const AvatarContext = React.createContext<{ status: "loading" | "error" | "loaded" setStatus: (status: "loading" | "error" | "loaded") => void } | null>(null) const Avatar = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { const [status, setStatus] = React.useState<"loading" | "error" | "loaded">("loading") return ( ) }) Avatar.displayName = "Avatar" const AvatarImage = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, src, ...props }, ref) => { const context = React.useContext(AvatarContext) const handleLoad = (e) => { context?.setStatus("loaded") props.onLoad?.(e) } const handleError = (e) => { context?.setStatus("error") props.onError?.(e) } return ( ) }) AvatarImage.displayName = "AvatarImage" const AvatarFallback = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { const context = React.useContext(AvatarContext) if (context?.status === "loaded") return null return ( ) }) AvatarFallback.displayName = "AvatarFallback" export { Avatar, AvatarImage, AvatarFallback }