admin/config/site.tsx
alisaza e1eaf5eff5 feat: initial ghabilee-admin backoffice app
Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js
app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
2026-09-05 13:12:59 +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 - قبیله`,
},
description: 'پنل مدیریت پلتفرم قبیله',
icons: {
icon: withBasePath('/logo.svg'),
},
}
export const viewport: Viewport = {
themeColor: [
{
media: '(prefers-color-scheme: light)',
color: 'white',
},
],
}