import { FormEvent, useState } from 'react'; import { KeyRound, Link, PlugZap, Save } from 'lucide-react'; import { useCompanion } from '../../api/CompanionContext.js'; import { CompanionClient, DEFAULT_COMPANION_URL } from '../../api/companionClient.js'; export function SettingsScreen() { const { client, settings, updateSettings } = useCompanion(); const [baseUrl, setBaseUrl] = useState(settings.baseUrl); const [accessKey, setAccessKey] = useState(settings.accessKey); const [status, setStatus] = useState('Run companion setup, paste the access key, then test the connection.'); function save(event: FormEvent): void { event.preventDefault(); updateSettings({ baseUrl: baseUrl || DEFAULT_COMPANION_URL, accessKey }); setStatus('Settings saved.'); } async function testConnection(): Promise { updateSettings({ baseUrl: baseUrl || DEFAULT_COMPANION_URL, accessKey }); setStatus('Testing connection…'); try { const testClient = new CompanionClient({ baseUrl: baseUrl || DEFAULT_COMPANION_URL, accessKey }); await testClient.health(); const response = await testClient.validate(); setStatus(response.message); } catch (caughtError) { setStatus(caughtError instanceof Error ? caughtError.message : 'Connection failed'); } } return (

Nest setup

Pair your companion

{status}

setBaseUrl(event.target.value)} placeholder={DEFAULT_COMPANION_URL} type="url" value={baseUrl} /> setAccessKey(event.target.value)} placeholder="hm_…" type="password" value={accessKey} />
); }