1.0.19 • Published 4 months ago

itinerary-generator v1.0.19

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Itinerary Generator

A React component library for generating travel itineraries based on user inputs. Perfect for travel applications, booking websites, and trip planning tools.

Installation

Install the package using npm:

npm install itinerary-generator

Or using yarn:

yarn add itinerary-generator

Features

  • 🌍 Generate complete travel itineraries for any destination
  • 📅 Support for customizable date ranges
  • 👥 Accommodates adults, children, and infants
  • 🔑 API key integration for secure access
  • 📱 Responsive design that works on all devices
  • 📝 Detailed daily plans with a single main activity, meal suggestions, and estimated costs
  • 🎯 Customizable preferences for activities and budget type

Quick Start

Basic Usage

import React from 'react';
import ItineraryForm from 'itinerary-generator';

function App() {
  const handleItineraryData = (data) => {
    console.log('Received itinerary data:', data);
    // Process or display the itinerary data
  };

  return (
    <div className="App">
      <h1>Plan Your Trip</h1>
      <ItineraryForm
        apiKey="your-api-key-here"
        onDataReceived={handleItineraryData}
        formDetails={{
          departureCity: 'New York',
          arrivalCity: 'Paris',
          departureDate: '2025-06-10',
          arrivalDate: '2025-06-20',
          travelers: {
            adults: 2,
            children: 1,
            infants: 0,
          },
          preferences: {
            activities: ['City sightseeing', 'Historical sites', 'Shopping'],
            budgetType: 'Mid-range',
          },
        }}
      />
    </div>
  );
}

export default App;

API Reference

<ItineraryForm> Props

PropTypeRequiredDescription
apiKeystringYesYour API key for authentication
onDataReceivedfunctionYesCallback function that receives itinerary data
formDetailsobjectYesDetails about the trip (see below)
keystringNoReact key for the component (optional)

formDetails Object

PropertyTypeRequiredDescription
departureCitystringYesThe departure city
arrivalCitystringYesThe arrival city (destination)
departureDatestringYesTrip start date in 'YYYY-MM-DD' format
arrivalDatestringYesTrip end date in 'YYYY-MM-DD' format
travelersobjectYesNumber of travelers
preferencesobjectYesTravel preferences (activities, budget)

travelers Object

PropertyTypeRequiredDescription
adultsnumberYesNumber of adults
childrennumberYesNumber of children
infantsnumberYesNumber of infants

preferences Object

PropertyTypeRequiredDescription
activitiesstring[]YesPreferred activities (e.g., sightseeing, shopping)
budgetTypestringYesBudget type: 'Budget', 'Mid-range', or 'Luxury'

Returned Itinerary Data Structure

The onDataReceived callback receives an object with the following structure:

interface ItineraryResult {
  departure_city: string;
  arrival_city: string;
  departure_date: string;
  arrival_date: string;
  travelers: {
    adults: number;
    children: number;
    infants: number;
  };
  budget_type: 'Budget' | 'Mid-range' | 'Luxury';
  itinerary: ItineraryDay[];
}

interface ItineraryDay {
  day: number;
  date: string;
  activity: string;
  location: string;
  meal_suggestions: string[];
  estimated_cost: number;
  additional_notes: string;
}

Examples

With Travel Preferences

<ItineraryForm
  apiKey="your-api-key-here"
  onDataReceived={handleItineraryData}
  formDetails={{
    departureCity: 'New York',
    arrivalCity: 'Paris',
    departureDate: '2025-06-10',
    arrivalDate: '2025-06-20',
    travelers: {
      adults: 2,
      children: 1,
      infants: 0,
    },
    preferences: {
      activities: ['City sightseeing', 'Historical sites', 'Shopping'],
      budgetType: 'Mid-range',
    },
  }}
/>

Handling the Returned Data

import React, { useState } from 'react';
import ItineraryForm from 'itinerary-generator';

function TripPlanner() {
  const [itinerary, setItinerary] = useState(null);

  const handleItineraryData = (data) => {
    setItinerary(data);
  };

  return (
    <div>
      <h1>Trip Planner</h1>
      <ItineraryForm
        apiKey="your-api-key-here"
        onDataReceived={handleItineraryData}
        formDetails={{
          departureCity: 'New York',
          arrivalCity: 'Paris',
          departureDate: '2025-06-10',
          arrivalDate: '2025-06-20',
          travelers: {
            adults: 2,
            children: 1,
            infants: 0,
          },
          preferences: {
            activities: ['City sightseeing', 'Historical sites', 'Shopping'],
            budgetType: 'Mid-range',
          },
        }}
      />
      {itinerary && itinerary.itinerary.map((day, index) => (
        <div key={index}>
          <h3>Day {day.day}: {day.date}</h3>
          <p><strong>Activity:</strong> {day.activity}</p>
          <p><strong>Location:</strong> {day.location}</p>
          <p><strong>Meal Suggestions:</strong> {day.meal_suggestions.join(', ')}</p>
          <p><strong>Estimated Cost:</strong> ${day.estimated_cost} per person</p>
        </div>
      ))}
    </div>
  );
}

export default TripPlanner;

API Key

To obtain an API key, visit our developer portal and register for an account.

Contributing

We welcome contributions! See CONTRIBUTING.md for details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

1.0.19

4 months ago

1.0.18

4 months ago

1.0.17

4 months ago

1.0.16

4 months ago

1.0.15

4 months ago

1.0.14

4 months ago

1.0.13

4 months ago

1.0.9

4 months ago

1.0.8

5 months ago

1.0.7

5 months ago

1.0.6

5 months ago

1.0.5

5 months ago