import EmojiPicker, { Emoji, EmojiStyle, Theme as EmojiTheme, } from "emoji-picker-react"; import { ModelType } from "../store"; import BotIconDefault from "../icons/llm-icons/default.svg"; import BotIconOpenAI from "../icons/llm-icons/openai.svg"; import BotIconGemini from "../icons/llm-icons/gemini.svg"; import BotIconGemma from "../icons/llm-icons/gemma.svg"; import BotIconClaude from "../icons/llm-icons/claude.svg"; import BotIconMeta from "../icons/llm-icons/meta.svg"; import BotIconMistral from "../icons/llm-icons/mistral.svg"; import BotIconDeepseek from "../icons/llm-icons/deepseek.svg"; import BotIconMoonshot from "../icons/llm-icons/moonshot.svg"; import BotIconQwen from "../icons/llm-icons/qwen.svg"; import BotIconWenxin from "../icons/llm-icons/wenxin.svg"; import BotIconGrok from "../icons/llm-icons/grok.svg"; import BotIconHunyuan from "../icons/llm-icons/hunyuan.svg"; import BotIconDoubao from "../icons/llm-icons/doubao.svg"; import BotIconChatglm from "../icons/llm-icons/chatglm.svg"; export function getEmojiUrl(unified: string, style: EmojiStyle) { // Whoever owns this Content Delivery Network (CDN), I am using your CDN to serve emojis // Old CDN broken, so I had to switch to this one // Author: https://github.com/H0llyW00dzZ return `https://fastly.jsdelivr.net/npm/emoji-datasource-apple/img/${style}/64/${unified}.png`; } export function AvatarPicker(props: { onEmojiClick: (emojiId: string) => void; }) { return ( { props.onEmojiClick(e.unified); }} /> ); } export function Avatar(props: { model?: ModelType; avatar?: string }) { let LlmIcon = BotIconDefault; if (props.model) { const modelName = props.model.toLowerCase(); if ( modelName.startsWith("gpt") || modelName.startsWith("chatgpt") || modelName.startsWith("dall-e") || modelName.startsWith("dalle") || modelName.startsWith("o1") || modelName.startsWith("o3") ) { LlmIcon = BotIconOpenAI; } else if (modelName.startsWith("gemini")) { LlmIcon = BotIconGemini; } else if (modelName.startsWith("gemma")) { LlmIcon = BotIconGemma; } else if (modelName.startsWith("claude")) { LlmIcon = BotIconClaude; } else if (modelName.toLowerCase().includes("llama")) { LlmIcon = BotIconMeta; } else if (modelName.startsWith("mixtral")) { LlmIcon = BotIconMistral; } else if (modelName.toLowerCase().includes("deepseek")) { LlmIcon = BotIconDeepseek; } else if (modelName.startsWith("moonshot")) { LlmIcon = BotIconMoonshot; } else if (modelName.startsWith("qwen")) { LlmIcon = BotIconQwen; } else if (modelName.startsWith("ernie")) { LlmIcon = BotIconWenxin; } else if (modelName.startsWith("grok")) { LlmIcon = BotIconGrok; } else if (modelName.startsWith("hunyuan")) { LlmIcon = BotIconHunyuan; } else if (modelName.startsWith("doubao") || modelName.startsWith("ep-")) { LlmIcon = BotIconDoubao; } else if ( modelName.toLowerCase().includes("glm") || modelName.startsWith("cogview-") || modelName.startsWith("cogvideox-") ) { LlmIcon = BotIconChatglm; } return (
); } return (
{props.avatar && }
); } export function EmojiAvatar(props: { avatar: string; size?: number }) { return ( ); }