"use client"; import { useMemo, useState } from "react"; import { Cpu } from "lucide-react"; import { Select, SelectContent, SelectItem, SelectTrigger } from "@/components/ui/select"; import { cn } from "@/lib/utils"; import type { AiConfig } from "@/stores/use-config-store"; type ModelPickerProps = { config: AiConfig; value?: string; onChange: (model: string) => void; className?: string; fullWidth?: boolean; placeholder?: string; onMissingConfig?: () => void; }; export function ModelPicker({ config, value, onChange, className, fullWidth = false, placeholder = "选择模型", onMissingConfig }: ModelPickerProps) { const [open, setOpen] = useState(false); const options = useMemo(() => Array.from(new Set([value, ...config.models].filter(Boolean))), [config.models, value]); const current = value || ""; return ( ); } function ModelLabel({ model }: { model: string }) { return ( {model} ); } function ModelIcon({ model }: { model: string }) { const icon = resolveModelIcon(model); return icon ? : ; } function resolveModelIcon(model: string) { const name = model.toLowerCase(); if (name.includes("claude") || name.includes("anthropic")) return "/icons/claude.svg"; if (name.includes("gemini") || name.includes("google")) return "/icons/gemini.svg"; if (name.includes("gpt") || name.includes("openai")) return "/icons/openai.svg"; if (name.includes("grok") || name.includes("grok")) return "/icons/grok.svg"; return ""; }