import { Grid } from "antd"; import { Loader } from "components/Loader/Loader"; import { PrivateRoute } from "components/privateRoute/PrivateRoute"; import { AppLayout } from "layouts"; import HeaderMenuDrawer from "layouts/app/HeaderMenuDrawer"; import AddressPage from "pages/address/page"; import CartPage from "pages/cart/page"; import CheckoutPage from "pages/checkout/page"; import LoginPage from "pages/login/page"; import MenuPage from "pages/menu/page"; import OrderPage from "pages/order/page"; import OrdersPage from "pages/orders/page"; import OtpPage from "pages/otp/page"; import ProductDetailPage from "pages/product/page"; import RestaurantPage from "pages/restaurant/page"; import SearchPage from "pages/search/page"; import SplitBillPage from "pages/split-bill/page"; import React, { ReactNode, Suspense, useEffect } from "react"; import { createHashRouter, useLocation } from "react-router-dom"; import { SignInPage } from "../pages/authentication"; import { Error400Page, ErrorPage } from "../pages/errors"; const { useBreakpoint } = Grid; // Custom scroll restoration function export const ScrollToTop: React.FC = () => { const { pathname } = useLocation(); useEffect(() => { window.scrollTo({ top: 0, left: 0, behavior: "smooth", }); // Scroll to the top when the location changes }, [pathname]); return null; // This component doesn't render anything }; type PageProps = { children: ReactNode; }; // Create an HOC to wrap your route components with ScrollToTop const PageWrapper = ({ children }: PageProps) => { const { xs, sm, md } = useBreakpoint(); return ( }> {children} {(xs || sm || md) && } ); }; export const router = createHashRouter([ { path: "/", element: } />, errorElement: , }, { path: "/:id", element: } />, errorElement: , }, { path: "/:id/menu", element: } />, errorElement: , }, { path: "/:id/cart", element: ( } /> ), errorElement: , }, { path: "/:id/address", element: } />, errorElement: , }, { path: "/:id/checkout", element: } />, errorElement: , }, { path: "/:id/split-bill", element: } />, errorElement: , }, { path: "/:id/product/:productId", element: } />, errorElement: , }, { path: "/:id/search", element: } />, errorElement: , }, { path: "/:id/orders", element: ( } /> ), errorElement: , }, { path: "/:id/login", element: } />, errorElement: , }, { path: "/:id/otp", element: } />, errorElement: , }, { path: "/:id/order", element: } />, errorElement: , }, { path: "/auth", errorElement: , children: [ { path: "signin", element: , // No PrivateRoute for sign-in }, ], }, { path: "errors", errorElement: , children: [ { path: "400", element: ( ), }, ], }, ]); export default router;