admin/config/site.tsx
alisaza f9a9afc697 feat: add layout components for various admin dashboard pages
- Introduced layout components for multiple admin dashboard sections including events, audit logs, bank accounts, blog articles, bookings, chat oversight, cities, contact messages, dashboard, discount codes, event categories, guest lists, identity verifications, manage events, manual notifications, notification rules, payments, provinces, push deliveries, reviews, settlements, sms messages, support tickets, user reports, and users.
- Updated metadata for the auth layout to include the admin page title.
- Modified branch protection documentation to clarify deployment notifications.
2026-09-05 14:29:43 +03:30

178 lines
5.9 KiB
TypeScript

import { type Metadata, type Viewport } from 'next'
import type { SidebarRoute } from '@/types'
import CalendarIcon from '@/components/icons/CalendarIcon'
import ClockIcon from '@/components/icons/ClockIcon'
import DashboardIcon from '@/components/icons/DashboardIcon'
import UserIcon from '@/components/icons/UserIcon'
import CommentIcon from '@/components/icons/CommentIcon'
import MarkerIcon from '@/components/icons/MarkerIcon'
import UserIdCardIcon from '@/components/icons/UserIdCardIcon'
import CoinIcon from '@/components/icons/CoinIcon'
import FileQuestionIcon from '@/components/icons/FileQuestionIcon'
import DollarIcon from '@/components/icons/DollarIcon'
import PhoneIcon from '@/components/icons/PhoneIcon'
import BellIcon from '@/components/icons/BellIcon'
import CoinDollarIcon from '@/components/icons/CoinDollarIcon'
import BookmarkIcon from '@/components/icons/BookmarkIcon'
import ListItemsIcon from '@/components/icons/ListItemsIcon'
import FileCheckIcon from '@/components/icons/FileCheckIcon'
import { withBasePath } from '@/constants/images'
import { APP_ROUTES } from '@/constants/routes'
export const siteConfig = (): { userSidebar: SidebarRoute[] } => ({
userSidebar: [
{
title: 'پیشخوان',
icon: (className = 'size-6') => <DashboardIcon className={className} />,
link: '/dashboard',
},
{
title: 'کاربران',
icon: (className = 'size-6') => <UserIcon className={className} />,
link: '/users',
matchPaths: ['/users'],
},
{
title: 'رویدادها',
icon: (className = 'size-6') => <CalendarIcon className={className} />,
link: APP_ROUTES.MANAGE_EVENTS,
matchPaths: [APP_ROUTES.MANAGE_EVENTS],
},
{
title: 'کد تخفیف',
icon: (className = 'size-6') => <DollarIcon className={className} />,
link: '/discount-codes',
matchPaths: ['/discount-codes'],
},
{
title: 'پرداخت‌ها',
icon: (className = 'size-6') => <CoinIcon className={className} />,
link: '/payments',
matchPaths: ['/payments'],
},
{
title: 'واریزهای کیف پول',
icon: (className = 'size-6') => <CoinDollarIcon className={className} />,
link: '/wallet-deposits',
matchPaths: ['/wallet-deposits'],
},
{
title: 'رزروها',
icon: (className = 'size-6') => <BookmarkIcon className={className} />,
link: '/bookings',
matchPaths: ['/bookings'],
},
{
title: 'تسویه‌ها',
icon: (className = 'size-6') => <DollarIcon className={className} />,
link: '/settlements',
matchPaths: ['/settlements'],
},
{
title: 'درخواست‌های برداشت',
icon: (className = 'size-6') => <CoinDollarIcon className={className} />,
link: '/withdrawal-requests',
matchPaths: ['/withdrawal-requests'],
},
{
title: 'حساب‌های بانکی',
icon: (className = 'size-6') => <UserIdCardIcon className={className} />,
link: '/bank-accounts',
matchPaths: ['/bank-accounts'],
},
{
title: 'دسته‌بندی‌ها',
icon: (className = 'size-6') => <ListItemsIcon className={className} />,
link: '/event-categories',
matchPaths: ['/event-categories'],
},
{
title: 'مقالات وبلاگ',
icon: (className = 'size-6') => <FileCheckIcon className={className} />,
link: '/blog-articles',
matchPaths: ['/blog-articles'],
},
{
title: 'لیست‌های مهمان',
icon: (className = 'size-6') => <UserIcon className={className} />,
link: '/guest-lists',
matchPaths: ['/guest-lists'],
},
{
title: 'نظرات',
icon: (className = 'size-6') => <CommentIcon className={className} />,
link: '/reviews',
matchPaths: ['/reviews'],
},
{
title: 'شهرها',
icon: (className = 'size-6') => <MarkerIcon className={className} />,
link: '/cities',
matchPaths: ['/cities'],
},
{
title: 'احراز هویت میزبان',
icon: (className = 'size-6') => <UserIdCardIcon className={className} />,
link: '/identity-verifications',
matchPaths: ['/identity-verifications'],
},
{
title: 'اعلان‌ها',
icon: (className = 'size-6') => <BellIcon className={className} />,
link: '/notifications',
matchPaths: ['/notifications', '/sms-messages', '/notification-rules', '/manual-notifications', '/push-deliveries'],
},
{
title: 'گزارش‌های کاربران',
icon: (className = 'size-6') => <FileQuestionIcon className={className} />,
link: '/user-reports',
matchPaths: ['/user-reports'],
},
{
title: 'پیام‌های تماس',
icon: (className = 'size-6') => <PhoneIcon className={className} />,
link: '/contact-messages',
matchPaths: ['/contact-messages'],
},
{
title: 'تیکت‌های پشتیبانی',
icon: (className = 'size-6') => <FileQuestionIcon className={className} />,
link: '/support-tickets',
matchPaths: ['/support-tickets'],
},
{
title: 'نظارت بر گفتگوها',
icon: (className = 'size-6') => <CommentIcon className={className} />,
link: '/chat-oversight',
matchPaths: ['/chat-oversight'],
},
{
title: 'گزارش فعالیت‌های ادمین',
icon: (className = 'size-6') => <ClockIcon className={className} />,
link: '/audit-logs',
matchPaths: ['/audit-logs'],
},
],
})
export const metadata: Metadata = {
title: {
default: 'قبیله — پنل مدیریت',
template: `%s | قبیله Backoffice`,
},
description: 'پنل مدیریت پلتفرم قبیله',
icons: {
icon: withBasePath('/logo.svg'),
},
}
export const viewport: Viewport = {
themeColor: [
{
media: '(prefers-color-scheme: light)',
color: 'white',
},
],
}