import { useState, useEffect } from 'react'; import { Key } from 'lucide-react'; import './ApiKeysPanel.css'; interface ApiKeysPanelProps { visible: boolean; onSave: (keys: { openai_api_key: string; arraylake_api_key: string }) => void; configured?: boolean; } export default function ApiKeysPanel({ visible, onSave, configured }: ApiKeysPanelProps) { const [openaiKey, setOpenaiKey] = useState(''); const [arraylakeKey, setArraylakeKey] = useState(''); const [saving, setSaving] = useState(false); // Reset saving state when keys are confirmed configured useEffect(() => { if (configured) setSaving(false); }, [configured]); // Restore from sessionStorage useEffect(() => { const saved = sessionStorage.getItem('eurus-keys'); if (saved) { try { const k = JSON.parse(saved); if (k.openai_api_key) setOpenaiKey(k.openai_api_key); if (k.arraylake_api_key) setArraylakeKey(k.arraylake_api_key); } catch { /* ignore */ } } }, []); if (!visible) return null; const handleSubmit = () => { if (!openaiKey.trim()) return; setSaving(true); onSave({ openai_api_key: openaiKey.trim(), arraylake_api_key: arraylakeKey.trim() }); }; return (
API Keys Required

Enter your API keys to use Eurus. Keys are kept in your browser session only — cleared when you close the browser.

setOpenaiKey(e.target.value)} placeholder="sk-..." autoComplete="off" onKeyDown={e => { if (e.key === 'Enter') handleSubmit(); }} />
setArraylakeKey(e.target.value)} placeholder="ema_..." autoComplete="off" onKeyDown={e => { if (e.key === 'Enter') handleSubmit(); }} />
); }