This is a custom code placeholder.
Switch to Preview or publish the page
to see how your code works.
Double-click to edit
<link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet" /> <style> *, body { padding: 0; margin: 0; box-sizing: border-box; } .demo { // width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; opacity: 0; transition: opacity 0.3s ease; position: relative; } .center { width: 100%; height: auto; position: absolute; top: 0; } .video-js { box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3); } </style> <div class="demo"> <div class="center"> <video id="player" class="video-js" controls playsinline preload="auto" autoplay="muted" > <source src="https://multimedia.postmaster.inspiraholidays.com/inspirahold-z/recordings/54f7f1d1-f7c7-413c-b0c5-aebaa9474305.mp4" type="video/mp4" /> </video> </div> </div> <script src="https://vjs.zencdn.net/7.20.3/video.min.js"></script> <script> const options = { muted: true, language: "en", preload: "auto", fluid: true, autoplay: 'muted', controls: false, loop: true, html5: { hls: { overrideNative: true, limitRenditionByPlayerDimensions: true, useDevicePixelRatio: true, // bandwidth: 16777216, }, nativeAudioTracks: false, nativeVideoTracks: false, useBandwidthFromLocalStorage: true, }, controlBar: { pictureInPictureToggle: false, }, }; setTimeout(() => { const player = videojs("player", options, () => { let element = document.querySelector(".demo"); element.style.opacity = "1"; }); player.ready(function() { setTimeout(function() { player.autoplay('muted'); player.fluid('true') }, 1000); }); //video.httpSourceSelector(); }, 500); </script>
Old World Luxury on Cabo's Luminous Pacific Coast
Step into a world of unforgettable moments at Pueblo Bonito Sunset Beach Golf & Spa Resort. Situated within the exclusive residential development of Quivira Los Cabos and overlooking the Pacific Ocean in sun-kissed Cabo San Lucas, family-friendly Pueblo Bonito Sunset Beach is an all-inclusive luxury resort blissfully secluded on a private coastal bluff. 

This prime location offers both tranquility and convenient access to the vibrant downtown corridor of Cabo San Lucas. In addition to an array of restaurants and The Market at Quivira, an enticing culinary food hall, the resort offers the award-winning Armonia Spa, private beach privileges and exclusive access to the Jack Nicklaus Signature course at Quivira Golf Club, a thrilling layout that scales the heights at Land’s End. 
This is a custom code placeholder.
Switch to Preview or publish the page
to see how your code works.
Double-click to edit
<button onclick="Previous()" class="btn-back-redirect">Go back</button> <script> function Previous() { window.history.back(); } </script> <style scoped> .btn-back-redirect { width: 7rem; background-color: rgb(128, 114, 95); font-family: Poppins, Arial, sans-serif; font-size: small; font-weight: 700; color: #ffffff; border-radius: 2rem; padding: 0.4rem 0rem; text-transform: uppercase; text-align: center; cursor: pointer; } </style>
This is a custom code placeholder.
Switch to Preview or publish the page
to see how your code works.
Double-click to edit
<script src="https://unpkg.com/vue@3.2.41/dist/vue.global.js"></script> <!-- <script src="https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/vue-datepicker.iife.js" ></script> --> <link rel="stylesheet" href="https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/main.css" /> <div id="app"> <div :class="['main-div', 'row',hideClass]" style="visibility: hidden"> <div class="col-6 select-div"> <select v-model="selected" class="select-hotels" placeholder="please"> <option v-for="option in data" :value="option.value"> {{ option.text }}{{ option.textCity }} </option> </select> </div> <div class="calendar-div col-5"> <Datepicker id="calendar-range" class="calendar-range" v-model="date" :enableTimePicker="false" :format="format" :autoApply="true" cancelText="Close" range /> </div> <div class="btn-div col-1"> <button @click="redirectTo" class="btn-search"></button> </div> </div> </div> <script> const page = "PuebloBonitoSunset"; const loadDatePickerScript = (url, id = "box") => { const script = document.createElement("script"); // 👇️ local file // script.setAttribute('src', 'another-file.js'); // 👇️ remote file script.setAttribute( "src", url // "https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/vue-datepicker.iife.js" ); // script.setAttribute("async", ""); script.async = false; // 👇️ optionally set script to be treated as JS module // script.setAttribute('type', 'module'); script.onload = function handleScriptLoaded() { console.log("script has loaded"); // document.getElementById(id).textContent = "Script loaded successfully"; }; script.onerror = function handleScriptError() { console.log("error loading script"); }; document.head.appendChild(script); setTimeout(() => { console.log("Script loaded successfully"); }, 500); return true; }; const main = () => { const { ref, createApp, onMounted } = Vue; const getParams = () => { if (typeof window != "undefined") { const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const vid = urlParams.get("vid"); const checkin = urlParams.get("checkin"); const checkout = urlParams.get("checkout"); const paxConfig = urlParams.get("paxConfig"); console.log("vid", vid, checkin, checkout); // 2022-09-24 let checkinDate; let checkoutDate; if (checkin && checkout) { checkinDate = new Date(checkin); checkoutDate = new Date(checkout); } return { vid, checkin, checkout, checkinDate, checkoutDate, paxConfig, }; } return null; }; const getData = () => { const data = ref(null); const error = ref(null); const selected = ref(null); const hideClass = ref(); const params = getParams(); let myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("withCredentials", "true"); myHeaders.append("crossorigin", "true"); myHeaders.append("mode", "cors"); let requestOptions = { method: "GET", redirect: "follow", headers: myHeaders, }; fetch( "https://hotelslanding.inspirayouth.com/hotels-groups/" + page, requestOptions ) .then((res) => res.json()) .then((json) => { const mapping = json?.map((r) => { const city = decodeURIComponent(escape(r.city || "")); const textCity = city ? ` - ${city}` : ""; return { vid: r.vid, value: r._id, text: r.hotel, url: r.searchUrl, city: city, textCity: textCity, }; }); data.value = mapping; if (params && params.vid) { const hotel = mapping.find((f) => f.vid == params.vid); if (hotel) { selected.value = hotel.value; } } else { const pre = mapping.length > 0 ? mapping[0].value : undefined; selected.value = pre; } setTimeout(() => { hideClass.value = "hide"; }, 100); }) .catch((err) => { console.log(err); error.value = err; }); return { data, error, selected, hideClass }; }; const searchBar = createApp({ setup() { const { data, selected, hideClass } = getData(); const date = ref(); const format = (date1) => { const day = date1[0].getDate(); const month = date1[0].getMonth() + 1; const year = date1[0].getFullYear(); const day2 = date1[1].getDate(); const month2 = date1[1].getMonth() + 1; const year2 = date1[1].getFullYear(); return `${day}/${month}/${year} - ${day2}/${month2}/${year2}`; }; const objectToQueryString = (obj) => { let str = []; for (let p in obj) if (obj.hasOwnProperty(p)) { str.push( encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]) ); } return str.join("&"); }; const redirectTo = () => { if (!selected.value) { console.log("hotel empty", "previus", document.referrer); return; } const paramsUrl = getParams(); const previousURL = document.referrer; console.log("previousURL", previousURL); console.log("hostname", window.location.hostname); const referrer = previousURL ? new URL(previousURL) : ""; // const isPreviousURLExternal = // referrer.origin == new URL(window.location.hostname).origin; const id = selected.value; const hotel = data.value.find((f) => f.value == id); let domain = referrer.origin + hotel.url.split("?")[0]; let search = hotel.url.split("?")[1]; let params = JSON.parse( '{"' + search.replace(/&/g, '","').replace(/=/g, '":"') + '"}', function (key, value) { return key === "" ? value : decodeURIComponent(value); } ); let location = params?.Location || params?.location; location = location?.replaceAll("+", " "); const dateSelected = date.value; const year = String(dateSelected[0].getFullYear()).substring(2); const year2 = String(dateSelected[1].getFullYear()).substring(2); let options = { weekday: "short", // year: "numeric", month: "short", day: "numeric", }; const checkin = dateSelected[0].toLocaleDateString("en-US", options); const checkout = dateSelected[1].toLocaleDateString("en-US", options); const dateRange = `${checkin} ${year} - ${checkout} ${year2}`; params = { ...params, Location: location, dateRange }; if (paramsUrl.paxConfig) { params = { ...params, paxConfig: paramsUrl.paxConfig }; } let queryString = objectToQueryString(params); const fullUrl = `${domain}?${queryString}&searchall=true`; console.log("fullUrl", fullUrl); window.location.href = fullUrl; }; // For demo purposes assign range from the current date onMounted(() => { const params = getParams(); if (params && params.checkoutDate && params.checkinDate) { date.value = [params.checkinDate, params.checkoutDate]; } else { const startDate = new Date(); const endDate = new Date( new Date().setDate(startDate.getDate() + 7) ); date.value = [startDate, endDate]; } }); return { data, date, selected, format, redirectTo, hideClass, }; }, components: { Datepicker: VueDatePicker }, }); // searchBar.use(window.vuedatepickerui) const app = searchBar.mount("#app"); }; loadDatePickerScript( "https://unpkg.com/vue@3.2.41/dist/vue.global.js", "vue-script" ); const loaded = loadDatePickerScript( "https://unpkg.com/@vuepic/vue-datepicker@3.5.2/dist/vue-datepicker.iife.js", "date-vue-script" ); if (loaded) { setTimeout(() => { main(); }, 1000); } </script> <style scoped> .hide { visibility: visible !important; } .main-div { margin: 1rem; height: 3rem; text-align: center; padding: 0 0.5rem; } .col-1 { -webkit-box-flex: 0; -ms-flex: 0 0 8.333333%; flex: 0 0 8.333333%; max-width: 8.333333%; } .col-2 { -webkit-box-flex: 0; -ms-flex: 0 0 16.666667%; flex: 0 0 16.666667%; max-width: 16.666667%; } .col-3 { -webkit-box-flex: 0; -ms-flex: 0 0 25%; flex: 0 0 25%; max-width: 25%; } .col-4 { -webkit-box-flex: 0; -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333%; } .col-5 { -webkit-box-flex: 0; -ms-flex: 0 0 41.666667%; flex: 0 0 41.666667%; max-width: 41.666667%; } .col-6 { -webkit-box-flex: 0; -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50%; } .col-7 { -webkit-box-flex: 0; -ms-flex: 0 0 58.333333%; flex: 0 0 58.333333%; max-width: 58.333333%; } .col-8 { -webkit-box-flex: 0; -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667%; } .col-9 { -webkit-box-flex: 0; -ms-flex: 0 0 75%; flex: 0 0 75%; max-width: 75%; } .col-10 { -webkit-box-flex: 0; -ms-flex: 0 0 83.333333%; flex: 0 0 83.333333%; max-width: 83.333333%; } .col-11 { -webkit-box-flex: 0; -ms-flex: 0 0 91.666667%; flex: 0 0 91.666667%; max-width: 91.666667%; } .col-12 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; } .col { -ms-flex-preferred-size: 0; flex-basis: 0; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; max-width: 100%; } .row { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -15px; margin-left: -15px; } .select-hotels { height: 3rem; border: 1px solid #ccc; border-radius: 2rem; background-color: rgb(245, 245, 245); padding-left: 0.5rem; color: #455461; font-size: 0.9rem; font-weight: 600; text-align: center; width: 95%; } .select-hotels:hover { border: 0px solid rgb(174, 177, 214); box-shadow: rgb(66 69 119) 0px 0px 4px 0px; } .select-hotels:focus { outline: rgb(174, 177, 214); } .btn-search { width: 55%; transition-duration: 0.4s; background-image: url(https://hotelsv2.inspiratest.com/images/search/search_new.svg); background-repeat: no-repeat; background-position: center center; background-size: 20px; background-color: #0b1050; border-color: #0b1050; border-radius: 5px; cursor: pointer; height: 3rem; } .dp__selection_preview { display: none; } .dp__button { display: none; } .dp__action_buttons { width: 100%; } .dp__select { font-weight: 600; color: rgb(69, 67, 124); text-transform: capitalize; font-family: Overpass, sans-serif; } .dp__range_start { background-color: rgb(64, 67, 119); border-radius: 50%; color: rgb(255, 255, 255); } .dp__range_end { border-radius: 50%; background-color: rgb(255, 255, 255); color: rgb(64, 67, 120); border-color: rgb(64, 67, 120); } .dp__input_wrap > input { background-color: rgb(245, 245, 245); color: #455461; font-size: 0.9rem; font-weight: 600; text-align: center; border-radius: 2rem; height: 3rem; } @media screen and (max-width: 992px) { .col-6 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .col-5 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .col-2 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .col-1 { -webkit-box-flex: 0; -ms-flex: 0 0 100%; flex: 0 0 100%; max-width: 100%; text-align: center; } .calendar-div { /* width: 45%; */ /* display: flex; */ /* padding: 0 0.5rem; */ height: 3rem; text-align: center; } .btn-search { width: 95%; border-radius: 3rem; margin: 1rem 0rem; margin-top: 2rem; } .calendar-range { font-size: 0.6rem; /* padding: 0rem 3rem; */ width: 95%; margin: 1rem 0.7rem; } } @media screen and (min-width: 992px) { .btn-div { /* width: 10%; */ /* display: flex; */ font-size: 1rem; height: 3rem; text-align: left; } .btn-search { width: 75%; border-radius: 5px; } .calendar-range { font-size: 0.6rem; /* padding: 0rem 3rem; */ width: 95%; } } </style>
It's time to Cabo!
Stunning Seaside Residences
Discover the luxury, beauty and warmth of Mexico at our exclusive estates and residential resort communities.
/
/
Surrender To 
Spa Bliss
Embark on a journey of self-renewal and decadent relaxation at the award-winning Armonia Spa at Sunset Beach. 
Magical Oceanfront Weddings
Celebrate the wedding of your dreams against the dramatic coastline of Cabo San Lucas, Mexico, surrounded by your dearest friends and family. 
/
/
Golf Against a Pacific Backdrop
Created as an exclusive amenity for owners and guests, the award-winning Quivira Golf Club is built on one of the most stunning settings in the world.
Explore Cabo San Lucas
Swim with Dolphins
Whether you book a Swim with Dolphins experience or a Dolphin Encounter or Trainer for a Day, nothing beats the thrill of swimming with dolphins in Cabo San Lucas.
/
/
/
Organized tours are an excellent way to explore Los Cabos. From whale watching tours to customized Cabo adventures, you can choose the best Cabo tours for your interests and budget.
Cabo San Lucas beaches stretch from the Sea of Cortés to the Pacific Ocean and are world famous for their beauty.
Cabo Tours
Cabo Beaches
© 2023 All Rights Reserved.