{"version":3,"sources":["utils/fetchAgentsData.js","pages/HomePage.js","pages/ServicesPage.js","pages/AgentsPage.js","pages/AboutPage.js","pages/ContactPage.js","pages/DestinationsPage.js","pages/ReviewsPage.js","components/Navbar.js","components/Footer.js","App.js","reportWebVitals.js","index.js"],"names":["fetchAgentsData","async","response","fetch","ok","Error","json","HomeContainer","styled","div","LogoContainer","LogoImage","img","HeroSection","HeroTextContainer","HeroHeader","h1","HeroLine","p","HeroButton","Link","TravelInsuranceLink","a","AgentsContainer","AgentCard","AgentName","h3","AgentTitle","AgentEmail","AgentPhone","HomePage","agents","setAgents","useState","loading","setLoading","error","setError","useEffect","data","console","loadAgents","React","createElement","src","alt","to","map","agent","index","key","name","title","href","contact","email","phone","target","rel","ServicesContainer","ServicesHeader","h2","ServicesDescription","ServiceList","ul","ServiceItem","li","ServicesPage","AgentsPageContainer","AgentHeader","AgentList","AgentPicture","AgentContact","BioLink","button","ModalOverlay","_ref","isOpen","ModalContent","CloseButton","AgentsPage","selectedAgent","setSelectedAgent","filteredAgents","filter","picture","biography","onClick","openModal","closeModal","AboutPageContainer","Header","FeaturesContainer","FeatureCard","FeatureHeader","FeatureText","AboutPage","activeFAQ","setActiveFAQ","question","answer","faq","toggleFAQ","AWS","config","update","accessKeyId","secretAccessKey","region","sns","SNS","ContactContainer","Form","form","Input","input","Textarea","textarea","Button","ContactPage","formData","setFormData","message","handleChange","e","value","onSubmit","preventDefault","messageObject","subject","params","Message","JSON","stringify","TopicArn","publish","promise","alert","type","placeholder","onChange","required","fadeOut","keyframes","DestinationsContainer","DestinationsGrid","ImageCard","Image","ImageCaption","Modal","_ref2","closing","ModalImage","ModalDescriptionBox","ModalDescription","NavigationButtons","NavButton","DestinationsPage","destinations","setDestinations","isModalOpen","setIsModalOpen","selectedGroup","setSelectedGroup","currentIndex","setCurrentIndex","setClosing","then","groupedDestinations","reduce","acc","item","group","caption","push","Object","entries","catch","setTimeout","_ref3","id","length","description","line","prevImage","prevIndex","nextImage","initialReviews","comment","ReviewsContainer","ReviewsHeader","ReviewList","ReviewCard","ReviewForm","SubmitButton","ReviewsPage","reviews","setReviews","newReview","setNewReview","handleInputChange","handleReviewSubmit","review","NavbarContainer","nav","LogoLink","Hamburger","NavbarLinks","open","Backdrop","Navbar","menuOpen","setMenuOpen","menuRef","useRef","closeMenu","handleClickOutside","event","current","contains","document","addEventListener","removeEventListener","Fragment","ref","style","color","fontSize","margin","toggleMenu","FooterContainer","footer","FooterLink","Footer","App","Router","Routes","Route","path","element","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","createRoot","getElementById","render","StrictMode"],"mappings":"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","file":"static/js/main.a7f1e224.chunk.js","sourcesContent":["export const fetchAgentsData = async () => {\n const response = await fetch('/assets/agents.json');\n if (!response.ok) {\n throw new Error('Failed to fetch agents data');\n }\n const data = await response.json();\n return data;\n};\n","import React, { useEffect, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { fetchAgentsData } from '../utils/fetchAgentsData';\nimport styled from 'styled-components';\n\nconst HomeContainer = styled.div`\n background-color: #F5F5F5;\n text-align: center;\n padding: 20px;\n font-family: Georgia, serif;\n`;\n\nconst LogoContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 20px;\n`;\n\nconst LogoImage = styled.img`\n height: 100px;\n object-fit: contain;\n`;\n\nconst HeroSection = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n height: 500px;\n padding: 20px;\n background: url('/images/cabo.jpg') center/cover no-repeat;\n color: #000;\n position: relative;\n z-index: 1;\n\n @media (max-width: 768px) {\n align-items: center;\n text-align: center;\n height: auto;\n }\n`;\n\nconst HeroTextContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n text-align: left;\n padding: 15px;\n z-index: 1;\n\n @media (max-width: 768px) {\n align-items: center;\n text-align: center;\n background-color: rgba(175, 200, 200, 0.5);\n padding: 20px;\n border-radius: 8px;\n }\n`;\n\n\nconst HeroHeader = styled.h1`\n font-size: 3rem;\n margin: 10px 0;\n color: white;\n\n @media (max-width: 768px) {\n color: white;\n }\n`;\n\nconst HeroLine = styled.p`\n font-size: 2rem;\n margin: 5px 0;\n color: white;\n\n @media (max-width: 768px) {\n color: white;\n }\n`;\n\nconst HeroButton = styled(Link)`\n padding: 10px 20px;\n background-color: #ff5722;\n color: white;\n text-decoration: none;\n font-weight: bold;\n border-radius: 5px;\n margin-top: 20px;\n transition: background-color 0.3s ease;\n\n &:hover {\n background-color: #e64a19;\n }\n`;\n\nconst TravelInsuranceLink = styled.a`\n display: block;\n margin: 20px auto;\n max-width: 80%;\n text-align: center;\n\n img {\n width: 100%;\n max-width: 600px;\n height: auto;\n border-radius: 8px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);\n }\n }\n`;\n\nconst AgentsContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n gap: 20px;\n padding: 40px 0;\n max-width: 900px;\n margin: 0 auto;\n\n @media (max-width: 768px) {\n flex-direction: column;\n align-items: center;\n }\n`;\n\nconst AgentCard = styled.div`\n background-color: #f9f9f9;\n border-radius: 10px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n padding: 20px;\n width: 280px; /* Consistent width */\n height: 240; /* Consistent height */\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n text-align: left;\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n\n &:hover {\n transform: translateY(-5px);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);\n }\n`;\n\nconst AgentName = styled.h3`\n color: #0099cc;\n margin-bottom: 10px;\n`;\n\nconst AgentTitle = styled.p`\n font-size: 1rem;\n font-weight: bold;\n color: #555;\n margin-bottom: 10px;\n`;\n\nconst AgentEmail = styled.a`\n color: #0099cc;\n text-decoration: none;\n font-weight: bold;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst AgentPhone = styled.a`\n color: #0099cc;\n text-decoration: none;\n font-weight: bold;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\n\nconst HomePage = () => {\n const [agents, setAgents] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n const loadAgents = async () => {\n try {\n const data = await fetchAgentsData();\n setAgents(data);\n } catch (error) {\n setError('Failed to load agents data');\n console.error('Error loading agents data:', error);\n } finally {\n setLoading(false);\n }\n };\n loadAgents();\n }, []);\n\n if (loading) {\n return

Loading agents...

;\n }\n\n if (error) {\n return

{error}

;\n }\n\n return (\n \n \n \n \n \n \n We do the planning for you.\n Explore, relax, and enjoy every moment.\n Let's book the vacation of your dreams!\n Contact Us To Book Now\n \n \n

Connect With Our Travel Specialists

\n \n {agents.map((agent, index) => (\n \n {agent.name}\n {agent.title || 'Vacation Specialist'}\n {agent.contact.email}\n {agent.contact.phone}\n \n ))}\n \n \n \n \n
\n );\n};\n\nexport default HomePage;\n","import React from 'react';\nimport styled from 'styled-components';\n\n// Styled Components\nconst ServicesContainer = styled.div`\n padding: 40px;\n max-width: 900px;\n margin: 0 auto;\n text-align: center;\n font-family: Georgia, serif;\n`;\n\nconst ServicesHeader = styled.h2`\n font-size: 3rem;\n color: #ff5722;\n margin-bottom: 20px;\n`;\n\nconst ServicesDescription = styled.p`\n font-size: 1.2rem;\n color: #555;\n margin-bottom: 30px;\n`;\n\nconst ServiceList = styled.ul`\n list-style-type: none;\n padding: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n\n @media (min-width: 768px) {\n flex-direction: row; /* Arrange items in a row on larger screens */\n flex-wrap: wrap; /* Allow wrapping to multiple lines */\n justify-content: center; /* Center the items */\n }\n`;\n\nconst ServiceItem = styled.li`\n font-size: 1.1rem;\n padding: 15px 20px;\n background-color: #f9f9f9;\n border-radius: 8px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n width: 100%;\n max-width: 400px; /* Set a max width for better layout */\n text-align: left;\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n\n &:hover {\n transform: translateY(-5px);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);\n }\n\n strong {\n color: #ff5722;\n }\n`;\n\nconst ServicesPage = () => {\n return (\n \n Our Services\n Explore our range of travel services designed to make your trip unforgettable:\n \n 🎉 Unique life experiences: We specialize in offering once in a lifetime experiences that will create lasting memories.\n 🧳 Personalized trips: Travel is different for everyone. We want to make sure that you are getting the most from your trip by crafting the dream vacation that is perfect for you.\n 🛡️ Incredible detail and service: We've got your back. In the event something does come up, our team is here to help make sure your trip is not interrupted.\n \n \n ✈️ Flight Bookings: Find the best flight deals.\n 🏨 Hotel Reservations: Book comfortable and affordable accommodations.\n 🚗 Car Rentals: Rent a car for your convenience.\n 🛳️ Cruise Bookings: Plan your dream cruise across exotic destinations.\n 🗺️ Tour Packages: Explore curated travel packages to popular destinations.\n \n \n );\n};\n\nexport default ServicesPage;\n","import React, { useEffect, useState } from 'react';\nimport { fetchAgentsData } from '../utils/fetchAgentsData';\nimport styled from 'styled-components';\n\nconst AgentsPageContainer = styled.div`\n text-align: center;\n justify-content: center;\n max-width: 1200px;\n margin: 0 auto;\n padding: 20px;\n font-family: Georgia, serif;\n`;\n\nconst AgentHeader = styled.h1`\n color: #ff5722;\n margin-top: 40px;\n`;\n\nconst AgentList = styled.div`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 20px;\n margin-top: 40px;\n`;\n\nconst AgentCard = styled.div`\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n padding: 20px;\n transition: transform 0.3s ease;\n text-align: left;\n\n &:hover {\n transform: translateY(-5px);\n }\n`;\n\nconst AgentName = styled.h3`\n color: #ff5722;\n margin-bottom: 10px;\n`;\n\nconst AgentPicture = styled.img`\n width: 100%;\n height: auto;\n max-height: 250px;\n object-fit: cover; /* Ensures proper aspect ratio */\n border-radius: 8px;\n margin-bottom: 15px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n`;\n\nconst AgentContact = styled.div`\n color: #333;\n margin-bottom: 10px;\n`;\n\nconst BioLink = styled.button`\n background: none;\n border: none;\n color: #ff5722;\n cursor: pointer;\n font-size: 1rem;\n margin-top: 10px;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst ModalOverlay = styled.div`\n display: ${({ isOpen }) => (isOpen ? 'flex' : 'none')};\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.8);\n justify-content: center;\n align-items: center;\n z-index: 1000;\n`;\n\nconst ModalContent = styled.div`\n background: #fff;\n padding: 20px;\n border-radius: 8px;\n max-width: 500px;\n text-align: left;\n`;\n\nconst CloseButton = styled.button`\n background: #ff5722;\n color: #fff;\n border: none;\n border-radius: 4px;\n padding: 10px 15px;\n cursor: pointer;\n font-size: 1rem;\n\n &:hover {\n background: #e64a19;\n }\n`;\n\nconst AgentsPage = () => {\n const [agents, setAgents] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n const [selectedAgent, setSelectedAgent] = useState(null);\n\n useEffect(() => {\n const loadAgents = async () => {\n try {\n const data = await fetchAgentsData();\n const filteredAgents = data.filter(\n (agent) => agent.picture && agent.biography\n );\n setAgents(filteredAgents);\n } catch (error) {\n setError('Failed to load agents data');\n console.error('Error loading agents data:', error);\n } finally {\n setLoading(false);\n }\n };\n loadAgents();\n }, []);\n\n const openModal = (agent) => {\n setSelectedAgent(agent);\n };\n\n const closeModal = () => {\n setSelectedAgent(null);\n };\n\n if (loading) {\n return

Loading agents...

;\n }\n\n if (error) {\n return

{error}

;\n }\n\n return (\n \n Meet Our Travel Agents\n \n {agents.map((agent, index) => (\n \n \n {agent.name}\n \n {agent.contact.email &&
Email: {agent.contact.email}
}\n {agent.contact.phone &&
Phone: {agent.contact.phone}
}\n
\n openModal(agent)}>Bio\n
\n ))}\n
\n\n {selectedAgent && (\n \n \n

{selectedAgent.name}

\n

{selectedAgent.biography}

\n Close\n
\n
\n )}\n
\n );\n};\n\nexport default AgentsPage;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nconst AboutPageContainer = styled.div`\n text-align: center;\n max-width: 1200px;\n margin: 0 auto;\n padding: 40px 20px;\n font-family: Georgia, serif;\n`;\n\nconst Header = styled.h2`\n font-size: 3rem;\n color: black;\n margin-bottom: 40px;\n`;\n\nconst FeaturesContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n margin-top: 20px;\n margin-bottom: 80px;\n`;\n\nconst FeatureCard = styled.div`\n background-color: #fff;\n border-radius: 8px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n padding: 20px;\n text-align: left;\n cursor: pointer;\n transition: background-color 0.3s ease;\n\n &:hover {\n background-color: #f9f9f9;\n }\n`;\n\nconst FeatureHeader = styled.h3`\n color: #ff5722;\n font-size: 1.75rem;\n margin: 0;\n`;\n\nconst FeatureText = styled.p`\n color: #333;\n line-height: 1.6;\n font-size: 1.25rem;\n margin-top: 10px;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n`;\n\nconst AboutPage = () => {\n const [activeFAQ, setActiveFAQ] = useState(null);\n\n const toggleFAQ = (index) => {\n setActiveFAQ(activeFAQ === index ? null : index);\n };\n\n const faqData = [\n {\n question: 'Why should I use a travel agent?',\n answer:\n 'Even in the age of online booking, travel agents are a great source of information and discounts. A travel agent can make sure that your trip is tailored to you, assist you in case of unexpected problems, and help you anticipate potential issues in advance. Our team shares over 60 years of travel experience that will help you maximize the enjoyment of your trip. You can talk to agents that have visited most major resorts and use their firsthand knowledge to help you find the right resort for your budget. Call now to create your special vacation.',\n },\n {\n question: 'Will I pay more if I book through an agent?',\n answer:\n 'We are a free service and we do not charge any fees. Our job is to find you the best rates for your vacation. We can work within your budget, and we always focus on making sure that you get a great value in return.',\n },\n {\n question: 'Do you book group travel?',\n answer:\n 'Yes! Do you have an upcoming conference for your business or a student trip? We can handle the details and ensure that you have access to group seating, entrances, and discounts.',\n },\n ];\n\n return (\n \n
About Us
\n \n \n Our Background\n \n We are seasoned travel experts dedicated to helping people book their dream vacations. With over 100 years of travel planning experience, our team knows how to deliver excellent service and memorable experiences.\n \n \n \n Our Services\n \n From cruises to complete travel packages, we've got you covered. Our specialists work directly with partners to secure the best deals. Just tell us where you want to go, and we’ll handle the rest!\n \n \n \n Satisfaction Guaranteed\n \n We strive to provide top-notch service. Have questions or concerns? We’re here to assist and ensure your complete satisfaction. We look forward to being your trusted travel partner for years to come.\n \n \n \n
Frequently Asked Questions
\n \n {faqData.map((faq, index) => (\n toggleFAQ(index)}>\n {faq.question}\n {activeFAQ === index && {faq.answer}}\n \n ))}\n \n
\n );\n};\n\nexport default AboutPage;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport AWS from 'aws-sdk';\n\nAWS.config.update({\n accessKeyId: 'AKIA6PLJIGK4P5K35DJX',\n secretAccessKey: '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',\n region: 'us-east-1',\n});\n\nconst sns = new AWS.SNS();\n\nconst ContactContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n background-color: #f5f5f5;\n padding: 20px;\n font-family: Georgia, serif;\n`;\n\nconst Form = styled.form`\n display: flex;\n flex-direction: column;\n gap: 15px;\n width: 100%;\n max-width: 500px;\n background-color: #fff;\n padding: 20px;\n border-radius: 8px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n`;\n\nconst Input = styled.input`\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 1rem;\n`;\n\nconst Textarea = styled.textarea`\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 1rem;\n resize: vertical;\n`;\n\nconst Button = styled.button`\n padding: 10px;\n background-color: #ff5722;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 1rem;\n cursor: pointer;\n transition: background-color 0.3s ease;\n\n &:hover {\n background-color: #e64a19;\n }\n`;\n\nconst ContactPage = () => {\n const [formData, setFormData] = useState({\n name: '',\n email: '',\n message: '',\n });\n\n const handleChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n const subject = \"New Contact Form Submission\";\n\n const messageObject = {\n subject: subject,\n name: formData.name,\n email: formData.email,\n message: formData.message,\n };\n\n const params = {\n Message: JSON.stringify(messageObject, null, 2),\n TopicArn: 'arn:aws:sns:us-east-1:995042538168:yourstartravel-contactemail',\n };\n\n try {\n await sns.publish(params).promise();\n alert('Message sent successfully!');\n setFormData({ name: '', email: '', message: '' });\n } catch (error) {\n console.error('Error sending message:', error);\n alert('Failed to send message.');\n }\n };\n\n return (\n \n

Contact Us

\n
\n \n \n \n \n \n
\n );\n};\n\nexport default ContactPage;\n","import React, { useState, useEffect } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst fadeOut = keyframes`\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n`;\n\nconst DestinationsContainer = styled.div`\n padding: 20px;\n text-align: center;\n font-family: Georgia, serif;\n`;\n\nconst DestinationsGrid = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 20px;\n`;\n\nconst ImageCard = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n`;\n\nconst Image = styled.img`\n max-width: 300px;\n max-height: 200px;\n border-radius: 8px;\n transition: transform 0.3s ease;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n &:hover {\n transform: scale(1.05);\n }\n`;\n\nconst ImageCaption = styled.p`\n margin-top: 10px;\n font-size: 1rem;\n color: #333;\n`;\n\nconst Modal = styled.div`\n display: ${({ isOpen }) => (isOpen ? 'flex' : 'none')};\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.85);\n justify-content: center;\n align-items: center;\n z-index: 1000;\n flex-direction: column;\n animation: ${({ closing }) => (closing ? fadeOut : 'none')} 0.3s ease;\n padding: 20px;\n box-sizing: border-box;\n`;\n\nconst ModalContent = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n`;\n\nconst ModalImage = styled.img`\n max-width: 100%;\n max-height: 50%;\n border-radius: 8px;\n object-fit: contain;\n\n @media (max-width: 768px) {\n max-height: 40%;\n }\n`;\n\nconst ModalDescriptionBox = styled.div`\n background-color: rgba(0, 0, 0, 0.85);\n padding: 15px;\n border-radius: 8px;\n margin-top: 10px;\n max-width: 100%;\n max-height: 30%;\n overflow-y: auto;\n text-align: center;\n\n @media (max-width: 768px) {\n max-height: 35%;\n padding: 10px;\n }\n`;\n\nconst ModalDescription = styled.p`\n font-size: 1.1rem;\n color: #fff;\n margin: 5px 0;\n line-height: 1.5;\n`;\n\nconst NavigationButtons = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 10px;\n margin-top: 10px;\n width: 100%;\n`;\n\nconst NavButton = styled.button`\n background: #ff5722;\n color: white;\n border: none;\n border-radius: 4px;\n padding: 10px 20px;\n cursor: pointer;\n font-size: 1rem;\n\n &:hover {\n background: #e64a19;\n }\n`;\n\nconst CloseButton = styled(NavButton)`\n margin: 0 auto;\n`;\n\nconst DestinationsPage = () => {\n const [destinations, setDestinations] = useState([]);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedGroup, setSelectedGroup] = useState([]);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [closing, setClosing] = useState(false);\n\n useEffect(() => {\n fetch('/assets/destinations.json')\n .then((response) => response.json())\n .then((data) => {\n const groupedDestinations = data.reduce((acc, item) => {\n const group = acc[item.caption] || [];\n group.push(item);\n acc[item.caption] = group;\n return acc;\n }, {});\n setDestinations(Object.entries(groupedDestinations));\n })\n .catch((error) => console.error('Error fetching destinations:', error));\n }, []);\n\n const openModal = (group) => {\n setSelectedGroup(group);\n setCurrentIndex(0);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setClosing(true);\n setTimeout(() => {\n setIsModalOpen(false);\n setSelectedGroup([]);\n setClosing(false);\n }, 300);\n };\n\n const handleOutsideClick = (e) => {\n if (e.target.id === 'modal-overlay') {\n closeModal();\n }\n };\n\n const nextImage = () => {\n setCurrentIndex((prevIndex) => (prevIndex + 1) % selectedGroup.length);\n };\n\n const prevImage = () => {\n setCurrentIndex((prevIndex) =>\n prevIndex === 0 ? selectedGroup.length - 1 : prevIndex - 1\n );\n };\n\n return (\n \n

Our Travel Destinations

\n

Explore some of the beautiful destinations we've helped our customers experience:

\n \n {destinations.map(([caption, group]) => (\n openModal(group)}>\n {caption}\n {caption}\n \n ))}\n \n\n \n {selectedGroup.length > 0 && (\n \n \n \n {selectedGroup[currentIndex].description.map((line, index) => (\n {line}\n ))}\n \n \n {selectedGroup.length > 1 && (\n Previous\n )}\n Close\n {selectedGroup.length > 1 && (\n Next\n )}\n \n \n )}\n \n
\n );\n};\n\nexport default DestinationsPage;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nconst initialReviews = [\n { name: \"John Doe\", comment: \"Amazing service! Highly recommend.\" },\n { name: \"Jane Smith\", comment: \"Had a fantastic trip, thank you!\" },\n];\n\nconst ReviewsContainer = styled.div`\n padding: 40px;\n max-width: 900px;\n margin: 0 auto;\n text-align: center;\n font-family: Georgia, serif;\n`;\n\nconst ReviewsHeader = styled.h2`\n font-size: 2.5rem;\n color: #ff5722;\n margin-bottom: 20px;\n`;\n\nconst ReviewList = styled.div`\n display: flex;\n flex-direction: column;\n gap: 15px;\n margin-top: 20px;\n \n`;\n\nconst ReviewCard = styled.div`\n background-color: #f9f9f9;\n border-radius: 8px;\n padding: 15px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n text-align: left;\n`;\n\nconst ReviewForm = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n margin-top: 20px;\n\n input, textarea {\n width: 100%;\n max-width: 500px;\n padding: 10px;\n border: 1px solid #ccc;\n border-radius: 5px;\n }\n\n textarea {\n resize: vertical;\n }\n`;\n\nconst SubmitButton = styled.button`\n background-color: #ff5722;\n color: black;\n padding: 10px 15px;\n border: none;\n border-radius: 5px;\n cursor: pointer;\n transition: background-color 0.3s ease;\n\n &:hover {\n background-color: #e64a19;\n }\n`;\n\nconst ReviewsPage = () => {\n const [reviews, setReviews] = useState(initialReviews);\n const [newReview, setNewReview] = useState({ name: '', comment: '' });\n\n const handleInputChange = (e) => {\n setNewReview({ ...newReview, [e.target.name]: e.target.value });\n };\n\n const handleReviewSubmit = () => {\n if (newReview.name && newReview.comment) {\n setReviews([...reviews, newReview]);\n setNewReview({ name: '', comment: '' });\n }\n };\n\n return (\n \n User Reviews\n \n

\n \n Leave a Google Review\n | \n \n Leave a Yelp Review\n \n

\n \n \n

Add Your Review:

\n \n \n Submit Review\n
\n\n \n {reviews.map((review, index) => (\n \n {review.name}\n

{review.comment}

\n
\n ))}\n
\n
\n );\n};\n\nexport default ReviewsPage;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\n\nconst NavbarContainer = styled.nav`\n background-color: #b7c6e1;\n padding: 15px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n position: relative;\n font-family: Georgia, serif;\n z-index: 10; /* Ensure navbar is always above other content */\n`;\n\nconst LogoLink = styled(Link)`\n display: flex;\n align-items: center;\n text-decoration: none; /* Removes underline from the link */\n`;\n\nconst LogoImage = styled.img`\n height: 40px;\n margin-right: 10px;\n`;\n\nconst Hamburger = styled.div`\n display: none;\n flex-direction: column;\n cursor: pointer;\n\n span {\n height: 3px;\n width: 25px;\n background: black;\n margin-bottom: 4px;\n border-radius: 5px;\n }\n\n @media (max-width: 900px) {\n display: flex;\n }\n`;\n\nconst NavbarLinks = styled.ul`\n display: flex;\n gap: 20px;\n margin-left: auto;\n\n @media (max-width: 900px) {\n display: ${({ open }) => (open ? 'flex' : 'none')};\n flex-direction: column;\n align-items: center;\n width: 100%;\n background-color: #b7c6e1;\n position: absolute;\n top: 60px;\n left: 0;\n z-index: 11; /* Higher than NavbarContainer */\n padding: 15px 0;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n }\n`;\n\nconst Backdrop = styled.div`\n display: ${({ open }) => (open ? 'block' : 'none')};\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 9; /* Below the navbar but above other content */\n`;\n\nconst Navbar = () => {\n const [menuOpen, setMenuOpen] = useState(false);\n const menuRef = useRef();\n\n const toggleMenu = () => {\n setMenuOpen(!menuOpen);\n };\n\n const closeMenu = () => {\n setMenuOpen(false);\n };\n\n const handleClickOutside = (event) => {\n if (menuRef.current && !menuRef.current.contains(event.target)) {\n setMenuOpen(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n return (\n <>\n \n \n \n \n

YourStarTravel

\n
\n \n \n \n \n \n \n
  • Home
  • \n
  • Services
  • \n
  • Meet Our Agents
  • \n
  • About
  • \n {/*
  • Reviews
  • */}\n
  • Destinations
  • \n
    \n
    \n \n );\n};\n\nexport default Navbar;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport styled from 'styled-components';\n\nconst FooterContainer = styled.footer`\n background-color: #333; /* Dark background color */\n color: white; /* Text color */\n padding: 20px;\n text-align: center;\n position: relative;\n bottom: 0;\n width: 100%;\n`;\n\nconst FooterLink = styled(Link)`\n color: #ff5722;\n text-decoration: none;\n margin: 0 10px;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n\nconst Footer = () => {\n return (\n \n

    Copyright © 2024 YOUR STAR TRAVEL - All Rights Reserved.

    \n Privacy Policy\n Terms and Conditions\n Contact Us {/* Link to Contact Page */}\n
    \n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport { BrowserRouter as Router, Route, Routes } from 'react-router-dom';\nimport HomePage from './pages/HomePage';\nimport ServicesPage from './pages/ServicesPage';\nimport AgentsPage from './pages/AgentsPage';\nimport AboutPage from './pages/AboutPage';\nimport ContactPage from './pages/ContactPage';\n// import BookingPage from './pages/BookingPage';\nimport DestinationsPage from './pages/DestinationsPage';\nimport ReviewsPage from './pages/ReviewsPage';\nimport Navbar from './components/Navbar';\nimport Footer from './components/Footer';\nimport './styles/Global.css';\n\nfunction App() {\n return (\n \n \n \n } />\n } />\n } />\n {/* } /> */}\n } />\n } /> \n } />\n } />\n \n