diff --git a/src/components/providers/ProviderCard.tsx b/src/components/providers/ProviderCard.tsx
index d848f02..c800129 100644
--- a/src/components/providers/ProviderCard.tsx
+++ b/src/components/providers/ProviderCard.tsx
@@ -1,5 +1,5 @@
import { useMemo } from "react";
-import { GripVertical, Link } from "lucide-react";
+import { GripVertical } from "lucide-react";
import { useTranslation } from "react-i18next";
import type {
DraggableAttributes,
diff --git a/src/components/providers/forms/ProviderPresetSelector.tsx b/src/components/providers/forms/ProviderPresetSelector.tsx
index bcba24f..5a4a7c9 100644
--- a/src/components/providers/forms/ProviderPresetSelector.tsx
+++ b/src/components/providers/forms/ProviderPresetSelector.tsx
@@ -1,5 +1,7 @@
import { useTranslation } from "react-i18next";
import { FormLabel } from "@/components/ui/form";
+import { ClaudeIcon, CodexIcon } from "@/components/BrandIcons";
+import { Zap } from "lucide-react";
import type { ProviderPreset } from "@/config/providerPresets";
import type { CodexProviderPreset } from "@/config/codexProviderPresets";
import type { ProviderCategory } from "@/types";
@@ -58,6 +60,58 @@ export function ProviderPresetSelector({
}
};
+ // 渲染预设按钮的图标
+ const renderPresetIcon = (preset: ProviderPreset | CodexProviderPreset) => {
+ const iconType = preset.theme?.icon;
+ if (!iconType) return null;
+
+ switch (iconType) {
+ case "claude":
+ return
diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts
index eeaee45..148cee4 100644
--- a/src/config/codexProviderPresets.ts
+++ b/src/config/codexProviderPresets.ts
@@ -2,6 +2,7 @@
* Codex 预设供应商配置模板
*/
import { ProviderCategory } from "../types";
+import type { PresetTheme } from "./providerPresets";
export interface CodexProviderPreset {
name: string;
@@ -15,6 +16,8 @@ export interface CodexProviderPreset {
isCustomTemplate?: boolean; // 标识是否为自定义模板
// 新增:请求地址候选列表(用于地址管理/测速)
endpointCandidates?: string[];
+ // 新增:视觉主题配置
+ theme?: PresetTheme;
}
/**
@@ -63,6 +66,11 @@ export const codexProviderPresets: CodexProviderPreset[] = [
OPENAI_API_KEY: null,
},
config: ``,
+ theme: {
+ icon: "codex",
+ backgroundColor: "#1F2937", // gray-800
+ textColor: "#FFFFFF",
+ },
},
{
name: "PackyCode",
diff --git a/src/config/providerPresets.ts b/src/config/providerPresets.ts
index fb40a2b..537f11b 100644
--- a/src/config/providerPresets.ts
+++ b/src/config/providerPresets.ts
@@ -10,6 +10,18 @@ export interface TemplateValueConfig {
editorValue: string;
}
+/**
+ * 预设供应商的视觉主题配置
+ */
+export interface PresetTheme {
+ /** 图标类型:'claude' | 'codex' | 'generic' */
+ icon?: "claude" | "codex" | "generic";
+ /** 背景色(选中状态),支持 Tailwind 类名或 hex 颜色 */
+ backgroundColor?: string;
+ /** 文字色(选中状态),支持 Tailwind 类名或 hex 颜色 */
+ textColor?: string;
+}
+
export interface ProviderPreset {
name: string;
websiteUrl: string;
@@ -22,6 +34,8 @@ export interface ProviderPreset {
templateValues?: Record