Tour Itinerary

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 (

🌍 Ghana Premium Tour Itinerary Builder

AI-Powered, Fully Customized Travel Planning for Seamless Ghanaian Exploration

{!showItinerary ? (
{step === 1 && (

📌 Trip Details & Travel Preferences

{destinations.map((dest) => (
handleMultiSelect('destinations', dest)} />
))}
)} {step === 2 && (

📌 Traveler Information & Special Requests

)} {step === 3 && (

📌 AI-Powered Itinerary Preferences

{activityOptions.map((activity) => (
handleMultiSelect('activities', activity)} />
))}
{diningOptions.map((option) => (
handleMultiSelect('diningPreferences', option)} />
))}
{culturalOptions.map((option) => (
handleMultiSelect('culturalExperiences', option)} />
))}
)} {step === 4 && (

🧳 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
)}
); }