/* ============================================================ screen_jobs.jsx — Matched roles (with reasoning) + internships ============================================================ */ function MatchPill({ value }) { const color = value >= 90 ? 'var(--good)' : value >= 80 ? 'var(--amber)' : 'var(--indigo-500)'; return (
{value}
); } function JobCard({ job, lang, t, delay }) { const [open, setOpen] = useState(false); const [applied, setApplied] = useState(false); return (
{tr(job.title, lang)}
{brandName(job.brand)} · {tr(job.salary, lang)}
{/* tags */}
{job.hot && {t.hot}} {job.tags.map((tg, i) => ( {tr(tg, lang)} ))}
{/* why toggle */}
{open && (
{job.why.map((w, i) => (
{tr(w, lang)}
))}
)} {/* actions */}
); } function InternCard({ job, lang, t, delay }) { return (
{tr(job.title, lang)}
{brandName(job.brand)} · {job.months} {t.months}
{job.pay && {t.internPay}} {job.gov && {t.govProg}}
); } function JobsScreen({ lang, theme, setLang, setTheme, t }) { const [tab, setTab] = useState('jobs'); return (
} t={t} /> {/* segmented tabs */}
{[['jobs', t.tab_jobs], ['intern', t.tab_intern]].map(([k, label]) => { const on = tab === k; return ( ); })}
{tab === 'jobs' ? JOBS.map((j, i) => ) : <>
{lang === 'ru' ? 'Стажировки и практика для студентов и выпускников. Часть — по госпрограммам.' : 'Talaba va bitiruvchilar uchun amaliyot. Bir qismi — davlat dasturlari bo‘yicha.'}
{INTERNS.map((j, i) => )} }
); } Object.assign(window, { JobsScreen });