import { Routes, Route, useParams, useLocation, useNavigate } from 'react-router-dom'; import { motion, AnimatePresence } from 'motion/react'; // Import all your pages import { LoginModal } from './components/LoginModal'; import { MelbournePage } from './components/MelbournePage'; import { PassesPage } from './components/PassesPage'; import { AttractionsPage } from './components/AttractionsPage'; import { AttractionDetailsPage } from './components/AttractionDetailsPage'; import { CheckoutPage } from './components/CheckoutPage'; import { SecureCheckoutPage } from './components/SecureCheckoutPage'; import { BlogsPage } from './components/BlogsPage'; import { BlogDetailsPage } from './components/BlogDetailsPage'; import { HowItWorksPage } from './components/HowItWorksPage'; import { FAQPage } from './components/FAQPage'; import { PrivacyPolicyPage } from './components/PrivacyPolicyPage'; import { AboutUsPage } from './components/AboutUsPage'; import { ProfilePage } from './components/ProfilePage'; import { CreateMagicItineraryPage } from './components/CreateMagicItineraryPage'; import { ItineraryViewPage } from './components/ItineraryViewPage'; import { OffersPage } from './components/OffersPage'; import { CityCardsPage } from './components/CityCardsPage'; import { MagicItineraryPage } from './components/MagicItineraryPage'; import { PostCardsPage } from './components/PostCardsPage'; import { DownloadAppPage } from './components/DownloadAppPage'; import { EsimsPage } from './components/EsimsPage'; import { HotelDiscountsPage } from './components/HotelDiscountsPage'; import { ContactUsPage } from './components/ContactUsPage'; import { pageTransition } from './utils/animations'; import { LandingPage } from './pages/landingPage'; import ComingSoonPage from './pages/ComingSoonPage'; import { SuperSavingsPage } from './components/SuperSavingsPage'; import { WhatsIncluded } from './components/WhatsIncluded'; import { LandingMagicItineraryPage } from './components/LandingMagicItineraryPage'; import { DiscoverPage } from './components/DiscoverPage'; // 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 */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }