import { memo } from 'react'; import { CustomMinimalIcon, XAIcon } from '@librechat/client'; import { EModelEndpoint, KnownEndpoints } from 'librechat-data-provider'; 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);