"use client"; import { cn } from "@/ui"; import clsx from "clsx"; import { HTMLAttributes, useEffect, useState } from "react"; import { Address } from "viem"; function getLinearGradientForAddress(address: Address) { const addr = address.slice(2, 10); const seed = parseInt(addr, 16); const number = Math.ceil(seed % 0xffffff); return `linear-gradient(45deg, #${number.toString(16).padStart(6, "0")}, #FFFFFF)`; } interface AvatarUiProps extends HTMLAttributes { address: Address; avatar?: string | null; size: number; } export function AvatarUi({ address, size, avatar, className, ...props }: AvatarUiProps) { const [isLoaded, setIsLoaded] = useState(false); // Reset if address or avatar changes useEffect(() => { setIsLoaded(false); }, [address, avatar]); return (
{avatar && ( setIsLoaded(true)} onError={({ currentTarget }) => currentTarget.remove()} /> )}
); }