{"version":3,"file":"home-M4a20S9Y.js","sources":["../../../app/assets/images/home/intro_left.webp","../../../app/assets/images/home/intro_left.png","../../../app/assets/images/home/intro_right.webp","../../../app/assets/images/home/intro_right.png","../../../app/assets/images/home/intro_center.webp","../../../app/assets/images/home/intro_center.png","../../../app/assets/images/home/partners/conde_nast_traveler.png","../../../app/assets/images/home/partners/national_geographic.png","../../../app/assets/images/home/partners/lonely_planet.png","../../../app/assets/images/home/partners/vice.png","../../../app/assets/images/home/partners/new_york_times.png","../../../app/assets/images/home/partners/forbes.png","../../../app/javascript/src/modules/Home/Intro.vue","../../../app/assets/images/home/michelle.jpg","../../../app/assets/images/home/emery.jpg","../../../app/javascript/src/modules/Home/TextReviews.vue","../../../app/assets/images/home/started_1.jpg","../../../app/assets/images/home/started_2.jpg","../../../app/assets/images/home/started_3.jpg","../../../app/javascript/src/modules/Home/GetStarted.vue","../../../app/assets/images/home/blogpost_1.jpg","../../../app/assets/images/home/blogpost_2.jpg","../../../app/assets/images/home/blogpost_3.jpg","../../../app/assets/images/home/arrow.svg?component","../../../app/javascript/src/modules/Home/BlogPosts.vue","../../../app/javascript/src/modules/Home/flash.js","../../../app/javascript/entrypoints/home.js"],"sourcesContent":["export default \"__VITE_ASSET__DT47l58V__\"","export default \"__VITE_ASSET__BrPMeE1G__\"","export default \"__VITE_ASSET__BR2tyCl1__\"","export default \"__VITE_ASSET__BgmGZaPN__\"","export default \"__VITE_ASSET__D2Sck8Tt__\"","export default \"__VITE_ASSET__B34msuvi__\"","export default \"__VITE_ASSET__BEYxpOu2__\"","export default \"__VITE_ASSET__DlwzLBlZ__\"","export default \"__VITE_ASSET__Du8lU0EK__\"","export default \"__VITE_ASSET__JIvZTqFI__\"","export default \"__VITE_ASSET__CA_zHN8z__\"","export default \"__VITE_ASSET__BsRsBUoC__\"","<template>\n <section class=\"homepage-section\">\n <div class=\"top\">\n <picture v-if=\"desktop\">\n <source srcset=\"app/assets/images/home/intro_left.webp\" type=\"image/webp\">\n <img src=\"app/assets/images/home/intro_left.png\">\n </picture>\n\n <div class=\"content\">\n <TwinColorTitle class=\"title\">\n Customized group travel made simple with<br><em>TourHero</em>\n </TwinColorTitle>\n\n <NavLink href=\"/plan-a-trip\">\n <Button id=\"home-plan\" color=\"red\" text=\"Plan a trip\"/>\n </NavLink>\n </div>\n\n <picture v-if=\"desktop\">\n <source srcset=\"app/assets/images/home/intro_right.webp\" type=\"image/webp\">\n <img src=\"app/assets/images/home/intro_right.png\">\n </picture>\n\n <picture v-if=\"mobile\">\n <source srcset=\"app/assets/images/home/intro_center.webp\" type=\"image/webp\">\n <img src=\"app/assets/images/home/intro_center.png\">\n </picture>\n </div>\n\n <div class=\"bottom\">\n <div class=\"text\">Our tour partners were featured on</div>\n <NewsTicker class=\"partners\" :speed=\"25\" :enabled=\"mobile\">\n <img src=\"app/assets/images/home/partners/conde_nast_traveler.png\">\n <img src=\"app/assets/images/home/partners/national_geographic.png\">\n <img src=\"app/assets/images/home/partners/lonely_planet.png\">\n <img src=\"app/assets/images/home/partners/vice.png\">\n <img src=\"app/assets/images/home/partners/new_york_times.png\">\n <img src=\"app/assets/images/home/partners/forbes.png\">\n </NewsTicker>\n </div>\n </section>\n</template>\n\n<script setup>\nimport TwinColorTitle from \"@/components/Theme2/TwinColorTitle.vue\";\nimport Button from \"@/components/Theme2/Button.vue\";\nimport NavLink from \"@/components/NavLink.vue\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\nimport NewsTicker from \"@/modules/MbaExclusive/Components/NewsTicker.vue\";\n\nconst { mobile, desktop } = useShared();\n</script>\n\n<style lang=\"scss\" scoped>\nsection.homepage-section {\n @include main-unwrap;\n\n padding-block: 64px;\n margin-bottom: 64px;\n background: linear-gradient(255deg, rgba(234, 241, 243, 0.20) 10.16%, rgba(227, 242, 253, 0.80) 87.06%);\n\n @include mobile {\n padding-block: 32px;\n }\n\n .top {\n display: flex;\n margin-bottom: 16px;\n justify-content: center;\n overflow: hidden;\n\n @include mobile {\n flex-direction: column;\n margin-bottom: 36px;\n }\n\n picture:first-child {\n display: flex;\n justify-content: flex-start;\n }\n\n picture:last-child {\n display: flex;\n justify-content: flex-end;\n }\n\n img {\n width: calc(100% - 20px);\n height: auto;\n max-width: 100%;\n flex-shrink: 1;\n\n @include mobile {\n width: 100%;\n height: auto;\n }\n }\n }\n\n .content {\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 24px;\n padding: 0 32px;\n margin: auto;\n\n @include mobile {\n margin-bottom: 24px;\n }\n }\n\n .title {\n max-width: 600px;\n\n @include desktop {\n font-size: 48px;\n line-height: 52px;\n }\n }\n\n .bottom {\n color: black;\n text-align: center;\n @include flex-column(24px);\n }\n\n .partners {\n display: flex;\n justify-content: center;\n\n img {\n height: 40px;\n }\n }\n}\n</style>\n","export default \"__VITE_ASSET__VjDa6abW__\"","export default \"__VITE_ASSET__BD2k_V4t__\"","<template>\n <section class=\"homepage-section\">\n <TwinColorTitle>\n Seamless for planners,<br><em>unforgettable for travelers</em>\n </TwinColorTitle>\n\n <div class=\"description\">Experience the difference with TourHero. From seamless trip planning to unforgettable destinations, we make your travel dreams a reality.</div>\n\n <CustomerReviews :reviews/>\n </section>\n</template>\n\n<script setup>\nimport { ref } from \"vue\";\nimport TwinColorTitle from \"@/components/Theme2/TwinColorTitle.vue\";\nimport CustomerReviews from \"@/components/CustomerReviews.vue\";\nimport Allison from 'app/assets/images/mba/reviews/allison.jpg'\nimport Michelle from 'app/assets/images/home/michelle.jpg'\nimport Emery from 'app/assets/images/home/emery.jpg'\n\nconst reviews = ref([\n {\n position: -2,\n title: `Explore, Connect & Grow: 6-Day Yoga Retreat in France with Emery Bryant III`,\n description: `It was very personalized. We got to know our hosts and staff at The Frog's House. I loved the small town feeling of St. Jeannet – it felt very safe, and was so easy to walk around and find restaurants and stores. The scenery in St. Jeannet was incredible.`,\n author: `Emery Bryant`,\n photo: Emery\n },\n {\n position: -1,\n title: `A Mystical Journey in Mexico: Riviera Maya Wellness Retreat with Michelle`,\n description: `TourHero made everything come together. I had a vision and they made it come to reality. Once on site, they were extremely responsive with any needs we had. The initial website they set up was beautiful and well-informed.`,\n author: `Michelle`,\n photo: Michelle\n },\n {\n position: 0,\n title: `A Three-Part Jordan Journey Across Aqaba, Wadi Rum and Petra`,\n description: `TourHero was beyond easy to work with! They helped me plan a trip to meet a diverse range of needs and we had a blast!`,\n author: `Allison Greenwald`,\n photo: Allison\n },\n {\n position: 1,\n title: `Treasures of the Sea: A Galapagos Journey with Abdulgadir Ahmed`,\n description: `The Galapagos was awesome. We some so many unique animals, had great snorkeling trips and hikes, and overall made so many memories.`,\n author: `Abdulgadir Ahmed`,\n },\n {\n position: 2,\n title: `Guatemala Yoga Retreat: an Empowering, Magical Adventure with Paisley`,\n description: `The ease of the arrangements, felt super safe with the car transportations. Also the customer service was out of the world, you guys were there for me when I needed it the MOST! Everything was perfect.`,\n author: `Paisley Parvati Devi`,\n },\n]);\n</script>\n\n<style lang=\"scss\" scoped>\nsection.homepage-section {\n @include main-rewrap;\n align-items: center;\n gap: 24px;\n padding-block: 64px 84px;\n overflow: hidden;\n\n .description {\n max-width: 600px;\n text-align: center;\n margin-bottom: 8px;\n }\n}\n</style>","export default \"__VITE_ASSET__BwvIMOGx__\"","export default \"__VITE_ASSET__Cb1N5pK3__\"","export default \"__VITE_ASSET__Bru23sMc__\"","<template>\n <section class=\"homepage-section\">\n <TwinColorTitle class=\"title\">\n Transform your ideas <br><em>into reality</em>\n </TwinColorTitle>\n\n <StepSliderText :steps/>\n\n <FloatingContainer>\n <div class=\"images\">\n <img src=\"app/assets/images/home/started_1.jpg\">\n <img src=\"app/assets/images/home/started_2.jpg\">\n <img src=\"app/assets/images/home/started_3.jpg\">\n </div>\n </FloatingContainer>\n </section>\n</template>\n\n<script setup>\nimport TwinColorTitle from \"@/components/Theme2/TwinColorTitle.vue\";\nimport StepSliderText from \"@/components/StepSliderText.vue\";\nimport FloatingContainer from \"@/components/Containers/FloatingContainer.vue\";\n\nconst steps = [\n `Book a call; tell us your preference`,\n `We'll present itinerary options; choose the one you love most for further customization`,\n `Launch your trip by sharing with your community! We'll take care of the rest`,\n];\n</script>\n\n<style lang=\"scss\" scoped>\nsection.homepage-section {\n align-items: center;\n margin-bottom: 64px;\n\n @include mobile {\n @include main-unwrap;\n overflow-x: hidden;\n }\n\n .title {\n margin-bottom: 32px;\n }\n\n .images {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n align-items: flex-end;\n justify-content: center;\n gap: 20px;\n overflow: hidden;\n\n img {\n width: 100%;\n }\n\n @include mobile {\n @include main-unwrap;\n\n img {\n width: 156px;\n }\n }\n }\n\n &:deep(.steps) {\n justify-content: center;\n }\n}\n</style>","export default \"__VITE_ASSET__vwurs1Zl__\"","export default \"__VITE_ASSET__DlDRN$A4__\"","export default \"__VITE_ASSET__DXVpf6qD__\"","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}\n\nexport function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, _cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", {\n d: \"M18.7504 6V15.75C18.7504 15.9489 18.6714 16.1397 18.5307 16.2803C18.3901 16.421 18.1993 16.5 18.0004 16.5C17.8015 16.5 17.6107 16.421 17.4701 16.2803C17.3294 16.1397 17.2504 15.9489 17.2504 15.75V7.81031L6.53104 18.5306C6.39031 18.6714 6.19944 18.7504 6.00042 18.7504C5.80139 18.7504 5.61052 18.6714 5.46979 18.5306C5.32906 18.3899 5.25 18.199 5.25 18C5.25 17.801 5.32906 17.6101 5.46979 17.4694L16.1901 6.75H8.25042C8.0515 6.75 7.86074 6.67098 7.72009 6.53033C7.57943 6.38968 7.50042 6.19891 7.50042 6C7.50042 5.80109 7.57943 5.61032 7.72009 5.46967C7.86074 5.32902 8.0515 5.25 8.25042 5.25H18.0004C18.1993 5.25 18.3901 5.32902 18.5307 5.46967C18.6714 5.61032 18.7504 5.80109 18.7504 6Z\",\n fill: \"#1C355E\"\n }, null, -1)\n ])))\n}\nexport default { render: render }","<template>\n <section class=\"homepage-section\">\n <div class=\"heading\">\n <TwinColorTitle>Tips on traveling <br v-if=\"mobile\"><em>your way</em></TwinColorTitle>\n <a v-if=\"desktop\" class=\"see-more\" href=\"https://www.tourhero.com/en/magazine/\" target=\"_blank\">\n <Button color=\"white\" text=\"See more\"/>\n </a>\n </div>\n\n <div class=\"posts\">\n <a class=\"post\" href=\"https://www.tourhero.com/en/magazine/lifestyle/hosting-a-trip-with-tourhero-8-epic-benefits-you-should-know/\" target=\"_blank\">\n <div class=\"poster\">\n <img src=\"app/assets/images/home/blogpost_1.jpg\">\n <div class=\"btn\">\n <div><Arrow/></div>\n </div>\n </div>\n <div class=\"caption\">\n <div>8 Ways hosting a trip with TourHero will benefit you</div>\n <div>August 7, 2024</div>\n </div>\n </a>\n <a class=\"post\" href=\"https://www.tourhero.com/en/magazine/lifestyle/what-is-tourhero-everything-you-need-to-know-about-becoming-one/\" target=\"_blank\">\n <div class=\"poster\">\n <img src=\"app/assets/images/home/blogpost_2.jpg\">\n <div class=\"btn\">\n <div><Arrow/></div>\n </div>\n </div>\n <div class=\"caption\">\n <div>What is TourHero? Everything you need to know</div>\n <div>August 6, 2024</div>\n </div>\n </a>\n <a class=\"post\" href=\"https://www.tourhero.com/en/magazine/lifestyle/how-to-get-paid-to-travel-6-effective-ways-to-make-money/\" target=\"_blank\">\n <div class=\"poster\">\n <img src=\"app/assets/images/home/blogpost_3.jpg\">\n <div class=\"btn\">\n <div><Arrow/></div>\n </div>\n </div>\n <div class=\"caption\">\n <div>How to get paid to travel the world</div>\n <div>August 29, 2024</div>\n </div>\n </a>\n </div>\n\n <a v-if=\"mobile\" class=\"see-more\" href=\"https://www.tourhero.com/en/magazine/\" target=\"_blank\">\n <Button color=\"white\" text=\"See more\"/>\n </a>\n </section>\n</template>\n\n<script setup>\nimport TwinColorTitle from \"@/components/Theme2/TwinColorTitle.vue\";\nimport Button from \"@/components/Theme2/Button.vue\";\nimport Arrow from \"app/assets/images/home/arrow.svg?component\";\nimport { useShared } from \"@/helpers/vueHelpers.js\";\n\nconst { mobile, desktop } = useShared();\n</script>\n\n<style lang=\"scss\" scoped>\nsection.homepage-section {\n gap: 32px;\n\n .heading {\n display: flex;\n justify-content: space-between;\n\n @include mobile {\n justify-content: center;\n }\n }\n\n .posts {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n\n @include mobile {\n grid-template-columns: 1fr;\n }\n }\n\n .post {\n display: flex;\n position: relative;\n flex-direction: column;\n gap: 12px;\n\n .poster {\n display: flex;\n position: relative;\n }\n\n .caption {\n @include flex-column(8px);\n\n div:nth-child(1) {\n color: $black;\n font-size: 24px;\n font-weight: 600;\n line-height: 28px; /* 116.667% */\n height: 56px;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n }\n\n div:nth-child(2) {\n color: $grey-100;\n }\n }\n\n .btn {\n position: absolute;\n right: 0;\n bottom: 0;\n background-color: white;\n padding: 8px 0 0 8px;\n border-top-left-radius: 32px;\n\n div {\n padding: 20px;\n width: 65px;\n aspect-ratio: 1/1;\n border-radius: 50%;\n background-color: $grey-25;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n width: 22px;\n }\n }\n }\n\n &:hover .btn div {\n background-color: $green-50;\n }\n\n img {\n width: 100%;\n border-radius: 12px;\n }\n }\n\n .see-more {\n @include mobile {\n margin: 0 auto;\n }\n\n button {\n border-color: #D4D4D4;\n }\n }\n}\n</style>","export default class Flash {\n constructor() {\n const params = new URLSearchParams(window.location.search);\n if (!params.get('error')) return;\n\n this.errorType = params.get('error');\n this.createBanner();\n }\n\n createBanner() {\n if (!this.errorMessage) return;\n\n const siteNav = document.querySelector('.site-nav');\n if (!siteNav) return;\n\n const div = document.createElement('div');\n div.setAttribute('class', 'flash flash--alert js-flash');\n const inner = document.createElement('div');\n inner.setAttribute('class', 'flash__inner');\n const icon = document.createElement('i');\n icon.setAttribute('class', 'icon-alert-triangle');\n const p = document.createElement('p');\n p.setAttribute('class', 'flash__message');\n p.innerHTML = this.errorMessage;\n\n const button = document.createElement('button');\n button.setAttribute('class', 'flash__button js-close-button');\n button.setAttribute('type', 'button');\n\n const iconClose = document.createElement('i');\n iconClose.setAttribute('class', 'icon-close');\n\n siteNav.after(div);\n div.append(inner);\n inner.append(icon, p, button);\n button.append(iconClose);\n }\n\n get errorMessage() {\n switch (this.errorType) {\n case 'invalid_invitation':\n return 'Invalid invitation';\n }\n return '';\n }\n}\n","import { initVueAppOnLoad } from \"@/app\";\nimport App from '@/views/Home.vue';\nimport Flash from '@/modules/Home/flash.js';\n\ninitVueAppOnLoad('#home', App, () => {\n new Flash();\n});"],"names":["_imports_0$2","_imports_1$2","_imports_2$2","_imports_3","_imports_4","_imports_5","_imports_6","_imports_7","_imports_8","_imports_9","_imports_10","_imports_11","mobile","desktop","useShared","Michelle","Emery","reviews","ref","Allison","_imports_0$1","_imports_1$1","_imports_2$1","steps","_imports_0","_imports_1","_imports_2","_hoisted_1","render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","Arrow","Flash","params","siteNav","div","inner","icon","p","button","iconClose","initVueAppOnLoad","App"],"mappings":"00CAAA,MAAeA,EAAA,wCCAAC,EAAA,uCCAAC,EAAA,yCCAAC,EAAA,wCCAAC,EAAA,0CCAAC,EAAA,yCCAAC,EAAA,gDCAAC,EAAA,gDCAAC,EAAA,0CCAAC,EAAA,iCCAAC,EAAA,2CCAAC,EAAA,gMCkDf,KAAM,CAAE,OAAAC,EAAQ,QAAAC,CAAS,EAAGC,EAAW,uuIClDxBC,GAAA,qCCAAC,GAAA,kGCoBf,MAAMC,EAAUC,EAAI,CAClB,CACE,SAAU,GACV,MAAO,8EACP,YAAa,mQACb,OAAQ,eACR,MAAOF,EACR,EACD,CACE,SAAU,GACV,MAAO,4EACP,YAAa,gOACb,OAAQ,WACR,MAAOD,EACR,EACD,CACE,SAAU,EACV,MAAO,+DACP,YAAa,yHACb,OAAQ,oBACR,MAAOI,CACR,EACD,CACE,SAAU,EACV,MAAO,kEACP,YAAa,sIACb,OAAQ,kBACT,EACD,CACE,SAAU,EACV,MAAO,wEACP,YAAa,4MACb,OAAQ,sBACT,CACH,CAAC,+uBCtDcC,GAAA,sCCAAC,GAAA,sCCAAC,GAAA,qGCuBf,MAAMC,EAAQ,CACZ,uCACA,0FACA,8EACF,+WC3BeC,GAAA,uCCAAC,GAAA,uCCAAC,GAAA,uCCETC,GAAa,CACjB,QAAS,YACT,KAAM,OACN,MAAO,4BACT,EAEO,SAASC,GAAOC,EAAMC,EAAQ,CACnC,OAAQC,EAAU,EAAIC,EAAoB,MAAOL,GAAYG,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,CACrFG,EAAoB,OAAQ,CAC1B,EAAG,krBACH,KAAM,SACP,EAAE,KAAM,EAAE,CACf,EAAI,CACJ,CACA,MAAeC,EAAA,CAAE,OAAQN,EAAM,q1BC4C/B,KAAM,CAAE,OAAAhB,EAAQ,QAAAC,CAAS,EAAGC,EAAW,6wCC5DxB,MAAMqB,EAAM,CACzB,aAAc,CACZ,MAAMC,EAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACpDA,EAAO,IAAI,OAAO,IAEvB,KAAK,UAAYA,EAAO,IAAI,OAAO,EACnC,KAAK,aAAc,EACvB,CAEE,cAAe,CACb,GAAI,CAAC,KAAK,aAAc,OAExB,MAAMC,EAAU,SAAS,cAAc,WAAW,EAClD,GAAI,CAACA,EAAS,OAEd,MAAMC,EAAM,SAAS,cAAc,KAAK,EACxCA,EAAI,aAAa,QAAS,6BAA6B,EACvD,MAAMC,EAAQ,SAAS,cAAc,KAAK,EAC1CA,EAAM,aAAa,QAAS,cAAc,EAC1C,MAAMC,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,aAAa,QAAS,qBAAqB,EAChD,MAAMC,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,aAAa,QAAS,gBAAgB,EACxCA,EAAE,UAAY,KAAK,aAEnB,MAAMC,EAAS,SAAS,cAAc,QAAQ,EAC9CA,EAAO,aAAa,QAAS,+BAA+B,EAC5DA,EAAO,aAAa,OAAQ,QAAQ,EAEpC,MAAMC,EAAY,SAAS,cAAc,GAAG,EAC5CA,EAAU,aAAa,QAAS,YAAY,EAE5CN,EAAQ,MAAMC,CAAG,EACjBA,EAAI,OAAOC,CAAK,EAChBA,EAAM,OAAOC,EAAMC,EAAGC,CAAM,EAC5BA,EAAO,OAAOC,CAAS,CAC3B,CAEE,IAAI,cAAe,CACjB,OAAQ,KAAK,UAAS,CACpB,IAAK,qBACH,MAAO,oBACf,CACI,MAAO,EACX,CACA,CCzCAC,EAAiB,QAASC,GAAK,IAAM,CACnC,IAAIV,EACN,CAAC"}