diff --git a/frontend/src/i18n/dict.ts b/frontend/src/i18n/dict.ts index 1e5bade..8602c7f 100644 --- a/frontend/src/i18n/dict.ts +++ b/frontend/src/i18n/dict.ts @@ -13,6 +13,9 @@ export const fa = { switchLangAria: 'تغییر زبان به انگلیسی', understood: 'متوجه شدم', paginationAria: 'صفحه‌بندی پروژه‌ها', + prevProject: 'پروژهٔ قبلی', + nextProject: 'پروژهٔ بعدی', + projectNavAria: 'پیمایش بین پروژه‌ها', previousPage: 'صفحهٔ قبل', nextPage: 'صفحهٔ بعد', @@ -145,6 +148,9 @@ export const en: Dict = { switchLangAria: 'Switch language to Persian (Farsi)', understood: 'Got it', paginationAria: 'Projects pagination', + prevProject: 'Previous project', + nextProject: 'Next project', + projectNavAria: 'Browse projects', previousPage: 'Previous page', nextPage: 'Next page', diff --git a/frontend/src/pages/ProjectDetail.tsx b/frontend/src/pages/ProjectDetail.tsx index 27148ac..67a4d5a 100644 --- a/frontend/src/pages/ProjectDetail.tsx +++ b/frontend/src/pages/ProjectDetail.tsx @@ -79,6 +79,15 @@ export function ProjectDetail() { } const related = projects.filter((p) => p.slug !== project.slug).slice(0, 3) + + /** + * پیمایش پروژه‌ها — همان ترتیبی که فهرست پروژه‌ها دارد (position از API). + * در ابتدا/انتهای فهرست، حلقه می‌زند تا کاوش هیچ‌وقت قطع نشود. + */ + const currentIndex = projects.findIndex((p) => p.slug === project.slug) + const total = projects.length + const prevProject = total > 1 ? projects[(currentIndex - 1 + total) % total] : undefined + const nextProject = total > 1 ? projects[(currentIndex + 1) % total] : undefined // مشخصات هر پروژه — همان فهرستی که تیم داده دارد: // وضعیت / سال / تعداد طبقات / واحدها / نوع پروژه / زیربنا / کاربری @@ -219,6 +228,48 @@ export function ProjectDetail() { + {/* پیمایش پروژه‌ها — رفتن به پروژهٔ قبلی/بعدی بدون بازگشت به فهرست */} + {(prevProject || nextProject) && ( + + )} +

{t('otherProjects')}