import React, { memo } from 'react'; import type { IconMapProps } from '~/common'; import { icons } from '~/components/Chat/Menus/Endpoints/Icons'; interface ConvoIconURLProps { iconURL?: string; modelLabel?: string; endpointIconURL?: string; assistantName?: string; agentName?: string; context?: 'landing' | 'menu-item' | 'nav' | 'message'; assistantAvatar?: string; agentAvatar?: string; } const classMap = { 'menu-item': 'relative flex h-full items-center justify-center overflow-hidden rounded-full', message: 'icon-md', default: 'icon-xl relative flex h-full overflow-hidden rounded-full', }; const styleMap = { 'menu-item': { width: '20px', height: '20px' }, default: { width: '100%', height: '100%' }, }; const styleImageMap = { default: { width: '100%', height: '100%' }, }; const ConvoIconURL: React.FC = ({ iconURL = '', modelLabel = '', endpointIconURL, assistantAvatar, assistantName, agentAvatar, agentName, context, }) => { let Icon: ( props: IconMapProps & { context?: string; iconURL?: string; }, ) => React.JSX.Element; const isURL = !!(iconURL && (iconURL.includes('http') || iconURL.startsWith('/images/'))); if (!isURL) { Icon = icons[iconURL] ?? icons.unknown; } else { Icon = () => (
{modelLabel}
); return ; } return (
); }; export default memo(ConvoIconURL);