Add icons

This commit is contained in:
Krzysztof Czerwinski
2026-01-14 16:35:33 +09:00
parent 1f0caecc44
commit e8978246b4
15 changed files with 47 additions and 30 deletions

View File

@@ -247,14 +247,14 @@ MODEL_METADATA = {
LlmModel.AIML_API_META_LLAMA_3_1_70B: ModelMetadata("aiml_api", 131000, 2000, "Llama 3.1 70B Instruct Turbo", "AI/ML", "Meta", 1),
LlmModel.AIML_API_LLAMA_3_2_3B: ModelMetadata("aiml_api", 128000, None, "Llama 3.2 3B Instruct Turbo", "AI/ML", "Meta", 1),
# https://console.groq.com/docs/models
LlmModel.LLAMA3_3_70B: ModelMetadata("groq", 128000, 32768, "Llama 3.3 70B Versatile", "Groq", "Groq", 1),
LlmModel.LLAMA3_1_8B: ModelMetadata("groq", 128000, 8192, "Llama 3.1 8B Instant", "Groq", "Groq", 1),
LlmModel.LLAMA3_3_70B: ModelMetadata("groq", 128000, 32768, "Llama 3.3 70B Versatile", "Groq", "Meta", 1),
LlmModel.LLAMA3_1_8B: ModelMetadata("groq", 128000, 8192, "Llama 3.1 8B Instant", "Groq", "Meta", 1),
# https://ollama.com/library
LlmModel.OLLAMA_LLAMA3_3: ModelMetadata("ollama", 8192, None, "Llama 3.3", "Ollama", "Meta", 1),
LlmModel.OLLAMA_LLAMA3_2: ModelMetadata("ollama", 8192, None, "Llama 3.2", "Ollama", "Meta", 1),
LlmModel.OLLAMA_LLAMA3_8B: ModelMetadata("ollama", 8192, None, "Llama 3", "Ollama", "Meta", 1),
LlmModel.OLLAMA_LLAMA3_405B: ModelMetadata("ollama", 8192, None, "Llama 3.1 405B", "Ollama", "Meta", 1),
LlmModel.OLLAMA_DOLPHIN: ModelMetadata("ollama", 32768, None, "Dolphin Mistral Latest", "Ollama", "Mistral", 1),
LlmModel.OLLAMA_DOLPHIN: ModelMetadata("ollama", 32768, None, "Dolphin Mistral Latest", "Ollama", "Mistral AI", 1),
# https://openrouter.ai/models
LlmModel.GEMINI_2_5_PRO: ModelMetadata("open_router", 1050000, 8192, "Gemini 2.5 Pro Preview 03.25", "OpenRouter", "Google", 2),
LlmModel.GEMINI_3_PRO_PREVIEW: ModelMetadata("open_router", 1048576, 65535, "Gemini 3 Pro Preview", "OpenRouter", "Google", 2),
@@ -262,11 +262,11 @@ MODEL_METADATA = {
LlmModel.GEMINI_2_0_FLASH: ModelMetadata("open_router", 1048576, 8192, "Gemini 2.0 Flash 001", "OpenRouter", "Google", 1),
LlmModel.GEMINI_2_5_FLASH_LITE_PREVIEW: ModelMetadata("open_router", 1048576, 65535, "Gemini 2.5 Flash Lite Preview 06.17", "OpenRouter", "Google", 1),
LlmModel.GEMINI_2_0_FLASH_LITE: ModelMetadata("open_router", 1048576, 8192, "Gemini 2.0 Flash Lite 001", "OpenRouter", "Google", 1),
LlmModel.MISTRAL_NEMO: ModelMetadata("open_router", 128000, 4096, "Mistral Nemo", "OpenRouter", "Mistralai", 1),
LlmModel.MISTRAL_NEMO: ModelMetadata("open_router", 128000, 4096, "Mistral Nemo", "OpenRouter", "Mistral AI", 1),
LlmModel.COHERE_COMMAND_R_08_2024: ModelMetadata("open_router", 128000, 4096, "Command R 08.2024", "OpenRouter", "Cohere", 1),
LlmModel.COHERE_COMMAND_R_PLUS_08_2024: ModelMetadata("open_router", 128000, 4096, "Command R Plus 08.2024", "OpenRouter", "Cohere", 2),
LlmModel.DEEPSEEK_CHAT: ModelMetadata("open_router", 64000, 2048, "DeepSeek Chat", "OpenRouter", "Deepseek", 1),
LlmModel.DEEPSEEK_R1_0528: ModelMetadata("open_router", 163840, 163840, "DeepSeek R1 0528", "OpenRouter", "Deepseek", 1),
LlmModel.DEEPSEEK_CHAT: ModelMetadata("open_router", 64000, 2048, "DeepSeek Chat", "OpenRouter", "DeepSeek", 1),
LlmModel.DEEPSEEK_R1_0528: ModelMetadata("open_router", 163840, 163840, "DeepSeek R1 0528", "OpenRouter", "DeepSeek", 1),
LlmModel.PERPLEXITY_SONAR: ModelMetadata("open_router", 127000, 8000, "Sonar", "OpenRouter", "Perplexity", 1),
LlmModel.PERPLEXITY_SONAR_PRO: ModelMetadata("open_router", 200000, 8000, "Sonar Pro", "OpenRouter", "Perplexity", 2),
LlmModel.PERPLEXITY_SONAR_DEEP_RESEARCH: ModelMetadata("open_router", 128000, 16000, "Sonar Deep Research", "OpenRouter", "Perplexity", 3),
@@ -285,7 +285,7 @@ MODEL_METADATA = {
LlmModel.GROK_4_FAST: ModelMetadata("open_router", 2000000, 30000, "Grok 4 Fast", "OpenRouter", "xAI", 1),
LlmModel.GROK_4_1_FAST: ModelMetadata("open_router", 2000000, 30000, "Grok 4.1 Fast", "OpenRouter", "xAI", 1),
LlmModel.GROK_CODE_FAST_1: ModelMetadata("open_router", 256000, 10000, "Grok Code Fast 1", "OpenRouter", "xAI", 1),
LlmModel.KIMI_K2: ModelMetadata("open_router", 131000, 131000, "Kimi K2", "OpenRouter", "Moonshotai", 1),
LlmModel.KIMI_K2: ModelMetadata("open_router", 131000, 131000, "Kimi K2", "OpenRouter", "Moonshot AI", 1),
LlmModel.QWEN3_235B_A22B_THINKING: ModelMetadata("open_router", 262144, 262144, "Qwen 3 235B A22B Thinking 2507", "OpenRouter", "Qwen", 1),
LlmModel.QWEN3_CODER: ModelMetadata("open_router", 262144, 262144, "Qwen 3 Coder", "OpenRouter", "Qwen", 3),
# Llama API models

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -2,20 +2,29 @@
import Image from "next/image";
import { Text } from "@/components/atoms/Text/Text";
import claudeImg from "@/components/atoms/LLMItem/assets/claude.svg";
import gptImg from "@/components/atoms/LLMItem/assets/gpt.svg";
import perplexityImg from "@/components/atoms/LLMItem/assets/perplexity.svg";
const iconMap: Record<string, string> = {
anthropic: claudeImg.src,
claude: claudeImg.src,
openai: gptImg.src,
gpt: gptImg.src,
open_router: gptImg.src,
groq: gptImg.src,
ollama: gptImg.src,
llama_api: gptImg.src,
perplexity: perplexityImg.src,
const creatorIconMap: Record<string, string> = {
"anthropic": "/integrations/anthropic-color.png",
"openai": "/integrations/openai.png",
"google": "/integrations/gemini.png",
"nvidia": "/integrations/nvidia.png",
"groq": "/integrations/groq.png",
"ollama": "/integrations/ollama.png",
"openrouter": "/integrations/open_router.png",
"v0": "/integrations/v0.png",
"xai": "/integrations/xai.webp",
"meta": "/integrations/llama_api.png",
"amazon": "/integrations/amazon.png",
"cohere": "/integrations/cohere.png",
"deepseek": "/integrations/deepseek.png",
"gryphe": "/integrations/gryphe.png",
"microsoft": "/integrations/microsoft.webp",
"moonshotai": "/integrations/moonshot.png",
"mistral": "/integrations/mistral.png",
"mistralai": "/integrations/mistral.png",
"nousresearch": "/integrations/nousresearch.avif",
"perplexity": "/integrations/perplexity.webp",
"qwen": "/integrations/qwen.png",
};
type Props = {
@@ -24,23 +33,31 @@ type Props = {
};
export function LlmIcon({ value, size = 20 }: Props) {
const normalized = value.toLowerCase();
const src = iconMap[normalized];
const normalized = value.trim().toLowerCase().replace(/\s+/g, "");
const src = creatorIconMap[normalized];
if (src) {
return (
<Image
src={src}
alt={value}
width={size}
height={size}
className="rounded-xsmall"
/>
<div
className="flex h-5 w-5 items-center justify-center overflow-hidden rounded-xsmall"
style={{ width: size, height: size }}
>
<Image
src={src}
alt={value}
width={size}
height={size}
className="h-full w-full object-cover"
/>
</div>
);
}
const fallback = value?.trim().slice(0, 1).toUpperCase() || "?";
return (
<div className="flex h-5 w-5 items-center justify-center rounded-xsmall bg-zinc-100">
<div
className="flex h-5 w-5 items-center justify-center rounded-xsmall bg-zinc-100"
style={{ width: size, height: size }}
>
<Text variant="small" className="text-zinc-500">
{fallback}
</Text>