2026-02-10 19:06:21 +05:30
|
|
|
import { Bot, Shuffle } from "lucide-react";
|
2026-02-09 20:48:42 +05:30
|
|
|
import { cn } from "@/lib/utils";
|
2026-02-10 16:23:12 +05:30
|
|
|
import { Ai21Icon } from "@/components/icons/providers";
|
|
|
|
|
import { AnthropicIcon } from "@/components/icons/providers";
|
|
|
|
|
import { AnyscaleIcon } from "@/components/icons/providers";
|
|
|
|
|
import { BedrockIcon } from "@/components/icons/providers";
|
|
|
|
|
import { CerebrasIcon } from "@/components/icons/providers";
|
|
|
|
|
import { CloudflareIcon } from "@/components/icons/providers";
|
|
|
|
|
import { CohereIcon } from "@/components/icons/providers";
|
|
|
|
|
import { CometApiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { DatabricksIcon } from "@/components/icons/providers";
|
|
|
|
|
import { DeepInfraIcon } from "@/components/icons/providers";
|
|
|
|
|
import { DeepSeekIcon } from "@/components/icons/providers";
|
|
|
|
|
import { FireworksAiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { GeminiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { GroqIcon } from "@/components/icons/providers";
|
|
|
|
|
import { HuggingFaceIcon } from "@/components/icons/providers";
|
|
|
|
|
import { MistralIcon } from "@/components/icons/providers";
|
|
|
|
|
import { MoonshotIcon } from "@/components/icons/providers";
|
|
|
|
|
import { NscaleIcon } from "@/components/icons/providers";
|
|
|
|
|
import { OllamaIcon } from "@/components/icons/providers";
|
|
|
|
|
import { OpenaiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { OpenRouterIcon } from "@/components/icons/providers";
|
|
|
|
|
import { PerplexityIcon } from "@/components/icons/providers";
|
|
|
|
|
import { QwenIcon } from "@/components/icons/providers";
|
|
|
|
|
import { RecraftIcon } from "@/components/icons/providers";
|
|
|
|
|
import { ReplicateIcon } from "@/components/icons/providers";
|
|
|
|
|
import { SambaNovaIcon } from "@/components/icons/providers";
|
|
|
|
|
import { TogetherAiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { VertexAiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { XaiIcon } from "@/components/icons/providers";
|
|
|
|
|
import { XinferenceIcon } from "@/components/icons/providers";
|
|
|
|
|
import { ZhipuIcon } from "@/components/icons/providers";
|
2026-02-09 20:48:42 +05:30
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns a Lucide icon element for the given LLM / image-gen provider.
|
|
|
|
|
* Accepts an optional `className` override for the icon size.
|
|
|
|
|
*/
|
|
|
|
|
export function getProviderIcon(
|
|
|
|
|
provider: string,
|
2026-02-10 19:06:21 +05:30
|
|
|
{ isAutoMode, className = "size-4" }: { isAutoMode?: boolean; className?: string } = {}
|
2026-02-09 20:48:42 +05:30
|
|
|
) {
|
|
|
|
|
if (isAutoMode || provider?.toUpperCase() === "AUTO") {
|
2026-02-10 17:20:42 +05:30
|
|
|
return <Shuffle className={cn(className, "text-violet-800")} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (provider?.toUpperCase()) {
|
2026-02-10 16:23:12 +05:30
|
|
|
case "AI21":
|
|
|
|
|
return <Ai21Icon className={cn(className)} />;
|
|
|
|
|
case "ALIBABA_QWEN":
|
|
|
|
|
return <QwenIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "ANTHROPIC":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <AnthropicIcon className={cn(className)} />;
|
|
|
|
|
case "ANYSCALE":
|
|
|
|
|
return <AnyscaleIcon className={cn(className)} />;
|
|
|
|
|
case "AZURE":
|
2026-02-09 20:48:42 +05:30
|
|
|
case "AZURE_OPENAI":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <OpenaiIcon className={cn(className)} />;
|
|
|
|
|
case "AWS_BEDROCK":
|
|
|
|
|
case "BEDROCK":
|
|
|
|
|
return <BedrockIcon className={cn(className)} />;
|
|
|
|
|
case "CEREBRAS":
|
|
|
|
|
return <CerebrasIcon className={cn(className)} />;
|
|
|
|
|
case "CLOUDFLARE":
|
|
|
|
|
return <CloudflareIcon className={cn(className)} />;
|
|
|
|
|
case "COHERE":
|
|
|
|
|
return <CohereIcon className={cn(className)} />;
|
|
|
|
|
case "COMETAPI":
|
|
|
|
|
return <CometApiIcon className={cn(className)} />;
|
|
|
|
|
case "CUSTOM":
|
|
|
|
|
return <Bot className={cn(className, "text-gray-400")} />;
|
|
|
|
|
case "DATABRICKS":
|
|
|
|
|
return <DatabricksIcon className={cn(className)} />;
|
|
|
|
|
case "DEEPINFRA":
|
|
|
|
|
return <DeepInfraIcon className={cn(className)} />;
|
|
|
|
|
case "DEEPSEEK":
|
|
|
|
|
return <DeepSeekIcon className={cn(className)} />;
|
|
|
|
|
case "FIREWORKS_AI":
|
|
|
|
|
return <FireworksAiIcon className={cn(className)} />;
|
|
|
|
|
case "GOOGLE":
|
|
|
|
|
return <GeminiIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "GROQ":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <GroqIcon className={cn(className)} />;
|
|
|
|
|
case "HUGGINGFACE":
|
|
|
|
|
return <HuggingFaceIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "MISTRAL":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <MistralIcon className={cn(className)} />;
|
|
|
|
|
case "MOONSHOT":
|
|
|
|
|
return <MoonshotIcon className={cn(className)} />;
|
|
|
|
|
case "NSCALE":
|
|
|
|
|
return <NscaleIcon className={cn(className)} />;
|
|
|
|
|
case "OLLAMA":
|
|
|
|
|
return <OllamaIcon className={cn(className)} />;
|
|
|
|
|
case "OPENAI":
|
|
|
|
|
return <OpenaiIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "OPENROUTER":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <OpenRouterIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "PERPLEXITY":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <PerplexityIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "RECRAFT":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <RecraftIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "REPLICATE":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <ReplicateIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "SAMBANOVA":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <SambaNovaIcon className={cn(className)} />;
|
|
|
|
|
case "TOGETHER_AI":
|
|
|
|
|
return <TogetherAiIcon className={cn(className)} />;
|
|
|
|
|
case "VERTEX_AI":
|
|
|
|
|
return <VertexAiIcon className={cn(className)} />;
|
|
|
|
|
case "XAI":
|
|
|
|
|
return <XaiIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
case "XINFERENCE":
|
2026-02-10 16:23:12 +05:30
|
|
|
return <XinferenceIcon className={cn(className)} />;
|
|
|
|
|
case "ZHIPU":
|
|
|
|
|
return <ZhipuIcon className={cn(className)} />;
|
2026-02-09 20:48:42 +05:30
|
|
|
default:
|
|
|
|
|
return <Bot className={cn(className, "text-muted-foreground")} />;
|
|
|
|
|
}
|
|
|
|
|
}
|