2023-09-18 21:21:39 +02:00
|
|
|
import React from 'react';
|
|
|
|
|
import {
|
|
|
|
|
AzureMinimalIcon,
|
|
|
|
|
OpenAIMinimalIcon,
|
|
|
|
|
ChatGPTMinimalIcon,
|
|
|
|
|
PluginMinimalIcon,
|
|
|
|
|
BingAIMinimalIcon,
|
|
|
|
|
PaLMinimalIcon,
|
|
|
|
|
AnthropicMinimalIcon,
|
|
|
|
|
} from '~/components/svg';
|
|
|
|
|
import { cn } from '~/utils';
|
|
|
|
|
import { IconProps } from '~/common';
|
|
|
|
|
|
|
|
|
|
const MinimalIcon: React.FC<IconProps> = (props) => {
|
|
|
|
|
const { size = 30, error } = props;
|
|
|
|
|
|
|
|
|
|
let endpoint = 'default'; // Default value for endpoint
|
|
|
|
|
|
|
|
|
|
if (typeof props.endpoint === 'string') {
|
|
|
|
|
endpoint = props.endpoint;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const endpointIcons = {
|
|
|
|
|
azureOpenAI: { icon: <AzureMinimalIcon />, name: props.chatGptLabel || 'ChatGPT' },
|
|
|
|
|
openAI: { icon: <OpenAIMinimalIcon />, name: props.chatGptLabel || 'ChatGPT' },
|
|
|
|
|
gptPlugins: { icon: <PluginMinimalIcon />, name: 'Plugins' },
|
|
|
|
|
google: { icon: <PaLMinimalIcon />, name: props.modelLabel || 'PaLM2' },
|
|
|
|
|
anthropic: { icon: <AnthropicMinimalIcon />, name: props.modelLabel || 'Claude' },
|
|
|
|
|
bingAI: { icon: <BingAIMinimalIcon />, name: 'BingAI' },
|
|
|
|
|
chatGPTBrowser: { icon: <ChatGPTMinimalIcon />, name: 'ChatGPT' },
|
|
|
|
|
default: { icon: <OpenAIMinimalIcon />, name: 'UNKNOWN' },
|
|
|
|
|
};
|
|
|
|
|
|
2023-10-16 13:34:29 -04:00
|
|
|
const { icon, name } = endpointIcons[endpoint] ?? endpointIcons.default;
|
2023-09-18 21:21:39 +02:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div
|
2023-09-18 16:57:12 -04:00
|
|
|
data-testid="convo-icon"
|
2023-09-18 21:21:39 +02:00
|
|
|
title={name}
|
|
|
|
|
style={{
|
|
|
|
|
width: size,
|
|
|
|
|
height: size,
|
|
|
|
|
}}
|
|
|
|
|
className={cn(
|
|
|
|
|
'relative flex items-center justify-center rounded-sm text-white',
|
|
|
|
|
props.className || '',
|
|
|
|
|
)}
|
|
|
|
|
>
|
|
|
|
|
{icon}
|
|
|
|
|
{error && (
|
|
|
|
|
<span className="absolute right-0 top-[20px] -mr-2 flex h-4 w-4 items-center justify-center rounded-full border border-white bg-red-500 text-[10px] text-white">
|
|
|
|
|
!
|
|
|
|
|
</span>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default MinimalIcon;
|