// Student-facing screens: dashboard (continue learning), catalog, course detail. function StudentSidebar({ active, onNav }) { const items = [ { id: 'dash', fa: 'خانه', icon: 'home' }, { id: 'mycourses',fa: 'دوره‌های من', icon: 'book', badge: '۳' }, { id: 'catalog', fa: 'کاوش دوره‌ها', icon: 'search' }, { id: 'cert', fa: 'گواهی‌نامه‌ها', icon: 'cert' }, { id: 'chat', fa: 'گفت‌وگو', icon: 'chat' }, ]; return ( ); } function CourseCard({ c, onOpen }) { return (
onOpen?.(c)} style={{ cursor: 'pointer', overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>
{c.badge && ( {c.badge} )}
{c.cat} · {c.level}
{c.title}
توسط {c.instructor}
{c.rating && (<> {String(c.rating).replace(/\d/g, d => '۰۱۲۳۴۵۶۷۸۹'[d])} ({String(c.reviews).replace(/\d/g, d => '۰۱۲۳۴۵۶۷۸۹'[d])}) )} {String(c.hours).replace(/\d/g, d => '۰۱۲۳۴۵۶۷۸۹'[d])} ساعت
{c.price} تومان {c.oldPrice && ( {c.oldPrice} )}
); } function fa(s) { return String(s).replace(/\d/g, d => '۰۱۲۳۴۵۶۷۸۹'[d]); } // — Dashboard — function StudentDash({ onOpen }) { const { MY_COURSES, CATALOG, FEATURED_INSTRUCTORS } = window.STUDENT_DATA; const inProgress = MY_COURSES.filter(c => !c.completed); const continueWith = inProgress[0]; return (
{/* greeting + continue hero */}
سلام سارا 👋 ادامه بدیم؟

{continueWith.title}

درس بعدی: {continueWith.nextLesson}
{fa(continueWith.completedLessons)} از {fa(continueWith.totalLessons)} درس {fa(continueWith.progress)}٪
هدف هفتگی ۴ از ۵ روز
{['ش','ی','د','س','چ','پ','ج'].map((d, i) => (
{d}
{i < 4 && } {i === 4 && اکنون}
))}
۴ روز پیاپی! امروز هم ادامه بده.
{/* my courses */}

دوره‌های من

مشاهده همه ←
{MY_COURSES.map(c => (
{c.completed && تکمیل شد}
{c.title}
توسط {c.instructor}
{fa(c.completedLessons)} از {fa(c.totalLessons)} درس {fa(c.progress)}٪
))}
{/* recommended */}

پیشنهاد برای تو

بر اساس دوره‌های در حال یادگیری

onOpen('catalog')}>کاوش بیشتر ←
{CATALOG.slice(0, 4).map(c => onOpen('detail')} />)}
); } // — Catalog — function StudentCatalog({ onOpen }) { const { CATALOG, CATEGORIES, FEATURED_INSTRUCTORS } = window.STUDENT_DATA; const [cat, setCat] = React.useState('all'); return (
{/* hero search */}

چی می‌خوای یاد بگیری امروز؟

۲۴۰ دوره از بهترین مدرس‌های ایران

{/* categories */}
{CATEGORIES.map(c => ( ))}
{/* featured instructors strip */}

مدرس‌های منتخب

پس از خرید پکیج هر مدرس، به فضای اختصاصی او دسترسی پیدا می‌کنی
همه ←
{FEATURED_INSTRUCTORS.map(i => (
{i.initials}
{i.name} {i.verified && }
{i.topic}
⭐ {fa(i.rating)} · {fa(i.students)} دانشجو
))}
{/* course grid */}

همه‌ی دوره‌ها

{CATALOG.map(c => onOpen('detail')} />)}
); } // — Course Detail — function StudentCourseDetail() { const c = window.STUDENT_DATA.COURSE_DETAIL; const [tab, setTab] = React.useState('overview'); return (
{/* hero */}
پرفروش طراحی {c.level}

{c.title}

{c.titleEn}

{c.tagline}

{fa(c.rating)} ({fa(c.reviews)} نظر) {fa(c.students)} دانشجو {fa(c.hours)} ساعت
{c.instructor.initials}
توسط {c.instructor.name}
{c.instructor.topic}
پیش‌نمایش رایگان · ۲ دقیقه
{/* highlights */}

چی یاد می‌گیری

{c.highlights.map((h, i) => (
{h}
))}
{/* tabs */}
{[['overview','سرفصل‌ها'],['instructor','مدرس'],['reviews','نظرات'],['faq','سؤالات']].map(([k,v]) => ( ))}
{tab === 'overview' && (
{c.curriculum.map((m, i) => (
{fa(i+1)}
{m.title}
{fa(m.lessons)} درس · {fa(m.minutes)} دقیقه
))}
)} {tab === 'instructor' && (
{c.instructor.initials}
{c.instructor.name}
{c.instructor.topic}
⭐ {fa(c.instructor.rating)} {fa(c.instructor.students)} دانشجو {fa(c.instructor.courses)} دوره

آرش پاکدل ۱۰ سال در شرکت‌های فناوری ایرانی به‌عنوان طراح ارشد محصول کار کرده و تجربه‌ی همکاری با تیم‌های مهندسی، محصول و بازاریابی را دارد. علاقه‌اش آموزش طراحی به زبان ساده و کاربردی است.

)} {tab === 'reviews' && (
{c.reviewsList.map((r, i) => (
{r.initials}
{r.name} {r.when}
{[1,2,3,4,5].map(n => ( ))}

{r.text}

))}
)} {tab === 'faq' && (
{c.faq.map((f, i) => (
{f.q}

{f.a}

))}
)}
{/* purchase rail */}
{c.price} تومان {c.oldPrice && (<> {c.oldPrice} {c.discount} تخفیف )}
این تخفیف ۲ روز دیگر تموم می‌شه
{[ { ic: 'video', t: `${fa(c.lessons)} درس · ${fa(c.hours)} ساعت ویدیو` }, { ic: 'file', t: 'فایل‌های دانلودی + تمرین‌های عملی' }, { ic: 'cert', t: 'گواهی پایان دوره با امضای مدرس' }, { ic: 'phone', t: 'دسترسی مادام‌العمر، روی هر دستگاه' }, { ic: 'globe', t: `زبان: ${c.language} · به‌روزرسانی: ${c.updated}` }, ].map((x, i) => (
{x.t}
))}
); } window.StudentDash = StudentDash; window.StudentCatalog = StudentCatalog; window.StudentCourseDetail = StudentCourseDetail; window.StudentSidebar = StudentSidebar;