larxius commited on
Commit
a785406
·
verified ·
1 Parent(s): 3abe323

Update frontend/src/App.jsx

Browse files
Files changed (1) hide show
  1. frontend/src/App.jsx +74 -73
frontend/src/App.jsx CHANGED
@@ -1,73 +1,74 @@
1
- import React, { Suspense } from 'react';
2
- import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
3
- import { AuthProvider } from './components/AuthContext';
4
- import { ProtectedRoute } from './components/ProtectedRoute';
5
- import { Layout } from './components/Layout';
6
- import { Toaster } from 'react-hot-toast';
7
-
8
- const LandingPage = React.lazy(() => import('./pages/LandingPage').then(module => ({ default: module.LandingPage })));
9
- const Login = React.lazy(() => import('./pages/Login').then(module => ({ default: module.Login })));
10
- const Register = React.lazy(() => import('./pages/Register').then(module => ({ default: module.Register })));
11
- const Dashboard = React.lazy(() => import('./pages/Dashboard').then(module => ({ default: module.Dashboard })));
12
- const NewScan = React.lazy(() => import('./pages/NewScan').then(module => ({ default: module.NewScan })));
13
- const ScanResults = React.lazy(() => import('./pages/ScanResults').then(module => ({ default: module.ScanResults })));
14
- const AlertSettingsPage = React.lazy(() => import('./pages/Settings').then(module => ({ default: module.AlertSettingsPage })));
15
- const ReportsHistory = React.lazy(() => import('./pages/ReportsHistory').then(module => ({ default: module.ReportsHistory })));
16
- const AdminPage = React.lazy(() => import('./pages/AdminPage').then(module => ({ default: module.AdminPage })));
17
- const Pricing = React.lazy(() => import('./pages/Pricing'));
18
- const SuperAdminLogin = React.lazy(() => import('./pages/SuperAdminLogin').then(module => ({ default: module.SuperAdminLogin })));
19
- const SuperAdminPanel = React.lazy(() => import('./pages/SuperAdminPanel'));
20
-
21
- const OrganizationPage = React.lazy(() => import('./pages/OrganizationPage').then(module => ({ default: module.OrganizationPage })));
22
- const LogsAndThreats = React.lazy(() => import('./pages/LogsAndThreats'));
23
- const Profile = React.lazy(() => import('./pages/Profile'));
24
- const Help = React.lazy(() => import('./pages/Help').then(module => ({ default: module.Help })));
25
-
26
-
27
- function App() {
28
- return (
29
- <Router>
30
- <AuthProvider>
31
- <Toaster position="top-center" toastOptions={{
32
- style: {
33
- background: 'var(--surface-container-lowest)',
34
- color: 'var(--on-surface)',
35
- border: '1px solid var(--outline-variant)',
36
- },
37
- success: { iconTheme: { primary: '#10b981', secondary: 'white' } },
38
- error: { iconTheme: { primary: '#ef4444', secondary: 'white' } }
39
- }} />
40
- <Suspense fallback={<div className="flex h-screen items-center justify-center bg-surface"><div className="animate-spin rounded-full h-8 w-8 border-b-2 border-primary"></div></div>}>
41
- <Routes>
42
- <Route path="/" element={<LandingPage />} />
43
- <Route path="/login" element={<Login />} />
44
- <Route path="/register" element={<Register />} />
45
- <Route path="/pricing" element={<Layout><Pricing /></Layout>} />
46
-
47
- <Route element={<ProtectedRoute />}>
48
- <Route path="/dashboard" element={<Layout><Dashboard /></Layout>} />
49
- <Route path="/profile" element={<Layout><Profile /></Layout>} />
50
- <Route path="/scans/new" element={<Layout><NewScan /></Layout>} />
51
- <Route path="/scans/history" element={<Layout><ReportsHistory /></Layout>} />
52
- <Route path="/scans/results" element={<Layout><ScanResults /></Layout>} />
53
- <Route path="/settings" element={<Layout><AlertSettingsPage /></Layout>} />
54
- <Route path="/help" element={<Layout><Help /></Layout>} />
55
- <Route path="/admin" element={<ProtectedRoute requiredRole="admin"><Layout><AdminPage /></Layout></ProtectedRoute>} />
56
- </Route>
57
-
58
- <Route path="/larshield-superadmin" element={<SuperAdminLogin />} />
59
- <Route path="/super-admin" element={<Layout><SuperAdminPanel /></Layout>} />
60
-
61
- <Route path="/organization" element={<Layout><OrganizationPage /></Layout>} />
62
- <Route path="/super-admin/logs" element={<Layout><LogsAndThreats /></Layout>} />
63
-
64
-
65
- <Route path="*" element={<Navigate to="/" replace />} />
66
- </Routes>
67
- </Suspense>
68
- </AuthProvider>
69
- </Router>
70
- );
71
- }
72
-
73
- export default App;
 
 
1
+ import React, { Suspense } from 'react';
2
+ import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
3
+ import { AuthProvider } from './components/AuthContext';
4
+ import { ProtectedRoute } from './components/ProtectedRoute';
5
+ import { Layout } from './components/Layout';
6
+ import { ErrorBoundary } from './components/ErrorBoundary';
7
+ import { Toaster } from 'react-hot-toast';
8
+
9
+ const LandingPage = React.lazy(() => import('./pages/LandingPage').then(module => ({ default: module.LandingPage })));
10
+ const Login = React.lazy(() => import('./pages/Login').then(module => ({ default: module.Login })));
11
+ const Register = React.lazy(() => import('./pages/Register').then(module => ({ default: module.Register })));
12
+ const Dashboard = React.lazy(() => import('./pages/Dashboard').then(module => ({ default: module.Dashboard })));
13
+ const NewScan = React.lazy(() => import('./pages/NewScan').then(module => ({ default: module.NewScan })));
14
+ const ScanResults = React.lazy(() => import('./pages/ScanResults').then(module => ({ default: module.ScanResults })));
15
+ const AlertSettingsPage = React.lazy(() => import('./pages/Settings').then(module => ({ default: module.AlertSettingsPage })));
16
+ const ReportsHistory = React.lazy(() => import('./pages/ReportsHistory').then(module => ({ default: module.ReportsHistory })));
17
+ const AdminPage = React.lazy(() => import('./pages/AdminPage').then(module => ({ default: module.AdminPage })));
18
+ const Pricing = React.lazy(() => import('./pages/Pricing'));
19
+ const SuperAdminLogin = React.lazy(() => import('./pages/SuperAdminLogin').then(module => ({ default: module.SuperAdminLogin })));
20
+ const SuperAdminPanel = React.lazy(() => import('./pages/SuperAdminPanel'));
21
+
22
+ const OrganizationPage = React.lazy(() => import('./pages/OrganizationPage').then(module => ({ default: module.OrganizationPage })));
23
+ const LogsAndThreats = React.lazy(() => import('./pages/LogsAndThreats'));
24
+ const Profile = React.lazy(() => import('./pages/Profile'));
25
+ const Help = React.lazy(() => import('./pages/Help').then(module => ({ default: module.Help })));
26
+
27
+ function App() {
28
+ return (
29
+ <Router>
30
+ <ErrorBoundary>
31
+ <AuthProvider>
32
+ <Toaster position="top-center" toastOptions={{
33
+ style: {
34
+ background: 'var(--surface-container-lowest)',
35
+ color: 'var(--on-surface)',
36
+ border: '1px solid var(--outline-variant)',
37
+ },
38
+ success: { iconTheme: { primary: '#10b981', secondary: 'white' } },
39
+ error: { iconTheme: { primary: '#ef4444', secondary: 'white' } }
40
+ }} />
41
+ <Suspense fallback={<div className="flex h-screen items-center justify-center bg-surface"><div className="animate-spin rounded-full h-8 w-8 border-b-2 border-primary"></div></div>}>
42
+ <Routes>
43
+ <Route path="/" element={<LandingPage />} />
44
+ <Route path="/login" element={<Login />} />
45
+ <Route path="/register" element={<Register />} />
46
+ <Route path="/pricing" element={<Layout><Pricing /></Layout>} />
47
+
48
+ <Route element={<ProtectedRoute />}>
49
+ <Route path="/dashboard" element={<Layout><Dashboard /></Layout>} />
50
+ <Route path="/profile" element={<Layout><Profile /></Layout>} />
51
+ <Route path="/scans/new" element={<Layout><NewScan /></Layout>} />
52
+ <Route path="/scans/history" element={<Layout><ReportsHistory /></Layout>} />
53
+ <Route path="/scans/results" element={<Layout><ScanResults /></Layout>} />
54
+ <Route path="/settings" element={<Layout><AlertSettingsPage /></Layout>} />
55
+ <Route path="/help" element={<Layout><Help /></Layout>} />
56
+ <Route path="/admin" element={<ProtectedRoute requiredRole="admin"><Layout><AdminPage /></Layout></ProtectedRoute>} />
57
+ </Route>
58
+
59
+ <Route path="/larshield-superadmin" element={<SuperAdminLogin />} />
60
+ <Route path="/super-admin" element={<Layout><SuperAdminPanel /></Layout>} />
61
+
62
+ <Route path="/organization" element={<Layout><OrganizationPage /></Layout>} />
63
+ <Route path="/super-admin/logs" element={<Layout><LogsAndThreats /></Layout>} />
64
+
65
+ <Route path="*" element={<Navigate to="/" replace />} />
66
+ </Routes>
67
+ </Suspense>
68
+ </AuthProvider>
69
+ </ErrorBoundary>
70
+ </Router>
71
+ );
72
+ }
73
+
74
+ export default App;