Complete your purchase and start exploring Paris
diff --git a/src/components/CustomPostcards.tsx b/src/components/CustomPostcards.tsx
index 6562bfe..3556edb 100644
--- a/src/components/CustomPostcards.tsx
+++ b/src/components/CustomPostcards.tsx
@@ -4,7 +4,7 @@ import { Button } from './ui/button';
import { ImageWithFallback } from './figma/ImageWithFallback';
import { motion, useMotionValue, useSpring, useTransform, useInView } from 'motion/react';
import { HandwrittenText, useHandwrittenText } from './HandwrittenText';
-import postcardImage from 'figma:asset/d3a880cf8b7f1bec6da9b3f2ce4a76e822e483cf.png';
+import front from '../assets/front.jpg'
interface EditableCardProps {
isEditing: boolean;
@@ -190,485 +190,485 @@ export function CustomPostcards() {
};
// Ultra-realistic vintage postcard with responsive scaling and animations
- const PostcardFrame = () => {
- return (
-
- For correspondence
-
+ // For correspondence
+ //
diff --git a/src/components/LandingMagicItinerary.tsx b/src/components/LandingMagicItinerary.tsx
index cb5c0f5..a67a853 100644
--- a/src/components/LandingMagicItinerary.tsx
+++ b/src/components/LandingMagicItinerary.tsx
@@ -131,7 +131,7 @@ export function LandingMagicItinerary() {
viewport={{ once: true }}
>
Plan Your{' '}
-
+
Dream Journey
- Let our AI create a personalized itinerary just for you. Answer a few questions about your preferences,
- and we'll craft the perfect Melbourne experience tailored to your interests.
-
+ Experience intelligent trip planning powered by AI technology
+ {feature.description}
+ {feature.description}
+
+ A perfectly planned Melbourne adventure
+
+ {item.activity}
+
+ Save time, discover more, and create unforgettable memories with personalized planning
+
+ {benefit.description}
+
+ Your Magic Itinerary comes with comprehensive features for an amazing Melbourne experience
+
+ {item.description}
+
- Save time, discover more, and create unforgettable memories with personalized planning
- {benefit.description}
- Your Magic Itinerary comes with everything you need for an amazing Melbourne experience
- {item.description}
Skip the lines, save money, and explore more with our flexible city cards designed for modern travelers
@@ -329,7 +329,7 @@ export function PassesPage({
Simple tips to help you get the most out of your CityCard experience
@@ -604,7 +604,7 @@ export function PassesPage({
We're committed to providing the best city exploration experience with unmatched value and service
diff --git a/src/components/PersonalizedTourHero.tsx b/src/components/PersonalizedTourHero.tsx
index e5026cf..d7ef775 100644
--- a/src/components/PersonalizedTourHero.tsx
+++ b/src/components/PersonalizedTourHero.tsx
@@ -121,7 +121,8 @@ export function PersonalizedTourHero({ onCreateItineraryClick }: PersonalizedTou
{/* Main Heading */}
- Transform your travel memories into stunning, personalized postcards with authentic handwritten messages.
- Share your journey in a way that feels truly personal and meaningful.
-
- Get inspired by beautiful postcards created by our community of travelers
- "{postcard.message}"
+ Get inspired by beautiful postcards created by our community of travelers
+ "{postcard.message}"
The Only Card That Sends Your
-
+
Holiday
{' '}
Home.
@@ -783,7 +783,8 @@ export function CustomPostcards() {
WebkitBackfaceVisibility: "hidden"
}}
>
-
{/* Subtle glow effect */}
What our{' '}
-
+
travelers
{' '}
say
diff --git a/src/components/FAQPage.tsx b/src/components/FAQPage.tsx
index 58e7197..ffe84d2 100644
--- a/src/components/FAQPage.tsx
+++ b/src/components/FAQPage.tsx
@@ -244,7 +244,7 @@ export function FAQPage({
Frequently Asked{' '}
-
+
Questions
diff --git a/src/components/HowItWorks.tsx b/src/components/HowItWorks.tsx
index 35c4691..a4e680a 100644
--- a/src/components/HowItWorks.tsx
+++ b/src/components/HowItWorks.tsx
@@ -2,6 +2,7 @@ import { CreditCard, MapPin, Calendar, Zap, ChevronLeft, ChevronRight, Smartphon
import { useState } from 'react';
import { motion, AnimatePresence } from 'motion/react';
import { ImageWithFallback } from './figma/ImageWithFallback';
+import { useLocation } from 'react-router-dom';
const steps = [
{
@@ -51,6 +52,8 @@ const steps = [
export function HowItWorks() {
const [activeStep, setActiveStep] = useState(0); // Start with first step active
+ const location = useLocation()
+
const nextStep = () => {
setActiveStep((prev) => (prev + 1) % steps.length);
};
@@ -78,8 +81,10 @@ export function HowItWorks() {
How Your{' '}
- Melbourne{' '}
- City Card{' '}
+ {!location.pathname.includes("landing") &&
+ Melbourne
+ }
+ City Card{' '}
Works.
diff --git a/src/components/MagicItineraryPage.tsx b/src/components/MagicItineraryPage.tsx
index 45db6da..b6501e9 100644
--- a/src/components/MagicItineraryPage.tsx
+++ b/src/components/MagicItineraryPage.tsx
@@ -5,364 +5,422 @@ import { Button } from './ui/button';
import { Card, CardContent } from './ui/card';
import { Badge } from './ui/badge';
import Navbar from './Navbar';
-// import SubNavbar from './SubNavbar';
import { Footer } from './Footer';
import { MobileAppSection } from './MobileAppSection';
import { EnhancedTestimonials } from './EnhancedTestimonials';
import { HowItWorks } from './HowItWorks';
import { ImageWithFallback } from './figma/ImageWithFallback';
+import { PersonalizedTourHero } from './PersonalizedTourHero';
import { Layout } from '../Layout';
interface User {
- email: string;
- name: string;
+ email: string;
+ name: string;
}
interface MagicItineraryPageProps {
- onBackClick: () => void;
- onHomeClick: () => void;
- onMelbourneClick: () => void;
- onPassesClick: () => void;
- onCheckoutClick: () => void;
- onSignInClick: () => void;
- onSignOutClick?: () => void;
- onAttractionsClick: () => void;
- onBlogsClick: () => void;
- onHowItWorksClick: () => void;
- onFAQClick: () => void;
- onPrivacyPolicyClick: () => void;
- onAboutUsClick: () => void;
- onProfileClick: () => void;
- onCityCardsClick: () => void;
- onMagicItineraryClick: () => void;
- onPostCardsClick: () => void;
- onOffersClick: () => void;
- onContactUsClick?: () => void;
- onEsimsClick?: () => void;
- onHotelDiscountsClick?: () => void;
- onCreateItineraryClick: () => void;
- onViewItineraryClick: () => void;
- currentPage: string;
- user: User | null;
+ onBackClick: () => void;
+ onHomeClick: () => void;
+ onMelbourneClick: () => void;
+ onPassesClick: () => void;
+ onCheckoutClick: () => void;
+ onSignInClick: () => void;
+ onSignOutClick?: () => void;
+ onAttractionsClick: () => void;
+ onBlogsClick: () => void;
+ onHowItWorksClick: () => void;
+ onFAQClick: () => void;
+ onPrivacyPolicyClick: () => void;
+ onAboutUsClick: () => void;
+ onProfileClick: () => void;
+ onCityCardsClick: () => void;
+ onMagicItineraryClick: () => void;
+ onPostCardsClick: () => void;
+ onOffersClick: () => void;
+ onSuperSavingsClick?: () => void;
+ onContactUsClick?: () => void;
+ onEsimsClick?: () => void;
+ onHotelDiscountsClick?: () => void;
+ onCreateItineraryClick: () => void;
+ onViewItineraryClick: () => void;
+ currentPage: string;
+ user: User | null;
}
export function MagicItineraryPage({
- onBackClick,
- onHomeClick,
- onMelbourneClick,
- onPassesClick,
- onCheckoutClick,
- onSignInClick,
- onSignOutClick,
- onAttractionsClick,
- onBlogsClick,
- onHowItWorksClick,
- onFAQClick,
- onPrivacyPolicyClick,
- onAboutUsClick,
- onProfileClick,
- onCityCardsClick,
- onMagicItineraryClick,
- onPostCardsClick,
- onOffersClick,
- onContactUsClick,
- onEsimsClick,
- onHotelDiscountsClick,
- onCreateItineraryClick,
- onViewItineraryClick,
- currentPage,
- user
+ onBackClick,
+ onHomeClick,
+ onMelbourneClick,
+ onPassesClick,
+ onCheckoutClick,
+ onSignInClick,
+ onSignOutClick,
+ onAttractionsClick,
+ onBlogsClick,
+ onHowItWorksClick,
+ onFAQClick,
+ onPrivacyPolicyClick,
+ onAboutUsClick,
+ onProfileClick,
+ onCityCardsClick,
+ onMagicItineraryClick,
+ onPostCardsClick,
+ onOffersClick,
+ onSuperSavingsClick,
+ onContactUsClick,
+ onEsimsClick,
+ onHotelDiscountsClick,
+ onCreateItineraryClick,
+ onViewItineraryClick,
+ currentPage,
+ user
}: MagicItineraryPageProps) {
- return (
-
- Plan Your Perfect{' '}
-
- Melbourne Adventure
-
-
-
+ Smart Features for{' '}
+ Smart Travelers
+
+
- Smart Features for
+
- Smart Travelers
- {feature.title}
-
+ {feature.title}
+
+ Sample Itinerary
-
+ Sample Day Itinerary
+
+ Why Use Magic Itinerary?
+
+ {benefit.title}
+
+
+ Everything You Need,{' '}
+ All Included
+
+
+ {item.title}
+
+ Why Use Magic Itinerary?
- {benefit.title}
- What's Included
- {item.title}
-
Discover{' '}
-
+
Melbourne's
{' '}
Best{' '}
diff --git a/src/components/MelbourneBlogs.tsx b/src/components/MelbourneBlogs.tsx
index d65a7f9..da06e92 100644
--- a/src/components/MelbourneBlogs.tsx
+++ b/src/components/MelbourneBlogs.tsx
@@ -116,7 +116,7 @@ export function MelbourneBlogs() {
Melbourne{' '}
-
+
Blogs
diff --git a/src/components/MelbourneCardComparison.tsx b/src/components/MelbourneCardComparison.tsx
index 58aa1bb..d12ac03 100644
--- a/src/components/MelbourneCardComparison.tsx
+++ b/src/components/MelbourneCardComparison.tsx
@@ -124,7 +124,7 @@ export function MelbourneCardComparison({ onCheckoutClick }: MelbourneCardCompar
-
+
Buy
{' '}
Now
diff --git a/src/components/MelbourneFAQ.tsx b/src/components/MelbourneFAQ.tsx
index 30afd55..b9c4e83 100644
--- a/src/components/MelbourneFAQ.tsx
+++ b/src/components/MelbourneFAQ.tsx
@@ -101,7 +101,7 @@ export function MelbourneFAQ() {
Frequently Asked{' '}
-
+
Questions
diff --git a/src/components/MelbournePage.tsx b/src/components/MelbournePage.tsx
index 2471181..edd2bbd 100644
--- a/src/components/MelbournePage.tsx
+++ b/src/components/MelbournePage.tsx
@@ -395,7 +395,7 @@ export function MelbournePage({
viewport={{ once: true }}
>
Plan Your{' '}
-
+
Dream Journey
diff --git a/src/components/MelbourneTourOverview.tsx b/src/components/MelbourneTourOverview.tsx
index 4457593..55882a8 100644
--- a/src/components/MelbourneTourOverview.tsx
+++ b/src/components/MelbourneTourOverview.tsx
@@ -89,7 +89,7 @@ export function MelbourneTourOverview() {
>
Melbourne{' '}
-
+
Tour
{' '}
Overview
diff --git a/src/components/MobileAppSection.tsx b/src/components/MobileAppSection.tsx
index b4d3b91..677347d 100644
--- a/src/components/MobileAppSection.tsx
+++ b/src/components/MobileAppSection.tsx
@@ -68,7 +68,7 @@ export function MobileAppSection() {
>
Access all your{' '}
-
+
city cards
diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx
index 900f3b1..0dcef92 100644
--- a/src/components/Navbar.tsx
+++ b/src/components/Navbar.tsx
@@ -142,6 +142,13 @@ export default function Navbar({
path: '/faq',
isShared: false
},
+ {
+ label: 'Your PostCard',
+ path: '/postcards',
+ isShared: true,
+ landingLabel: 'Your PostCard',
+ melbourneLabel: 'Your PostCard'
+ }
],
melbourne: [
// Position 1
@@ -177,6 +184,13 @@ export default function Navbar({
isShared: true,
landingLabel: 'Your Card',
melbourneLabel: 'Your Card'
+ },
+ {
+ label: 'Your PostCard',
+ path: '/postcards',
+ isShared: true,
+ landingLabel: 'Your PostCard',
+ melbourneLabel: 'Your PostCard'
}
]
};
diff --git a/src/components/PassesPage.tsx b/src/components/PassesPage.tsx
index 2c05c99..cb87517 100644
--- a/src/components/PassesPage.tsx
+++ b/src/components/PassesPage.tsx
@@ -189,7 +189,7 @@ export function PassesPage({
- Buy Passes
+ Buy Passes
Good to{' '}
- Know
+ Know
Access all your{' '}
- city cards{' '}
+ city cards{' '}
on your{' '}
phone
@@ -663,7 +663,7 @@ export function PassesPage({
Why Choose{' '}
- CityCards?
+ CityCards?
Create Your{' '}
-
+
Magic Itinerary
diff --git a/src/components/PostCardsPage.tsx b/src/components/PostCardsPage.tsx
index 29ff99d..3eb05f6 100644
--- a/src/components/PostCardsPage.tsx
+++ b/src/components/PostCardsPage.tsx
@@ -13,6 +13,8 @@ import { CustomPostcards } from './CustomPostcards';
import { HowItWorks } from './HowItWorks';
import { ImageWithFallback } from './figma/ImageWithFallback';
import { Layout } from '../Layout';
+import front from '../assets/front.jpg'
+
interface User {
email: string;
@@ -73,165 +75,155 @@ export function PostCardsPage({
return (
- Create Beautiful{' '}
-
- Custom Postcards
-
-
- Postcard Gallery
- {postcard.title}
-
+ Postcard{' '}
+
+ Gallery
+ {' '}
+
+ {postcard.title}
+
Unlock{' '}
-
+
Super Savings
@@ -355,7 +355,7 @@ export function SuperSavingsPage({
>
Featured{' '}
-
+
Super Savings
diff --git a/src/components/TrustSection.tsx b/src/components/TrustSection.tsx
index 14fd60c..327f68d 100644
--- a/src/components/TrustSection.tsx
+++ b/src/components/TrustSection.tsx
@@ -151,7 +151,7 @@ export function TrustSection() {
What Our{' '}
-
+
Travelers
{' '}
Say
diff --git a/src/components/WhatsIncluded.tsx b/src/components/WhatsIncluded.tsx
index afc1307..a31114f 100644
--- a/src/components/WhatsIncluded.tsx
+++ b/src/components/WhatsIncluded.tsx
@@ -41,7 +41,7 @@ interface WhatsIncludedProps {
user: User | null;
}
-export function WhatsIncluded({
+export function WhatsIncluded({
onBackClick,
onHomeClick,
onMelbourneClick,
diff --git a/src/components/WhatsIncludedHero.tsx b/src/components/WhatsIncludedHero.tsx
index 6f8c230..aed0156 100644
--- a/src/components/WhatsIncludedHero.tsx
+++ b/src/components/WhatsIncludedHero.tsx
@@ -99,10 +99,13 @@ export function WhatsIncludedHero({ onCreateItineraryClick }: WhatsIncludedHeroP
className="text-center max-w-4xl"
>
{/* Main Heading */}
-
+
One pass.{' '}
-
- Everything you need
+
+ Everything you
+ {' '}
+
+ need
{' '}
to explore.
diff --git a/src/index.css b/src/index.css
index 5c19f7d..9c6c605 100644
--- a/src/index.css
+++ b/src/index.css
@@ -3661,6 +3661,7 @@
.bg-gradient-to-r {
--tw-gradient-position: to right in oklab;
background-image: linear-gradient(var(--tw-gradient-stops));
+ /* padding-right: 8px; */
}
.bg-gradient-to-t {
diff --git a/vite.config.ts b/vite.config.ts
index 551b307..b60eb7e 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -84,7 +84,7 @@ import * as path from 'path';
outDir: 'build',
},
server: {
- port: 4008,
+ port: 4009,
open: true,
},
});
\ No newline at end of file