import { useNavigate, useLocation, Routes, Route, Navigate, Outlet, } from "react-router-dom"; import { DashboardLayout, type SidebarItem } from "@edr/ui-common"; import { CalendarCheck, MapPin, Receipt, Home, Loader2, User, } from "lucide-react"; import useAuth from "./hooks/useAuth"; import ProfilePage from "./pages/ProfilePage"; import MyPortalPage from "./pages/MyPortalPage"; import EDRFreightLandingPage from "./pages/EDRFreightLandingPage"; import SignupPage from "./pages/accounts/SignupPage"; import OnboardingPage from "./pages/accounts/OnboardingPage"; import VerificationOtpPage from "./pages/accounts/VerificationOtpPage"; import SetPasswordPage from "./pages/accounts/SetPasswordPage"; import LoginPage from "./pages/accounts/LoginPage"; import MyBookings from "./pages/bookings/MyBookings"; import BookingDetailPage from "./pages/bookings/BookingDetailPage"; import NewBookingPage from "./pages/bookings/NewBookingPage"; import TrackingPage from "./pages/tracking/TrackingPage"; import BillingPage from "./pages/billing/BillingPage"; import { useEffect } from "react"; import CustomerOnBoarding from "./pages/customers/on_boarding/TransportrOnBoarding"; import CustomerOnboardingPage from "./pages/customers/on_boarding/CustomerOnboardingPage"; const sidebarItems: SidebarItem[] = [ { label: "Home", href: "/portal", icon: }, { label: "My Bookings", href: "/bookings", icon: }, { label: "Tracking", href: "/tracking", icon: }, { label: "Billing", href: "/billing", icon: }, { label: "Profile", href: "/profile", icon: }, ]; const App = () => { const navigate = useNavigate(); const location = useLocation(); const { user, isPending, logout, customer } = useAuth(); useEffect(() => { if (isPending) return; const isInProtectedRoutes = sidebarItems.find((item) => location.pathname.startsWith(item.href), ); if (!user) { if (isInProtectedRoutes) return navigate("/login"); return; } if (user && location.pathname === "/") navigate("/portal"); else if (!customer && !!isInProtectedRoutes) navigate("/onboarding"); else if (customer && !isInProtectedRoutes) return navigate("/portal"); }, [user, location, customer]); if (isPending) { return (
); } const displayName = user?.name?.en || user?.username || user?.email || "User"; const userEmail = user?.email; return ( } /> } /> } /> } /> } /> } /> } > } /> } /> } /> } /> } /> } /> } /> } /> ); }; export default App;