import React, { useState, useEffect } from 'react'; import Close from '@mui/icons-material/Close'; import { useTranscriptionStore, LLMConfig } from '../../../../../stores/transcriptionStore'; const PROVIDERS = [ { value: 'openai', label: 'OpenAI' }, { value: 'anthropic', label: 'Anthropic' }, { value: 'ollama', label: 'Ollama' }, { value: 'openrouter', label: 'OpenRouter' }, { value: 'google', label: 'Google' }, ] as const; const LLMConfigModal: React.FC<{ isOpen: boolean; onClose: () => void }> = ({ isOpen, onClose }) => { const { llmConfig, setLLMConfig } = useTranscriptionStore(); const [form, setForm] = useState(llmConfig); const [saved, setSaved] = useState(false); useEffect(() => { if (isOpen) { setForm(useTranscriptionStore.getState().llmConfig); setSaved(false); } }, [isOpen]); const handleSave = () => { setLLMConfig(form); setSaved(true); setTimeout(() => setSaved(false), 2000); }; if (!isOpen) return null; return (
{/* Backdrop */}
{/* Modal panel */}
{/* Header */}

LLM Provider Settings

{/* Content */}
{/* Provider dropdown */}
{/* Model name */}
setForm({ ...form, model: e.target.value })} placeholder="e.g. gpt-4o, claude-sonnet-4-20250514" className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" />
{/* API Key */}
setForm({ ...form, apiKey: e.target.value })} placeholder="sk-..." className="w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" />
{/* Note */}

API keys are stored locally in your browser only. They are never sent to Supabase or stored on any server.

{/* Save button */}
); }; export default LLMConfigModal;