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
;
}
const assetPath: string = knownEndpointAssets[currentEndpoint] ?? '';
if (!assetPath) {
return ;
}
return (
);
}
export default memo(UnknownIcon);