www.vaporfi.com Open in urlscan Pro
2606:4700:10::6816:338  Public Scan

Submitted URL: http://fundraisingcookies.com/
Effective URL: https://www.vaporfi.com/?sscid=61k8_jkpnn
Submission: On June 17 via api from US — Scanned from DE

Form analysis 12 forms found in the DOM

GET https://www.vaporfi.com/catalogsearch/result/

<form class="form minisearch" id="search_mini_form" action="https://www.vaporfi.com/catalogsearch/result/" method="get" autocomplete="off">
  <label class="hidden" for="search" data-role="minisearch-label">
    <span>Search</span>
  </label>
  <img class="icon-find" src="https://www.vaporfi.com/static/version1718274089/frontend/TPB/base/en_US/images/search.svg" alt="find">
  <input id="search" x-ref="searchInput" type="search" name="q" value="" placeholder="Search product names, brands, deals" maxlength="128"
    class="w-full h-11 border-0 rounded-3xl bg-container transition appearance-none focus:outline-none focus:border-transparent font-base mb-[20px] lg:mb-0 lg:text-sm pl-12" x-on:keyup.debounce.300="doSearch($refs.searchInput.value)"
    x-on:click.debounce.150="openSearch" x-on:keydown.debounce.100="startSearch($refs.searchInput.value)" tabindex="-1">
</form>

GET https://www.vaporfi.com/catalogsearch/result/

<form class="form minisearch" id="search_mini_form" action="https://www.vaporfi.com/catalogsearch/result/" method="get" autocomplete="off">
  <label class="hidden" for="search" data-role="minisearch-label">
    <span>Search</span>
  </label>
  <img class="icon-find" src="https://www.vaporfi.com/static/version1718274089/frontend/TPB/base/en_US/images/search.svg" alt="find">
  <input id="search" x-ref="searchInput" type="search" name="q" value="" placeholder="Search product names, brands, deals" maxlength="128"
    class="w-full h-11 border-0 rounded-3xl bg-container transition appearance-none focus:outline-none focus:border-transparent font-base mb-[20px] lg:mb-0 lg:text-sm pl-12" x-on:keyup.debounce.300="doSearch($refs.searchInput.value)"
    x-on:click.debounce.150="openSearch" x-on:keydown.debounce.100="startSearch($refs.searchInput.value)" tabindex="-1">
</form>

POST

<form class="form form-login" method="post" @submit.prevent="submitForm();" id="login-form">
  <div class="fieldset login">
    <div class="field email required">
      <label class="label" for="form-login-username" form="login-form">
        <span>Email Address</span>
      </label>
      <div class="control">
        <input name="username" id="form-login-username" x-ref="customer-email" @change="errors = 0" type="email" required="" class="form-input input-text" tabindex="-1">
      </div>
    </div>
    <div class="field password required">
      <label for="form-login-password" class="label" form="login-form">
        <span>Password</span>
      </label>
      <div class="control">
        <input name="password" id="form-login-password" type="password" class="form-input input-text" required="" x-ref="customer-password" @change="errors = 0" tabindex="-1">
      </div>
    </div>
    <input name="context" type="hidden" value="checkout" tabindex="-1">
    <div class="actions-toolbar flex justify-between pt-6 pb-2 items-center">
      <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" tabindex="-1"> Sign In </button>
      <a href="https://www.vaporfi.com/customer/account/forgotpassword/" tabindex="-1">
Forgot Your Password? </a>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47708/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47708/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47708" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/glas-bsx-salts-black-cherry-blow-pop-30ml/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47708, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_black_cherry_blowpop_box_and_bottle_1up.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47708.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_black_cherry_blowpop_box_and_bottle_1up.jpg" loading="lazy" width="240" height="300" alt="Glas BSX Salts Black Cherry Blow Pop - (30mL)" title="Glas BSX Salts Black Cherry Blow Pop - (30mL)"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/glas-bsx-salts-black-cherry-blow-pop-30ml/" tabindex="-1">
Glas BSX Salts Black Cherry Blow Pop - (30mL) </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
        <div class="rating-summary flex cursor-pointer" onclick="(
              document.getElementById('customer-review-list') ||
              document.getElementById('customer-reviews') ||
              document.getElementById('review-form')).scrollIntoView({behavior: 'smooth'}
              )">
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
        </div>
      </div>
      <script>
        function initPriceBox__6670864541b50() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__6670864541b50()" @update-prices-47708.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47708" data-price-box="product-id-47708"><span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47708" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">$13.95</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47708() {
        const configurableOptionsComponent = initConfigurableOptions('47708', {
          "attributes": {
            "184": {
              "id": "184",
              "code": "nicotine_strength",
              "label": "Nicotine Strength",
              "options": [{
                "id": "1502",
                "label": "30mg",
                "products": ["47579"]
              }, {
                "id": "1354",
                "label": "50mg",
                "products": ["47580"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47580": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47579": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 13.95
            },
            "oldPrice": {
              "amount": 13.95
            },
            "basePrice": {
              "amount": 13.95
            },
            "finalPrice": {
              "amount": 13.95
            }
          },
          "productId": "47708",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47580": {
              "184": "1354"
            },
            "47579": {
              "184": "1502"
            }
          },
          "salable": {
            "184": {
              "1354": ["47580"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47708",
            "child": {
              "47580": {
                "entity": "47580",
                "stock_number": 2,
                "stock_status": 2,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-black-cherry-blow-pop-30ml\/",
                "preorder": false
              },
              "47579": {
                "entity": "47579",
                "stock_number": 0,
                "stock_status": 0,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-black-cherry-blow-pop-30ml\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47580": "172544",
            "47579": "172543"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "184": {
            "1502": {
              "type": "0",
              "value": null,
              "label": "30mg",
              "option_id": 1502
            },
            "1354": {
              "type": "0",
              "value": null,
              "label": "50mg",
              "option_id": 1354
            },
            "additional_data": "{\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0,\"swatch_input_type\":\"text\"}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47708', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47708", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47708()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Nicotine Strength</span></div>
        <div class="swatch-attribute last:border-b border-container
            nicotine_strength">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributenicotine_strength">
                  <span> Nicotine Strength </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[184].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; optionIsActive(184, item.id) &amp;&amp; optionInStock(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <label :for="'attribute-option-47708-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[184] === item.id),
                'border-container-darker':
                    (selectedValues[184] !== item.id),
                'w-6 h-6' : !isTextSwatch(184, item.id),
                'strikethrough' : !getOutOfStock(184, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('184',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '184',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47708-'+item.id" :value="item.id" name="super_attribute[184]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(184, $event.target.value)" x-model="selectedValues[184]" :required="getAllowedAttributeOptions(184).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; !optionIsActive(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(184, item.id),
                                                    }" :style="getSwatchBackgroundStyle('184',item.id)">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47708', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47708)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47707/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47707/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47707" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/glas-bsx-salts-grape-blow-pop-30ml/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47707, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_grape_blowpop_box_and_bottle_1up.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47707.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_grape_blowpop_box_and_bottle_1up.jpg" loading="lazy" width="240" height="300" alt="Glas BSX Salts Grape Blow Pop - (30mL)" title="Glas BSX Salts Grape Blow Pop - (30mL)"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/glas-bsx-salts-grape-blow-pop-30ml/" tabindex="-1">
Glas BSX Salts Grape Blow Pop - (30mL) </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
        <div class="rating-summary flex cursor-pointer" onclick="(
              document.getElementById('customer-review-list') ||
              document.getElementById('customer-reviews') ||
              document.getElementById('review-form')).scrollIntoView({behavior: 'smooth'}
              )" title="Be the first to review this product">
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current text-gray-200 w-6 h-6" viewBox="3 0 20 20" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current text-gray-200 w-6 h-6" viewBox="3 0 20 20" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current text-gray-200 w-6 h-6" viewBox="3 0 20 20" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current text-gray-200 w-6 h-6" viewBox="3 0 20 20" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current text-gray-200 w-6 h-6" viewBox="3 0 20 20" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
        </div>
      </div>
      <script>
        function initPriceBox__667081cfef435() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__667081cfef435()" @update-prices-47707.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47707" data-price-box="product-id-47707"><span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47707" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">$13.95</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47707() {
        const configurableOptionsComponent = initConfigurableOptions('47707', {
          "attributes": {
            "184": {
              "id": "184",
              "code": "nicotine_strength",
              "label": "Nicotine Strength",
              "options": [{
                "id": "1502",
                "label": "30mg",
                "products": ["47581"]
              }, {
                "id": "1354",
                "label": "50mg",
                "products": ["47582"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47582": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47581": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 13.95
            },
            "oldPrice": {
              "amount": 13.95
            },
            "basePrice": {
              "amount": 13.95
            },
            "finalPrice": {
              "amount": 13.95
            }
          },
          "productId": "47707",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47582": {
              "184": "1354"
            },
            "47581": {
              "184": "1502"
            }
          },
          "salable": {
            "184": {
              "1354": ["47582"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47707",
            "child": {
              "47582": {
                "entity": "47582",
                "stock_number": 7,
                "stock_status": 7,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-grape-blow-pop-30ml\/",
                "preorder": false
              },
              "47581": {
                "entity": "47581",
                "stock_number": 0,
                "stock_status": 0,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-grape-blow-pop-30ml\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47582": "172546",
            "47581": "172545"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "184": {
            "1502": {
              "type": "0",
              "value": null,
              "label": "30mg",
              "option_id": 1502
            },
            "1354": {
              "type": "0",
              "value": null,
              "label": "50mg",
              "option_id": 1354
            },
            "additional_data": "{\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0,\"swatch_input_type\":\"text\"}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47707', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47707", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47707()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Nicotine Strength</span></div>
        <div class="swatch-attribute last:border-b border-container
            nicotine_strength">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributenicotine_strength">
                  <span> Nicotine Strength </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[184].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; optionIsActive(184, item.id) &amp;&amp; optionInStock(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <label :for="'attribute-option-47707-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[184] === item.id),
                'border-container-darker':
                    (selectedValues[184] !== item.id),
                'w-6 h-6' : !isTextSwatch(184, item.id),
                'strikethrough' : !getOutOfStock(184, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('184',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '184',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47707-'+item.id" :value="item.id" name="super_attribute[184]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(184, $event.target.value)" x-model="selectedValues[184]" :required="getAllowedAttributeOptions(184).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; !optionIsActive(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(184, item.id),
                                                    }" :style="getSwatchBackgroundStyle('184',item.id)">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47707', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47707)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47706/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47706/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47706" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/glas-bsx-salts-the-mint-30ml/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47706, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_mint_box_and_bottle_1up.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47706.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_mint_box_and_bottle_1up.jpg" loading="lazy" width="240" height="300" alt="Glas BSX Salts The Mint - (30mL)" title="Glas BSX Salts The Mint - (30mL)"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/glas-bsx-salts-the-mint-30ml/" tabindex="-1">
Glas BSX Salts The Mint - (30mL) </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
      </div>
      <script>
        function initPriceBox__667081d00c854() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__667081d00c854()" @update-prices-47706.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47706" data-price-box="product-id-47706"><span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47706" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">$13.95</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47706() {
        const configurableOptionsComponent = initConfigurableOptions('47706', {
          "attributes": {
            "184": {
              "id": "184",
              "code": "nicotine_strength",
              "label": "Nicotine Strength",
              "options": [{
                "id": "1502",
                "label": "30mg",
                "products": ["47583"]
              }, {
                "id": "1354",
                "label": "50mg",
                "products": ["47584"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47584": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47583": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 13.95
            },
            "oldPrice": {
              "amount": 13.95
            },
            "basePrice": {
              "amount": 13.95
            },
            "finalPrice": {
              "amount": 13.95
            }
          },
          "productId": "47706",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47584": {
              "184": "1354"
            },
            "47583": {
              "184": "1502"
            }
          },
          "salable": {
            "184": {
              "1354": ["47584"],
              "1502": ["47583"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47706",
            "child": {
              "47584": {
                "entity": "47584",
                "stock_number": 17,
                "stock_status": 17,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-the-mint-30ml\/",
                "preorder": false
              },
              "47583": {
                "entity": "47583",
                "stock_number": 16,
                "stock_status": 16,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-the-mint-30ml\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47584": "172548",
            "47583": "172547"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "184": {
            "1502": {
              "type": "0",
              "value": null,
              "label": "30mg",
              "option_id": 1502
            },
            "1354": {
              "type": "0",
              "value": null,
              "label": "50mg",
              "option_id": 1354
            },
            "additional_data": "{\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0,\"swatch_input_type\":\"text\"}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47706', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47706", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47706()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Nicotine Strength</span></div>
        <div class="swatch-attribute last:border-b border-container
            nicotine_strength">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributenicotine_strength">
                  <span> Nicotine Strength </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[184].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; optionIsActive(184, item.id) &amp;&amp; optionInStock(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <label :for="'attribute-option-47706-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[184] === item.id),
                'border-container-darker':
                    (selectedValues[184] !== item.id),
                'w-6 h-6' : !isTextSwatch(184, item.id),
                'strikethrough' : !getOutOfStock(184, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('184',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '184',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47706-'+item.id" :value="item.id" name="super_attribute[184]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(184, $event.target.value)" x-model="selectedValues[184]" :required="getAllowedAttributeOptions(184).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; !optionIsActive(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(184, item.id),
                                                    }" :style="getSwatchBackgroundStyle('184',item.id)">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47706', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47706)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47705/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47705/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47705" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/glas-bsx-salts-pineapple-mango-chew-30ml/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47705, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_pineapple_mango_box_and_bottle_1up.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47705.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_saltsautobox_50mg_reva_pineapple_mango_box_and_bottle_1up.jpg" loading="lazy" width="240" height="300" alt="Glas BSX Salts Pineapple Mango Chew - (30mL)" title="Glas BSX Salts Pineapple Mango Chew - (30mL)"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/glas-bsx-salts-pineapple-mango-chew-30ml/" tabindex="-1">
Glas BSX Salts Pineapple Mango Chew - (30mL) </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
      </div>
      <script>
        function initPriceBox__667081d0140b3() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__667081d0140b3()" @update-prices-47705.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47705" data-price-box="product-id-47705"><span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47705" data-price-amount="13.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">$13.95</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47705() {
        const configurableOptionsComponent = initConfigurableOptions('47705', {
          "attributes": {
            "184": {
              "id": "184",
              "code": "nicotine_strength",
              "label": "Nicotine Strength",
              "options": [{
                "id": "1502",
                "label": "30mg",
                "products": ["47585"]
              }, {
                "id": "1354",
                "label": "50mg",
                "products": ["47586"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47586": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47585": {
              "baseOldPrice": {
                "amount": 13.95
              },
              "oldPrice": {
                "amount": 13.95
              },
              "basePrice": {
                "amount": 13.95
              },
              "finalPrice": {
                "amount": 13.95
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 13.95
            },
            "oldPrice": {
              "amount": 13.95
            },
            "basePrice": {
              "amount": 13.95
            },
            "finalPrice": {
              "amount": 13.95
            }
          },
          "productId": "47705",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47586": {
              "184": "1354"
            },
            "47585": {
              "184": "1502"
            }
          },
          "salable": {
            "184": {
              "1354": ["47586"],
              "1502": ["47585"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47705",
            "child": {
              "47586": {
                "entity": "47586",
                "stock_number": 9,
                "stock_status": 9,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-pineapple-mango-chew-30ml\/",
                "preorder": false
              },
              "47585": {
                "entity": "47585",
                "stock_number": 5,
                "stock_status": 5,
                "parent_url": "https:\/\/www.vaporfi.com\/glas-bsx-salts-pineapple-mango-chew-30ml\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47586": "172550",
            "47585": "172549"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "184": {
            "1502": {
              "type": "0",
              "value": null,
              "label": "30mg",
              "option_id": 1502
            },
            "1354": {
              "type": "0",
              "value": null,
              "label": "50mg",
              "option_id": 1354
            },
            "additional_data": "{\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0,\"swatch_input_type\":\"text\"}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47705', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47705", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47705()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Nicotine Strength</span></div>
        <div class="swatch-attribute last:border-b border-container
            nicotine_strength">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributenicotine_strength">
                  <span> Nicotine Strength </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[184].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; optionIsActive(184, item.id) &amp;&amp; optionInStock(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <label :for="'attribute-option-47705-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[184] === item.id),
                'border-container-darker':
                    (selectedValues[184] !== item.id),
                'w-6 h-6' : !isTextSwatch(184, item.id),
                'strikethrough' : !getOutOfStock(184, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('184',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '184',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47705-'+item.id" :value="item.id" name="super_attribute[184]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(184, $event.target.value)" x-model="selectedValues[184]" :required="getAllowedAttributeOptions(184).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(184, item.id) &amp;&amp; !optionIsActive(184, item.id) &amp;&amp; getSwatchText(184, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(184, item.id),
                                                    }" :style="getSwatchBackgroundStyle('184',item.id)">
                        <div x-html="getSwatchText(184, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(184, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47705', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47705)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47832/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47832/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47832" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/voopoo-argus-g2-mini-kit/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47832, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/v/b/vb_voopoog2mini_productthumbnail.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47832.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/v/b/vb_voopoog2mini_productthumbnail.jpg" loading="lazy" width="240" height="300" alt="VooPoo Argus G2 Mini Kit" title="VooPoo Argus G2 Mini Kit"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/voopoo-argus-g2-mini-kit/" tabindex="-1">
VooPoo Argus G2 Mini Kit </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
        <div class="rating-summary flex cursor-pointer" onclick="(
              document.getElementById('customer-review-list') ||
              document.getElementById('customer-reviews') ||
              document.getElementById('review-form')).scrollIntoView({behavior: 'smooth'}
              )">
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
        </div>
      </div>
      <script>
        function initPriceBox__66707ea844e87() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__66707ea844e87()" @update-prices-47832.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47832" data-price-box="product-id-47832"><span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47832" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$16.99</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47832() {
        const configurableOptionsComponent = initConfigurableOptions('47832', {
          "attributes": {
            "93": {
              "id": "93",
              "code": "color",
              "label": "Color",
              "options": [{
                "id": "3303",
                "label": "Aurora Blue",
                "products": ["47681"]
              }, {
                "id": "3184",
                "label": "Midnight Black",
                "products": ["47679"]
              }, {
                "id": "78157",
                "label": "Spring Green",
                "products": ["47680"]
              }, {
                "id": "78729",
                "label": "Violet Pink",
                "products": ["47677"]
              }, {
                "id": "78730",
                "label": "Violet Red",
                "products": ["47678"]
              }, {
                "id": "78731",
                "label": "Starry Silver",
                "products": ["47682"]
              }, {
                "id": "78732",
                "label": "Sunset Orange",
                "products": ["47683"]
              }, {
                "id": "78733",
                "label": "Moonlit Gray",
                "products": ["47684"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47684": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47683": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47682": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47681": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47680": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47679": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47678": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47677": {
              "baseOldPrice": {
                "amount": 16.99
              },
              "oldPrice": {
                "amount": 16.99
              },
              "basePrice": {
                "amount": 16.99
              },
              "finalPrice": {
                "amount": 16.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 16.99
            },
            "oldPrice": {
              "amount": 16.99
            },
            "basePrice": {
              "amount": 16.99
            },
            "finalPrice": {
              "amount": 16.99
            }
          },
          "productId": "47832",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47684": {
              "93": "78733"
            },
            "47683": {
              "93": "78732"
            },
            "47682": {
              "93": "78731"
            },
            "47681": {
              "93": "3303"
            },
            "47680": {
              "93": "78157"
            },
            "47679": {
              "93": "3184"
            },
            "47678": {
              "93": "78730"
            },
            "47677": {
              "93": "78729"
            }
          },
          "salable": {
            "93": {
              "78733": ["47684"],
              "78732": ["47683"],
              "78731": ["47682"],
              "3303": ["47681"],
              "78157": ["47680"],
              "3184": ["47679"],
              "78730": ["47678"],
              "78729": ["47677"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47832",
            "child": {
              "47684": {
                "entity": "47684",
                "stock_number": 926,
                "stock_status": 926,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47683": {
                "entity": "47683",
                "stock_number": 890,
                "stock_status": 890,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47682": {
                "entity": "47682",
                "stock_number": 594,
                "stock_status": 594,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47681": {
                "entity": "47681",
                "stock_number": 875,
                "stock_status": 875,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47680": {
                "entity": "47680",
                "stock_number": 880,
                "stock_status": 880,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47679": {
                "entity": "47679",
                "stock_number": 773,
                "stock_status": 773,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47678": {
                "entity": "47678",
                "stock_number": 785,
                "stock_status": 785,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              },
              "47677": {
                "entity": "47677",
                "stock_number": 879,
                "stock_status": 879,
                "parent_url": "https:\/\/www.vaporfi.com\/voopoo-argus-g2-mini-kit\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47684": "172643",
            "47683": "172642",
            "47682": "172641",
            "47681": "172640",
            "47680": "172639",
            "47679": "172638",
            "47678": "172637",
            "47677": "172636"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "93": {
            "3303": {
              "type": "0",
              "value": null,
              "label": "Aurora Blue"
            },
            "3184": {
              "type": "0",
              "value": null,
              "label": "Midnight Black"
            },
            "78157": {
              "type": "0",
              "value": null,
              "label": "Spring Green"
            },
            "78729": {
              "type": "0",
              "value": null,
              "label": "Violet Pink"
            },
            "78730": {
              "type": "0",
              "value": null,
              "label": "Violet Red"
            },
            "78731": {
              "type": "0",
              "value": null,
              "label": "Starry Silver"
            },
            "78732": {
              "type": "0",
              "value": null,
              "label": "Sunset Orange"
            },
            "78733": {
              "type": "0",
              "value": null,
              "label": "Moonlit Gray"
            },
            "additional_data": "{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47832', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47832", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47832()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Color</span></div>
        <div class="swatch-attribute last:border-b border-container
            color">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributecolor">
                  <span> Color </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; optionIsActive(93, item.id) &amp;&amp; optionInStock(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <label :for="'attribute-option-47832-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[93] === item.id),
                'border-container-darker':
                    (selectedValues[93] !== item.id),
                'w-6 h-6' : !isTextSwatch(93, item.id),
                'strikethrough' : !getOutOfStock(93, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('93',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '93',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47832-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]" :required="getAllowedAttributeOptions(93).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; !optionIsActive(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(93, item.id),
                                                    }" :style="getSwatchBackgroundStyle('93',item.id)">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47832', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47832)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47740/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47740/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47740" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/vaporesso-luxe-x2-kit/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47740, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_05-08-2024_vb_luxex2_productimage.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47740.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icons_05-08-2024_vb_luxex2_productimage.jpg" loading="lazy" width="240" height="300" alt="Vaporesso LUXE X2 Kit" title="Vaporesso LUXE X2 Kit"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/vaporesso-luxe-x2-kit/" tabindex="-1">
Vaporesso LUXE X2 Kit </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
      </div>
      <script>
        function initPriceBox__66708808abb0c() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__66708808abb0c()" @update-prices-47740.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47740" data-price-box="product-id-47740"><span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47740" data-price-amount="34.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$34.99</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47740() {
        const configurableOptionsComponent = initConfigurableOptions('47740', {
          "attributes": {
            "93": {
              "id": "93",
              "code": "color",
              "label": "Color",
              "options": [{
                "id": "3676",
                "label": "Navy Blue",
                "products": ["47665"]
              }, {
                "id": "1301",
                "label": "Light Pink",
                "products": ["47667"]
              }, {
                "id": "78690",
                "label": "Night Black",
                "products": ["47666"]
              }, {
                "id": "78691",
                "label": "White Silver",
                "products": ["47668"]
              }, {
                "id": "78692",
                "label": "Light Purple",
                "products": ["47669"]
              }, {
                "id": "78693",
                "label": "Avocado Green",
                "products": ["47670"]
              }, {
                "id": "78694",
                "label": "Ruby White",
                "products": ["47671"]
              }, {
                "id": "78695",
                "label": "Wasp Yellow",
                "products": ["47672"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47672": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47671": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47670": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47669": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47668": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47667": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47666": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47665": {
              "baseOldPrice": {
                "amount": 34.99
              },
              "oldPrice": {
                "amount": 34.99
              },
              "basePrice": {
                "amount": 34.99
              },
              "finalPrice": {
                "amount": 34.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 34.99
            },
            "oldPrice": {
              "amount": 34.99
            },
            "basePrice": {
              "amount": 34.99
            },
            "finalPrice": {
              "amount": 34.99
            }
          },
          "productId": "47740",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47672": {
              "93": "78695"
            },
            "47671": {
              "93": "78694"
            },
            "47670": {
              "93": "78693"
            },
            "47669": {
              "93": "78692"
            },
            "47668": {
              "93": "78691"
            },
            "47667": {
              "93": "1301"
            },
            "47666": {
              "93": "78690"
            },
            "47665": {
              "93": "3676"
            }
          },
          "salable": {
            "93": {
              "78695": ["47672"],
              "78694": ["47671"],
              "78693": ["47670"],
              "78692": ["47669"],
              "78691": ["47668"],
              "1301": ["47667"],
              "78690": ["47666"],
              "3676": ["47665"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47740",
            "child": {
              "47672": {
                "entity": "47672",
                "stock_number": 76,
                "stock_status": 76,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47671": {
                "entity": "47671",
                "stock_number": 62,
                "stock_status": 62,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47670": {
                "entity": "47670",
                "stock_number": 52,
                "stock_status": 52,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47669": {
                "entity": "47669",
                "stock_number": 56,
                "stock_status": 56,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47668": {
                "entity": "47668",
                "stock_number": 72,
                "stock_status": 72,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47667": {
                "entity": "47667",
                "stock_number": 111,
                "stock_status": 111,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47666": {
                "entity": "47666",
                "stock_number": 212,
                "stock_status": 212,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              },
              "47665": {
                "entity": "47665",
                "stock_number": 156,
                "stock_status": 156,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-luxe-x2-kit\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47672": "172601",
            "47671": "172600",
            "47670": "172599",
            "47669": "172598",
            "47668": "172597",
            "47667": "172596",
            "47666": "172594",
            "47665": "172595"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "93": {
            "3676": {
              "type": "0",
              "value": null,
              "label": "Navy Blue"
            },
            "1301": {
              "type": "0",
              "value": null,
              "label": "Light Pink"
            },
            "78690": {
              "type": "0",
              "value": null,
              "label": "Night Black"
            },
            "78691": {
              "type": "0",
              "value": null,
              "label": "White Silver"
            },
            "78692": {
              "type": "0",
              "value": null,
              "label": "Light Purple"
            },
            "78693": {
              "type": "0",
              "value": null,
              "label": "Avocado Green"
            },
            "78694": {
              "type": "0",
              "value": null,
              "label": "Ruby White"
            },
            "78695": {
              "type": "0",
              "value": null,
              "label": "Wasp Yellow"
            },
            "additional_data": "{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47740', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47740", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47740()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Color</span></div>
        <div class="swatch-attribute last:border-b border-container
            color">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributecolor">
                  <span> Color </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; optionIsActive(93, item.id) &amp;&amp; optionInStock(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <label :for="'attribute-option-47740-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[93] === item.id),
                'border-container-darker':
                    (selectedValues[93] !== item.id),
                'w-6 h-6' : !isTextSwatch(93, item.id),
                'strikethrough' : !getOutOfStock(93, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('93',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '93',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47740-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]" :required="getAllowedAttributeOptions(93).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; !optionIsActive(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(93, item.id),
                                                    }" :style="getSwatchBackgroundStyle('93',item.id)">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47740', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47740)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47558/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47558/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47558" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/vaporesso-xros-4-mini-kit/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47558, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icon_vaporesso-xros-4-mini-kit_main.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47558.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icon_vaporesso-xros-4-mini-kit_main.jpg" loading="lazy" width="240" height="300" alt="Vaporesso XROS 4 Mini Kit" title="Vaporesso XROS 4 Mini Kit"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/vaporesso-xros-4-mini-kit/" tabindex="-1">
Vaporesso XROS 4 Mini Kit </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
        <div class="rating-summary flex cursor-pointer" onclick="(
              document.getElementById('customer-review-list') ||
              document.getElementById('customer-reviews') ||
              document.getElementById('review-form')).scrollIntoView({behavior: 'smooth'}
              )">
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
        </div>
      </div>
      <script>
        function initPriceBox__66708808d81f6() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__66708808d81f6()" @update-prices-47558.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47558" data-price-box="product-id-47558"> <span class="old-price sly-old-price no-display specialprice">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">Regular Price</span>
              <span id="old-price-47558" data-price-amount="24.99" data-price-type="oldPrice" class="price-wrapper "><span class="price">$24.99</span></span>
            </span>
          </span>
          <span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47558" data-price-amount="23.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$23.99</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47558() {
        const configurableOptionsComponent = initConfigurableOptions('47558', {
          "attributes": {
            "93": {
              "id": "93",
              "code": "color",
              "label": "Color",
              "options": [{
                "id": "5081",
                "label": "Camo Silver",
                "products": ["47309"]
              }, {
                "id": "3063",
                "label": "Ice Blue",
                "products": ["47305"]
              }, {
                "id": "1498",
                "label": "Champagne Gold",
                "products": ["47304"]
              }, {
                "id": "3156",
                "label": "Space Grey",
                "products": ["47303"]
              }, {
                "id": "52",
                "label": "Black",
                "products": ["47302"]
              }, {
                "id": "78424",
                "label": "Ice Pink",
                "products": ["47308"]
              }, {
                "id": "78674",
                "label": "Ice Purple",
                "products": ["47306"]
              }, {
                "id": "78675",
                "label": "Ice Green",
                "products": ["47307"]
              }, {
                "id": "78676",
                "label": "Camo Yellow",
                "products": ["47310"]
              }, {
                "id": "78677",
                "label": "Camo Red",
                "products": ["47311"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47311": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47310": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47309": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47308": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47307": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47306": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47305": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47304": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47303": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47302": {
              "baseOldPrice": {
                "amount": 24.99
              },
              "oldPrice": {
                "amount": 24.99
              },
              "basePrice": {
                "amount": 23.99
              },
              "finalPrice": {
                "amount": 23.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 24.99
            },
            "oldPrice": {
              "amount": 24.99
            },
            "basePrice": {
              "amount": 23.99
            },
            "finalPrice": {
              "amount": 23.99
            }
          },
          "productId": "47558",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47311": {
              "93": "78677"
            },
            "47310": {
              "93": "78676"
            },
            "47309": {
              "93": "5081"
            },
            "47308": {
              "93": "78424"
            },
            "47307": {
              "93": "78675"
            },
            "47306": {
              "93": "78674"
            },
            "47305": {
              "93": "3063"
            },
            "47304": {
              "93": "1498"
            },
            "47303": {
              "93": "3156"
            },
            "47302": {
              "93": "52"
            }
          },
          "salable": {
            "93": {
              "78677": ["47311"],
              "78676": ["47310"],
              "5081": ["47309"],
              "78424": ["47308"],
              "78675": ["47307"],
              "78674": ["47306"],
              "3063": ["47305"],
              "1498": ["47304"],
              "3156": ["47303"],
              "52": ["47302"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47558",
            "child": {
              "47311": {
                "entity": "47311",
                "stock_number": 305,
                "stock_status": 305,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47310": {
                "entity": "47310",
                "stock_number": 331,
                "stock_status": 331,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47309": {
                "entity": "47309",
                "stock_number": 271,
                "stock_status": 271,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47308": {
                "entity": "47308",
                "stock_number": 346,
                "stock_status": 346,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47307": {
                "entity": "47307",
                "stock_number": 265,
                "stock_status": 265,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47306": {
                "entity": "47306",
                "stock_number": 262,
                "stock_status": 262,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47305": {
                "entity": "47305",
                "stock_number": 280,
                "stock_status": 280,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47304": {
                "entity": "47304",
                "stock_number": 237,
                "stock_status": 237,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47303": {
                "entity": "47303",
                "stock_number": 319,
                "stock_status": 319,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              },
              "47302": {
                "entity": "47302",
                "stock_number": 954,
                "stock_status": 954,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-mini-kit\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47311": "172307",
            "47310": "172306",
            "47309": "172305",
            "47308": "172304",
            "47307": "172303",
            "47306": "172302",
            "47305": "172301",
            "47304": "172300",
            "47303": "172299",
            "47302": "172298"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "93": {
            "52": {
              "type": "0",
              "value": null,
              "label": "Black"
            },
            "5081": {
              "type": "0",
              "value": null,
              "label": "Camo Silver"
            },
            "1498": {
              "type": "0",
              "value": null,
              "label": "Champagne Gold"
            },
            "3063": {
              "type": "0",
              "value": null,
              "label": "Ice Blue"
            },
            "3156": {
              "type": "0",
              "value": null,
              "label": "Space Grey"
            },
            "78424": {
              "type": "0",
              "value": null,
              "label": "Ice Pink"
            },
            "78674": {
              "type": "0",
              "value": null,
              "label": "Ice Purple"
            },
            "78675": {
              "type": "0",
              "value": null,
              "label": "Ice Green"
            },
            "78676": {
              "type": "0",
              "value": null,
              "label": "Camo Yellow"
            },
            "78677": {
              "type": "0",
              "value": null,
              "label": "Camo Red"
            },
            "additional_data": "{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47558', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47558", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47558()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Color</span></div>
        <div class="swatch-attribute last:border-b border-container
            color">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributecolor">
                  <span> Color </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; optionIsActive(93, item.id) &amp;&amp; optionInStock(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <label :for="'attribute-option-47558-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[93] === item.id),
                'border-container-darker':
                    (selectedValues[93] !== item.id),
                'w-6 h-6' : !isTextSwatch(93, item.id),
                'strikethrough' : !getOutOfStock(93, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('93',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '93',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47558-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]" :required="getAllowedAttributeOptions(93).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; !optionIsActive(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(93, item.id),
                                                    }" :style="getSwatchBackgroundStyle('93',item.id)">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47558', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47558)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47557/

<form method="post" action="https://www.vaporfi.com/checkout/cart/add/uenc/%25uenc%25/product/47557/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full ">
  <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> <input type="hidden" name="product" value="47557" tabindex="-1">
  <div class="product-item-img 1col">
    <a href="https://www.vaporfi.com/vaporesso-xros-4-kit/" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" onclick="window.wpGA4ServerSide.pushClick(47557, '', '',  , this);">
<picture class="hover:shadow-sm object-contain product-image-photo">
<source type="image/webp" srcset="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icon_vaporesso-xros-4-kit_main.webp">
<img class="hover:shadow-sm object-contain product-image-photo" x-data="" @update-gallery-47557.window="$root.src = $event.detail" src="https://www.vaporfi.com/media/catalog/product/cache/8a05afe4f608247cc6b778825853d180/i/c/icon_vaporesso-xros-4-kit_main.jpg" loading="lazy" width="240" height="300" alt="Vaporesso XROS 4 Kit" title="Vaporesso XROS 4 Kit"></picture>
</a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="product-name mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-left ">
      <a class="product-item-link" href="https://www.vaporfi.com/vaporesso-xros-4-kit/" tabindex="-1">
Vaporesso XROS 4 Kit </a>
    </div>
    <div class="flex justify-center items-center flex-col">
      <div class="mt-3 flex justify-center ">
        <div class="rating-summary flex cursor-pointer" onclick="(
              document.getElementById('customer-review-list') ||
              document.getElementById('customer-reviews') ||
              document.getElementById('review-form')).scrollIntoView({behavior: 'smooth'}
              )">
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
          <svg xmlns="http://www.w3.org/2000/svg" class="fill-current w-6 h-6" viewBox="3 0 20 20" style="color: #f6e05e" fill="currentColor">
            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371
                        1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
                        1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1
                        1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
          </svg>
        </div>
      </div>
      <script>
        function initPriceBox__66708808eea75() {
          return {
            updatePrice(priceData) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                regularPriceLabel.classList.add('hidden');
              } else {
                regularPriceLabel.classList.remove('hidden');
              }
              regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
            }
          }
        }
      </script>
      <div class="pt-1 pb-2 text-gray-900" x-data="initPriceBox__66708808eea75()" @update-prices-47557.window="updatePrice($event.detail);">
        <div class="price-box price-final_price" data-role="priceBox" data-product-id="47557" data-price-box="product-id-47557"> <span class="old-price sly-old-price no-display specialprice">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">Regular Price</span>
              <span id="old-price-47557" data-price-amount="39.99" data-price-type="oldPrice" class="price-wrapper "><span class="price">$39.99</span></span>
            </span>
          </span>
          <span class="normal-price">
            <span class="price-container price-final_price tax weee rewards_earn">
              <span class="price-label hidden">As low as</span>
              <span id="product-price-47557" data-price-amount="29.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">$29.99</span></span>
            </span>
          </span>
        </div>
      </div>
    </div>
    <script>
      function initConfigurableSwatchOptions_47557() {
        const configurableOptionsComponent = initConfigurableOptions('47557', {
          "attributes": {
            "93": {
              "id": "93",
              "code": "color",
              "label": "Color",
              "options": [{
                "id": "4710",
                "label": "Lilac Purple",
                "products": ["47319"]
              }, {
                "id": "1498",
                "label": "Champagne Gold",
                "products": ["47316"]
              }, {
                "id": "52",
                "label": "Black",
                "products": ["47312"]
              }, {
                "id": "211",
                "label": "Blue",
                "products": ["47314"]
              }, {
                "id": "210",
                "label": "Green",
                "products": ["47315"]
              }, {
                "id": "207",
                "label": "Silver",
                "products": ["47313"]
              }, {
                "id": "78678",
                "label": "Pink Mint",
                "products": ["47317"]
              }, {
                "id": "78679",
                "label": "Sunset Neon",
                "products": ["47318"]
              }, {
                "id": "78680",
                "label": "Bloody Mary",
                "products": ["47320"]
              }, {
                "id": "78681",
                "label": "Pastel Palette",
                "products": ["47321"]
              }],
              "position": "0"
            }
          },
          "template": "$<%- data.price %>",
          "currencyFormat": "$%s",
          "optionPrices": {
            "47321": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47320": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47319": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47318": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47317": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47316": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47315": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47314": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47313": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            },
            "47312": {
              "baseOldPrice": {
                "amount": 39.99
              },
              "oldPrice": {
                "amount": 39.99
              },
              "basePrice": {
                "amount": 29.99
              },
              "finalPrice": {
                "amount": 29.99
              },
              "tierPrices": [],
              "msrpPrice": {
                "amount": 0
              }
            }
          },
          "priceFormat": {
            "pattern": "$%s",
            "precision": 2,
            "requiredPrecision": 2,
            "decimalSymbol": ".",
            "groupSymbol": ",",
            "groupLength": 3,
            "integerRequired": false
          },
          "prices": {
            "baseOldPrice": {
              "amount": 39.99
            },
            "oldPrice": {
              "amount": 39.99
            },
            "basePrice": {
              "amount": 29.99
            },
            "finalPrice": {
              "amount": 29.99
            }
          },
          "productId": "47557",
          "chooseText": "Choose an Option...",
          "images": [],
          "index": {
            "47321": {
              "93": "78681"
            },
            "47320": {
              "93": "78680"
            },
            "47319": {
              "93": "4710"
            },
            "47318": {
              "93": "78679"
            },
            "47317": {
              "93": "78678"
            },
            "47316": {
              "93": "1498"
            },
            "47315": {
              "93": "210"
            },
            "47314": {
              "93": "211"
            },
            "47313": {
              "93": "207"
            },
            "47312": {
              "93": "52"
            }
          },
          "salable": {
            "93": {
              "78681": ["47321"],
              "78680": ["47320"],
              "4710": ["47319"],
              "78679": ["47318"],
              "78678": ["47317"],
              "1498": ["47316"],
              "210": ["47315"],
              "211": ["47314"],
              "207": ["47313"],
              "52": ["47312"]
            }
          },
          "canDisplayShowOutOfStockStatus": true,
          "preSelectedGallery": [],
          "productStockAlert": {
            "entity": "47557",
            "child": {
              "47321": {
                "entity": "47321",
                "stock_number": 354,
                "stock_status": 354,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47320": {
                "entity": "47320",
                "stock_number": 348,
                "stock_status": 348,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47319": {
                "entity": "47319",
                "stock_number": 76,
                "stock_status": 76,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47318": {
                "entity": "47318",
                "stock_number": 401,
                "stock_status": 401,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47317": {
                "entity": "47317",
                "stock_number": 327,
                "stock_status": 327,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47316": {
                "entity": "47316",
                "stock_number": 61,
                "stock_status": 61,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47315": {
                "entity": "47315",
                "stock_number": 365,
                "stock_status": 365,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47314": {
                "entity": "47314",
                "stock_number": 257,
                "stock_status": 257,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47313": {
                "entity": "47313",
                "stock_number": 245,
                "stock_status": 245,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              },
              "47312": {
                "entity": "47312",
                "stock_number": 760,
                "stock_status": 760,
                "parent_url": "https:\/\/www.vaporfi.com\/vaporesso-xros-4-kit\/",
                "preorder": false
              }
            },
            "buttonDesign": {
              "btnText": "Notify me",
              "btnTextColor": "#FFFFFF",
              "btnColor": "#7fb82c"
            },
            "controllerActionName": "cms_index_index"
          },
          "channel": "website",
          "salesChannelCode": "vf",
          "sku": {
            "47321": "172317",
            "47320": "172316",
            "47319": "172315",
            "47318": "172314",
            "47317": "172313",
            "47316": "172312",
            "47315": "172311",
            "47314": "172310",
            "47313": "172309",
            "47312": "172308"
          }
        });
        const swatchOptionsComponent = initSwatchOptions({
          "93": {
            "52": {
              "type": "0",
              "value": null,
              "label": "Black"
            },
            "1498": {
              "type": "0",
              "value": null,
              "label": "Champagne Gold"
            },
            "4710": {
              "type": "0",
              "value": null,
              "label": "Lilac Purple"
            },
            "211": {
              "type": "0",
              "value": null,
              "label": "Blue"
            },
            "210": {
              "type": "0",
              "value": null,
              "label": "Green"
            },
            "207": {
              "type": "0",
              "value": null,
              "label": "Silver"
            },
            "78678": {
              "type": "0",
              "value": null,
              "label": "Pink Mint"
            },
            "78679": {
              "type": "0",
              "value": null,
              "label": "Sunset Neon"
            },
            "78680": {
              "type": "0",
              "value": null,
              "label": "Bloody Mary"
            },
            "78681": {
              "type": "0",
              "value": null,
              "label": "Pastel Palette"
            },
            "additional_data": "{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0}"
          }
        });
        return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
          mediaCallback: "https\u003A\u002F\u002Fwww.vaporfi.com\u002Fswatches\u002Fajax\u002Fmedia\u002F",
          changeOption(optionId, value, skipUpdateGallery) {
            this.selectedValues[optionId] = value;
            this.findSimpleIndex();
            this.findAllowedAttributeOptions();
            this.updatePrices();
            window.dispatchEvent(new CustomEvent('configurable-selection-changed-47557', {
              detail: {
                productId: this.productId,
                productIndex: this.productIndex,
              }
            }));
            !skipUpdateGallery && this.updateGallery();
          },
          updateGallery() {
            if (!this.productIndex) {
              return;
            }
            fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
              method: 'GET',
              headers: {
                'Content-Type': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
              }
            }).then(response => {
              return response.json()
            }).then(data => {
              if (data.errors) {
                // non critical failure only console logged
                console.warn(data.errors);
              } else {
                /**fix for swatch option image issue**/
                var elements = document.querySelectorAll('.product-image-photo');
                elements.forEach(function(element) {
                  var sources = element.querySelectorAll('source');
                  sources.forEach(function(source) {
                    source.parentNode.removeChild(source);
                  });
                });
                /**fix for swatch option image issue**/
                const image = data && data.medium;
                image && window.dispatchEvent(new CustomEvent("update-gallery-47557", {
                  detail: image
                }));
              }
            }).catch(error => {
              console.warn(error)
            });
          },
          preselectQuerystringItems() {
            // pre-select option like ?size=167
            const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
            Object.values(this.optionConfig.attributes).map(attribute => {
              // Don't update images on load, since PLPs already set the main image to the selected options
              const skipUpdateGallery = true;
              urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
            });
          },
          mouseDown: false,
          startX: 0,
          maxScroll: 0,
          scrollLeft: null,
          slider: null,
          scrollEvents: {
            ['@mousedown'](e) {
              this.slider = e.target.closest('.snap');
              if (!this.slider) {
                return;
              }
              this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
              this.startX = e.pageX - this.slider.offsetLeft;
              this.scrollLeft = this.slider.scrollLeft;
              this.mouseDown = true;
            },
            ['@mouseout.self']() {
              this.mouseDown = false;
            },
            ['@mouseup']() {
              this.mouseDown = false;
            },
            ['@mousemove'](e) {
              e.preventDefault();
              if (!this.mouseDown) {
                return;
              }
              const x = e.pageX - this.slider.offsetLeft;
              const scroll = x - this.startX;
              const scrollLeft = this.scrollLeft - scroll;
              if (scrollLeft > this.maxScroll) {
                this.slider.scrollLeft = this.maxScroll;
                return
              }
              this.slider.scrollLeft = this.scrollLeft - scroll;
            },
            ['@onselectstart']() {
              return false;
            }
          },
          resizeEvent() {
            Array.from(this.$el.querySelectorAll('.snap')).forEach(slider => {
              slider.scrollLeft = 0;
            })
          }
        });
      }
    </script>
    <div x-data="initConfigurableSwatchOptions_47557()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
      class="mb-2 relative config-options">
      <div>
        <div class="swatch-attribute-label border-t pt-1"><span>Color</span></div>
        <div class="swatch-attribute last:border-b border-container
            color">
          <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
            <template x-if="showSwatches">
              <div class="flex flex-nowrap w-full overflow-auto transition-all items-center py-1" role="radiogroup" x-spread="scrollEvents">
                <label class="sr-only" for="attributecolor">
                  <span> Color </span>
                </label>
                <template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
                  <div>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; optionIsActive(93, item.id) &amp;&amp; optionInStock(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <label :for="'attribute-option-47557-'+item.id" class="swatch-option relative border-2 shadow-sm cursor-pointer select-none bg-container-lighter product-option-value-label" :class="{
                'border-container-lighter ring ring-primary/50':
                    (selectedValues[93] === item.id),
                'border-container-darker':
                    (selectedValues[93] !== item.id),
                'w-6 h-6' : !isTextSwatch(93, item.id),
                'strikethrough' : !getOutOfStock(93, item.id),
                'border-container-lighter ring ring-primary/75' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('93',item.id)" @mouseenter.self="activeTooltipItem = {
                    attribute: '93',
                    item: item.id
                }; tooltipPositionElement = $event.target;" @mouseleave.self="activeTooltipItem = false">
                        <input :id="'attribute-option-47557-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1"
                          x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]" :required="getAllowedAttributeOptions(93).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                      </label>
                    </template>
                    <template x-if="optionIsEnabled(93, item.id) &amp;&amp; !optionIsActive(93, item.id) &amp;&amp; getSwatchText(93, item.id)">
                      <div class="relative border-2 shadow-sm opacity-50 cursor-pointer select-none border-container-darker swatch-option bg-container-lighter" :class="{
                                                        'w-6 h-6' : !isTextSwatch(93, item.id),
                                                    }" :style="getSwatchBackgroundStyle('93',item.id)">
                        <div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
                          <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
                        </svg>
                      </div>
                    </template>
                  </div>
                </template>
              </div>
            </template>
          </div>
        </div>
      </div>
      <template x-if="isTooltipVisible()">
        <div class="absolute" :style="getTooltipPosition()">
          <div class="shadow-lg">
            <div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-sm leading-tight text-black
                    transform -translate-x-1/2 -translate-y-full bg-white rounded-lg shadow-lg text-center">
              <template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)">
                <div class="inline-block border shadow-sm border-container" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"></div>
              </template>
              <span class="mx-2 text-lg font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-10 w-8 h-8 text-white transform -translate-x-1/5
                    -translate-y-8 fill-current stroke-current" width="12" height="12">
              <rect x="12" y="-12" width="12" height="12" transform="rotate(45)" class="shadow-xl"></rect>
            </svg>
          </div>
        </div>
      </template>
    </div>
    <script type="text/javascript">
      (function stockAlertCatalogPage() {
        const colorButton = 'rgb(29, 78, 216)';
        window.addEventListener('configurable-selection-changed-47557', e => {
          var productId = e.detail.productId,
            childId = e.detail.productIndex,
            buttonAdd = document.querySelector('input[value="' + productId + '"]').parentElement.querySelectorAll('button')[0],
            buttonSpan = buttonAdd.querySelector('span'),
            buttonSvg = buttonAdd.querySelector('svg'),
            heightButton = buttonAdd.offsetHeight,
            formDataActionUrl = 'https://www.vaporfi.com/' + 'productstockalert/ajax/formData/product_id/' + productId;
          fetch(formDataActionUrl, {
            method: 'GET',
            dataType: 'json',
            contentType: 'application/json; charset=UTF-8',
          }).then((response) => response.json()).then(function(dataResponse) {
            var productData = dataResponse.product_data;
            if (Object.keys(productData).length !== 0 && typeof childId !== 'undefined') {
              for (const key in productData) {
                if (key === childId) {
                  buttonSpan.style.color = dataResponse.button_text_color;
                  buttonAdd.style.backgroundColor = dataResponse.button_style;
                  buttonSvg.style.display = 'none';
                  buttonAdd.style.height = heightButton + 'px';
                  if (!productData[key].has_email) {
                    buttonSpan.innerHTML = dataResponse.button_text;
                  } else {
                    buttonSpan.innerHTML = dataResponse.button_text_cancel;
                  }
                  break;
                } else {
                  buttonSvg.style.display = 'block';
                  buttonSpan.innerHTML = "Add to Cart";
                  buttonAdd.style.backgroundColor = colorButton;
                  buttonSpan.style.color = '#fff';
                }
              }
            }
          }).catch(error => {
            console.log('Error:', error);
          });
        })
      })()
    </script>
    <div class="mt-auto pt-2 flex flex-wrap gap-x-2 2xl:gap-x-4 justify-center items-center addcart-container">
      <button class="w-auto buy-now-btn btn btn-primary justify-center text-sm
                                " aria-label="Add to Cart" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
          <title>shopping-cart</title>
        </svg>
        <span class="ml-[5px] inline text-lg md:hidden 2xl:inline"> Add to Cart </span>
      </button>
      <button x-data="initWishlist()" @click.prevent="addToWishlist(47557)" aria-label="Add to Wish List" type="button"
        class="wishlist-icon rounded-full bg-gray-200 w-9 h-9 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:primary-color-hover" tabindex="-1">
        <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-5 h-5" width="25" height="25" role="img">
          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 0 0 0 6.364L12 20.364l7.682-7.682a4.5 4.5 0 0 0-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 0 0-6.364 0Z"></path>
          <title>heart</title>
        </svg>
      </button>
    </div>
  </div>
</form>

POST https://www.vaporfi.com/newsletter/subscriber/new/

<form class="form subscribe container max-w-3xl" action="https://www.vaporfi.com/newsletter/subscriber/new/" method="post" x-data="initNewsletterForm()" @submit.prevent="submitForm()" id="newsletter-validate-detail"
  aria-label="Subscribe to Newsletter">
  <div class="text-center text-black space-y-1 mb-6">
    <p class="text-lg md:text-3xl font-bold">
      <strong class="font-bold">Be the first to know</strong>
    </p>
    <p class="text-base md:text-2xl font-bold">Sign up to receive 15% off your purchase of $60 or more!</p>
  </div>
  <div class="flex flex-col sm:flex-row gap-2">
    <label class="grow m-0">
      <span class="sr-only">Email Address</span>
      <input type="email" id="newsletter-subscribe" name="email" class="form-input w-full py-2.5 px-5" required="" placeholder="Enter your email address" tabindex="-1">
      <input name="form_key" type="hidden" value="sUr9Cha0RltS6rNV" tabindex="-1"> </label>
    <button class="btn btn-primary" tabindex="-1"> Subscribe </button>
  </div>
  <template x-if="displayErrorMessage">
    <p class="flex items-center text-red mt-2">
      <svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="inline-block mr-3" width="24" height="24" role="img">
        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4m0 4h.01M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path>
        <title>exclamation-circle</title>
      </svg>
      <template x-for="errorMessage in errorMessages">
        <span x-html="errorMessage"></span>
      </template>
    </p>
  </template>
</form>

Text Content

WARNING: This product contains nicotine. Nicotine is an addictive chemical.

Save 25% off Select Voopoo

Buy 5 E-Liquids get 25% OFF

Get a FREE Kit with ANY E-Liquid!

chevron-left

chevron-right

You are $75.00 away from Free Shipping
Search
Loading...

Hot Searches

Vaporesso Smok vape coils Smok vape mods Smok vape tanks Xros pods

Products ()

No results found.

Categories ()



Posts ()








Sign In Create an Account
Cart 0
x menu
E-Liquids
DELTA
Cartridges
Vape Pens
Starter Kits
Accessories
Alternatives
Brands
 * New
 * Deals
 * Rewards


E-Liquids
DELTA
Cartridges
Vape Pens
Starter Kits
Accessories
Alternatives
Brands
 * New
 * Deals
 * Rewards

Search
Loading...

Hot Searches

Vaporesso Smok vape coils Smok vape mods Smok vape tanks Xros pods

Products ()

No results found.

Categories ()



Posts ()







x

My Cart

x







pencil trash
You have no items in your shopping cart.

Subtotal:

Checkout or View and Edit Cart
Loading...
x

My Cart (10 of 0)

x







pencil trash
You have no items in your shopping cart.
You have no items in your shopping cart.

Subtotal:

Checkout or View and Edit Cart
Loading...
x

Checkout using your account

Email Address

Password

Sign In Forgot Your Password?


Checkout as a new customer

Creating an account has many benefits:

 * See order and shipping status
 * Track order history
 * Check out faster

Create an Account
Skip to Content
x

Age Certification

By entering this website, you agree that you're of legal age in your state to
purchase electronic cigarette products.

Enter Under Age


VooPoo Argus G2 Mini Now Available
Buy The G2 Mini Now →
Argus Top Fill 3mL Pods
Buy Argus Top Fill Pods Now →


VAPORFI ONLINE VAPE SHOP

Dive into the vibrant universe of VaporFi’s online vape shop! Discover an
unmatched selection of top-tier vapes, rich-flavored e-liquids, innovative mods,
and much more. Our online vape store has something for every vaping enthusiast.
Experience remarkable deals with our tempting offers, and enjoy free shipping on
orders over $75 today! Adventure deeper into the community and buy vapes online
with VaporFi.


MIGVAPOR


Cartridges, Dry Herb Vaporizers & More

SHOP MIG VAPOR


FEATURED FLAVORS

Shop All

Discover all of the best vape juice flavors that offer thrilling experiences for
the vaping community. We host a variety of flavors on our online vape store from
clean menthol and old-fashioned tobacco to fruity flavors like strawberry and
other sweet tooth selections like chocolate.

Glas BSX Salts Black Cherry Blow Pop - (30mL)
As low as $13.95
Nicotine Strength
Nicotine Strength


shopping-cart Add to Cart heart
Glas BSX Salts Grape Blow Pop - (30mL)
As low as $13.95
Nicotine Strength
Nicotine Strength


shopping-cart Add to Cart heart
Glas BSX Salts The Mint - (30mL)
As low as $13.95
Nicotine Strength
Nicotine Strength


shopping-cart Add to Cart heart
Glas BSX Salts Pineapple Mango Chew - (30mL)
As low as $13.95
Nicotine Strength
Nicotine Strength


shopping-cart Add to Cart heart


DELTA


A Hemp Experience For Everyone

SHOP DELTA


FEATURED VAPE DEVICES

Shop All

Explore the best vapes our online store has to offer. Our signature brand Mig
Vapor offers a diverse set of reusable vapes and flavored cartridges that
satisfy any customer. You can even find a favorite amongst our partner brands
which offer even more variety!

VooPoo Argus G2 Mini Kit
As low as $16.99
Color
Color


shopping-cart Add to Cart heart
Vaporesso LUXE X2 Kit
As low as $34.99
Color
Color


shopping-cart Add to Cart heart
Vaporesso XROS 4 Mini Kit
Regular Price $24.99 As low as $23.99
Color
Color


shopping-cart Add to Cart heart
Vaporesso XROS 4 Kit
Regular Price $39.99 As low as $29.99
Color
Color


shopping-cart Add to Cart heart


STARTER KITS


ALTERNATIVES

Vape Batteries
Pod Juice
Edibles
Shop By Brand


BUY THE BEST VAPES ONLINE

VaporFi is the online vape shop of choice for countless customers and we’re on a
mission to change the way you smoke. We cater to vapers of all levels of
expertise, from the beginners looking for their first kit to the advanced cloud
chasers looking for high-powered mods and the most complex of flavors. Our vape
shop has an e-liquid or mod to fit every customer's need. We are constantly
bringing you the most innovative technology in the world of vaping. You'll never
be bored with the vapes and other products offered at VaporFi. We are committed
to high standards, amazing customer service, and elevating your experience with
our products.





Be the first to know

Sign up to receive 15% off your purchase of $60 or more!

Email Address Subscribe

exclamation-circle




FEATURED

 * New
 * Deals
 * Rewards
 * Brands
 * Top Kits under $25
 * Coupons


SHOP

 * E-Liquids
 * Starter Kits
 * Mods
 * Pod Mods
 * Vape Pens
 * Accessories
 * Delta
 * Cartridges
 * Vaporizers


MY ACCOUNT

Sign In Create an Account


CUSTOMER SERVICE

 * Immediate Help
 * Check Your Order
 * Shipping Restrictions
 * FAQ
 * Learn
 * Vape Guide
 * Blog

Not for sale to minors. VaporFi only sells to third-party age-verified adult
consumers (21+).  Any use of any product depicted on our website is at
customer’s own risk.  Certain products sold on VaporFi.com may contain nicotine
which is a highly addictive substance.  KEEP AWAY FROM CHILDREN OR PETS.
 Consult a physician or veterinarian immediately if a non-oral product is
accidentally swallowed, as these products are not intended to be ingested and
may be poisonous.  Please consult your physician before using any products sold
by VaporFi.  No information contained herein is intended as a substitute for or
alternative to information from health care practitioners.  Seller complies with
applicable regulations including the PACT Act for shipping tobacco products and
the 2018 Agricultural Improvement Act applicable to hemp-derived products.
 Please also refer to our Terms and Conditions page before purchasing any of our
products. FDA DISCLAIMER: The statements made regarding these products have not
been evaluated by the Food and Drug Administration. These products are not
intended to diagnose, treat, cure, or prevent any disease or condition.
Proposition 65 - WARNING: This product can expose you to chemicals including
nicotine, which is known to the State of California to cause birth defects or
other reproductive harm. For more information, go to Proposition 65 Warnings
Website. 



© Copyright 2024 VaporFi. All Rights Reserved.
Terms & Conditions Accessibility Privacy Policy California Policy Become an
Affiliate Wholesale