/**
 * Public Routes
 * 
 * Routes accessible to all users (authenticated and unauthenticated)
 */

import { lazy } from 'react';
import { RouteObject } from 'react-router-dom';

const HomePage = lazy(() => import('../pages/HomePage'));
const RoomListPage = lazy(() => import('../pages/customer/RoomListPage'));
const RoomDetailPage = lazy(() => import('../pages/customer/RoomDetailPage'));
const SearchResultsPage = lazy(() => import('../pages/customer/SearchResultsPage'));
const AboutPage = lazy(() => import('../pages/AboutPage'));
const ContactPage = lazy(() => import('../pages/ContactPage'));
const PrivacyPolicyPage = lazy(() => import('../pages/PrivacyPolicyPage'));
const TermsPage = lazy(() => import('../pages/TermsPage'));
const RefundsPolicyPage = lazy(() => import('../pages/RefundsPolicyPage'));
const CancellationPolicyPage = lazy(() => import('../pages/CancellationPolicyPage'));
const AccessibilityPage = lazy(() => import('../pages/AccessibilityPage'));
const FAQPage = lazy(() => import('../pages/FAQPage'));
const PaymentResultPage = lazy(() => import('../pages/customer/PaymentResultPage'));
const PayPalReturnPage = lazy(() => import('../pages/customer/PayPalReturnPage'));
const PayPalCancelPage = lazy(() => import('../pages/customer/PayPalCancelPage'));

const publicRoutes: RouteObject[] = [
  {
    path: '/',
    children: [
      { index: true, element: <HomePage /> },
      { path: 'rooms', element: <RoomListPage /> },
      { path: 'rooms/search', element: <SearchResultsPage /> },
      { path: 'rooms/:room_number', element: <RoomDetailPage /> },
      { path: 'payment-result', element: <PaymentResultPage /> },
      { path: 'payment/paypal/return', element: <PayPalReturnPage /> },
      { path: 'payment/paypal/cancel', element: <PayPalCancelPage /> },
      { path: 'about', element: <AboutPage /> },
      { path: 'contact', element: <ContactPage /> },
      { path: 'privacy', element: <PrivacyPolicyPage /> },
      { path: 'terms', element: <TermsPage /> },
      { path: 'refunds', element: <RefundsPolicyPage /> },
      { path: 'cancellation', element: <CancellationPolicyPage /> },
      { path: 'accessibility', element: <AccessibilityPage /> },
      { path: 'faq', element: <FAQPage /> },
    ],
  },
];

export default publicRoutes;

