diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index cc79c1b..5d926e7 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useRef, useCallback } from "react"; +import React, { useState, useEffect, useRef, useCallback, Suspense } from "react"; import { Link, Navigate, Route, Routes, useLocation, useNavigate } from "react-router-dom"; import Home from "./pages/Home"; import SearchResults from "./pages/SearchResults"; @@ -7,20 +7,30 @@ import CreatorsBrowse from "./pages/CreatorsBrowse"; import CreatorDetail from "./pages/CreatorDetail"; import TopicsBrowse from "./pages/TopicsBrowse"; import SubTopicPage from "./pages/SubTopicPage"; -import AdminReports from "./pages/AdminReports"; -import AdminPipeline from "./pages/AdminPipeline"; -import AdminTechniquePages from "./pages/AdminTechniquePages"; -import About from "./pages/About"; import Login from "./pages/Login"; import Register from "./pages/Register"; -import CreatorDashboard from "./pages/CreatorDashboard"; -import CreatorSettings from "./pages/CreatorSettings"; + +// Lazy-loaded pages — admin, creator, and info routes split into separate chunks +const AdminReports = React.lazy(() => import("./pages/AdminReports")); +const AdminPipeline = React.lazy(() => import("./pages/AdminPipeline")); +const AdminTechniquePages = React.lazy(() => import("./pages/AdminTechniquePages")); +const About = React.lazy(() => import("./pages/About")); +const CreatorDashboard = React.lazy(() => import("./pages/CreatorDashboard")); +const CreatorSettings = React.lazy(() => import("./pages/CreatorSettings")); import AdminDropdown from "./components/AdminDropdown"; import AppFooter from "./components/AppFooter"; import SearchAutocomplete from "./components/SearchAutocomplete"; import ProtectedRoute from "./components/ProtectedRoute"; import { AuthProvider, useAuth } from "./context/AuthContext"; +function LoadingFallback() { + return ( +
Loading…
+