import { Routes, Route, Navigate } from 'react-router-dom';
import { ROUTES } from '@/constants/routes';
import HomepagePage from '@/pages/HomepagePage';
import RegisterPage from '@/pages/RegisterPage';
import LoginPage from '@/pages/LoginPage';
import ForgotPasswordPage from '@/pages/ForgotPasswordPage';
import SearchResultsPage from '@/pages/SearchResultsPage';
import ListingDetailPage from '@/pages/ListingDetailPage';
import CardSetsBrowsePage from '@/pages/CardSetsBrowsePage';
import CartPage from '@/pages/CartPage';
import CheckoutPage from '@/pages/CheckoutPage';
import OrderConfirmationPage from '@/pages/OrderConfirmationPage';
import BuyerOrdersPage from '@/pages/BuyerOrdersPage';
import OrderDetailPage from '@/pages/OrderDetailPage';
import WishlistPage from '@/pages/WishlistPage';
import AccountProfilePage from '@/pages/AccountProfilePage';
import AccountAddressesPage from '@/pages/AccountAddressesPage';
import AccountNotificationsPage from '@/pages/AccountNotificationsPage';
import BecomeSellerPage from '@/pages/BecomeSellerPage';
import SellerProfilePage from '@/pages/SellerProfilePage';
import SellerDashboardPage from '@/pages/SellerDashboardPage';
import SellerListingsPage from '@/pages/SellerListingsPage';
import SellerCreateListingPage from '@/pages/SellerCreateListingPage';
import SellerEditListingPage from '@/pages/SellerEditListingPage';
import SellerOrdersPage from '@/pages/SellerOrdersPage';
import SellerOffersPage from '@/pages/SellerOffersPage';
import SellerAnalyticsPage from '@/pages/SellerAnalyticsPage';
import SellerPayoutsPage from '@/pages/SellerPayoutsPage';
import MessagesInboxPage from '@/pages/MessagesInboxPage';
import NotificationsPagePage from '@/pages/NotificationsPagePage';
import AdminDashboardPage from '@/pages/AdminDashboardPage';
import AdminUsersPage from '@/pages/AdminUsersPage';
import AdminModerationPage from '@/pages/AdminModerationPage';
import AdminDisputesPage from '@/pages/AdminDisputesPage';
import AdminReportsPage from '@/pages/AdminReportsPage';
import AdminCardCatalogPage from '@/pages/AdminCardCatalogPage';
import AdminPromotionsPage from '@/pages/AdminPromotionsPage';
import AdminSettingsPage from '@/pages/AdminSettingsPage';
import AdminAnalyticsPage from '@/pages/AdminAnalyticsPage';

const AppRouter = () => (
  <Routes>
    <Route path={ROUTES.HOMEPAGE} element={<HomepagePage />} />
      <Route path={ROUTES.REGISTER} element={<RegisterPage />} />
      <Route path={ROUTES.LOGIN} element={<LoginPage />} />
      <Route path={ROUTES.FORGOT_PASSWORD} element={<ForgotPasswordPage />} />
      <Route path={ROUTES.SEARCH_RESULTS} element={<SearchResultsPage />} />
      <Route path={ROUTES.LISTING_DETAIL} element={<ListingDetailPage />} />
      <Route path={ROUTES.CARD_SETS_BROWSE} element={<CardSetsBrowsePage />} />
      <Route path={ROUTES.CART} element={<CartPage />} />
      <Route path={ROUTES.CHECKOUT} element={<CheckoutPage />} />
      <Route path={ROUTES.ORDER_CONFIRMATION} element={<OrderConfirmationPage />} />
      <Route path={ROUTES.BUYER_ORDERS} element={<BuyerOrdersPage />} />
      <Route path={ROUTES.ORDER_DETAIL} element={<OrderDetailPage />} />
      <Route path={ROUTES.WISHLIST} element={<WishlistPage />} />
      <Route path={ROUTES.ACCOUNT_PROFILE} element={<AccountProfilePage />} />
      <Route path={ROUTES.ACCOUNT_ADDRESSES} element={<AccountAddressesPage />} />
      <Route path={ROUTES.ACCOUNT_NOTIFICATIONS} element={<AccountNotificationsPage />} />
      <Route path={ROUTES.BECOME_SELLER} element={<BecomeSellerPage />} />
      <Route path={ROUTES.SELLER_PROFILE} element={<SellerProfilePage />} />
      <Route path={ROUTES.SELLER_DASHBOARD} element={<SellerDashboardPage />} />
      <Route path={ROUTES.SELLER_LISTINGS} element={<SellerListingsPage />} />
      <Route path={ROUTES.SELLER_CREATE_LISTING} element={<SellerCreateListingPage />} />
      <Route path={ROUTES.SELLER_EDIT_LISTING} element={<SellerEditListingPage />} />
      <Route path={ROUTES.SELLER_ORDERS} element={<SellerOrdersPage />} />
      <Route path={ROUTES.SELLER_OFFERS} element={<SellerOffersPage />} />
      <Route path={ROUTES.SELLER_ANALYTICS} element={<SellerAnalyticsPage />} />
      <Route path={ROUTES.SELLER_PAYOUTS} element={<SellerPayoutsPage />} />
      <Route path={ROUTES.MESSAGES_INBOX} element={<MessagesInboxPage />} />
      <Route path={ROUTES.NOTIFICATIONS_PAGE} element={<NotificationsPagePage />} />
      <Route path={ROUTES.ADMIN_DASHBOARD} element={<AdminDashboardPage />} />
      <Route path={ROUTES.ADMIN_USERS} element={<AdminUsersPage />} />
      <Route path={ROUTES.ADMIN_MODERATION} element={<AdminModerationPage />} />
      <Route path={ROUTES.ADMIN_DISPUTES} element={<AdminDisputesPage />} />
      <Route path={ROUTES.ADMIN_REPORTS} element={<AdminReportsPage />} />
      <Route path={ROUTES.ADMIN_CARD_CATALOG} element={<AdminCardCatalogPage />} />
      <Route path={ROUTES.ADMIN_PROMOTIONS} element={<AdminPromotionsPage />} />
      <Route path={ROUTES.ADMIN_SETTINGS} element={<AdminSettingsPage />} />
      <Route path={ROUTES.ADMIN_ANALYTICS} element={<AdminAnalyticsPage />} />
    <Route path="*" element={<Navigate to={ROUTES.HOMEPAGE} replace />} />
  </Routes>
);

export default AppRouter;
