feat: dark mode for all pages, calendar view for events
This commit is contained in:
77
src/App.tsx
77
src/App.tsx
@@ -1,22 +1,23 @@
|
||||
import { useEffect } from 'react';
|
||||
import { useEffect, lazy, Suspense } from 'react';
|
||||
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom';
|
||||
import { useAuthStore } from '@/stores/auth';
|
||||
import Layout from '@/components/Layout';
|
||||
import LoginPage from '@/pages/LoginPage';
|
||||
import DashboardPage from '@/pages/DashboardPage';
|
||||
import ClientsPage from '@/pages/ClientsPage';
|
||||
import ClientDetailPage from '@/pages/ClientDetailPage';
|
||||
import EventsPage from '@/pages/EventsPage';
|
||||
import EmailsPage from '@/pages/EmailsPage';
|
||||
import SettingsPage from '@/pages/SettingsPage';
|
||||
import AdminPage from '@/pages/AdminPage';
|
||||
import NetworkPage from '@/pages/NetworkPage';
|
||||
import ReportsPage from '@/pages/ReportsPage';
|
||||
import InvitePage from '@/pages/InvitePage';
|
||||
import ForgotPasswordPage from '@/pages/ForgotPasswordPage';
|
||||
import ResetPasswordPage from '@/pages/ResetPasswordPage';
|
||||
import { PageLoader } from '@/components/LoadingSpinner';
|
||||
|
||||
const LoginPage = lazy(() => import('@/pages/LoginPage'));
|
||||
const DashboardPage = lazy(() => import('@/pages/DashboardPage'));
|
||||
const ClientsPage = lazy(() => import('@/pages/ClientsPage'));
|
||||
const ClientDetailPage = lazy(() => import('@/pages/ClientDetailPage'));
|
||||
const EventsPage = lazy(() => import('@/pages/EventsPage'));
|
||||
const EmailsPage = lazy(() => import('@/pages/EmailsPage'));
|
||||
const SettingsPage = lazy(() => import('@/pages/SettingsPage'));
|
||||
const AdminPage = lazy(() => import('@/pages/AdminPage'));
|
||||
const NetworkPage = lazy(() => import('@/pages/NetworkPage'));
|
||||
const ReportsPage = lazy(() => import('@/pages/ReportsPage'));
|
||||
const InvitePage = lazy(() => import('@/pages/InvitePage'));
|
||||
const ForgotPasswordPage = lazy(() => import('@/pages/ForgotPasswordPage'));
|
||||
const ResetPasswordPage = lazy(() => import('@/pages/ResetPasswordPage'));
|
||||
|
||||
function ProtectedRoute({ children }: { children: React.ReactNode }) {
|
||||
const { isAuthenticated, isLoading } = useAuthStore();
|
||||
if (isLoading) return <PageLoader />;
|
||||
@@ -33,29 +34,31 @@ export default function App() {
|
||||
|
||||
return (
|
||||
<BrowserRouter>
|
||||
<Routes>
|
||||
<Route path="/login" element={
|
||||
isAuthenticated ? <Navigate to="/" replace /> : <LoginPage />
|
||||
} />
|
||||
<Route path="/invite/:token" element={<InvitePage />} />
|
||||
<Route path="/forgot-password" element={<ForgotPasswordPage />} />
|
||||
<Route path="/reset-password/:token" element={<ResetPasswordPage />} />
|
||||
<Route path="/" element={
|
||||
<ProtectedRoute>
|
||||
<Layout />
|
||||
</ProtectedRoute>
|
||||
}>
|
||||
<Route index element={<DashboardPage />} />
|
||||
<Route path="clients" element={<ClientsPage />} />
|
||||
<Route path="clients/:id" element={<ClientDetailPage />} />
|
||||
<Route path="events" element={<EventsPage />} />
|
||||
<Route path="emails" element={<EmailsPage />} />
|
||||
<Route path="network" element={<NetworkPage />} />
|
||||
<Route path="reports" element={<ReportsPage />} />
|
||||
<Route path="settings" element={<SettingsPage />} />
|
||||
<Route path="admin" element={<AdminPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
<Suspense fallback={<PageLoader />}>
|
||||
<Routes>
|
||||
<Route path="/login" element={
|
||||
isAuthenticated ? <Navigate to="/" replace /> : <LoginPage />
|
||||
} />
|
||||
<Route path="/invite/:token" element={<InvitePage />} />
|
||||
<Route path="/forgot-password" element={<ForgotPasswordPage />} />
|
||||
<Route path="/reset-password/:token" element={<ResetPasswordPage />} />
|
||||
<Route path="/" element={
|
||||
<ProtectedRoute>
|
||||
<Layout />
|
||||
</ProtectedRoute>
|
||||
}>
|
||||
<Route index element={<DashboardPage />} />
|
||||
<Route path="clients" element={<ClientsPage />} />
|
||||
<Route path="clients/:id" element={<ClientDetailPage />} />
|
||||
<Route path="events" element={<EventsPage />} />
|
||||
<Route path="emails" element={<EmailsPage />} />
|
||||
<Route path="network" element={<NetworkPage />} />
|
||||
<Route path="reports" element={<ReportsPage />} />
|
||||
<Route path="settings" element={<SettingsPage />} />
|
||||
<Route path="admin" element={<AdminPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
</Suspense>
|
||||
</BrowserRouter>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user