@@ -5,7 +5,6 @@ import { setNavigateFunction } from './lib/axios';
55import Home from './components/Home' ;
66import LoginPage from './components/Login' ;
77import RegisterPage from './components/SignUp' ;
8- import Leaderboard from './components/Leaderboard' ;
98import AboutPage from './components/About' ;
109import PrivacyPolicyPage from './components/PrivacyPolicy' ;
1110import TermsConditionsPage from './components/TermsConditions' ;
@@ -19,13 +18,16 @@ import { Navbar } from './components/Navbar';
1918import SolutionPage from './components/Challenges/solutionPage' ;
2019import NotFoundPage from './components/Error404' ;
2120import RouteSEO from './components/RouteSEO' ;
22- import ProblemSet from './components/ProblemSet' ;
23- import CategoryProblems from './components/ProblemSet/CategoryProblems' ;
2421import { ServerErrorRoute , NetworkErrorRoute , UnauthorizedRoute } from './components/ErrorRoutes' ;
2522import { ForbiddenPage } from './components/EnhancedErrorPages' ;
2623import { useAdminStore } from './context/AdminContext.tsx' ;
2724import LoadingSpinner from './components/LoadingSpinner' ;
2825
26+ // Lazy load heavier user components
27+ const Leaderboard = lazy ( ( ) => import ( './components/Leaderboard' ) ) ;
28+ const ProblemSet = lazy ( ( ) => import ( './components/ProblemSet' ) ) ;
29+ const CategoryProblems = lazy ( ( ) => import ( './components/ProblemSet/CategoryProblems' ) ) ;
30+
2931// Lazy load Admin components
3032const AddChallenge = lazy ( ( ) => import ( './components/Admin/addChallenges' ) ) ;
3133const UserDashboard = lazy ( ( ) => import ( './components/Admin/Users' ) ) ;
@@ -41,30 +43,32 @@ function UserApp() {
4143 < RouteSEO />
4244 < Navbar />
4345 < Toaster position = "bottom-right" toastOptions = { { duration : 2000 } } />
44- < Routes >
45- < Route path = "/" element = { < Home /> } />
46- < Route path = "/challenges" element = { < Challenges /> } />
47- < Route path = "/login" element = { < LoginPage /> } />
48- < Route path = "/about" element = { < AboutPage /> } />
49- < Route path = "/privacy-policy" element = { < PrivacyPolicyPage /> } />
50- < Route path = "/terms-conditions" element = { < TermsConditionsPage /> } />
51- < Route path = "/register" element = { < RegisterPage /> } />
52- < Route path = "/leaderboard" element = { < Leaderboard /> } />
53- < Route path = "/profile/edit-profile" element = { < EditProfile /> } />
54- < Route path = "/profile/:username" element = { < ProfilePage /> } />
55- < Route path = "/reset-password/:token" element = { < ResetPassword /> } />
56- < Route path = "/forgot-password" element = { < ForgotPassword /> } />
57- < Route path = "/challenges/solution/:slug" element = { < SolutionPage /> } />
58- < Route path = "/problemset" element = { < ProblemSet /> } />
59- < Route path = "/problemset/category/:categoryName" element = { < CategoryProblems /> } />
60- { /* Enhanced Error Pages */ }
61- < Route path = "/server-error" element = { < ServerErrorRoute /> } />
62- < Route path = "/network-error" element = { < NetworkErrorRoute /> } />
63- < Route path = "/unauthorized" element = { < UnauthorizedRoute /> } />
64- < Route path = "/forbidden" element = { < ForbiddenPage /> } />
65- < Route path = "/404" element = { < NotFoundPage /> } />
66- < Route path = "*" element = { < NotFoundPage /> } />
67- </ Routes >
46+ < Suspense fallback = { < LoadingSpinner /> } >
47+ < Routes >
48+ < Route path = "/" element = { < Home /> } />
49+ < Route path = "/challenges" element = { < Challenges /> } />
50+ < Route path = "/login" element = { < LoginPage /> } />
51+ < Route path = "/about" element = { < AboutPage /> } />
52+ < Route path = "/privacy-policy" element = { < PrivacyPolicyPage /> } />
53+ < Route path = "/terms-conditions" element = { < TermsConditionsPage /> } />
54+ < Route path = "/register" element = { < RegisterPage /> } />
55+ < Route path = "/leaderboard" element = { < Leaderboard /> } />
56+ < Route path = "/profile/edit-profile" element = { < EditProfile /> } />
57+ < Route path = "/profile/:username" element = { < ProfilePage /> } />
58+ < Route path = "/reset-password/:token" element = { < ResetPassword /> } />
59+ < Route path = "/forgot-password" element = { < ForgotPassword /> } />
60+ < Route path = "/challenges/solution/:slug" element = { < SolutionPage /> } />
61+ < Route path = "/problemset" element = { < ProblemSet /> } />
62+ < Route path = "/problemset/category/:categoryName" element = { < CategoryProblems /> } />
63+ { /* Enhanced Error Pages */ }
64+ < Route path = "/server-error" element = { < ServerErrorRoute /> } />
65+ < Route path = "/network-error" element = { < NetworkErrorRoute /> } />
66+ < Route path = "/unauthorized" element = { < UnauthorizedRoute /> } />
67+ < Route path = "/forbidden" element = { < ForbiddenPage /> } />
68+ < Route path = "/404" element = { < NotFoundPage /> } />
69+ < Route path = "*" element = { < NotFoundPage /> } />
70+ </ Routes >
71+ </ Suspense >
6872 < Footer />
6973 </ div >
7074 ) ;
0 commit comments