Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
178 lines
5.9 KiB
TypeScript
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 - قبیله`,
|
|
},
|
|
description: 'پنل مدیریت پلتفرم قبیله',
|
|
icons: {
|
|
icon: withBasePath('/logo.svg'),
|
|
},
|
|
}
|
|
|
|
export const viewport: Viewport = {
|
|
themeColor: [
|
|
{
|
|
media: '(prefers-color-scheme: light)',
|
|
color: 'white',
|
|
},
|
|
],
|
|
}
|