import { useState } from "react"; import type { GeneratedResume } from "../App"; import { ApiRequestError, compilePdf } from "../api"; interface PdfScreenProps { result: GeneratedResume; onBack: () => void; onRecompiled: (result: GeneratedResume) => void; } export function PdfScreen({ result, onBack, onRecompiled }: PdfScreenProps) { const [latex, setLatex] = useState(result.latex); const [busy, setBusy] = useState(false); const [error, setError] = useState(""); const dirty = latex !== result.latex; async function recompile(): Promise { if (busy) return; setBusy(true); setError(""); try { const blob = await compilePdf(latex); URL.revokeObjectURL(result.pdfUrl); onRecompiled({ ...result, latex, pdfUrl: URL.createObjectURL(blob) }); } catch (err) { if (err instanceof ApiRequestError && err.log) { setError(`${err.message}\n\n${err.log}`); } else { setError(err instanceof Error ? err.message : String(err)); } } finally { setBusy(false); } } return (
Tailored résumé plan source: {result.source} {result.note ? ` (${result.note})` : ""}
Download PDF
{error &&
{error}
}

LaTeX source {dirty && (edited — recompile to refresh preview)}