import { memo } from 'react'; import { EModelEndpoint, KnownEndpoints } from 'librechat-data-provider'; import { CustomMinimalIcon, XAIcon } from '~/components/svg'; import { IconContext } from '~/common'; import { cn } from '~/utils'; const knownEndpointAssets = { [KnownEndpoints.anyscale]: '/assets/anyscale.png', [KnownEndpoints.apipie]: '/assets/apipie.png', [KnownEndpoints.cohere]: '/assets/cohere.png', [KnownEndpoints.deepseek]: '/assets/deepseek.svg', [KnownEndpoints.fireworks]: '/assets/fireworks.png', [KnownEndpoints.google]: '/assets/google.svg', [KnownEndpoints.groq]: '/assets/groq.png', [KnownEndpoints.huggingface]: '/assets/huggingface.svg', [KnownEndpoints.mistral]: '/assets/mistral.png', [KnownEndpoints.mlx]: '/assets/mlx.png', [KnownEndpoints.ollama]: '/assets/ollama.png', [KnownEndpoints.openai]: '/assets/openai.svg', [KnownEndpoints.openrouter]: '/assets/openrouter.png', [KnownEndpoints.perplexity]: '/assets/perplexity.png', [KnownEndpoints.qwen]: '/assets/qwen.svg', [KnownEndpoints.shuttleai]: '/assets/shuttleai.png', [KnownEndpoints['together.ai']]: '/assets/together.png', [KnownEndpoints.unify]: '/assets/unify.webp', }; const knownEndpointClasses = { [KnownEndpoints.cohere]: { [IconContext.landing]: 'p-2', }, [KnownEndpoints.xai]: { [IconContext.landing]: 'p-2', }, }; const getKnownClass = ({ currentEndpoint, context = '', className, }: { currentEndpoint: string; context?: string; className: string; }) => { if (currentEndpoint === KnownEndpoints.openrouter) { return className; } const match = knownEndpointClasses[currentEndpoint]?.[context] ?? ''; const defaultClass = context === IconContext.landing ? '' : className; return cn(match, defaultClass); }; function UnknownIcon({ className = '', endpoint: _endpoint, iconURL = '', context, }: { iconURL?: string; className?: string; endpoint?: EModelEndpoint | string | null; context?: 'landing' | 'menu-item' | 'nav' | 'message'; }) { const endpoint = _endpoint ?? ''; if (!endpoint) { return ; } const currentEndpoint = endpoint.toLowerCase(); if (currentEndpoint === KnownEndpoints.xai) { return ( ); } if (iconURL) { return {`${endpoint}; } const assetPath: string = knownEndpointAssets[currentEndpoint] ?? ''; if (!assetPath) { return ; } return ( {`${currentEndpoint} ); } export default memo(UnknownIcon);