import React from 'react'; import KeyIcon from './icons/KeyIcon'; import GoogleIcon from './icons/GoogleIcon'; import OpenAIIcon from './icons/OpenAIIcon'; import AnthropicIcon from './icons/AnthropicIcon'; import { Provider } from '../types'; interface ApiConfigProps { provider: Provider; setProvider: (provider: Provider) => void; apiKeys: { gemini: string; openai: string; anthropic: string; }; setApiKey: (provider: Provider, key: string) => void; isProcessing: boolean; } const ProviderTab: React.FC<{ providerName: Provider; activeProvider: Provider; setProvider: (provider: Provider) => void; isProcessing: boolean; children: React.ReactNode; }> = ({ providerName, activeProvider, setProvider, isProcessing, children }) => { const isActive = providerName === activeProvider; const activeClasses = 'border-blue-400 text-white bg-gray-700/50'; const inactiveClasses = 'border-transparent text-gray-400 hover:bg-gray-700/30 hover:text-gray-200'; return ( ); }; const ApiConfig: React.FC = ({ provider, setProvider, apiKeys, setApiKey, isProcessing, }) => { const providerDetails = { gemini: { name: "Google Gemini", model: "gemini-2.5-flash-preview-04-17", url: "https://aistudio.google.com/app/apikey", urlText: "Google AI Studio", focusColor: "focus:ring-blue-500 focus:border-blue-500", }, openai: { name: "OpenAI", model: "gpt-4o", url: "https://platform.openai.com/api-keys", urlText: "OpenAI Dashboard", focusColor: "focus:ring-green-500 focus:border-green-500", }, anthropic: { name: "Anthropic", model: "claude-3-sonnet-20240229", url: "https://console.anthropic.com/settings/keys", urlText: "Anthropic Console", focusColor: "focus:ring-purple-500 focus:border-purple-500", } }; const currentProvider = providerDetails[provider]; return (

AI Provider Configuration

Gemini OpenAI Anthropic
setApiKey(provider, e.target.value)} disabled={isProcessing} placeholder={`Enter your ${currentProvider.name} API Key`} className={`w-full p-3 bg-gray-900/70 border-2 border-gray-600 rounded-xl text-gray-300 placeholder-gray-500 transition-all duration-200 ${currentProvider.focusColor}`} />

Using model: {currentProvider.model}. Get your key from {currentProvider.urlText}.

); }; export default ApiConfig;