| import { BrowserRouter, Routes, Route, useLocation } from "react-router-dom"; |
| import { ToastProvider } from "./context/ToastContext.jsx"; |
| import { AuthProvider } from "./context/AuthContext.jsx"; |
| import Navbar from "./components/Navbar.jsx"; |
| import LandingPage from "./pages/LandingPage.jsx"; |
| import UploadPage from "./pages/UploadPage.jsx"; |
| import AnalysisPage from "./pages/AnalysisPage.jsx"; |
| import CAMPage from "./pages/CAMPage.jsx"; |
| import HistoryPage from "./pages/HistoryPage.jsx"; |
| import AuthPage from "./pages/AuthPage.jsx"; |
| import EntityOnboardingPage from "./pages/EntityOnboardingPage.jsx"; |
| import ProtectedRoute from "./components/ProtectedRoute.jsx"; |
|
|
| function AppShell() { |
| const location = useLocation(); |
| const isLanding = location.pathname === "/"; |
| return ( |
| <div className="grid-bg page"> |
| <Navbar /> |
| <div className={isLanding ? "" : "has-navbar"}> |
| <Routes> |
| <Route path="/" element={<LandingPage />} /> |
| <Route path="/auth" element={<AuthPage />} /> |
| <Route |
| path="/onboard" |
| element={ |
| <ProtectedRoute> |
| <EntityOnboardingPage /> |
| </ProtectedRoute> |
| } |
| /> |
| <Route |
| path="/upload" |
| element={ |
| <ProtectedRoute> |
| <UploadPage /> |
| </ProtectedRoute> |
| } |
| /> |
| <Route |
| path="/analysis/:jobId" |
| element={ |
| <ProtectedRoute> |
| <AnalysisPage /> |
| </ProtectedRoute> |
| } |
| /> |
| <Route |
| path="/cam/:jobId" |
| element={ |
| <ProtectedRoute> |
| <CAMPage /> |
| </ProtectedRoute> |
| } |
| /> |
| <Route |
| path="/history" |
| element={ |
| <ProtectedRoute> |
| <HistoryPage /> |
| </ProtectedRoute> |
| } |
| /> |
| </Routes> |
| </div> |
| </div> |
| ); |
| } |
|
|
| import { ThemeProvider } from "./context/ThemeContext.jsx"; |
|
|
| export default function App() { |
| return ( |
| <ThemeProvider> |
| <AuthProvider> |
| <ToastProvider> |
| <BrowserRouter> |
| <AppShell /> |
| </BrowserRouter> |
| </ToastProvider> |
| </AuthProvider> |
| </ThemeProvider> |
| ); |
| } |
|
|