/* ============================================================ screen_services.jsx — вкладка «Услуги». Четыре продукта: резюме (главный), консультация, курсы профессий, помощь с документами. Оплата резюме происходит ЗДЕСЬ, до интервью; после оплаты человека отправляем в Помощник — интервью идёт там. ============================================================ */ /* ---------- общая карточка услуги ---------- */ function ServiceCard({ icon, iconBg, title, sub, price, cta, onClick, delay = 0, badge, img, children }) { return (
{img && (
{price && ( {price} )}
)}
{title}
{badge}
{sub}
{children} {cta && ( )}
); } 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}
) : (
)}
); } /* ---------- экран ---------- */ 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 });