Rev 2635 | Rev 2674 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { lazy, Suspense } from 'react'
import { Routes, Route, Navigate, Outlet } from 'react-router-dom'
import { ThemeProvider } from 'styled-components'
import { microlearning } from '@app/styles/themes'
/* Components */
import AuthRoute from './auth-routes'
import PrivateRoutes from './private-routes'
import Spinner from '@app/components/UI/Spinner'
/* Providers */
import GoalsProvider from '@providers/goals'
import ValuesProvider from '@providers/values'
import HabitsProvider from '@providers/habits'
import PurposesProvider from '@providers/purposes'
import ParadigmsProvider from '@providers/paradigms'
/* Layouts */
const AuthLayout = lazy(() => import('@layouts/auth/auth-layout'))
const HabitsLayout = lazy(() => import('@layouts/habits/habits-layout'))
const MicrolearningLayout = lazy(() =>
import('@layouts/micro-learning/micro-learning-layout')
)
/* Pages */
const Login = lazy(() => import('@app/pages/auth/login'))
const Signup = lazy(() => import('@app/pages/auth/signup'))
// const Navigation = lazy(() => import('@pages/auth/navigation'))
const ForgotPassword = lazy(() => import('@pages/auth/forgot-password'))
const ActiveAccount = lazy(() => import('@pages/auth/active-account'))
const ResetPassword = lazy(() => import('@pages/auth/reset-password'))
const ValuesPage = lazy(() => import('@pages/habits/values-page'))
const PurposesPage = lazy(() => import('@pages/habits/purposes-page'))
const HabitsPage = lazy(() => import('@pages/habits/habits-page'))
const ParadigmsPage = lazy(() => import('@pages/habits/paradigms-page'))
const GoalsPage = lazy(() => import('@pages/habits/goals-page'))
const AbuseReportPage = lazy(() =>
import('@pages/abuse-report/abuse-repor-page')
)
const AbuseReportViewPage = lazy(() =>
import('@pages/abuse-report/abuse-report-view-page')
)
const ShorterPostPage = lazy(() => import('@pages/shorter/shorter-post-page'))
const InmailPage = lazy(() => import('@pages/inmail/InmailPage'))
const TermsAndConditionsPage = lazy(() =>
import('@pages/terms-and-conditions/TermsAndConditionsPage')
)
const PrivacyPolicyPage = lazy(() =>
import('@pages/privacy-policy/PrivacyPolicy')
)
const CookiesPage = lazy(() => import('@pages/cookies/CookiesPage'))
const ProfessionalismPolicy = lazy(() =>
import('@pages/professionalism-policy/ProfessionalismPolicy')
)
const AccountSettingsPage = lazy(() =>
import('@pages/account-settings/AccountSettings')
)
const DashboardPage = lazy(() => import('@pages/dashboard/DashboardPage'))
const MyConnectionsPage = lazy(() =>
import('@pages/connections/MyConnectionsPage')
)
const InvitationsReceivedPage = lazy(() =>
import('@pages/connections/InvitationsReceivedPage')
)
const InvitationsSendPage = lazy(() =>
import('@pages/connections/InvitationsSendPage')
)
const PeopleYouMayKnowPage = lazy(() =>
import('@pages/connections/PeopleYouMayKnowPage')
)
const PeopleBlockedPage = lazy(() =>
import('@pages/connections/PeopleBlockedPage')
)
const MyProfilesPage = lazy(() => import('@pages/profiles/MyProfilesPage'))
const PeopleViewedMyProfilePage = lazy(() =>
import('@pages/profiles/PeopleViewedMyProfilePage')
)
const SavedJobsPage = lazy(() => import('@pages/jobs/SavedJobsPage'))
const AppliedJobsPage = lazy(() => import('@pages/jobs/AppliedJobsPage'))
const GroupsRequestsSendPage = lazy(() =>
import('@pages/groups/GroupsRequestsSendPage')
)
const GroupsRequestsReceivedPage = lazy(() =>
import('@pages/groups/GroupsRequestsReceivedPage')
)
const JoinedGroupsPage = lazy(() => import('@pages/groups/JoinedGroupsPage'))
const MyGroupsPage = lazy(() => import('@pages/groups/MyGroupsPage'))
const MyCompanies = lazy(() => import('@pages/company/MyCompaniesPage'))
const FollowingCompaniesPage = lazy(() =>
import('@pages/company/FollowingCompaniesPage')
)
const CompaniesWhenIWorkPage = lazy(() =>
import('@pages/company/CompaniesWhenIWorkPage')
)
const CompanyRequestSendPage = lazy(() =>
import('@pages/company/CompanyRequestSendPage')
)
const CompanyInvitationsReceivedPage = lazy(() =>
import('@pages/company/CompanyInvitationsReceivedPage')
)
const ProfileViewPage = lazy(() => import('@pages/profiles/ProfileViewPage'))
const ProfileEditPage = lazy(() => import('@pages/profiles/ProfileEditPage'))
const CompanyViewPage = lazy(() => import('@pages/company/CompanyViewPage'))
const GroupViewPage = lazy(() => import('@pages/groups/GroupViewPage'))
const GroupEditPage = lazy(() => import('@pages/groups/GroupEditPage'))
const MarketPlacePage = lazy(() => import('@pages/marketplace/MarketplacePage'))
const NotificationsPage = lazy(() =>
import('@pages/notifications/NotificationsPage')
)
const SearchPage = lazy(() => import('@pages/search/SearchPage'))
const KnowledgeAreaPage = lazy(() =>
import('@pages/knowledge-area/KnowledgeAreaPage')
)
const KnowledgeViewPage = lazy(() =>
import('@pages/knowledge-area/KnowledgeViewPage')
)
const PostViewPage = lazy(() => import('@pages/posts/PostViewPage'))
const MyCoachPage = lazy(() => import('@pages/my-coach/MyCoachPage'))
const MyCoachViewPage = lazy(() => import('@pages/my-coach/MyCoachViewPage'))
const JobViewPage = lazy(() => import('@pages/jobs/JobView'))
const CalendarPage = lazy(() => import('@pages/calendar/CalendarPage'))
const ImpersonatePage = lazy(() => import('@pages/impersonate/InpersonatePage'))
const CapsulesPage = lazy(() => import('@pages/micro-learning/CapsulesPage'))
const CapsuleDetailsPage = lazy(() =>
import('@pages/micro-learning/CapsuleInfoPage')
)
const SlidesPage = lazy(() => import('@pages/micro-learning/SlideViewPage'))
const ProgressPage = lazy(() => import('@pages/micro-learning/ProgressPage'))
const CompaniesPage = lazy(() => import('@pages/micro-learning/CompaniesPage'))
const CapsuleSlidesPage = lazy(() =>
import('@pages/micro-learning/CapsuleViewPage')
)
const TimelinePage = lazy(() => import('@pages/micro-learning/TimelinePage'))
const ProfilePage = lazy(() => import('@pages/micro-learning/ProfilePage'))
const TopicsPage = lazy(() => import('@pages/micro-learning/TopicsPage'))
const TopicsViewPage = lazy(() => import('@pages/micro-learning/TopicViewPage'))
export default function AppRoutes() {
return (
<Suspense fallback={<Spinner />}>
<Routes>
{/* Public routes */}
<Route path='/shorter/:id' element={<ShorterPostPage />} />
<Route
path='/terms-and-conditions'
element={<TermsAndConditionsPage />}
/>
<Route path='/privacy-policy' element={<PrivacyPolicyPage />} />
<Route
path='/professionalism-policy'
element={<ProfessionalismPolicy />}
/>
<Route path='/cookies' element={<CookiesPage />} />
{/* Authentication routes */}
<Route path='/' element={<AuthRoute />}>
<Route element={<AuthLayout />}>
<Route index element={<Navigate to='signin' />} />
<Route path='signin' element={<Login />} />
<Route path='signup' element={<Signup />} />
<Route path='forgot-password' element={<ForgotPassword />} />
<Route path='reset-password/:uuid' element={<ResetPassword />} />
<Route path='activate-account/:uuid' element={<ActiveAccount />} />
</Route>
</Route>
{/* Private routes */}
<Route element={<PrivateRoutes />}>
<Route path='/habits/*' element={<HabitsLayout />}>
<Route
path='paradigms'
element={
<ParadigmsProvider>
<ParadigmsPage />
</ParadigmsProvider>
}
/>
<Route
path='values'
element={
<ValuesProvider>
<ValuesPage />
</ValuesProvider>
}
/>
<Route
path='purposes'
element={
<PurposesProvider>
<PurposesPage />
</PurposesProvider>
}
/>
<Route
path='goals'
element={
<GoalsProvider>
<GoalsPage />
</GoalsProvider>
}
/>
<Route
index
element={
<HabitsProvider>
<HabitsPage />
</HabitsProvider>
}
/>
</Route>
<Route path='abuse-report'>
<Route index element={<AbuseReportPage />} />
<Route path='view/:id' element={<AbuseReportViewPage />} />
</Route>
<Route path='/dashboard'>
<Route index element={<DashboardPage />} />
<Route path='feed/:id' element={<DashboardPage />} />
</Route>
<Route path='/connection'>
<Route index element={<Navigate to='my-connections' />} />
<Route path='my-connections' element={<MyConnectionsPage />} />
<Route path='invitations-sent' element={<InvitationsSendPage />} />
<Route
path='invitations-received'
element={<InvitationsReceivedPage />}
/>
<Route
path='people-you-may-know'
element={<PeopleYouMayKnowPage />}
/>
<Route path='people-blocked' element={<PeopleBlockedPage />} />
</Route>
<Route path='/profile'>
<Route index element={<Navigate to='my-profiles' />} />
<Route path='view/:uuid' element={<ProfileViewPage />} />
<Route
path='people-viewed-profile'
element={<PeopleViewedMyProfilePage />}
/>
<Route path='my-profiles' element={<MyProfilesPage />}>
<Route path='edit/:uuid' element={<ProfileEditPage />} />
</Route>
</Route>
<Route path='/job'>
<Route index element={<Navigate to='saved-jobs' />} />
<Route path='view/:uuid' element={<JobViewPage />} />
<Route path='saved-jobs' element={<SavedJobsPage />} />
<Route path='applied-jobs' element={<AppliedJobsPage />} />\
</Route>
<Route path='/group'>
<Route index element={<Navigate to='requests-sent' />} />
<Route path='requests-sent' element={<GroupsRequestsSendPage />} />
<Route
path='invitations-received'
element={<GroupsRequestsReceivedPage />}
/>
<Route path='joined-groups' element={<JoinedGroupsPage />} />
<Route path='view/:uuid' element={<GroupViewPage />} />
<Route path='my-groups' element={<MyGroupsPage />}>
<Route path='edit/:uuid' element={<GroupEditPage />} />
</Route>
</Route>
<Route path='/company'>
<Route index element={<Navigate to='my-companies' />} />
<Route path='my-companies' element={<MyCompanies />} />
<Route
path='following-companies'
element={<FollowingCompaniesPage />}
/>
<Route path='i-work-with' element={<CompaniesWhenIWorkPage />} />
<Route path='requests-sent' element={<CompanyRequestSendPage />} />
<Route path='requests-sent' element={<CompanyRequestSendPage />} />
<Route
path='invitations-received'
element={<CompanyInvitationsReceivedPage />}
/>
<Route path='view/:uuid' element={<CompanyViewPage />} />
</Route>
<Route path='/knowledge-area' element={<KnowledgeAreaPage />}>
<Route path='view/:uuid' element={<KnowledgeViewPage />} />
</Route>
<Route path='/my-coach' element={<MyCoachPage />}>
<Route path='questions/view/:uuid' element={<MyCoachViewPage />} />
</Route>
<Route
path='/microlearning'
element={
<MicrolearningLayout>
<ThemeProvider theme={microlearning}>
<Outlet />
</ThemeProvider>
</MicrolearningLayout>
}
>
<Route index element={<CapsulesPage />} />
<Route path='topics'>
<Route index element={<TopicsPage />} />
<Route path=':topicId/capsules' element={<TopicsViewPage />} />
</Route>
<Route path='capsules'>
<Route path=':capsuleId/*' element={<CapsuleDetailsPage />} />
<Route path=':capsuleId/slides' element={<CapsuleSlidesPage />} />
</Route>
<Route path='slides/:uuid' element={<SlidesPage />} />
<Route path='companies'>
<Route index element={<CompaniesPage />} />
<Route path=':uuid' element={<ProgressPage />} />
</Route>
<Route path='timeline' element={<TimelinePage />} />
<Route path='profile' element={<ProfilePage />} />
</Route>
<Route path='/account-settings' element={<AccountSettingsPage />} />
<Route path='/marketplace' element={<MarketPlacePage />} />
<Route path='/notifications' element={<NotificationsPage />} />
<Route path='/search/entity/:category' element={<SearchPage />} />
<Route path='/calendar' element={<CalendarPage />} />
<Route path='/inmail' element={<InmailPage />} />
<Route path='/signin/impersonate' element={<ImpersonatePage />} />
<Route path='/post/:uuid' element={<PostViewPage />} />
</Route>
</Routes>
</Suspense>
)
}