import { useState } from 'react';export default function TourItineraryBuilder() {
const [step, setStep] = useState(1);
const [formData, setFormData] = useState({
destinations: [],
startDate: '',
endDate: '',
travelers: '',
tripType: '',
fullName: '',
email: '',
phone: '',
nationality: '',
specialRequirements: '',
activities: [],
accommodation: '',
transportation: '',
diningPreferences: [],
culturalExperiences: [],
instagramSpots: false,
tourCategories: []
});
const [showItinerary, setShowItinerary] = useState(false);
const destinations = [
"Accra", "Kumasi", "Cape Coast", "Elmina", "Aburi",
"Akosombo", "Volta Region", "Ada", "Keta", "Tamale",
"Mole National Park", "Busua", "Axim", "Takoradi", "Tafi Atome"
];
const tripTypes = [
"Cultural", "Adventure", "Wellness", "Culinary",
"Business", "Spiritual", "Ancestral Reconnection"
];
const activityOptions = [
"Cultural immersion", "Adventure trails", "Wellness retreats",
"Foodie tours", "Luxury escapes", "Mixed experiences"
];
const accommodationOptions = [
"Heritage lodges", "Eco-resorts", "Luxury beachfront stays", "Executive suites", "Boutique hotels"
];
const transportationOptions = [
"Chauffeured cars", "Riverboats", "Rental SUVs", "Private aviation", "Public transport"
];
const diningOptions = [
"Street food tours", "Fine dining", "Traditional cooking classes", "Farm-to-table experiences"
];
const culturalOptions = [
"Ancestral rites", "Artisan workshops", "Storytelling circles", "Royal visits", "Festival participation"
];
const tourCategoryOptions = [
"Nature, Wellness & Scenic Retreats",
"Heritage, History & Cultural Immersion",
"Diasporan Reconnection & Ancestral Discovery",
"Culinary, Adventure & Coastal Living",
"Corporate Travel & Executive Itineraries"
];
const handleInputChange = (e) => {
const { name, value } = e.target;
setFormData({ ...formData, [name]: value });
};
const handleCheckboxChange = (e) => {
const { name, checked } = e.target;
setFormData({ ...formData, [name]: checked });
};
const handleMultiSelect = (name, value) => {
if (formData[name].includes(value)) {
setFormData({
...formData,
[name]: formData[name].filter(item => item !== value)
});
} else {
setFormData({
...formData,
[name]: [...formData[name], value]
});
}
};
const nextStep = () => {
setStep(step + 1);
};
const prevStep = () => {
setStep(step - 1);
};
const generateItinerary = () => {
setShowItinerary(true);
};
const generateDates = () => {
if (formData.startDate && formData.endDate) {
const start = new Date(formData.startDate);
const end = new Date(formData.endDate);
const diffTime = Math.abs(end - start);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
return diffDays;
}
return 7; // Default to 7 days
};
const generateItineraryDays = () => {
const numDays = generateDates();
const days = [];
// Distribute activities based on selected preferences
let currentDestinationIndex = 0;
for (let i = 1; i <= numDays; i++) {
const destination = formData.destinations[currentDestinationIndex % formData.destinations.length];
let activities = [];
let categoryActivities = {};
if (formData.tourCategories.includes("Nature, Wellness & Scenic Retreats")) {
categoryActivities.nature = [
"Morning meditation at a scenic viewpoint",
"Spa treatment with local herbs and techniques",
"Guided hike to a hidden waterfall",
"Sunset yoga session"
];
}
if (formData.tourCategories.includes("Heritage, History & Cultural Immersion")) {
categoryActivities.heritage = [
"Visit to historical castle or fort",
"Traditional craft workshop",
"Meeting with local chiefs",
"Cultural performance attendance"
];
}
if (formData.tourCategories.includes("Diasporan Reconnection & Ancestral Discovery")) {
categoryActivities.diasporan = [
"Ancestral village visit",
"Naming ceremony experience",
"Genealogy consultation",
"Traditional healing session"
];
}
if (formData.tourCategories.includes("Culinary, Adventure & Coastal Living")) {
categoryActivities.culinary = [
"Cooking class with local chef",
"Street food tasting tour",
"Fishing expedition with locals",
"Farm-to-table dining experience"
];
}
if (formData.tourCategories.includes("Corporate Travel & Executive Itineraries")) {
categoryActivities.corporate = [
"Executive networking event",
"Business district tour",
"Industry-specific site visits",
"Meeting with local entrepreneurs"
];
}
// Rotate through categories to create variety
const categoryKeys = Object.keys(categoryActivities);
if (categoryKeys.length > 0) {
const categoryIndex = (i - 1) % categoryKeys.length;
const category = categoryKeys[categoryIndex];
const activityIndex = (i - 1) % categoryActivities[category].length;
activities.push(categoryActivities[category][activityIndex]);
// Add a second activity from a different category if available
if (categoryKeys.length > 1) {
const secondCategoryIndex = (categoryIndex + 1) % categoryKeys.length;
const secondCategory = categoryKeys[secondCategoryIndex];
const secondActivityIndex = (i - 1) % categoryActivities[secondCategory].length;
activities.push(categoryActivities[secondCategory][secondActivityIndex]);
}
}
if (formData.instagramSpots && i % 2 === 0) {
activities.push("Visit to Instagram-worthy photo location");
}
// Add dining experience based on preferences
if (formData.diningPreferences.length > 0) {
const diningIndex = (i - 1) % formData.diningPreferences.length;
const diningActivity = formData.diningPreferences[diningIndex];
activities.push(`${diningActivity} experience`);
}
days.push({
day: i,
destination: destination,
activities: activities,
accommodation: formData.accommodation
});
// Change destination every 2-3 days
if (i % 2 === 0 && formData.destinations.length > 1) {
currentDestinationIndex++;
}
}
return days;
};
return ({!showItinerary ? (
))}
)}
);
}
🌍 Ghana Premium Tour Itinerary Builder
AI-Powered, Fully Customized Travel Planning for Seamless Ghanaian Exploration
{step === 1 && (
)}
{step === 2 && (
)}
{step === 3 && (
)}
{step === 4 && (
)}
) : (📌 Trip Details & Travel Preferences
{destinations.map((dest) => (
handleMultiSelect('destinations', dest)}
/>
))}📌 Traveler Information & Special Requests
📌 AI-Powered Itinerary Preferences
{activityOptions.map((activity) => (
handleMultiSelect('activities', activity)}
/>
))}
{diningOptions.map((option) => (
handleMultiSelect('diningPreferences', option)}
/>
))}
{culturalOptions.map((option) => (
handleMultiSelect('culturalExperiences', option)}
/>
))}🧳 Signature Ghanaian Tour Categories
Select the tour categories that interest you:
{tourCategoryOptions.map((category) => (
handleMultiSelect('tourCategories', category)}
/>
))}Your Premium Ghana Journey
Name: {formData.fullName}
Travel Dates: {formData.startDate} to {formData.endDate}
Travelers: {formData.travelers}
Trip Type: {formData.tripType}
Accommodation: {formData.accommodation}
Transportation: {formData.transportation}
Selected Categories: {formData.tourCategories.length} categories
Day-by-Day Itinerary
{generateItineraryDays().map((day) => (Day {day.day}: {day.destination}
-
{day.activities.map((activity, index) => (
- {activity} ))}
Accommodation: {day.accommodation} in {day.destination}
AI Travel Insights
Based on your selections, our AI recommends:
- Best time to visit your selected destinations: {formData.startDate ? "Your selected dates align well with local events and weather patterns" : "June-August or December-January"}
- Consider adding {formData.destinations.includes("Cape Coast") ? "Kakum National Park" : "Cape Coast Castle"} to your itinerary
- Your {formData.tripType || "selected"} journey pairs well with local {formData.diningPreferences.length > 0 ? formData.diningPreferences[0].toLowerCase() : "culinary experiences"}
- Estimated budget range: Premium experience with selected amenities