// Doctor detail page const { useState: p2S, useMemo: p2M } = React; const DoctorDetailPage = ({ doctorId, onBook }) => { const doctor = p2M(() => DATA.doctors.find(d => d.id === doctorId), [doctorId]) || DATA.doctors[0]; const [tab, setTab] = p2S('about'); // Related doctors (same direction, different person) const related = p2M(() => { if (!doctor.directions) return []; return DATA.doctors .filter(d => d.id !== doctor.id && d.directions && d.directions.some(dir => doctor.directions.includes(dir))) .slice(0, 4); }, [doctor]); // Linked direction names const linkedDirs = (doctor.directions || []).map(id => DATA.directions.find(d => d.id === id)).filter(Boolean); return ( <> {doctor.photo ? : } {doctor.degree && {doctor.degree}} {doctor.specs[0]} {doctor.fullName} {doctor.specs.join(' · ')} Стаж {doctor.experience} Приём {doctor.price} {doctor.degree && ( Степень {doctor.degree} )} Место приёма {DATA.brand.address.split(',')[0]} {linkedDirs.length > 0 && ( {linkedDirs.map(d => ( {d.name} ))} )} Записаться на приём WhatsApp {/* TABS */} {[ ['about', 'О враче'], ['education', 'Образование'], ['treats', 'Что лечит'], ['schedule', 'Расписание'], ].map(([id, label]) => ( setTab(id)} >{label} ))} {tab === 'about' && ( {doctor.bio} {doctor.awards && doctor.awards.length > 0 && ( <> Регалии и членство {doctor.awards.map((a, i) => {a})} > )} )} {tab === 'education' && ( Образование и стажировки {doctor.education && doctor.education.map((e, i) => ( {e} ))} )} {tab === 'treats' && ( Заболевания и состояния {doctor.treats && doctor.treats.map((t, i) => ( {t} ))} )} {tab === 'schedule' && ( График приёма на этой неделе {doctor.schedule && Object.entries(doctor.schedule).map(([day, time]) => ( {day} {time} ))} Время приёма может отличаться. Уточняйте у администратора при записи. Записаться на приём )} {/* RELATED DOCTORS */} {related.length > 0 && ( {related.map(d => )} )} > ); }; Object.assign(window, { DoctorDetailPage });
{doctor.bio}
Время приёма может отличаться. Уточняйте у администратора при записи.