import { useCallback, useState } from "react"; import type { ChatMessage, JobExtract, ResumePlan } from "../shared/types"; import { Home } from "./screens/Home"; import { PdfScreen } from "./screens/Pdf"; import { Workspace } from "./screens/Workspace"; export interface GeneratedResume { plan: ResumePlan; source: "ai" | "fallback"; note?: string; latex: string; pdfUrl: string; } type Stage = | { name: "home" } | { name: "workspace"; jd: JobExtract } | { name: "pdf"; jd: JobExtract; result: GeneratedResume }; export function App() { const [stage, setStage] = useState({ name: "home" }); const [chat, setChat] = useState([]); const openWorkspace = useCallback((jd: JobExtract) => { setChat([]); setStage({ name: "workspace", jd }); }, []); if (stage.name === "home") return ; if (stage.name === "workspace") { return ( setStage({ name: "home" })} onGenerated={(result) => setStage({ name: "pdf", jd: stage.jd, result })} /> ); } return ( setStage({ name: "workspace", jd: stage.jd })} onRecompiled={(result) => setStage({ name: "pdf", jd: stage.jd, result })} /> ); }