import { useEffect, useState, type ImgHTMLAttributes } from 'react'; type AppImageProps = Omit, 'src'> & { src?: string | null; wrapperClassName?: string; fit?: 'cover' | 'contain'; }; export default function AppImage({ src, alt = '', className = '', wrapperClassName = '', fit = 'cover', ...rest }: AppImageProps) { const [loaded, setLoaded] = useState(false); const [failed, setFailed] = useState(false); const hasSrc = Boolean(src); useEffect(() => { setLoaded(false); setFailed(!src); }, [src]); const showPlaceholder = !hasSrc || failed || !loaded; return ( {showPlaceholder && ( {hasSrc && !failed ? ( ) : ( image )} )} {hasSrc && !failed && ( setLoaded(true)} onError={() => { setFailed(true); setLoaded(false); }} /> )} ); }