import { useMemo, useState } from "react" import { PROVIDER_DOMAINS, PROVIDER_ICON_SLUGS } from "./provider-registry" interface ProviderIconProps { providerKey: string providerLabel: string } export function ProviderIcon({ providerKey, providerLabel, }: ProviderIconProps) { const [sourceIndex, setSourceIndex] = useState(0) const [loadFailed, setLoadFailed] = useState(false) const initial = providerLabel.trim().charAt(0).toUpperCase() || "?" const iconUrls = useMemo(() => { const slug = PROVIDER_ICON_SLUGS[providerKey] const domain = PROVIDER_DOMAINS[providerKey] const urls: string[] = [] if (slug) { urls.push(`https://cdn.simpleicons.org/${slug}`) } if (domain) { urls.push(`https://www.google.com/s2/favicons?domain=${domain}&sz=64`) } return urls }, [providerKey]) const iconUrl = iconUrls[sourceIndex] if (!iconUrl || loadFailed) { return ( {initial} ) } return ( {`${providerLabel} { if (sourceIndex < iconUrls.length - 1) { setSourceIndex((idx) => idx + 1) return } setLoadFailed(true) }} /> ) }