/* ============================================================ RESTO SUITE — BUSINESS IDEA MODULE (UI) Depends on suite-idea.jsx (logic) + suite-shared.jsx ============================================================ */ const { useState: useStateIU, useRef: useRefIU } = React; /* ---------- guided interview ---------- */ function InterviewView({ idea, setIdea, onFinish }) { const { t, lang } = useLang(); const qi = idea.interview.qIndex; const done = qi >= INTERVIEW.length; const q = INTERVIEW[Math.min(qi, INTERVIEW.length - 1)]; const [draft, setDraft] = useStateIU(""); const [lastHeard, setLastHeard] = useStateIU(null); const check = computeIdea(idea, t, lang); const goTo = (i) => { setLastHeard(null); setDraft(idea.interview.answers[INTERVIEW[i].id] || ""); setIdea({ interview: { ...idea.interview, qIndex: i } }); }; const submit = (skip) => { let heard = []; if (!skip && draft.trim()) { const res = askInterview({ questionId: q.id, answer: draft, idea }); const p = { ...res.patch }; if (p.format) p.format = { ...idea.format, ...p.format }; if (p.founder) p.founder = { ...idea.founder, ...p.founder }; heard = res.heard; const nextIndex = Math.max(qi + 1, idea.interview.maxIndex || 0); setIdea({ ...p, interview: { ...idea.interview, qIndex: qi + 1 === INTERVIEW.length ? INTERVIEW.length : (idea.interview.maxIndex >= INTERVIEW.length ? INTERVIEW.length : qi + 1), maxIndex: nextIndex, answers: { ...idea.interview.answers, [q.id]: draft } } }); } else { setIdea({ interview: { ...idea.interview, qIndex: idea.interview.maxIndex >= INTERVIEW.length ? INTERVIEW.length : qi + 1, maxIndex: Math.max(qi + 1, idea.interview.maxIndex || 0) } }); } setLastHeard(heard.length ? heard : skip ? null : [[t("idea.notedLabel"), t("idea.noted")]]); setDraft(""); }; if (done) { return (
{t("idea.doneTitle")}

{t("idea.doneDesc", { filled: check.filled, total: check.total })}

{/* revisit any answer */}
{t("idea.yourAnswers")}
{INTERVIEW.map((it, i) => ( ))}
); } return (
{/* progress */}
{qi + 1} / {INTERVIEW.length} {check.filled}/{check.total} {t("idea.progressFields")}
{lastHeard && (
{lastHeard.map(([k, v], i) => ( ✓ {heardLabel(lang, k)}: {v} ))}
)}
{t("q." + q.id + ".q")}
{t("q." + q.id + ".hint")}