'use client' import React from 'react' import { useAuthedImageSrc } from '../../hooks/use-authed-image-src' import { cn } from '../../utils/cn' import { getFirstLastInitials } from '../../utils/format' export interface EntityImageProps { src?: string | null alt?: string /** Overrides the initials source. Defaults to `alt`. */ fallbackText?: string className?: string } export function EntityImage({ src, alt, fallbackText, className }: EntityImageProps) { const resolvedSrc = useAuthedImageSrc(src) const [imageFailed, setImageFailed] = React.useState(false) React.useEffect(() => { setImageFailed(false) }, [resolvedSrc]) const showFallback = imageFailed || !resolvedSrc const initials = getFirstLastInitials(fallbackText ?? alt) if (showFallback) { return (