52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
import React from 'react';
|
|
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
|
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
import { queryClient } from './lib/queryClient';
|
|
import { AuthProvider, ProtectedRoute } from './auth/AuthProvider';
|
|
import { ToastProvider } from './components/ui/Toast';
|
|
import { AppLayout } from './components/layout/AppLayout';
|
|
import { LandingPage } from './pages/LandingPage';
|
|
import { ExecutiveDashboard } from './pages/ExecutiveDashboard';
|
|
import { GovernancePage } from './pages/GovernancePage';
|
|
import { ProjectsPage } from './pages/ProjectsPage';
|
|
import { GrantsPage } from './pages/GrantsPage';
|
|
import { MonitoringPage } from './pages/MonitoringPage';
|
|
import { SettingsPage } from './pages/SettingsPage';
|
|
|
|
export default function App() {
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<BrowserRouter>
|
|
<AuthProvider>
|
|
<ToastProvider>
|
|
<Routes>
|
|
{/* Public OIDC Login / Landing Page */}
|
|
<Route path="/" element={<LandingPage />} />
|
|
<Route path="/login" element={<LandingPage />} />
|
|
|
|
{/* Protected Backoffice Application Shell */}
|
|
<Route
|
|
element={
|
|
<ProtectedRoute>
|
|
<AppLayout />
|
|
</ProtectedRoute>
|
|
}
|
|
>
|
|
<Route path="/dashboard" element={<ExecutiveDashboard />} />
|
|
<Route path="/governance" element={<GovernancePage />} />
|
|
<Route path="/projects" element={<ProjectsPage />} />
|
|
<Route path="/grants" element={<GrantsPage />} />
|
|
<Route path="/monitoring" element={<MonitoringPage />} />
|
|
<Route path="/settings" element={<SettingsPage />} />
|
|
</Route>
|
|
|
|
{/* Fallback Redirect */}
|
|
<Route path="*" element={<Navigate to="/dashboard" replace />} />
|
|
</Routes>
|
|
</ToastProvider>
|
|
</AuthProvider>
|
|
</BrowserRouter>
|
|
</QueryClientProvider>
|
|
);
|
|
}
|