diff --git a/src/components/PageTitle.tsx b/src/components/PageTitle.tsx new file mode 100644 index 0000000..fd72e34 --- /dev/null +++ b/src/components/PageTitle.tsx @@ -0,0 +1,13 @@ +import { type FC } from 'react' +import { useLocation } from 'react-router-dom' +import TitleLine from './TitleLine' +import { getPageTitle } from '../config/PageTitles' + +const PageTitle: FC = () => { + const location = useLocation() + const title = getPageTitle(location.pathname) + + return +} + +export default PageTitle diff --git a/src/components/TitleLine.tsx b/src/components/TitleLine.tsx index ebf5cbc..99d70ff 100644 --- a/src/components/TitleLine.tsx +++ b/src/components/TitleLine.tsx @@ -6,7 +6,7 @@ type Props = { const TitleLine: FC = (props: Props) => { return ( -
+
{props.title}
diff --git a/src/config/PageTitles.ts b/src/config/PageTitles.ts new file mode 100644 index 0000000..25c034c --- /dev/null +++ b/src/config/PageTitles.ts @@ -0,0 +1,354 @@ +import { Pages } from "./Pages"; + +export const PageTitles = { + // Dashboard + [Pages.dashboard]: "نمای کلی داشبورد", + + // Products + [Pages.products.list]: "لیست محصولات", + [Pages.products.create]: "افزودن محصول جدید", + [Pages.products.update]: "ویرایش محصول", + [Pages.products.variants]: "مدیریت تنوع محصول", + [Pages.products.brands.list]: "لیست برندها", + [Pages.products.brands.create]: "افزودن برند جدید", + [Pages.products.brands.update]: "ویرایش برند", + [Pages.products.warranty.list]: "لیست گارانتی‌ها", + [Pages.products.warranty.create]: "افزودن گارانتی جدید", + [Pages.products.warranty.update]: "ویرایش گارانتی", + + // Categories + [Pages.category.list]: "لیست دسته‌بندی‌ها", + [Pages.category.create]: "افزودن دسته‌بندی جدید", + [Pages.category.update]: "ویرایش دسته‌بندی", + [Pages.category.variant]: "مدیریت تنوع دسته‌بندی", + [Pages.category.attributes]: "ویژگی‌های دسته‌بندی", + + // Orders + [Pages.orders.native]: "سفارشات", + [Pages.orders.sellers]: "سفارشات فروشندگان", + [Pages.orders.completed]: "سفارشات تکمیل شده", + [Pages.orders.cancelled]: "سفارشات لغو شده", + [Pages.orders.pending]: "سفارشات در انتظار", + [Pages.orders.detail]: "جزئیات سفارش", + [Pages.orders.cancellationCategories]: "دسته‌بندی‌های لغو سفارش", + [Pages.orders.returnCategories]: "دسته‌بندی‌های بازگشت سفارش", + + // Sellers + [Pages.sellers.list]: "لیست فروشندگان", + [Pages.sellers.wholesaleRequests]: "درخواست‌های عمده‌فروشی", + [Pages.sellers.withdrawalRequests]: "درخواست‌های برداشت وجه", + [Pages.sellers.announcement]: "اعلانات فروشندگان", + [Pages.sellers.requestCreateProduct]: "درخواست ایجاد محصول", + [Pages.sellers.learningCategory]: "دسته‌بندی‌های آموزشی", + [Pages.sellers.learning]: "آموزش‌ها", + [Pages.sellers.learningCreate]: "افزودن آموزش جدید", + [Pages.sellers.learningUpdate]: "ویرایش آموزش", + [Pages.sellers.contract]: "قرارداد فروشندگان", + + // Financial + [Pages.financial.list]: "تراکنش‌های مالی", + [Pages.financial.fines]: "جریمه‌ها", + [Pages.financial.createFine]: "ایجاد جریمه جدید", + + // Reports + [Pages.report.product]: "گزارش محصولات", + [Pages.report.category]: "گزارش دسته‌بندی‌ها", + + // Admin + [Pages.admin.list]: "لیست ادمین‌ها", + [Pages.admin.create]: "افزودن ادمین جدید", + [Pages.admin.detail]: "جزئیات ادمین", + [Pages.admin.roleList]: "لیست نقش‌ها", + [Pages.admin.roleCreate]: "افزودن نقش جدید", + [Pages.admin.groupAdd]: "افزودن گروه جدید", + [Pages.admin.groupList]: "لیست گروه‌ها", + + // Customers + [Pages.customer.list]: "لیست مشتریان", + [Pages.customer.create]: "افزودن مشتری جدید", + [Pages.customer.update]: "ویرایش مشتری", + + // Coupons + [Pages.coupon.list]: "لیست کوپن‌ها", + [Pages.coupon.create]: "افزودن کوپن جدید", + [Pages.coupon.detail]: "ویرایش کوپن", + + // Blogs + [Pages.blog.list]: "لیست بلاگ‌ها", + [Pages.blog.create]: "افزودن بلاگ جدید", + [Pages.blog.category]: "دسته‌بندی‌های بلاگ", + [Pages.blog.detail]: "جزئیات بلاگ", + [Pages.blog.comments]: "کامنت‌های بلاگ", + + // Tickets + [Pages.ticket.list]: "لیست تیکت‌ها", + [Pages.ticket.create]: "ایجاد تیکت جدید", + [Pages.ticket.detail]: "جزئیات تیکت", + [Pages.ticket.category.list]: "دسته‌بندی‌های تیکت", + [Pages.ticket.category.create]: "افزودن دسته‌بندی تیکت", + [Pages.ticket.category.update]: "ویرایش دسته‌بندی تیکت", + + // Jobs + [Pages.jobs.list]: "لیست آگهی‌های شغلی", + [Pages.jobs.resumes]: "رزومه‌ها", + + // Contact Us + [Pages.contactUs.list]: "لیست تماس با ما", + + // Payment + [Pages.payment.list]: "لیست پرداخت‌ها", + + // Card Bank + [Pages.cardBank.list]: "لیست کارت‌های بانکی", + [Pages.cardBank.create]: "افزودن کارت بانکی جدید", + [Pages.cardBank.detail]: "جزئیات کارت بانکی", + + // Shipment + [Pages.shipment.list]: "لیست روش‌های ارسال", + [Pages.shipment.create]: "افزودن روش ارسال جدید", + [Pages.shipment.update]: "ویرایش روش ارسال", + + // Settings + [Pages.setting.shop]: "تنظیمات فروشگاه", + [Pages.setting.banners]: "تنظیمات بنرها", + [Pages.setting.siteSetting]: "تنظیمات سایت", + + // Learning + [Pages.learning.list]: "لیست آموزش‌ها", + [Pages.learning.create]: "افزودن آموزش جدید", + [Pages.learning.category]: "دسته‌بندی‌های آموزشی", + + // Announcements + [Pages.announcement.list]: "لیست اعلانات", + [Pages.announcement.create]: "افزودن اعلان جدید", + + // Support + [Pages.support.list]: "لیست پشتیبانی", + [Pages.support.create]: "ایجاد پشتیبانی جدید", + + // Services + [Pages.services.list]: "لیست خدمات", + + // Sliders + [Pages.sliders.list]: "لیست اسلایدرها", + [Pages.sliders.create]: "افزودن اسلایدر جدید", + + // Transactions + [Pages.transactions]: "تراکنش‌ها", + + // Receipts + [Pages.receipts.index]: "لیست رسیدها", + + // Wallet + [Pages.wallet]: "کیف پول", + + // Profile + [Pages.profile]: "پروفایل", + + // Buy Users + [Pages.buyUsers.list]: "لیست خریداران", + + // Ads + [Pages.ads.list]: "لیست تبلیغات", + [Pages.ads.create]: "افزودن تبلیغ جدید", + [Pages.ads.update]: "ویرایش تبلیغ", + + // Messages + [Pages.messages.list]: "لیست پیام‌ها", + + // Referral Code + [Pages.referralCode.list]: "لیست کدهای معرف", + + // Pages + [Pages.pages.aboutUs]: "درباره ما", + [Pages.pages.aboutUsCreate]: "افزودن درباره ما", + [Pages.pages.faq]: "سوالات متداول", + [Pages.pages.faqCreate]: "افزودن سوال متداول", + [Pages.pages.faqUpdate]: "ویرایش سوال متداول", + [Pages.pages.shipment]: "روش‌های ارسال", + [Pages.pages.privacy]: "سیاست حفظ حریم خصوصی", + [Pages.pages.returnPolicy]: "سیاست بازگشت کالا", + [Pages.pages.jobs]: "آگهی‌های شغلی", + [Pages.pages.documents]: "مستندات", + [Pages.pages.incomeTariff]: "تعرفه درآمد", + + // Feedback + [Pages.feedback.list]: "لیست بازخوردها", + + // Criticisms + [Pages.criticisms.list]: "لیست انتقادات", + + // Services + [Pages.services.list]: "لیست خدمات", + + // Sliders + [Pages.sliders.list]: "لیست اسلایدرها", + [Pages.sliders.create]: "افزودن اسلایدر جدید", + + // Transactions + [Pages.transactions]: "تراکنش‌ها", + + // Receipts + [Pages.receipts.index]: "لیست رسیدها", + + // Tickets + [Pages.ticket.list]: "لیست تیکت‌ها", + [Pages.ticket.create]: "ایجاد تیکت جدید", + [Pages.ticket.category.list]: "دسته‌بندی‌های تیکت", + + // Announcements + [Pages.announcement.list]: "لیست اعلانات", + + // Feedback + [Pages.feedback.list]: "لیست بازخوردها", + + // Learning + [Pages.learning.list]: "لیست آموزش‌ها", + + // Pages + [Pages.pages.aboutUs]: "درباره ما", + [Pages.pages.faq]: "سوالات متداول", + [Pages.pages.shipment]: "روش‌های ارسال", + [Pages.pages.privacy]: "سیاست حفظ حریم خصوصی", + [Pages.pages.returnPolicy]: "سیاست بازگشت کالا", + [Pages.pages.jobs]: "آگهی‌های شغلی", + [Pages.pages.documents]: "مستندات", + + // Settings + [Pages.setting.shop]: "تنظیمات فروشگاه", + [Pages.setting.banners]: "تنظیمات بنرها", + [Pages.setting.siteSetting]: "تنظیمات سایت", + + // Wallet + [Pages.wallet]: "کیف پول", + + // Profile + [Pages.profile]: "پروفایل", + + // Customers + [Pages.customer.list]: "لیست مشتریان", + + // Ads + [Pages.ads.list]: "لیست تبلیغات", + + // Blogs + [Pages.blog.list]: "لیست بلاگ‌ها", + [Pages.blog.category]: "دسته‌بندی‌های بلاگ", + + // Messages + [Pages.messages.list]: "لیست پیام‌ها", + + // Card Bank + [Pages.cardBank.list]: "لیست کارت‌های بانکی", + + // Reports + [Pages.report.product]: "گزارش محصولات", + + // Support + [Pages.support.list]: "لیست پشتیبانی", + + // Jobs + [Pages.jobs.list]: "لیست آگهی‌های شغلی", + + // Contact Us + [Pages.contactUs.list]: "لیست تماس با ما", + + // Additional mappings for remaining pages + [Pages.services.mine]: "خدمات من", + [Pages.services.other]: "خدمات دیگر", + [Pages.services.category]: "دسته‌بندی خدمات", + [Pages.services.add]: "افزودن خدمت", + [Pages.services.update]: "ویرایش خدمت", + [Pages.services.review]: "نظرات خدمات", + [Pages.services.guide]: "راهنمای خدمات", + [Pages.services.plan]: "طرح خدمات", + + [Pages.sliders.detail]: "جزئیات اسلایدر", + + [Pages.receipts.detail]: "جزئیات رسید", + [Pages.receipts.create]: "ایجاد رسید", + + [Pages.ticket.detail]: "جزئیات تیکت", + [Pages.ticket.category.create]: "ایجاد دسته‌بندی تیکت", + [Pages.ticket.category.update]: "ویرایش دسته‌بندی تیکت", + + [Pages.announcement.detail]: "جزئیات اعلان", + [Pages.announcement.create]: "ایجاد اعلان", + + [Pages.criticisms.detail]: "جزئیات انتقاد", + + [Pages.learning.detail]: "جزئیات آموزش", + [Pages.learning.create]: "ایجاد آموزش", + [Pages.learning.category]: "دسته‌بندی آموزش", + + [Pages.pages.aboutUsCreate]: "ایجاد درباره ما", + [Pages.pages.faqCreate]: "ایجاد سوال متداول", + [Pages.pages.faqUpdate]: "ویرایش سوال متداول", + [Pages.pages.incomeTariff]: "تعرفه درآمد", + + [Pages.buyUsers.list]: "لیست خریداران", + + [Pages.ads.create]: "ایجاد تبلیغ", + [Pages.ads.update]: "ویرایش تبلیغ", + + [Pages.blog.detail]: "جزئیات بلاگ", + [Pages.blog.comments]: "نظرات بلاگ", + [Pages.blog.create]: "ایجاد بلاگ", + + [Pages.messages.detail]: "جزئیات پیام", + + [Pages.customer.create]: "ایجاد مشتری", + [Pages.customer.update]: "ویرایش مشتری", + + [Pages.cardBank.create]: "ایجاد کارت بانکی", + [Pages.cardBank.detail]: "جزئیات کارت بانکی", + + [Pages.payment.list]: "لیست پرداخت‌ها", + + [Pages.report.category]: "گزارش دسته‌بندی", + + [Pages.support.create]: "ایجاد پشتیبانی", + [Pages.support.detail]: "جزئیات پشتیبانی", + [Pages.support.planUsers]: "کاربران طرح پشتیبانی", + + [Pages.category.detail]: "جزئیات دسته‌بندی", + + [Pages.orders.detailUser]: "جزئیات سفارش کاربر", + [Pages.orders.detailSeller]: "جزئیات سفارش فروشنده", + + [Pages.jobs.resumes]: "رزومه‌ها", + + [Pages.representative.list]: "لیست نمایندگان", + + [Pages.developers.list]: "لیست توسعه‌دهندگان", + + [Pages.coupon.detail]: "ویرایش کوپن", + + [Pages.referralCode.list]: "لیست کدهای معرف", + + [Pages.admin.detail]: "جزئیات ادمین", + [Pages.admin.roleList]: "لیست نقش‌ها", + [Pages.admin.roleCreate]: "ایجاد نقش", + [Pages.admin.groupAdd]: "افزودن گروه", + [Pages.admin.groupList]: "لیست گروه‌ها", + + [Pages.representative.list]: "لیست نمایندگان", +}; + +// Function to get page title based on current path +export const getPageTitle = (pathname: string): string => { + // First try exact match + if (PageTitles[pathname as keyof typeof PageTitles]) { + return PageTitles[pathname as keyof typeof PageTitles]; + } + + // Try partial matches for dynamic routes + for (const [path, title] of Object.entries(PageTitles)) { + if (pathname.startsWith(path)) { + return title; + } + } + + // Default title + return "پنل مدیریت"; +}; diff --git a/src/config/Pages.ts b/src/config/Pages.ts index 0bd6970..59f342e 100644 --- a/src/config/Pages.ts +++ b/src/config/Pages.ts @@ -145,12 +145,12 @@ export const Pages = { planUsers: "/support/plan-users/", }, category: { - list: "/category/list", - create: "/category/create", - update: "/category/update/", - detail: "/category/", - variant: "/category/variant/", - attributes: "/category/attributes/", + list: "/products/category", + create: "/products/category/create", + update: "/products/category/update/", + detail: "/products/category/", + variant: "/products/category/variant/", + attributes: "/products/category/attributes/", }, products: { create: "/products/create", diff --git a/src/pages/Coupon/Create.tsx b/src/pages/Coupon/Create.tsx index 480b218..dc3a4b6 100644 --- a/src/pages/Coupon/Create.tsx +++ b/src/pages/Coupon/Create.tsx @@ -1,4 +1,5 @@ import { useFormik } from 'formik' +import PageTitle from '../../components/PageTitle' import { type FC } from 'react' import { type CreateCouponType } from './types/Types' import * as Yup from 'yup' @@ -140,6 +141,7 @@ const CreateCoupon: FC = () => { return (
+

ساخت کوپن جدید

diff --git a/src/pages/Coupon/List.tsx b/src/pages/Coupon/List.tsx index 19bedfc..069c3f4 100644 --- a/src/pages/Coupon/List.tsx +++ b/src/pages/Coupon/List.tsx @@ -1,4 +1,5 @@ import { type FC, useState } from 'react' +import PageTitle from '../../components/PageTitle' import { useGetCoupons, useDeleteCoupon } from './hooks/useCouponData' import { type CouponResponseData } from './types/Types' import PageLoading from '@/components/PageLoading' @@ -44,6 +45,7 @@ const CouponList: FC = () => { return (
+