import { createSignal, JSX, Match, Show, Switch } from "solid-js"; export const Favicon = (props: { domain: string; reverse?: boolean; wrapper?: (children: JSX.Element) => JSX.Element; }) => { const [loaded, setLoaded] = createSignal(false); const [src, setSrc] = createSignal(""); const domain = () => (props.reverse ? props.domain.split(".").reverse().join(".") : props.domain); const workerUrl = () => `/favicon?domain=${encodeURIComponent(domain())}`; const directUrl = () => `https://${domain()}/favicon.ico`; const content = ( setLoaded(true)} onError={() => { if (!src()) { setSrc(directUrl()); } else { setLoaded(false); } }} /> ); return props.wrapper ? ( props.wrapper(content) ) : (
{content}
); };