lms/resources/js/layouts/dashboard/partials/routes.tsx
Ahmed Darrazi d1515064dd
All checks were successful
Build & Push Docker Image / docker (push) Successful in 1m54s
lang bugfix
2025-12-17 23:19:17 +01:00

367 lines
15 KiB
TypeScript

import { routeLastSegment } from '@/lib/route';
import { Award, Book, Briefcase, CassetteTape, CreditCard, LayoutDashboard, Newspaper, Receipt, School, Settings, Users } from 'lucide-react';
const label = (value: unknown, fallback: string): string => (typeof value === 'string' && value.length ? value : fallback);
export default function getDashboardRoutes(translate: LanguageTranslations): DashboardRoute[] {
const { button, settings } = translate;
return [
{
title: label(button.main_menu, 'Main Menu'),
slug: 'main-menu',
pages: [
{
Icon: LayoutDashboard,
name: label(button.dashboard, 'Dashboard'),
path: route('dashboard'),
slug: routeLastSegment(route('dashboard')),
active: true,
access: ['admin', 'instructor', 'collaborative', 'administrative'],
children: [],
},
{
Icon: School,
name: label(button.courses, 'Courses'),
path: '',
slug: 'courses',
active: true,
access: ['admin', 'instructor', 'collaborative', 'administrative'],
children: [
{
name: label(button.categories, 'Categories'),
path: route('categories.index'),
slug: routeLastSegment(route('categories.index')),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.manage_courses, 'Manage Courses'),
slug: routeLastSegment(route('courses.index')),
path: route('courses.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.create_course, 'Create Course'),
slug: routeLastSegment(route('courses.create')),
path: route('courses.create'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.course_coupons, 'Course Coupons'),
slug: routeLastSegment(route('course-coupons.index')),
path: route('course-coupons.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
],
},
{
Icon: Book,
name: label(button.exams, 'Exams'),
path: '',
slug: 'exams',
active: true,
access: ['admin', 'instructor', 'collaborative', 'administrative'],
children: [
{
name: label(button.categories, 'Categories'),
slug: routeLastSegment(route('exam-categories.index')),
path: route('exam-categories.index'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.manage_exams, 'Manage Exams'),
slug: routeLastSegment(route('exams.index')),
path: route('exams.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.create_exam, 'Create Exam'),
slug: routeLastSegment(route('exams.create')),
path: route('exams.create'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.exam_coupons, 'Exam Coupons'),
slug: routeLastSegment(route('exam-coupons.index')),
path: route('exam-coupons.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
],
},
{
Icon: CassetteTape,
name: label(button.enrollments, 'Enrollments'),
path: '',
slug: 'enrollments',
active: true,
access: ['admin', 'instructor', 'collaborative', 'administrative'],
children: [
{
name: label(button.course_enrollments, 'Course Enrollments'),
slug: routeLastSegment(route('course-enrollments.index')),
path: route('course-enrollments.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.exam_enrollments, 'Exam Enrollments'),
slug: routeLastSegment(route('exam-enrollments.index')),
path: route('exam-enrollments.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
],
},
{
Icon: Users,
name: label(button.instructors, 'Instructors'),
path: '',
slug: 'instructors',
active: true,
access: ['admin', 'collaborative'],
children: [
{
name: label(button.manage_instructors, 'Manage Instructors'),
slug: routeLastSegment(route('instructors.index')),
path: route('instructors.index'),
access: ['admin', 'collaborative'],
},
{
name: label(button.create_instructor, 'Create Instructor'),
slug: routeLastSegment(route('instructors.create')),
path: route('instructors.create'),
access: ['admin', 'collaborative'],
},
{
name: label(button.applications, 'Applications'),
slug: routeLastSegment(route('instructors.applications')),
path: route('instructors.applications', {
status: 'pending',
}),
access: ['admin', 'collaborative'],
},
],
},
{
Icon: Receipt,
name: label(button.payouts, 'Payouts'),
path: '',
slug: 'payouts',
active: true,
access: ['instructor', 'collaborative'],
children: [
{
name: label(button.withdraw, 'Withdraw'),
slug: routeLastSegment(route('payouts.index')),
path: route('payouts.index'),
access: ['instructor', 'collaborative'],
},
{
name: label(button.settings, 'Settings'),
slug: routeLastSegment(route('payouts.settings.index')),
path: route('payouts.settings.index'),
access: ['instructor', 'collaborative'],
},
],
},
{
Icon: Receipt,
name: label(button.payout_report, 'Payout Report'),
path: '',
slug: 'payouts',
active: true,
access: ['admin', 'collaborative'],
children: [
{
name: label(button.payout_request, 'Payout Request'),
slug: routeLastSegment(route('payouts.request.index')),
path: route('payouts.request.index'),
access: ['admin', 'collaborative'],
},
{
name: label(button.payout_history, 'Payout History'),
slug: routeLastSegment(route('payouts.history.index')),
path: route('payouts.history.index'),
access: ['admin', 'collaborative'],
},
],
},
{
Icon: CreditCard,
name: label(button.payment_report, 'Payment Report'),
path: '',
slug: 'payment-reports',
active: true,
access: ['admin', 'collaborative', 'administrative'],
children: [
{
name: label(button.online_payments, 'Online Payments'),
slug: routeLastSegment(route('payment-reports.online.index')),
path: route('payment-reports.online.index'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.offline_payments, 'Offline Payments'),
slug: routeLastSegment(route('payment-reports.offline.index')),
path: route('payment-reports.offline.index'),
access: ['admin', 'collaborative', 'administrative'],
},
],
},
{
Icon: Briefcase,
name: label(button.job_circulars, 'Job Circulars'),
path: '',
slug: 'job-circulars',
active: true,
access: ['admin', 'collaborative', 'administrative'],
children: [
{
name: label(button.all_jobs, 'All Jobs'),
slug: routeLastSegment(route('job-circulars.index')),
path: route('job-circulars.index'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.create_job, 'Create Job'),
slug: routeLastSegment(route('job-circulars.create')),
path: route('job-circulars.create'),
access: ['admin', 'collaborative', 'administrative'],
},
],
},
{
Icon: Book,
name: label(button.blogs, 'Blogs'),
path: '',
slug: 'blogs',
active: true,
access: ['admin', 'instructor', 'collaborative', 'administrative'],
children: [
{
name: label(button.categories, 'Categories'),
slug: routeLastSegment(route('blogs.categories.index')),
path: route('blogs.categories.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.create_blog, 'Create Blog'),
slug: routeLastSegment(route('blogs.create')),
path: route('blogs.create'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.manage_blog, 'Manage Blog'),
slug: routeLastSegment(route('blogs.index')),
path: route('blogs.index'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
],
},
{
Icon: Newspaper,
name: label(button.newsletters, 'Newsletters'),
path: route('newsletters.index'),
slug: routeLastSegment(route('newsletters.index')),
active: true,
access: ['admin', 'collaborative', 'administrative'],
children: [],
},
{
Icon: Users,
name: label(button.all_users, 'All Users'),
path: route('users.index'),
slug: routeLastSegment(route('users.index')),
active: true,
access: ['admin', 'collaborative', 'administrative'],
children: [],
},
{
Icon: Award,
name: label(button.certificates, 'Certificates'),
path: '',
slug: 'certification',
active: true,
access: ['admin', 'collaborative', 'administrative'],
children: [
{
name: label(button.certificate, 'Certificate'),
slug: routeLastSegment(route('certificate.templates.index')),
path: route('certificate.templates.index'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.marksheet, 'Marksheet'),
slug: routeLastSegment(route('marksheet.templates.index')),
path: route('marksheet.templates.index'),
access: ['admin', 'collaborative', 'administrative'],
},
],
},
{
Icon: Settings,
name: label(button.settings, 'Settings'),
path: '',
slug: 'settings',
active: true,
access: ['admin', 'instructor', 'collaborative', 'administrative'],
children: [
{
name: label(button.account, 'Account'),
slug: routeLastSegment(route('settings.account')),
path: route('settings.account'),
access: ['admin', 'instructor', 'collaborative', 'administrative'],
},
{
name: label(button.system, 'System'),
slug: routeLastSegment(route('settings.system')),
path: route('settings.system'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.pages, 'Pages'),
slug: routeLastSegment(route('settings.pages')),
path: route('settings.pages'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.storage, 'Storage'),
slug: routeLastSegment(route('settings.storage')),
path: route('settings.storage'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.payment, 'Payment'),
slug: routeLastSegment(route('settings.payment')),
path: route('settings.payment'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.smtp, 'SMTP'),
slug: routeLastSegment(route('settings.smtp')),
path: route('settings.smtp'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.auth0, 'Auth'),
slug: routeLastSegment(route('settings.auth0')),
path: route('settings.auth0'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(button.live_class, 'Live Class'),
slug: routeLastSegment(route('settings.live-class')),
path: route('settings.live-class'),
access: ['admin', 'collaborative', 'administrative'],
},
{
name: label(settings.translation_settings, 'Translation'),
slug: routeLastSegment(route('language.index')),
path: route('language.index'),
access: ['admin', 'collaborative', 'administrative'],
},
],
},
],
},
];
}