/* ============================================================
screen_services.jsx — вкладка «Услуги».
Четыре продукта: резюме (главный), консультация, курсы
профессий, помощь с документами.
Оплата резюме происходит ЗДЕСЬ, до интервью; после оплаты
человека отправляем в Помощник — интервью идёт там.
============================================================ */
/* ---------- общая карточка услуги ---------- */
function ServiceCard({ icon, iconBg, title, sub, price, cta, onClick, delay = 0, badge, img, children }) {
return (
{img && (
{price && (
{price}
)}
)}
{children}
{cta && (
{cta}{price && !img && · {price} }
)}
);
}
function CheckLine({ text, i }) {
return (
{text}
);
}
/* ---------- карточка курса ---------- */
function CourseCard({ course, lang, sv, enrolled, onEnroll, delay }) {
const [open, setOpen] = useState(false);
return (
{tr(course.title, lang)}
{tr(course.term, lang)} · {fmtMln(course.price, lang)}
{tr(course.sub, lang)}
{sv.courseSalary}
{tr(course.salary, lang)}
{open && (
{sv.courseOpens}
{course.opens.map((o, i) => (
{tr(o, lang)}
))}
)}
{enrolled ? (
{sv.courseEnrolled}
) : (
setOpen(o => !o)} style={{
flex: 1, height: 40, borderRadius: 'var(--r-md)', background: 'var(--surface-2)',
border: '1px solid var(--border)', fontSize: 12.5, fontWeight: 700, color: 'var(--text-2)',
}}>{sv.learnMore}
{sv.book}
)}
);
}
/* ---------- экран ---------- */
function ServicesScreen({ lang, theme, setLang, setTheme, t, go,
resumeState, setResumeState, consultPaid, courseId, setCourseId }) {
const sv = SVC_UI[lang];
const [pay, setPay] = useState(null); // null | 'sheet' | 'processing'
const [docsSent, setDocsSent] = useState(false);
// оплата резюме: шторка → «переходим в банк» → оплачено → в Помощник
const startResume = () => {
if (resumeState === 'done') { go('profile'); return; }
if (resumeState === 'paid') { go('advisor', 'resume'); return; }
setPay('sheet');
};
const pickMethod = () => {
setPay('processing');
setTimeout(() => {
setPay(null);
setResumeState('paid');
go('advisor', 'resume');
}, 2200);
};
return (
} />
{/* 1. резюме — главный продукт */}
{sv.paid}
)}>
{sv.resumeBullets.map((b, i) => )}
{resumeState === 'no' && (
{sv.resumePayNote}
)}
{/* 2. консультация */}
go('consult')} delay={0.06}
badge={consultPaid && (
{sv.paid}
)} />
{/* 3. курсы */}
{sv.coursesTitle}
{sv.coursesSub}
{COURSES.map((c, i) => (
setCourseId(c.id)} delay={0.05 * i} />
))}
{/* 4. документы */}
setDocsSent(true)} delay={0.18}>
{sv.docsBullets.map((b, i) => )}
{docsSent && (
{sv.docsDone}
)}
{pay === 'sheet' &&
setPay(null)} />}
{pay === 'processing' && }
);
}
Object.assign(window, { ServicesScreen });