import Image from "next/image"; import { useState } from "react"; import { TbLoader3 } from "react-icons/tb"; import { TfiWorld } from "react-icons/tfi"; import { faviconLinkBuilder } from "utils/link"; import styles from "./links.module.scss"; interface LinkFaviconProps { url: string; size?: number; noMargin?: boolean; } export default function LinkFavicon({ url, size = 32, noMargin = false, }: LinkFaviconProps) { const [isFailed, setFailed] = useState(false); const [isLoading, setLoading] = useState(true); const setFallbackFavicon = () => setFailed(true); const handleStopLoading = () => setLoading(false); const { origin } = new URL(url); return (
{!isFailed ? ( { setFallbackFavicon(); handleStopLoading(); }} onLoadingComplete={handleStopLoading} height={size} width={size} alt="icon" /> ) : ( )} {isLoading && ( )}
); }