diff --git a/surfsense_web/components/new-chat/model-selector.tsx b/surfsense_web/components/new-chat/model-selector.tsx
index ec1143e04..3f5786a3a 100644
--- a/surfsense_web/components/new-chat/model-selector.tsx
+++ b/surfsense_web/components/new-chat/model-selector.tsx
@@ -5,15 +5,10 @@ import {
Bot,
Check,
ChevronDown,
- Cloud,
Edit3,
Globe,
Plus,
- Settings2,
- Shuffle,
- Sparkles,
User,
- Zap,
} from "lucide-react";
import { useCallback, useMemo, useState } from "react";
import { toast } from "sonner";
@@ -42,33 +37,7 @@ import type {
NewLLMConfigPublic,
} from "@/contracts/types/new-llm-config.types";
import { cn } from "@/lib/utils";
-
-// Provider icons mapping
-const getProviderIcon = (provider: string, isAutoMode?: boolean) => {
- const iconClass = "size-4";
-
- // Special icon for Auto mode
- if (isAutoMode || provider?.toUpperCase() === "AUTO") {
- return
{config.model_name}
diff --git a/surfsense_web/components/settings/llm-role-manager.tsx b/surfsense_web/components/settings/llm-role-manager.tsx
index a0c13d116..c634ffd49 100644
--- a/surfsense_web/components/settings/llm-role-manager.tsx
+++ b/surfsense_web/components/settings/llm-role-manager.tsx
@@ -37,6 +37,7 @@ import {
} from "@/components/ui/select";
import { Skeleton } from "@/components/ui/skeleton";
import { cn } from "@/lib/utils";
+import { getProviderIcon } from "@/lib/provider-icons";
const ROLE_DESCRIPTIONS = {
agent: {
@@ -342,11 +343,14 @@ export function LLMRoleManager({ searchSpaceId }: LLMRoleManagerProps) {
handleRoleAssignment(`${key}_llm_id`, value)
}
>
-
{assignedConfig.model_name}
diff --git a/surfsense_web/components/settings/model-config-manager.tsx b/surfsense_web/components/settings/model-config-manager.tsx
index 1666fae20..6500c1c6e 100644
--- a/surfsense_web/components/settings/model-config-manager.tsx
+++ b/surfsense_web/components/settings/model-config-manager.tsx
@@ -52,6 +52,7 @@ import { Spinner } from "@/components/ui/spinner";
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip";
import type { NewLLMConfig } from "@/contracts/types/new-llm-config.types";
import { cn } from "@/lib/utils";
+import { getProviderIcon } from "@/lib/provider-icons";
interface ModelConfigManagerProps {
searchSpaceId: number;
@@ -420,12 +421,7 @@ export function ModelConfigManager({ searchSpaceId }: ModelConfigManagerProps) {
{/* Provider + Model */}
{config.model_name}
diff --git a/surfsense_web/lib/provider-icons.tsx b/surfsense_web/lib/provider-icons.tsx
new file mode 100644
index 000000000..62ed19f61
--- /dev/null
+++ b/surfsense_web/lib/provider-icons.tsx
@@ -0,0 +1,103 @@
+import {
+ Bot,
+ Cloud,
+ Cpu,
+ Database,
+ Globe,
+ Layers,
+ Server,
+ Settings2,
+ Shuffle,
+ Sparkles,
+ Wand2,
+ Zap,
+} from "lucide-react";
+import { cn } from "@/lib/utils";
+
+/**
+ * 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,
+ {
+ isAutoMode,
+ className = "size-4",
+ }: { isAutoMode?: boolean; className?: string } = {}
+) {
+ if (isAutoMode || provider?.toUpperCase() === "AUTO") {
+ return