mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-06 20:15:17 +02:00
merge upstream/dev: add user_id to configs, provider icons, i18n
This commit is contained in:
commit
78127243e2
87 changed files with 10445 additions and 5029 deletions
|
|
@ -20,8 +20,8 @@ const AUTH_ERROR_MESSAGES: AuthErrorMapping = {
|
|||
description: "Your account may be suspended or restricted",
|
||||
},
|
||||
"404": {
|
||||
title: "Account not found",
|
||||
description: "No account exists with this email address",
|
||||
title: "Not found",
|
||||
description: "The requested resource was not found",
|
||||
},
|
||||
"409": {
|
||||
title: "Account conflict",
|
||||
|
|
@ -31,6 +31,10 @@ const AUTH_ERROR_MESSAGES: AuthErrorMapping = {
|
|||
title: "Too many attempts",
|
||||
description: "Please wait before trying again",
|
||||
},
|
||||
RATE_LIMIT_EXCEEDED: {
|
||||
title: "Too many attempts",
|
||||
description: "You've made too many requests. Please wait a minute and try again.",
|
||||
},
|
||||
"500": {
|
||||
title: "Server error",
|
||||
description: "Something went wrong on our end. Please try again",
|
||||
|
|
@ -42,8 +46,8 @@ const AUTH_ERROR_MESSAGES: AuthErrorMapping = {
|
|||
|
||||
// FastAPI specific errors
|
||||
LOGIN_BAD_CREDENTIALS: {
|
||||
title: "Invalid credentials",
|
||||
description: "The email or password you entered is incorrect",
|
||||
title: "Login failed",
|
||||
description: "Invalid email or password. If you don't have an account, please sign up.",
|
||||
},
|
||||
LOGIN_USER_NOT_VERIFIED: {
|
||||
title: "Account not verified",
|
||||
|
|
|
|||
121
surfsense_web/lib/provider-icons.tsx
Normal file
121
surfsense_web/lib/provider-icons.tsx
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
import { Bot, Shuffle } from "lucide-react";
|
||||
import {
|
||||
Ai21Icon,
|
||||
AnthropicIcon,
|
||||
AnyscaleIcon,
|
||||
BedrockIcon,
|
||||
CerebrasIcon,
|
||||
CloudflareIcon,
|
||||
CohereIcon,
|
||||
CometApiIcon,
|
||||
DatabricksIcon,
|
||||
DeepInfraIcon,
|
||||
DeepSeekIcon,
|
||||
FireworksAiIcon,
|
||||
GeminiIcon,
|
||||
GroqIcon,
|
||||
HuggingFaceIcon,
|
||||
MistralIcon,
|
||||
MoonshotIcon,
|
||||
NscaleIcon,
|
||||
OllamaIcon,
|
||||
OpenaiIcon,
|
||||
OpenRouterIcon,
|
||||
PerplexityIcon,
|
||||
QwenIcon,
|
||||
RecraftIcon,
|
||||
ReplicateIcon,
|
||||
SambaNovaIcon,
|
||||
TogetherAiIcon,
|
||||
VertexAiIcon,
|
||||
XaiIcon,
|
||||
XinferenceIcon,
|
||||
ZhipuIcon,
|
||||
} from "@/components/icons/providers";
|
||||
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 <Shuffle className={cn(className, "text-violet-800")} />;
|
||||
}
|
||||
|
||||
switch (provider?.toUpperCase()) {
|
||||
case "AI21":
|
||||
return <Ai21Icon className={cn(className)} />;
|
||||
case "ALIBABA_QWEN":
|
||||
return <QwenIcon className={cn(className)} />;
|
||||
case "ANTHROPIC":
|
||||
return <AnthropicIcon className={cn(className)} />;
|
||||
case "ANYSCALE":
|
||||
return <AnyscaleIcon className={cn(className)} />;
|
||||
case "AZURE":
|
||||
case "AZURE_OPENAI":
|
||||
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)} />;
|
||||
case "GROQ":
|
||||
return <GroqIcon className={cn(className)} />;
|
||||
case "HUGGINGFACE":
|
||||
return <HuggingFaceIcon className={cn(className)} />;
|
||||
case "MISTRAL":
|
||||
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)} />;
|
||||
case "OPENROUTER":
|
||||
return <OpenRouterIcon className={cn(className)} />;
|
||||
case "PERPLEXITY":
|
||||
return <PerplexityIcon className={cn(className)} />;
|
||||
case "RECRAFT":
|
||||
return <RecraftIcon className={cn(className)} />;
|
||||
case "REPLICATE":
|
||||
return <ReplicateIcon className={cn(className)} />;
|
||||
case "SAMBANOVA":
|
||||
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)} />;
|
||||
case "XINFERENCE":
|
||||
return <XinferenceIcon className={cn(className)} />;
|
||||
case "ZHIPU":
|
||||
return <ZhipuIcon className={cn(className)} />;
|
||||
default:
|
||||
return <Bot className={cn(className, "text-muted-foreground")} />;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue