import * as React from "react"; import { lazy, Suspense } from "react"; import { Toaster } from "@/components/ui/toaster"; import { Toaster as Sonner } from "@/components/ui/sonner"; import { TooltipProvider } from "@/components/ui/tooltip"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import { AuthProvider } from "@/hooks/useAuth"; import { AuthModalProvider } from "@/contexts/AuthModalContext"; import { LocationAutoDetectProvider } from "@/components/providers/LocationAutoDetectProvider"; import { Footer } from "@/components/layout/Footer"; import { PageLoader } from "@/components/loading/PageSkeletons"; // Core routes (eager-loaded for best UX) import Index from "./pages/Index"; import Parks from "./pages/Parks"; import Rides from "./pages/Rides"; import Search from "./pages/Search"; import Auth from "./pages/Auth"; // Detail routes (lazy-loaded) const ParkDetail = lazy(() => import("./pages/ParkDetail")); const RideDetail = lazy(() => import("./pages/RideDetail")); const ParkRides = lazy(() => import("./pages/ParkRides")); const Manufacturers = lazy(() => import("./pages/Manufacturers")); const ManufacturerDetail = lazy(() => import("./pages/ManufacturerDetail")); const ManufacturerRides = lazy(() => import("./pages/ManufacturerRides")); const ManufacturerModels = lazy(() => import("./pages/ManufacturerModels")); const RideModelDetail = lazy(() => import("./pages/RideModelDetail")); const RideModelRides = lazy(() => import("./pages/RideModelRides")); const Designers = lazy(() => import("./pages/Designers")); const DesignerDetail = lazy(() => import("./pages/DesignerDetail")); const DesignerRides = lazy(() => import("./pages/DesignerRides")); const ParkOwners = lazy(() => import("./pages/ParkOwners")); const PropertyOwnerDetail = lazy(() => import("./pages/PropertyOwnerDetail")); const OwnerParks = lazy(() => import("./pages/OwnerParks")); const Operators = lazy(() => import("./pages/Operators")); const OperatorDetail = lazy(() => import("./pages/OperatorDetail")); const OperatorParks = lazy(() => import("./pages/OperatorParks")); const BlogIndex = lazy(() => import("./pages/BlogIndex")); const BlogPost = lazy(() => import("./pages/BlogPost")); const Terms = lazy(() => import("./pages/Terms")); const Privacy = lazy(() => import("./pages/Privacy")); const SubmissionGuidelines = lazy(() => import("./pages/SubmissionGuidelines")); const Contact = lazy(() => import("./pages/Contact")); // Admin routes (lazy-loaded - heavy bundle) const AdminDashboard = lazy(() => import("./pages/AdminDashboard")); const AdminModeration = lazy(() => import("./pages/AdminModeration")); const AdminReports = lazy(() => import("./pages/AdminReports")); const AdminSystemLog = lazy(() => import("./pages/AdminSystemLog")); const AdminUsers = lazy(() => import("./pages/AdminUsers")); const AdminBlog = lazy(() => import("./pages/AdminBlog")); const AdminSettings = lazy(() => import("./pages/AdminSettings")); const AdminContact = lazy(() => import("./pages/admin/AdminContact")); // User routes (lazy-loaded) const Profile = lazy(() => import("./pages/Profile")); const UserSettings = lazy(() => import("./pages/UserSettings")); const AuthCallback = lazy(() => import("./pages/AuthCallback")); // Utility routes (lazy-loaded) const NotFound = lazy(() => import("./pages/NotFound")); const ForceLogout = lazy(() => import("./pages/ForceLogout")); const queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, // Disable automatic refetch on tab focus refetchOnMount: true, // Keep refetch on component mount refetchOnReconnect: true, // Keep refetch on network reconnect retry: 1, // Keep retry attempts staleTime: 30000, // 30 seconds - queries stay fresh for 30s gcTime: 5 * 60 * 1000, // 5 minutes - keep in cache for 5 mins }, }, }); function AppContent() { return (
}> {/* Core routes - eager loaded */} } /> } /> } /> } /> } /> {/* Detail routes - lazy loaded */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* User routes - lazy loaded */} } /> } /> } /> } /> {/* Admin routes - lazy loaded */} } /> } /> } /> } /> } /> } /> } /> } /> {/* Utility routes - lazy loaded */} } /> {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} } />
); } const App = () => ( {import.meta.env.DEV && } ); export default App;