mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-24 19:26:14 +01:00
* BIG UI UPDATE * fix: search bar, dialog template, new chat icon, convo icon and delete/rename button * moved some color config and a lot of files * small text fixes and tailwind config refactor * Update localization and UI styles * Update styles and add user-select:none to Tooltip component * Update mobile.css styles for navigation mask and background color * Update component imports and styles * Update DeleteButton imports and references * Update UI components * Update tooltip delay duration * Fix styling and update text in various components * fixed assistant style * minor style fixes * revert: removed CreationHeader & CreationPanel * style: match new styling for SidePanel * style: match bg-gray-800 to ChatGPT (#212121) * style: remove slate for gray where applicable to match new light theme --------- Co-authored-by: Danny Avila <messagedaniel@protonmail.com>
83 lines
2.4 KiB
TypeScript
83 lines
2.4 KiB
TypeScript
import { EModelEndpoint } from 'librechat-data-provider';
|
|
import UnknownIcon from '~/components/Chat/Menus/Endpoints/UnknownIcon';
|
|
import {
|
|
AzureMinimalIcon,
|
|
OpenAIMinimalIcon,
|
|
LightningIcon,
|
|
MinimalPlugin,
|
|
BingAIMinimalIcon,
|
|
GoogleMinimalIcon,
|
|
CustomMinimalIcon,
|
|
AnthropicIcon,
|
|
Sparkles,
|
|
} 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 = {
|
|
[EModelEndpoint.azureOpenAI]: {
|
|
icon: <AzureMinimalIcon />,
|
|
name: props.chatGptLabel || 'ChatGPT',
|
|
},
|
|
[EModelEndpoint.openAI]: { icon: <OpenAIMinimalIcon />, name: props.chatGptLabel || 'ChatGPT' },
|
|
[EModelEndpoint.gptPlugins]: { icon: <MinimalPlugin />, name: 'Plugins' },
|
|
[EModelEndpoint.google]: { icon: <GoogleMinimalIcon />, name: props.modelLabel || 'Google' },
|
|
[EModelEndpoint.anthropic]: {
|
|
icon: <AnthropicIcon className="icon-md shrink-0 dark:text-white" />,
|
|
name: props.modelLabel || 'Claude',
|
|
},
|
|
[EModelEndpoint.custom]: {
|
|
icon: <CustomMinimalIcon />,
|
|
name: 'Custom',
|
|
},
|
|
[EModelEndpoint.bingAI]: { icon: <BingAIMinimalIcon />, name: 'BingAI' },
|
|
[EModelEndpoint.chatGPTBrowser]: { icon: <LightningIcon />, name: 'ChatGPT' },
|
|
[EModelEndpoint.assistants]: { icon: <Sparkles className="icon-sm" />, name: 'Assistant' },
|
|
default: {
|
|
icon: (
|
|
<UnknownIcon
|
|
iconURL={props.iconURL}
|
|
endpoint={endpoint}
|
|
className="icon-sm"
|
|
context="nav"
|
|
/>
|
|
),
|
|
name: endpoint,
|
|
},
|
|
};
|
|
|
|
const { icon, name } = endpointIcons[endpoint] ?? endpointIcons.default;
|
|
|
|
return (
|
|
<div
|
|
data-testid="convo-icon"
|
|
title={name}
|
|
style={{
|
|
width: size,
|
|
height: size,
|
|
}}
|
|
className={cn(
|
|
'relative flex items-center justify-center rounded-sm text-black dark: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-black dark:text-white">
|
|
!
|
|
</span>
|
|
)}
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default MinimalIcon;
|