/* ============================================================
resume_interview.jsx — интервью на родном языке.
Человек отвечает тапами и своими словами; из ответов
собирается профиль, из профиля — резюме. Никакой клавиатуры
не требуется: расчёт на людей, которым тяжело печатать.
============================================================ */
/* ---------- шапка: насколько резюме заполнено ---------- */
function ResumeProgress({ profile, pct, rt, lang }) {
const chips = [];
if (profile.name) chips.push({ icon: 'users', text: profile.name });
if (profile.age) chips.push({ icon: 'calendar', text: `${profile.age}` });
if (profile.city) chips.push({ icon: 'pin', text: tr(profile.city, lang) });
if (profile.prof) chips.push({ icon: 'tool', text: tr((PROF_CV[profile.prof] || PROF_CV.other).title, lang) });
if (profile.exp != null) chips.push({ icon: 'briefcase', text: expWords(profile.exp, lang) });
if (profile.certUploaded) chips.push({ icon: 'doc', text: rt.cv_certs });
if (profile.photo) chips.push({ icon: 'camera', text: rt.photoDone });
if (!chips.length) return null;
return (
{chips.map((c, i) => (
{c.text}
))}
);
}
/* ---------- «вы сказали» → «в резюме это будет так» ---------- */
function SampleCard({ duty, lang, rt }) {
return (
{rt.howItSounds}
«{tr(duty, lang)}»
{rt.howItSoundsEn}
{duty.en}
);
}
/* ---------- множественный выбор: что делали на работе ---------- */
function MultiPick({ duties, lang, rt, onDone }) {
const [sel, setSel] = useState([]);
const toggle = (i) => setSel(p => p.includes(i) ? p.filter(x => x !== i) : [...p, i]);
return (
{rt.multiHint}
{duties.map((d, i) => {
const on = sel.includes(i);
return (
);
})}
);
}
/* ---------- сборка резюме ---------- */
function BuildOverlay({ rt }) {
return (
{[0, 1, 2].map(i => (
))}
{rt.building}…
{rt.buildingSub}
);
}
Object.assign(window, { ResumeProgress, SampleCard, MultiPick, BuildOverlay });