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 */}
} />
} />
} />
} />
} />
} />
} />
} />
} />
} />
>
);
}