import { HTMLAttributes } from "react"; export interface Props extends HTMLAttributes<Props> { urls: string[]; alt: string; } export default function FallbackImage({ urls, alt, className }: Props) { const fallbackUrl = urls.pop()!; urls.push(fallbackUrl); return ( <picture className={className}> {urls.length !== 0 && urls.map((url, key) => { let contentType: string; if (url.endsWith(".webp")) { contentType = "image/webp"; } else if (url.endsWith(".jpg") || url.endsWith(".jpeg")) { contentType = "image/jpeg"; } else if (url.endsWith(".png")) { contentType = "image/png"; } else { contentType = "application/octet-stream"; } return <source key={key} srcSet={url} type={contentType} />; })} <img src={fallbackUrl} alt={alt} className={className} /> </picture> ); }