import { Check, Loader2, Monitor } from 'lucide-react'; import { useState } from 'react'; import { apiFetch, requestPersistentStorage, setToken } from './api.js'; export function PairingScreen({ onPaired }) { const [code, setCode] = useState(''); const [error, setError] = useState(''); const [pairing, setPairing] = useState(false); async function handlePair(event) { event.preventDefault(); setPairing(true); setError(''); try { const result = await apiFetch('/api/pair', { method: 'POST', body: { code, deviceName: navigator.platform || 'iPhone' } }); setToken(result.token); requestPersistentStorage(); onPaired(); } catch (err) { setError(err.message); } finally { setPairing(false); } } return (

CodexMobile

输入电脑端启动日志里的配对码。

setCode(event.target.value.replace(/\D/g, '').slice(0, 6))} />
{error ?
{error}
: null}
); }