55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { Navigate, Route, Routes } from "react-router-dom";
|
|
import { Layout } from "./ui/Layout";
|
|
import { HomePage } from "./pages/HomePage";
|
|
import { ProductsPage } from "./pages/ProductsPage";
|
|
import { ProductDetailsPage } from "./pages/ProductDetailsPage";
|
|
import { CartPage } from "./pages/CartPage";
|
|
import { LoginPage } from "./pages/LoginPage";
|
|
import { RegisterPage } from "./pages/RegisterPage";
|
|
import { CheckoutPage } from "./pages/CheckoutPage";
|
|
import { OrderConfirmationPage } from "./pages/OrderConfirmationPage";
|
|
import { AccountPage } from "./pages/AccountPage";
|
|
import { NotFoundPage } from "./pages/NotFoundPage";
|
|
import { RequireAuth } from "./ui/RequireAuth";
|
|
|
|
export default function App() {
|
|
return (
|
|
<Layout>
|
|
<Routes>
|
|
<Route path="/" element={<HomePage />} />
|
|
<Route path="/products" element={<ProductsPage />} />
|
|
<Route path="/products/:productId" element={<ProductDetailsPage />} />
|
|
<Route path="/cart" element={<CartPage />} />
|
|
<Route path="/login" element={<LoginPage />} />
|
|
<Route path="/register" element={<RegisterPage />} />
|
|
<Route
|
|
path="/checkout"
|
|
element={
|
|
<RequireAuth>
|
|
<CheckoutPage />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/account"
|
|
element={
|
|
<RequireAuth>
|
|
<AccountPage />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/order-confirmation/:orderId"
|
|
element={
|
|
<RequireAuth>
|
|
<OrderConfirmationPage />
|
|
</RequireAuth>
|
|
}
|
|
/>
|
|
<Route path="/home" element={<Navigate to="/" replace />} />
|
|
<Route path="*" element={<NotFoundPage />} />
|
|
</Routes>
|
|
</Layout>
|
|
);
|
|
}
|