import type { ManagedPackage, Providers } from '@onelauncher/client/bindings'; import ModrinthImage from '~assets/logos/modrinth.svg?component-solid'; import { type Component, type JSX, Match, Show, splitProps, Switch } from 'solid-js'; export function getProviderLogoElement(provider: ManagedPackage | Providers): string | Component { const providerName = (typeof provider === 'string' ? provider : provider.provider)?.toLowerCase() as Lowercase; // [provider logo, is svg] const mapping: Record, string | Component> = { modrinth: ModrinthImage, }; return mapping[providerName]; } type ProviderIconProps = JSX.HTMLAttributes & { provider: Providers | undefined; }; function ProviderIcon(props: ProviderIconProps) { const [split, rest] = splitProps(props, ['provider', 'class']); const Element = () => { const value = getProviderLogoElement(split.provider!); return ( {`${split.provider}'s {value} ); }; return ( )} fallback={(
} /> )} when={split.provider !== undefined} /> ); } export default ProviderIcon;