import { Routes, Route, useParams, useLocation, useNavigate } from 'react-router-dom'; import { motion, AnimatePresence } from 'motion/react'; // Import all your pages import { MelbournePage } from './pages/MelbournePage'; import { PassesPage } from './pages/PassesPage'; import { AttractionsPage } from './pages/AttractionsPage'; import { AttractionDetailsPage } from './pages/AttractionDetailsPage'; import { CheckoutPage } from './pages/CheckoutPage'; import { SecureCheckoutPage } from './pages/SecureCheckoutPage'; import { BlogsPage } from './pages/BlogsPage'; import { BlogDetailsPage } from './pages/BlogDetailsPage'; import { HowItWorksPage } from './components/HowItWorksPage'; import { FAQPage } from './components/FAQPage'; import { PrivacyPolicyPage } from './pages/PrivacyPolicyPage'; import { AboutUsPage } from './pages/AboutUsPage'; import { ProfilePage } from './pages/ProfilePage'; import { CreateMagicItineraryPage } from './pages/CreateMagicItineraryPage'; import { ItineraryViewPage } from './pages/ItineraryViewPage'; import { OffersPage } from './pages/OffersPage'; import { CityCardsPage } from './pages/CityCardsPage'; import { MagicItineraryPage } from './pages/MagicItineraryPage'; import { PostCardsPage } from './pages/PostCardsPage'; import { DownloadAppPage } from './pages/DownloadAppPage'; import { HotelDiscountsPage } from './pages/HotelDiscountsPage'; import { ContactUsPage } from './pages/ContactUsPage'; import { pageTransition } from './utils/animations'; import { LandingPage } from './pages/landingPage'; import ComingSoonPage from './pages/ComingSoonPage'; import { SuperSavingsPage } from './pages/SuperSavingsPage'; import { WhatsIncluded } from './pages/WhatsIncluded'; import { LandingMagicItineraryPage } from './pages/LandingMagicItineraryPage'; import { DiscoverPage } from './pages/DiscoverPage'; import { CartPage } from './pages/CartPage'; import { PaymentDetailsPage } from './pages/PaymentDetailsPage'; import { CartPageDesign } from './pages/CartPageDesign'; import { CheckoutPage2 } from './pages/CheckoutPage2'; // User type definition interface User { email: string; name: string; } interface AppRouterProps { user: User | null; activeCity: string; onCityChange: (city: string) => void; showLoginModal: boolean; onSignInClick: () => void; onSignOutClick: () => void; onLoginSuccess: (userData: User) => void; onCloseLoginModal: () => void; onCheckoutClick?: () => void; offersSource: 'products' | 'passes'; } export function AppRouter({ user, activeCity, onCityChange, showLoginModal, onSignInClick, onSignOutClick, onLoginSuccess, onCloseLoginModal, onCheckoutClick, offersSource }: AppRouterProps) { const location = useLocation(); const { attractionId, blogId } = useParams(); // Common navigation handlers for all pages const commonNavHandlers = { onSignInClick, onSignOutClick, user, }; const navigate = useNavigate(); return ( <> {/* Landing Page Route */} } /> {/* Home Route */} } /> {/* Passes Route */} } /> {/* Attractions Routes */} } /> navigate(-1)} onCheckoutClick={() => navigate('/checkout')} /> } /> {/* Checkout Routes */} {/* } /> */} } /> {/* Blog Routes */} } /> } /> {/* Information Pages */} } /> } /> } /> } /> } /> {/* User Routes */} } /> {/* Itinerary Routes */} } /> } /> } /> {/* Products Routes */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }