import { Cpu } from "lucide-react"; export interface ProviderIconProps { provider: string; size?: "sm" | "md" | "lg"; } const sizeMap = { sm: 16, md: 20, lg: 24, }; // Anthropic "A" logo from SimpleIcons function AnthropicIcon({ size, color, label = "Anthropic" }: { size: number; color: string; label?: string }) { return ( ); } // OpenAI flower logo from Iconify/SimpleIcons function OpenAIIcon({ size, color, label = "OpenAI" }: { size: number; color: string; label?: string }) { return ( ); } // Google Gemini sparkle logo from SimpleIcons function GeminiIcon({ size, color, label = "Google Gemini" }: { size: number; color: string; label?: string }) { return ( ); } // Ollama llama head logo from SimpleIcons function OllamaIcon({ size, color, label = "Ollama" }: { size: number; color: string; label?: string }) { return ( ); } // MiniMax logo from SimpleIcons — stylized "M" grid mark function MiniMaxIcon({ size, color, label = "MiniMax" }: { size: number; color: string; label?: string }) { return ( ); } // Z.ai / Zhipu AI logo — stylized "Z" mark from brand identity function ZaiIcon({ size, color, label = "Z.ai" }: { size: number; color: string; label?: string }) { return ( ); } // Kimi / Moonshot AI logo — crescent moon mark from official Moonshot AI brand identity // Source: https://raw.githubusercontent.com/gilbarbara/logos/master/logos/moonshot-ai.svg // The moon crescent shape is derived from the official Moonshot AI logo // For a 24x24 icon, we use a simplified crescent moon path function KimiIcon({ size, color, label = "Kimi" }: { size: number; color: string; label?: string }) { return ( {/* Crescent moon from official Moonshot AI logo mark */} ); } const providerConfig: Record< string, { component: typeof AnthropicIcon; color: string; label?: string } > = { anthropic: { component: AnthropicIcon, color: "#d4a27f" }, // warm tan openai: { component: OpenAIIcon, color: "#10a37f" }, // green "openai-codex": { component: OpenAIIcon, color: "#10a37f", label: "OpenAI Codex" }, // green (same as openai) google: { component: GeminiIcon, color: "#4285f4" }, // blue gemini: { component: GeminiIcon, color: "#4285f4" }, // blue (same as google) ollama: { component: OllamaIcon, color: "#fff" }, // white minimax: { component: MiniMaxIcon, color: "#E73562" }, // pink/red zai: { component: ZaiIcon, color: "#1A6DFF" }, // blue kimi: { component: KimiIcon, color: "#6C5CE7" }, // purple moonshot: { component: KimiIcon, color: "#6C5CE7" }, // purple (same as kimi) }; export function ProviderIcon({ provider, size = "sm" }: ProviderIconProps) { const normalizedProvider = provider.toLowerCase(); const config = providerConfig[normalizedProvider]; const IconComponent = config?.component; const color = config?.color ?? "var(--text-muted)"; const label = config?.label; const iconSize = sizeMap[size]; return ( {IconComponent ? ( ) : ( )} ); }