import { Label } from '@/components/ui/label'; import { Input } from '@/components/ui/input'; import { Switch } from '@/components/ui/switch'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { Brain, Eye, EyeOff, Key } from 'lucide-react'; import { Button } from '@/components/ui/button'; interface AIProviderSettingsProps { aiEnabled: boolean; aiProvider: 'claude' | 'openai' | 'gemini'; claudeApiKey: string; openaiApiKey: string; geminiApiKey: string; showApiKeys: Record; onAiEnabledChange: (enabled: boolean) => void; onProviderChange: (provider: 'claude' | 'openai' | 'gemini') => void; onClaudeApiKeyChange: (key: string) => void; onOpenaiApiKeyChange: (key: string) => void; onGeminiApiKeyChange: (key: string) => void; onToggleApiKeyVisibility: (provider: 'claude' | 'openai' | 'gemini') => void; maskApiKey: (key: string) => string; } const PROVIDERS = [ { value: 'claude', label: 'Claude (Anthropic)', description: 'Advanced AI by Anthropic' }, { value: 'openai', label: 'OpenAI (GPT-4)', description: 'GPT-4 by OpenAI' }, { value: 'gemini', label: 'Gemini (Google)', description: 'Gemini by Google' } ]; export function AIProviderSettings({ aiEnabled, aiProvider, claudeApiKey, openaiApiKey, geminiApiKey, showApiKeys, onAiEnabledChange, onProviderChange, onClaudeApiKeyChange, onOpenaiApiKeyChange, onGeminiApiKeyChange, onToggleApiKeyVisibility, maskApiKey }: AIProviderSettingsProps) { return (
AI Provider & API Keys
Select your AI provider and configure API keys
{/* Master Toggle */}

Enable AI Features

Master toggle to enable/disable all AI-powered features

{aiEnabled && ( <> {/* Provider Selection */}
{/* API Keys for each provider */}
{/* Claude API Key */}
onClaudeApiKeyChange(e.target.value)} placeholder={showApiKeys.claude ? "sk-ant-..." : maskApiKey(claudeApiKey) || "sk-ant-..."} className="border-gray-200 focus:border-re-green focus:ring-2 focus:ring-re-green/20 font-mono text-sm" />

Get your API key from console.anthropic.com

{/* OpenAI API Key */}
onOpenaiApiKeyChange(e.target.value)} placeholder={showApiKeys.openai ? "sk-..." : maskApiKey(openaiApiKey) || "sk-..."} className="border-gray-200 focus:border-re-green focus:ring-2 focus:ring-re-green/20 font-mono text-sm" />

Get your API key from platform.openai.com

{/* Gemini API Key */}
onGeminiApiKeyChange(e.target.value)} placeholder={showApiKeys.gemini ? "AIza..." : maskApiKey(geminiApiKey) || "AIza..."} className="border-gray-200 focus:border-re-green focus:ring-2 focus:ring-re-green/20 font-mono text-sm" />

Get your API key from ai.google.dev

)}
); }