import React from "react"; import { Navigate, createBrowserRouter, Outlet } from "react-router-dom"; import App from "./App"; import { ClientDeliveryPage } from "./pages/ClientDeliveryPage"; import { DashboardPage } from "./pages/DashboardPage"; import { GroupDetailPage } from "./pages/GroupDetailPage"; import { LoginPage } from "./pages/LoginPage"; import { NotFoundPage } from "./pages/NotFoundPage"; import { ForbiddenPage } from "./pages/ForbiddenPage"; import { SettingsPage } from "./pages/SettingsPage"; import { useAuth } from "./context/AuthContext"; /** * Protects routes that require authentication. * Redirects to /login with return URL if no user and session is loaded. * Shows nothing while session is being restored (avoids flash-of-login). */ const RequireAuth = ({ children }) => { const { user, isSessionLoading } = useAuth(); if (isSessionLoading) { return null; } if (!user) { const redirect = encodeURIComponent(window.location.pathname + window.location.search); return ; } return children; }; export const router = createBrowserRouter([ { path: "/", element: , children: [ { index: true, element: , }, { path: "login", element: , }, { path: "delivery/:token", element: , }, { path: "forbidden", element: , }, { path: "dashboard", element: ( ), }, { path: "dashboard/group/:groupId", element: ( ), }, { path: "settings", element: ( ), }, { path: "*", element: , }, ], }, ]);