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: ,
},
],
},
]);