ca-grow-ops-manager/frontend/src/App.tsx
fullsizemalt 6b724386ba
Some checks failed
Deploy to Production / deploy (push) Failing after 0s
Test / backend-test (push) Failing after 0s
Test / frontend-test (push) Failing after 0s
feat: Phase 1 Complete (Backend + Frontend)
2025-12-09 09:24:00 -08:00

42 lines
1.3 KiB
TypeScript

import { createBrowserRouter, RouterProvider, Navigate } from 'react-router-dom';
import { AuthProvider, useAuth } from './context/AuthContext';
import Layout from './components/Layout';
import LoginPage from './pages/LoginPage';
import DashboardPage from './pages/DashboardPage';
import RoomsPage from './pages/RoomsPage';
import BatchesPage from './pages/BatchesPage';
import TimeclockPage from './pages/TimeclockPage';
const ProtectedRoute = ({ children }: { children: React.ReactNode }) => {
const { user, isLoading } = useAuth();
if (isLoading) return <div>Loading...</div>;
if (!user) return <Navigate to="/login" />;
return <>{children}</>;
};
const router = createBrowserRouter([
{
path: '/login',
element: <LoginPage />
},
{
path: '/',
element: <ProtectedRoute><Layout /></ProtectedRoute>,
children: [
{ index: true, element: <DashboardPage /> },
{ path: 'rooms', element: <RoomsPage /> },
{ path: 'batches', element: <BatchesPage /> },
{ path: 'timeclock', element: <TimeclockPage /> }
]
}
]);
function App() {
return (
<AuthProvider>
<RouterProvider router={router} />
</AuthProvider>
);
}
export default App;