import { Suspense, lazy, ElementType } from 'react'; import { Navigate, useRoutes, useLocation } from 'react-router-dom'; // layouts import DashboardLayout from '../layouts/dashboard'; import LogoOnlyLayout from '../layouts/LogoOnlyLayout'; // components import LoadingScreen from '../components/LoadingScreen'; import GuestGuard from '../guards/GuestGuard'; import { RegisterForm } from '../sections/auth/register'; import Register from '../pages/auth/Register'; import VerifyCode from '../pages/auth/VerifyCode'; import { AuthProvider } from '../contexts/LaravelAuthContext'; import AuthGuard from '../guards/AuthGuard'; import { Link, useParams, useSearchParams } from 'react-router-dom'; // ---------------------------------------------------------------------- const Loadable = (Component: ElementType) => (props: any) => { // eslint-disable-next-line react-hooks/rules-of-hooks const { pathname } = useLocation(); return ( }> ); }; export default function Router() { return useRoutes([ { path: 'auth', children: [ { path: 'login', element: ( ), }, { path: 'register', element: ( ), }, // { path: 'login-unprotected', element: }, // { path: 'register-unprotected', element: }, { path: 'reset-password', element: }, { path: 'forget-password', element: }, // { path: 'verify', element: }, ], }, // { // path: '/', // element: , // }, { path: '/', element: ( ), children: [ { element: , index: true }, { path: 'dashboard', element: , }, { path: 'members', element: , }, { path: 'corporates', element: , }, { path: 'corporates/create', element: , }, { path: 'corporate', element: , // Layout that use the context children: [ { path: ':corporate_id', element: , }, { path: ':corporate_id/services', element: , }, { path: ':corporate_id/services/:service_code', element: , }, { path: ':corporate_id/services/:service_code/history', element: , }, { path: ':corporate_id/plans/create', element: , }, { path: ':corporate_id/plans/:plan_id/history', element: , }, { path: ':corporate_id/plans', element: , }, { path: ':corporate_id/benefits/create', element: , }, { path: ':corporate_id/benefits', element: , }, { path: ':corporate_id/benefits/:benefit_id/history', element: , }, { path: ':corporate_id/members', element: , }, { path: ':corporate_id/members/:member_id/history', element: , }, { path: ':corporate_id/divisions', element: , }, { path: ':corporate_id/divisions/create', element: , }, { path: ':corporate_id/divisions/:id/edit', element: , }, { path: ':corporate_id/formularium', element: , }, { path: ':corporate_id/diagnosis-exclusions', element: , }, { path: ':corporate_id/hospitals', element: , }, { path: ':corporate_id/claim-history', element: , }, { path: ':corporate_id/corporate-history', element: , }, ], }, { path: 'corporates/:corporate_id/edit', element: , }, { path: 'corporates/:corporate_id/corporate-plans/create', element: , }, { path: 'corporates/:corporate_id/corporate-plans/:id/edit', element: , }, { path: 'corporates/:corporate_id/corporate-plans', element: , }, { path: 'corporates/:corporate_id/corporate-benefits/create', element: , }, { path: 'corporates/:corporate_id/corporate-benefits', element: , }, { path: 'corporates/:corporate_id/corporate-benefits/:id/edit', element: , }, { path: 'master/doctors', element: , }, { path: 'master/doctors/create', element: , }, { path: 'master/doctors/:id/edit', element: , }, { path: 'master/hospitals', element: , }, { path: 'master/hospitals/create', element: , }, { path: 'master/hospitals/:id/edit', element: , }, { path: 'master/diagnosis', element: , }, { path: 'master/drugs', element: , }, { path: 'master/formularium', element: , }, { path: 'master/formularium/create', element: , }, { path: 'report/appointments', element: , }, { path: 'report/appointments/:id', element: , }, { path: 'report/appointments/:id/show', element: , }, { path: 'report/appointments/:id/edit', element: , }, { path: 'report/live-chat', element: , }, { path: 'report/live-chat/:id', element: , }, { path: 'report/live-chat/:id/show', element: , }, { path: 'report/live-chat/:id/edit', element: , }, { path: 'report/linksehat-payments', element: , }, { path: 'claims', element: , }, { path: 'claim-requests', element: , }, { path: 'claims/create', element: , }, { path: 'claims/:id', element: , }, { path: 'profile', element: , }, { path: 'cs-membership', element: , }, ], }, // { // path: '/dashboard', // element: , // children: [ // { element: , index: true }, // { path: 'one', element: // }, // { path: 'two', element: // }, // { path: 'three', element: // }, // { // path: 'user', // children: [ // { element: , index: true }, // { path: 'four', element: }, // { path: 'six', element: }, // ], // }, // ], // }, { path: '*', element: , children: [ { path: '404', element: }, { path: '*', element: }, ], }, { path: '*', element: }, ]); } const Login = Loadable(lazy(() => import('../pages/auth/Login'))); const ResetPassword = Loadable(lazy(() => import('../pages/auth/ResetPassword'))); const ForgetPassword = Loadable(lazy(() => import('../pages/auth/ForgetPassword'))); // Dashboard const Dashboard = Loadable(lazy(() => import('../pages/Dashboard'))); const NotFound = Loadable(lazy(() => import('../pages/Page404'))); // Members const Members = Loadable(lazy(() => import('../pages/Members/Index'))); const MedicinesCreate = Loadable(lazy(() => import('../pages/Medicines/Create'))); // Corporate const ConfigLayout = Loadable(lazy(() => import('../pages/Corporates/ConfigLayout'))); const Corporate = Loadable(lazy(() => import('../pages/Corporates/Index'))); const CorporateCreate = Loadable(lazy(() => import('../pages/Corporates/CreateUpdate'))); const CorporateShow = Loadable(lazy(() => import('../pages/Corporates/Show'))); const CorporateDivisions = Loadable(lazy(() => import('../pages/Corporates/Division/Index'))); const CorporateDivisionsCreate = Loadable( lazy(() => import('../pages/Corporates/Division/CreateUpdate')) ); const CorporateMembers = Loadable(lazy(() => import('../pages/Corporates/Member/Index'))); const CorporateHistoryMembers = Loadable(lazy(() => import('../pages/Corporates/Member/sections/History'))); const BenefitCreate = Loadable(lazy(() => import('../pages/Corporates/Benefit/Create'))); const Benefits = Loadable(lazy(() => import('../pages/Corporates/Benefit/Index'))); const CorporateBenefitsCreate = Loadable( lazy(() => import('../pages/Corporates/CorporateBenefit/CreateUpdate')) ); const CorporateBenefits = Loadable( lazy(() => import('../pages/Corporates/CorporateBenefit/Index')) ); const CorporateBenefitsHistory = Loadable( lazy(() => import('../pages/Corporates/Benefit/sections/History')) ); const CorporatePlanCreate = Loadable( lazy(() => import('../pages/Corporates/CorporatePlan/CreateUpdate')) ); const CorporatePlans = Loadable(lazy(() => import('../pages/Corporates/CorporatePlan/Index'))); const PlanCreate = Loadable(lazy(() => import('../pages/Corporates/Plan/Create'))); const Plans = Loadable(lazy(() => import('../pages/Corporates/Plan/Index'))); const CorporatePlansHistory = Loadable(lazy(() => import('../pages/Corporates/Plan/sections/History'))); const DiagnosisExclusions = Loadable( lazy(() => import('../pages/Corporates/DiagnosisExclusion/Index')) ); const CorporateFormularium = Loadable(lazy(() => import('../pages/Corporates/Formularium/Index'))); const MasterDiagnosis = Loadable(lazy(() => import('../pages/Master/Diagnosis/Index'))); const MasterDoctors = Loadable(lazy(() => import('../pages/Master/Doctors/Index'))); const MasterDoctorsCreate = Loadable(lazy(() => import('../pages/Master/Doctors/Create'))); const MasterHospitals = Loadable(lazy(() => import('../pages/Master/Hospitals/Index'))); const MasterHospitalsCreate = Loadable(lazy(() => import('../pages/Master/Hospitals/Create'))); const Appointment = Loadable(lazy(() => import('../pages/Report/Appointments/Index'))); const AppointmentCreate = Loadable(lazy(() => import('../pages/Report/Appointments/Create'))); const AppointmentShow = Loadable(lazy(() => import('../pages/Report/Appointments/Show'))); const Livechat = Loadable(lazy(() => import('../pages/Report/Livechat/Index'))); const LivechatCreate = Loadable(lazy(() => import('../pages/Report/Livechat/Create'))); const LivechatShow = Loadable(lazy(() => import('../pages/Report/Livechat/Show'))); const LinksehatPayment = Loadable(lazy(() => import('../pages/Report/LinksehatPayments/Index'))); const MasterDrug = Loadable(lazy(() => import('../pages/Master/Drug/Index'))); const MasterFormularium = Loadable(lazy(() => import('../pages/Master/Formularium/Index'))); const MasterFormulariumCreate = Loadable(lazy(() => import('../pages/Master/Formularium/Create'))); const CorporateServices = Loadable(lazy(() => import('../pages/Corporates/Services/Index'))); const CorporateServicesCreate = Loadable(lazy(() => import('../pages/Corporates/Services/Create'))); const CorporateServicesHistory = Loadable(lazy(() => import('../pages/Corporates/Services/sections/History'))); const CorporateHospitals = Loadable(lazy(() => import('../pages/Corporates/Hospital/Index'))); const CorporateClaimHistories = Loadable( lazy(() => import('../pages/Corporates/ClaimHistory/Index')) ); const CorporateHistories = Loadable( lazy(() => import('../pages/Corporates/History')) ); const Profile = Loadable(lazy(() => import('../pages/Profile/Index'))); const Claims = Loadable(lazy(() => import('../pages/Claims/Index'))); const ClaimsCreate = Loadable(lazy(() => import('../pages/Claims/CreateUpdate'))); const ClaimShow = Loadable(lazy(() => import('../pages/Claims/Show'))); const ClaimRequests = Loadable(lazy(() => import('../pages/ClaimRequests/Index'))); const Membership = Loadable(lazy(() => import('../pages/Service/Membership/index')));