www.papstar-shop.fr Open in urlscan Pro
2a00:f48:1008::214:114:10  Malicious Activity! Public Scan

URL: https://www.papstar-shop.fr/plateaux-carton-pure-12-cm-x-9-5-cm-x-62-cm-marron-pour-6-gobelets-87648.htm?gad_source=1&gclid=...
Submission: On January 31 via manual from FR — Scanned from FR

Form analysis 12 forms found in the DOM

GET https://www.papstar-shop.fr/catalogsearch/result/

<form class="form minisearch w-full lg:w-10/12" x-data="initMiniSearchComponent()" @click.away="show = false" id="search_mini_form" action="https://www.papstar-shop.fr/catalogsearch/result/" method="get">
  <div class="flex justify-end lg:pr-6 pt-3 lg:pt-0">
    <div class="control w-full">
      <label class="sr-only" for="search"> Rechercher... </label>
      <input id="search" x-on:input.debounce="getSearchResults()" x-ref="searchInput" type="search" class="input-text h-12 w-full" autocapitalize="off" autocomplete="off" autocorrect="off" name="q" value="" placeholder="Rechercher..."
        maxlength="128">
    </div>
    <button type="submit" title="Rechercher" class="action search btn btn-primary-square h-12 -ml-2">
      <span class="hidden md:block">Rechercher</span>
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="md:w-0 text-white h-6 w-6">
        <circle cx="27" cy="27.4" fill="none" r="19.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
        <path d="M46 41.1 56.9 52c.8.8.8 2 0 2.8l-2.1 2.1c-.8.8-2 .8-2.8 0L41 46M17.6 36.8c-5.2-5.2-5.2-13.6 0-18.7" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"
          class="stroke-2c3e50"></path>
      </svg>
    </button>
  </div>
  <div id="search_autocomplete" class="search-autocomplete flex justify-end relative w-inherit" x-show="show" style="display:none;">
    <div class="absolute lg:max-h-screen-80 overflow-y-auto bg-white border border-solid border-black z-50 w-full flex flex-col">
      <template x-if="isLoading">
        <div class="absolute bg-white bg-opacity-60 z-10 h-full w-full flex items-center justify-center">
          <div class="flex items-center">
            <!-- loading icon -->
            <svg class="animate-spin h-5 w-5 text-gray-600" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
              <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
              <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">
              </path>
            </svg>
            <!-- end loading icon -->
          </div>
        </div>
      </template>
      <div class="pap-autocomplete-overview">
        <p class="font-bold m-0"> Recherches populaires </p>
        <p class="m-0 mt-3">
          <a class="block w-full" :href="`${searchPageUrl}?q=${searchTerm}`" href="https://www.papstar-shop.fr/catalogsearch/result/?q=">
                        <span class="pap-autocomplete-overview-term" x-text="searchTerm"></span>
                        <span class="pap-autocomplete-overview-total" x-text="`(${resultLength})`">(0)</span>
                    </a>
        </p>
      </div>
      <p class="font-bold pl-4 pb-2 m-0">Produits</p>
      <ul class="pap-autocomplete-results">
        <template x-for="(result, index) in Object.values(results)" :key="result.uid">
          <li>
            <a class="pap-autocomplete-result" :href="result.url">

<picture class="pap-autocomplete-result-image">
            <source type="image/webp" :srcset="result.image.url_webp">
        <source type="" :srcset="result.image.url">
    <img class="pap-autocomplete-result-image" :src="result.image.url" :alt="result.image.label" loading="lazy"></picture>
<div class="pap-autocomplete-result-meta">
                                <p class="pap-autocomplete-result-meta-name" x-text="result.name"></p>
                                <p class="pap-autocomplete-result-meta-sku">
                                    Article N°                                    <span x-text="result.sku"></span>
                                </p>
                                <template x-if="result.prices.final.gross">
                                    <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
                                        <div class="normal-price" :class="{'block': showPriceWithTax(result), 'hidden': !showPriceWithTax(result)}">
                                            <span class="price-container price-final_price tax weee">
                                                <template x-if="result.prices.hasOld">
                                                    <div class="old-price text-xs including-tax line-through">
                                                        <span class="price" x-text="hyva.formatPrice(result.prices.regular.gross)"></span>
                                                    </div>
                                                </template>
                                                <div class="price-wrapper price-including-tax finalPrice flex items-end leading-tight">
                                                    <span class="price font-bold" x-text="hyva.formatPrice(result.prices.final.gross)"></span>
                                                    <span class="text-xs">&nbsp;TVA comprise</span>
                                                </div>
                                            </span>
                                        </div>

                                        <div class="base-price">
                                            <span class="price-container price-final_price tax weee">
                                                <template x-if="result.prices.hasOld">
                                                    <div class="old-price text-xs excluding-tax line-through">
                                                        <span class="price" x-text="hyva.formatPrice(result.prices.regular.net)"></span>
                                                    </div>
                                                </template>
                                                <div class="price-wrapper price-excluding-tax finalPrice flex items-end leading-tight">
                                                    <span class="price font-bold" x-text="hyva.formatPrice(result.prices.final.net)"></span>
                                                    <span class="text-xs">&nbsp;hors TVA</span>
                                                </div>
                                            </span>
                                        </div>
                                    </div>
                                </template>
                            </div>
                            <span class="flex pap-autocomplete-result-rating">
                                <template x-for="(star, index) in result.stars" :key="index">
                                    <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                                        <use href="#pap-rating-star" x-bind:fill="star"></use>
                                    </svg>
                                </template>
                            </span>
                        </a>
          </li>
        </template>
      </ul>
      <p x-show="storyBlokPageData.length >= 1" class="font-bold pl-4 pb-2 m-0" style="display: none;">Pages</p>
      <ul class="pap-autocomplete-results">
        <template x-for="(result, index) in Object.values(storyBlokPageData)" :key="result.uuid">
          <li x-show="index < 5">
            <a class="pap-autocomplete-page-result" :href="'/' + result.url">
                            <div class="pap-autocomplete-result-meta">
                                <p class="pap-autocomplete-result-meta-name" x-text="result.name"></p>
                            </div>
                        </a>
          </li>
        </template>
      </ul>
    </div>
  </div>
</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="username">
        <span>Adresse email</span>
      </label>
      <div class="control">
        <input name="username" id="username" x-ref="customer-email" @change="errors = 0" type="email" required="" class="form-input input-text">
      </div>
    </div>
    <div class="field password required">
      <label for="password" class="label">
        <span>Mot de passe</span>
      </label>
      <div class="control">
        <input name="password" id="password" type="password" class="form-input input-text" required="" x-ref="customer-password" autocomplete="customer-password" @change="errors = 0">
      </div>
    </div>
    <input name="context" type="hidden" value="checkout">
    <div class="actions-toolbar flex justify-between pt-6 pb-2 items-center">
      <button type="submit" class="inline-flex btn btn-primary"> S'inscrire </button>
      <a href="https://www.papstar-shop.fr/customer/account/forgotpassword/">
                                        Mot de passe oublié ?                                    </a>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/87648/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/87648/"
  id="product_addtocart_form">
  <input type="hidden" name="product" value="87648">
  <input type="hidden" name="selected_configurable_option" value="">
  <input type="hidden" name="related_product" id="related-products-field" value="">
  <input type="hidden" name="item" value="87648">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td">
  <script>
    function initConfigurableSwatchOptions_87648() {
      const configurableOptionsComponent = initConfigurableOptions('87648', {
        "attributes": {
          "254": {
            "id": "254",
            "code": "order_unit",
            "label": "Unit\u00e9 de commande",
            "options": [{
              "id": "7059",
              "label": "Carton",
              "products": ["187648"]
            }],
            "position": "0"
          }
        },
        "template": "<%- data.price %>\u00a0\u20ac",
        "currencyFormat": "%s\u00a0\u20ac",
        "optionPrices": {
          "187648": {
            "baseOldPrice": {
              "amount": 60
            },
            "oldPrice": {
              "amount": 72.000001
            },
            "basePrice": {
              "amount": 60
            },
            "finalPrice": {
              "amount": 72.000001
            },
            "tierPrices": [],
            "msrpPrice": {
              "amount": 0
            },
            "unitPrice": {
              "pricePerUnitHTML": {
                "price": "48,00\u00a0centimes \/ St\u00fcck",
                "basePrice": "40,00\u00a0centimes \/ St\u00fcck"
              }
            }
          }
        },
        "priceFormat": {
          "pattern": "%s\u00a0\u20ac",
          "precision": 2,
          "requiredPrecision": 2,
          "decimalSymbol": ",",
          "groupSymbol": "\u202f",
          "groupLength": 3,
          "integerRequired": false
        },
        "prices": {
          "baseOldPrice": {
            "amount": 60
          },
          "oldPrice": {
            "amount": 72.000001
          },
          "basePrice": {
            "amount": 60
          },
          "finalPrice": {
            "amount": 72.000001
          }
        },
        "productId": "87648",
        "chooseText": "Choisissez une option...",
        "images": [],
        "index": {
          "187648": {
            "254": "7059"
          }
        },
        "salable": {
          "254": {
            "7059": ["187648"]
          }
        },
        "canDisplayShowOutOfStockStatus": true,
        "channel": "website",
        "salesChannelCode": "papstar_fr",
        "sku": {
          "187648": "4002911447840"
        },
        "quantities": {
          "187648": 100
        }
      });
      const swatchOptionsComponent = initSwatchOptions({
        "254": {
          "7059": {
            "type": "0",
            "value": null,
            "label": "Carton",
            "unit": "###VPE### Piece (5 x 30)",
            "vpe": "150"
          },
          "additional_data": "{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":0}"
        }
      });
      return Object.assign(configurableOptionsComponent, swatchOptionsComponent);
    }
  </script>
  <div x-data="initConfigurableSwatchOptions_87648()" x-init="init(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" class="relative mt-5 mb-2">
    <div>
      <div class="swatch-attribute min-h-14
                            order_unit">
        <template x-if="showSwatches">
          <div class="py-1 w-full border-gray-300">
            <label class="w-full text-gray-700 product-option-label" for="attributeorder_unit">
              <div class="font-semibold mb-2"> Unité de commande </div>
            </label>
            <div class="w-full text-left text-gray-900 product-option-values -ml-1">
              <div class="swatch-attribute-options" role="radiogroup">
                <div class="swatch-attribute-options-grid grid">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afcc0a852.9964885787648-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afcc0a852.9964885787648-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </div>
            </div>
          </div>
        </template>
        <div class="py-1 w-full border-gray-300">
          <label class="w-full text-gray-700 product-option-label" for="attributeorder_unit">
            <div class="font-semibold mb-2"> Unité de commande </div>
          </label>
          <div class="w-full text-left text-gray-900 product-option-values -ml-1">
            <div class="swatch-attribute-options" role="radiogroup">
              <div class="swatch-attribute-options-grid grid">
                <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                  <div class="swatch-item">
                    <label :for="'attribute-option-swatch-input65ba7afcc0a852.9964885787648-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                      <input :id="'attribute-option-swatch-input65ba7afcc0a852.9964885787648-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)"
                        x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                      <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                      <!-- N98 custom attributes start-->
                      <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                      <!-- N98 custom attributes end-->
                    </label>
                  </div>
                </template>
                <div class="swatch-item">
                  <label :for="'attribute-option-swatch-input65ba7afcc0a852.9964885787648-'+item.id"
                    class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label bg-secondary border-container-lighter text-white" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)" for="attribute-option-swatch-input65ba7afcc0a852.9964885787648-7059" style="">
                    <input :id="'attribute-option-swatch-input65ba7afcc0a852.9964885787648-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)"
                      x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0" id="attribute-option-swatch-input65ba7afcc0a852.9964885787648-7059" value="7059" required="required">
                    <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }">Carton</div>
                    <!-- N98 custom attributes start-->
                    <div x-html="getSwatchUnitText(254, item.id)" class="text-xs">150 Piece (5 x 30)</div>
                    <!-- N98 custom attributes end-->
                  </label>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <template x-if="isTooltipVisible()">
      <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
        <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
          <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
        </div>
        <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
    </template>
  </div>
  <div class="pap-pdp-swatch-prices pb-5" @update-prices-87648.window="updatePrice($event.detail);" @update-stock-87648.window="updateStock($event.detail);" x-data="{
            unitSavingsPrice: null,
            productId: 87648,
            currentStock: 0,
            hasSpecialPrice: false,
            showPriceWithTax: true,
            basePrice: {
                amount: 0.00
            },
            finalPrice: {
                amount: 0.00
            },
            oldPrice: {
                amount: 0.00
            },
            baseOldPrice: {
                amount: 0.00
            },
            unitPriceBaseHtml: null,
            unitPriceHtml: null,
            UpdateHasSpecialPrice() {
                this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateShowPriceWithTax() {
                this.showPriceWithTax = this.finalPrice.amount !== this.basePrice.amount;
            },
            updateBadge() {
                const productTileBadge = document.querySelector('.product-detail__badges--discounted');
                if (productTileBadge) {
                    if (this.finalPrice.amount < this.oldPrice.amount) {
                        const specialPricePercent = (this.oldPrice.amount - this.finalPrice.amount)
                            / this.oldPrice.amount * 100;
                        productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                        productTileBadge.classList.remove('hidden');
                    }
                }
            },
            updatePrice(detail) {
                this.unitPriceBaseHtml = detail.unitPrice.pricePerUnitHTML.basePrice;
                this.unitPriceHtml = detail.unitPrice.pricePerUnitHTML.price;
                this.baseOldPrice.amount = detail.baseOldPrice.amount;
                this.oldPrice.amount = detail.oldPrice.amount;
                this.basePrice.amount = detail.basePrice.amount;
                this.finalPrice.amount = detail.finalPrice.amount;

                this.updateBadge();
                this.UpdateHasSpecialPrice();
                this.updateShowPriceWithTax();

                if (!this.hasSpecialPrice) {
                    this.unitSavingsPrice = detail.unitSavings;
                }
            },
            updateStock(detail) {
                this.currentStock = detail;
            }
        }">
    <template x-if="unitSavingsPrice">
      <div class="unit-savings-price">
        <span class="-info" x-html="unitSavingsPrice"></span>
      </div>
    </template>
    <div class="prices">
      <p class="price -with-tax block" :class="{'block': showPriceWithTax, 'hidden': !showPriceWithTax}">
        <template x-if="hasSpecialPrice">
          <span class="block old-price text-xs including-tax line-through" x-text="hyva.formatPrice(oldPrice.amount)"></span>
        </template>
        <span class="finalprice" x-text="hyva.formatPrice(finalPrice.amount)">72,00&nbsp;€</span>
        <span class="tax">TVA comprise</span>
        <br>
        <span class="unitPrice text-xs mt-2" x-text="unitPriceHtml">48,00&nbsp;centimes / Stück</span>
      </p>
      <p class="price">
        <template x-if="hasSpecialPrice">
          <span class="old-price text-xs excluding-tax line-through block" x-text="hyva.formatPrice(baseOldPrice.amount)"></span>
        </template>
        <span class="baseprice" x-text="hyva.formatPrice(basePrice.amount)">60,00&nbsp;€</span>
        <span class="tax">hors TVA</span>
        <br>
        <span class="unitPrice text-xs mt-2" x-text="unitPriceBaseHtml">40,00&nbsp;centimes / Stück</span>
      </p>
    </div>
    <template x-if="currentStock">
      <div>
        <span x-show="currentStock > 0" class="text-green-500 text-xs"> En stock. Livraison entre 2-4 jours ouvrés </span>
        <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600 text-xs"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
        <span x-show="currentStock <= -1000" class="text-red-600 text-xs"> Article temporairement indisponible </span>
      </div>
    </template>
    <div>
      <span x-show="currentStock > 0" class="text-green-500 text-xs"> En stock. Livraison entre 2-4 jours ouvrés </span>
      <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600 text-xs" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
      <span x-show="currentStock <= -1000" class="text-red-600 text-xs" style="display: none;"> Article temporairement indisponible </span>
    </div>
  </div>
  <div class="product-options-wrapper" id="product-options-wrapper">
    <div class="fieldset" tabindex="0">
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11161/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11161/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="11161">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afcc6a6f()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afcc6a6f() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/gobelets-pour-boissons-froides-en-p-l-a-pure-0-5-l-transparent-avec-trait-de-11161.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-11161.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/K/a/Kaltgetraenkebecher-PLA-pure-0-5-l-9-5-cm-16-2-cm-glasklar-mit-Schaumrand-11161_b_0_7.jpg" loading="lazy" width="200" height="200" alt="Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,5 l  transparent avec trait de mousse-idéal pour bière" title="Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,5 l  transparent avec trait de mousse-idéal pour bière">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-secondary font-semibold text-base"> PAPSTAR </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/gobelets-pour-boissons-froides-en-p-l-a-pure-0-5-l-transparent-avec-trait-de-11161.htm">
                Gobelets pour boissons froides en P.L.A. "pure" 0,5 l  transparent avec trait de mousse-idéal pour bière            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>11161
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_11161() {
          const configurableOptionsComponent = initConfigurableOptions('11161', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7057",
                  "label": "Pack unique",
                  "products": ["211161"]
                }, {
                  "id": "7059",
                  "label": "Carton",
                  "products": ["111161"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "211161": {
                "baseOldPrice": {
                  "amount": 9.5
                },
                "oldPrice": {
                  "amount": 11.400001
                },
                "basePrice": {
                  "amount": 9.5
                },
                "finalPrice": {
                  "amount": 11.400001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "19,00\u00a0centimes \/ St\u00fcck",
                    "basePrice": "15,83\u00a0centimes \/ St\u00fcck"
                  }
                }
              },
              "111161": {
                "baseOldPrice": {
                  "amount": 144
                },
                "oldPrice": {
                  "amount": 172.800001
                },
                "basePrice": {
                  "amount": 144
                },
                "finalPrice": {
                  "amount": 172.800001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "18,00\u00a0centimes \/ St\u00fcck",
                    "basePrice": "15,00\u00a0centimes \/ St\u00fcck"
                  }
                },
                "unitSavings": "5.3% de rabais compar\u00e9 au Pack unique"
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 9.5
              },
              "oldPrice": {
                "amount": 11.400001
              },
              "basePrice": {
                "amount": 9.5
              },
              "finalPrice": {
                "amount": 11.400001
              }
            },
            "productId": "11161",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "211161": {
                "254": "7057"
              },
              "111161": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7057": ["211161"],
                "7059": ["111161"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "211161": "4002911111611",
              "111161": "4002911211618"
            },
            "quantities": {
              "211161": 3838,
              "111161": 239
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7057": {
                "type": "0",
                "value": null,
                "label": "Pack unique",
                "unit": "###VPE### Piece (1 x 60)",
                "vpe": "60"
              },
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 60)",
                "vpe": "960"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_11161()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afcd12f81.3436920811161-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afcd12f81.3436920811161-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afcc672e() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afcc672e() {
          return {
            qty: 1,
            input: document.getElementById('qty[11161_65ba7afcc672e]'),
            addToCart: document.getElementById('add-to-cart[11161_65ba7afcc672e]'),
            qtyAlert: document.getElementById('qty-alert[11161_65ba7afcc672e]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[11161_65ba7afcc672e]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[11161_65ba7afcc672e]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afcc672e()" @update-prices-11161.window="updatePrice($event.detail,11161);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-11161" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">11,40&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">19,00&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-11161" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">9,50&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">15,83&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-11161.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afcc672e()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[11161_65ba7afcc672e]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[11161_65ba7afcc672e]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-11161.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[11161_65ba7afcc672e]"
              aria-label="Ajouter au panier_Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,5 l  transparent avec trait de mousse-idéal pour bière) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[11161_65ba7afcc672e]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11311/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11311/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="11311">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afcd2436()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afcd2436() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/gobelets-hurricane-pet-0-3-l-9-5-cm-11-7-cm-transparent-11311.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-11311.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/T/r/Trinkbecher-Hurricane-PET-0-3-l-9-5-cm-11-7-cm-glasklar-11311_b_0_5.jpg" loading="lazy" width="200" height="200" alt="Gobelets &quot;Hurricane&quot;, PET 0,3 l Ø 9,5 cm · 11,7 cm transparent" title="Gobelets &quot;Hurricane&quot;, PET 0,3 l Ø 9,5 cm · 11,7 cm transparent">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-black font-semibold text-base"> Starpak </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/gobelets-hurricane-pet-0-3-l-9-5-cm-11-7-cm-transparent-11311.htm">
                Gobelets "Hurricane", PET 0,3 l Ø 9,5 cm · 11,7 cm transparent            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>11311
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_11311() {
          const configurableOptionsComponent = initConfigurableOptions('11311', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7059",
                  "label": "Carton",
                  "products": ["111311"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "111311": {
                "baseOldPrice": {
                  "amount": 76
                },
                "oldPrice": {
                  "amount": 91.200001
                },
                "basePrice": {
                  "amount": 76
                },
                "finalPrice": {
                  "amount": 91.200001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "11,40\u00a0centimes \/ St\u00fcck",
                    "basePrice": "9,50\u00a0centimes \/ St\u00fcck"
                  }
                }
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 76
              },
              "oldPrice": {
                "amount": 91.200001
              },
              "basePrice": {
                "amount": 76
              },
              "finalPrice": {
                "amount": 91.200001
              }
            },
            "productId": "11311",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "111311": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7059": ["111311"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "111311": "4002911213117"
            },
            "quantities": {
              "111311": 258
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 50)",
                "vpe": "800"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_11311()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afcd97894.5894527011311-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afcd97894.5894527011311-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afcd22b1() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afcd22b1() {
          return {
            qty: 1,
            input: document.getElementById('qty[11311_65ba7afcd22b1]'),
            addToCart: document.getElementById('add-to-cart[11311_65ba7afcd22b1]'),
            qtyAlert: document.getElementById('qty-alert[11311_65ba7afcd22b1]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[11311_65ba7afcd22b1]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[11311_65ba7afcd22b1]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afcd22b1()" @update-prices-11311.window="updatePrice($event.detail,11311);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-11311" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">91,20&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">11,40&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-11311" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">76,00&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">9,50&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-11311.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afcd22b1()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[11311_65ba7afcd22b1]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[11311_65ba7afcd22b1]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-11311.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[11311_65ba7afcd22b1]"
              aria-label="Ajouter au panier_Gobelets &quot;Hurricane&quot;, PET 0,3 l Ø 9,5 cm · 11,7 cm transparent) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[11311_65ba7afcd22b1]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11312/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11312/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="11312">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afcda6ae()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afcda6ae() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/gobelets-hurricane-pet-0-4-l-9-5-cm-12-9-cm-transparent-11312.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-11312.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/T/r/Trinkbecher-Hurricane-PET-0-4-l-9-5-cm-12-9-cm-glasklar-11312_b_0_5.jpg" loading="lazy" width="200" height="200" alt="Gobelets &quot;Hurricane&quot;, PET 0,4 l Ø 9,5 cm · 12,9 cm transparent" title="Gobelets &quot;Hurricane&quot;, PET 0,4 l Ø 9,5 cm · 12,9 cm transparent">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-black font-semibold text-base"> Starpak </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/gobelets-hurricane-pet-0-4-l-9-5-cm-12-9-cm-transparent-11312.htm">
                Gobelets "Hurricane", PET 0,4 l Ø 9,5 cm · 12,9 cm transparent            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>11312
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_11312() {
          const configurableOptionsComponent = initConfigurableOptions('11312', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7059",
                  "label": "Carton",
                  "products": ["111312"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "111312": {
                "baseOldPrice": {
                  "amount": 80
                },
                "oldPrice": {
                  "amount": 96.000001
                },
                "basePrice": {
                  "amount": 80
                },
                "finalPrice": {
                  "amount": 96.000001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "12,00\u00a0centimes \/ St\u00fcck",
                    "basePrice": "10,00\u00a0centimes \/ St\u00fcck"
                  }
                }
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 80
              },
              "oldPrice": {
                "amount": 96.000001
              },
              "basePrice": {
                "amount": 80
              },
              "finalPrice": {
                "amount": 96.000001
              }
            },
            "productId": "11312",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "111312": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7059": ["111312"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "111312": "4002911213124"
            },
            "quantities": {
              "111312": 286
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 50)",
                "vpe": "800"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_11312()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afce163a4.7743618711312-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afce163a4.7743618711312-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afcda54b() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afcda54b() {
          return {
            qty: 1,
            input: document.getElementById('qty[11312_65ba7afcda54b]'),
            addToCart: document.getElementById('add-to-cart[11312_65ba7afcda54b]'),
            qtyAlert: document.getElementById('qty-alert[11312_65ba7afcda54b]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[11312_65ba7afcda54b]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[11312_65ba7afcda54b]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afcda54b()" @update-prices-11312.window="updatePrice($event.detail,11312);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-11312" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">96,00&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">12,00&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-11312" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">80,00&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">10,00&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-11312.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afcda54b()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[11312_65ba7afcda54b]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[11312_65ba7afcda54b]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-11312.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[11312_65ba7afcda54b]"
              aria-label="Ajouter au panier_Gobelets &quot;Hurricane&quot;, PET 0,4 l Ø 9,5 cm · 12,9 cm transparent) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[11312_65ba7afcda54b]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11313/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/11313/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="11313">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afce25c3()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afce25c3() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/gobelets-hurricane-pet-0-5-l-9-5-cm-14-9-cm-transparent-11313.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-11313.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/T/r/Trinkbecher-Hurricane-PET-0-5-l-9-5-cm-14-9-cm-glasklar-11313_b_0_5.jpg" loading="lazy" width="200" height="200" alt="Gobelets &quot;Hurricane&quot;, PET 0,5 l Ø 9,5 cm · 14,9 cm transparent" title="Gobelets &quot;Hurricane&quot;, PET 0,5 l Ø 9,5 cm · 14,9 cm transparent">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-black font-semibold text-base"> Starpak </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/gobelets-hurricane-pet-0-5-l-9-5-cm-14-9-cm-transparent-11313.htm">
                Gobelets "Hurricane", PET 0,5 l Ø 9,5 cm · 14,9 cm transparent            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>11313
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_11313() {
          const configurableOptionsComponent = initConfigurableOptions('11313', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7059",
                  "label": "Carton",
                  "products": ["111313"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "111313": {
                "baseOldPrice": {
                  "amount": 92
                },
                "oldPrice": {
                  "amount": 110.400001
                },
                "basePrice": {
                  "amount": 92
                },
                "finalPrice": {
                  "amount": 110.400001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "13,80\u00a0centimes \/ St\u00fcck",
                    "basePrice": "11,50\u00a0centimes \/ St\u00fcck"
                  }
                }
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 92
              },
              "oldPrice": {
                "amount": 110.400001
              },
              "basePrice": {
                "amount": 92
              },
              "finalPrice": {
                "amount": 110.400001
              }
            },
            "productId": "11313",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "111313": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7059": ["111313"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "111313": "4002911213131"
            },
            "quantities": {
              "111313": 160
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 50)",
                "vpe": "800"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_11313()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afce935a7.1583825311313-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afce935a7.1583825311313-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afce2469() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afce2469() {
          return {
            qty: 1,
            input: document.getElementById('qty[11313_65ba7afce2469]'),
            addToCart: document.getElementById('add-to-cart[11313_65ba7afce2469]'),
            qtyAlert: document.getElementById('qty-alert[11313_65ba7afce2469]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[11313_65ba7afce2469]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[11313_65ba7afce2469]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afce2469()" @update-prices-11313.window="updatePrice($event.detail,11313);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-11313" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">110,40&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">13,80&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-11313" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">92,00&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">11,50&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-11313.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afce2469()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[11313_65ba7afce2469]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[11313_65ba7afce2469]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-11313.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[11313_65ba7afce2469]"
              aria-label="Ajouter au panier_Gobelets &quot;Hurricane&quot;, PET 0,5 l Ø 9,5 cm · 14,9 cm transparent) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[11313_65ba7afce2469]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/16174/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/16174/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="16174">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afcea259()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afcea259() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <ul class="product-tile__badges z-10">
      <li class="product-tile__badges-item
                badge-bestseller-"> Top des ventes </li>
      <li class="product-tile__badges-item
                badge-trend-"> Tendance </li>
    </ul>
    <a href="https://www.papstar-shop.fr/gobelets-pour-boissons-froides-en-p-l-a-pure-0-3-l-transparent-ideal-pour-bie-16174.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-16174.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/K/a/Kaltgetraenkebecher-PLA-pure-0-3-l-9-5-cm-11-cm-glasklar-mit-Schaumrand-16174_b_0_2.jpg" loading="lazy" width="200" height="200" alt="Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,3 l transparent idéal pour biere-avec trait de mousse" title="Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,3 l transparent idéal pour biere-avec trait de mousse">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-secondary font-semibold text-base"> PAPSTAR </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/gobelets-pour-boissons-froides-en-p-l-a-pure-0-3-l-transparent-ideal-pour-bie-16174.htm">
                Gobelets pour boissons froides en P.L.A. "pure" 0,3 l transparent idéal pour biere-avec trait de mousse            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>16174
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_16174() {
          const configurableOptionsComponent = initConfigurableOptions('16174', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7057",
                  "label": "Pack unique",
                  "products": ["216174"]
                }, {
                  "id": "7059",
                  "label": "Carton",
                  "products": ["116174"]
                }, {
                  "id": "7061",
                  "label": "Palette",
                  "products": ["616174"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "116174": {
                "baseOldPrice": {
                  "amount": 128
                },
                "oldPrice": {
                  "amount": 153.600001
                },
                "basePrice": {
                  "amount": 128
                },
                "finalPrice": {
                  "amount": 153.600001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "13,71\u00a0centimes \/ St\u00fcck",
                    "basePrice": "11,43\u00a0centimes \/ St\u00fcck"
                  }
                },
                "unitSavings": "5.9% de rabais compar\u00e9 au Pack unique"
              },
              "616174": {
                "baseOldPrice": {
                  "amount": 2073.6
                },
                "oldPrice": {
                  "amount": 2488.320001
                },
                "basePrice": {
                  "amount": 2073.6
                },
                "finalPrice": {
                  "amount": 2488.320001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "12,34\u00a0centimes \/ St\u00fcck",
                    "basePrice": "10,29\u00a0centimes \/ St\u00fcck"
                  }
                },
                "unitSavings": "15.3% de rabais compar\u00e9 au Pack unique"
              },
              "216174": {
                "baseOldPrice": {
                  "amount": 8.5
                },
                "oldPrice": {
                  "amount": 10.200001
                },
                "basePrice": {
                  "amount": 8.5
                },
                "finalPrice": {
                  "amount": 10.200001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "14,57\u00a0centimes \/ St\u00fcck",
                    "basePrice": "12,14\u00a0centimes \/ St\u00fcck"
                  }
                }
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 8.5
              },
              "oldPrice": {
                "amount": 10.200001
              },
              "basePrice": {
                "amount": 8.5
              },
              "finalPrice": {
                "amount": 10.200001
              }
            },
            "productId": "16174",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "116174": {
                "254": "7059"
              },
              "616174": {
                "254": "7061"
              },
              "216174": {
                "254": "7057"
              }
            },
            "salable": {
              "254": {
                "7059": ["116174"],
                "7061": ["616174"],
                "7057": ["216174"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "116174": "4002911261743",
              "616174": "4049026147944",
              "216174": "4002911161746"
            },
            "quantities": {
              "116174": 299,
              "616174": 16,
              "216174": 4789
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7057": {
                "type": "0",
                "value": null,
                "label": "Pack unique",
                "unit": "###VPE### Piece (1 x 70)",
                "vpe": "70"
              },
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 70)",
                "vpe": "1120"
              },
              "7061": {
                "type": "0",
                "value": null,
                "label": "Palette",
                "unit": "###VPE### Piece (288 x 70)",
                "vpe": "20160"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_16174()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afd027d32.1458923016174-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afd027d32.1458923016174-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afcea0f8() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afcea0f8() {
          return {
            qty: 1,
            input: document.getElementById('qty[16174_65ba7afcea0f8]'),
            addToCart: document.getElementById('add-to-cart[16174_65ba7afcea0f8]'),
            qtyAlert: document.getElementById('qty-alert[16174_65ba7afcea0f8]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[16174_65ba7afcea0f8]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[16174_65ba7afcea0f8]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afcea0f8()" @update-prices-16174.window="updatePrice($event.detail,16174);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-16174" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">10,20&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">14,57&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-16174" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">8,50&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">12,14&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-16174.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afcea0f8()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[16174_65ba7afcea0f8]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[16174_65ba7afcea0f8]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-16174.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[16174_65ba7afcea0f8]"
              aria-label="Ajouter au panier_Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,3 l transparent idéal pour biere-avec trait de mousse) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[16174_65ba7afcea0f8]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/16175/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/16175/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="16175">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afd038d4()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afd038d4() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/gobelets-pour-boissons-froides-en-p-l-a-pure-0-4-l-9-5-cm-13-2-cm-transpa-16175.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-16175.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/K/a/Kaltgetraenkebecher-PLA-pure-0-4-l-9-5-cm-13-2-cm-glasklar-mit-Schaumrand-16175_b_0_2.jpg" loading="lazy" width="200" height="200" alt="Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,4 l Ø 9,5 cm · 13,2 cm transparent idéal pour biere" title="Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,4 l Ø 9,5 cm · 13,2 cm transparent idéal pour biere">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-secondary font-semibold text-base"> PAPSTAR </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/gobelets-pour-boissons-froides-en-p-l-a-pure-0-4-l-9-5-cm-13-2-cm-transpa-16175.htm">
                Gobelets pour boissons froides en P.L.A. "pure" 0,4 l Ø 9,5 cm · 13,2 cm transparent idéal pour biere            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>16175
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_16175() {
          const configurableOptionsComponent = initConfigurableOptions('16175', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7057",
                  "label": "Pack unique",
                  "products": ["216175"]
                }, {
                  "id": "7059",
                  "label": "Carton",
                  "products": ["116175"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "216175": {
                "baseOldPrice": {
                  "amount": 9.25
                },
                "oldPrice": {
                  "amount": 11.100001
                },
                "basePrice": {
                  "amount": 9.25
                },
                "finalPrice": {
                  "amount": 11.100001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "15,86\u00a0centimes \/ St\u00fcck",
                    "basePrice": "13,21\u00a0centimes \/ St\u00fcck"
                  }
                }
              },
              "116175": {
                "baseOldPrice": {
                  "amount": 140
                },
                "oldPrice": {
                  "amount": 168.000001
                },
                "basePrice": {
                  "amount": 140
                },
                "finalPrice": {
                  "amount": 168.000001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "15,00\u00a0centimes \/ St\u00fcck",
                    "basePrice": "12,50\u00a0centimes \/ St\u00fcck"
                  }
                },
                "unitSavings": "5.4% de rabais compar\u00e9 au Pack unique"
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 9.25
              },
              "oldPrice": {
                "amount": 11.100001
              },
              "basePrice": {
                "amount": 9.25
              },
              "finalPrice": {
                "amount": 11.100001
              }
            },
            "productId": "16175",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "216175": {
                "254": "7057"
              },
              "116175": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7057": ["216175"],
                "7059": ["116175"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "216175": "4002911161753",
              "116175": "4002911261750"
            },
            "quantities": {
              "216175": 13901,
              "116175": 868
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7057": {
                "type": "0",
                "value": null,
                "label": "Pack unique",
                "unit": "###VPE### Piece (1 x 70)",
                "vpe": "70"
              },
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 70)",
                "vpe": "1120"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_16175()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afd0d6755.1610337216175-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afd0d6755.1610337216175-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afd0375b() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afd0375b() {
          return {
            qty: 1,
            input: document.getElementById('qty[16175_65ba7afd0375b]'),
            addToCart: document.getElementById('add-to-cart[16175_65ba7afd0375b]'),
            qtyAlert: document.getElementById('qty-alert[16175_65ba7afd0375b]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[16175_65ba7afd0375b]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[16175_65ba7afd0375b]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afd0375b()" @update-prices-16175.window="updatePrice($event.detail,16175);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-16175" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">11,10&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">15,86&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-16175" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">9,25&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">13,21&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-16175.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afd0375b()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[16175_65ba7afd0375b]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[16175_65ba7afd0375b]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-16175.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[16175_65ba7afd0375b]"
              aria-label="Ajouter au panier_Gobelets pour boissons froides en P.L.A. &quot;pure&quot; 0,4 l Ø 9,5 cm · 13,2 cm transparent idéal pour biere) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[16175_65ba7afd0375b]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/86413/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/86413/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="86413">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afd0e5af()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afd0e5af() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/verres-a-biere-ps-gobelets-americains-0-4-l-9-5-cm-12-cm-rouge-blanc-86413.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-86413.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/B/i/Bierbecher-PS-0-4-l-9-5-cm-12-cm-rot-weiss-86413_b_0_1.jpg" loading="lazy" width="200" height="200" alt="Verres à bière, PS, gobelets américains 0,4 l Ø 9,5 cm · 12 cm rouge/blanc" title="Verres à bière, PS, gobelets américains 0,4 l Ø 9,5 cm · 12 cm rouge/blanc">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-black font-semibold text-base"> Starpak </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/verres-a-biere-ps-gobelets-americains-0-4-l-9-5-cm-12-cm-rouge-blanc-86413.htm">
                Verres à bière, PS, gobelets américains 0,4 l Ø 9,5 cm · 12 cm rouge/blanc            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>86413
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_86413() {
          const configurableOptionsComponent = initConfigurableOptions('86413', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7059",
                  "label": "Carton",
                  "products": ["186413"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "186413": {
                "baseOldPrice": {
                  "amount": 38.4
                },
                "oldPrice": {
                  "amount": 46.080001
                },
                "basePrice": {
                  "amount": 38.4
                },
                "finalPrice": {
                  "amount": 46.080001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "28,80\u00a0centimes \/ St\u00fcck",
                    "basePrice": "24,00\u00a0centimes \/ St\u00fcck"
                  }
                }
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 38.4
              },
              "oldPrice": {
                "amount": 46.080001
              },
              "basePrice": {
                "amount": 38.4
              },
              "finalPrice": {
                "amount": 46.080001
              }
            },
            "productId": "86413",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "186413": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7059": ["186413"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "186413": "4002911357637"
            },
            "quantities": {
              "186413": 36
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 10)",
                "vpe": "160"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_86413()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afd157300.0840427586413-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afd157300.0840427586413-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afd0e458() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afd0e458() {
          return {
            qty: 1,
            input: document.getElementById('qty[86413_65ba7afd0e458]'),
            addToCart: document.getElementById('add-to-cart[86413_65ba7afd0e458]'),
            qtyAlert: document.getElementById('qty-alert[86413_65ba7afd0e458]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[86413_65ba7afd0e458]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[86413_65ba7afd0e458]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afd0e458()" @update-prices-86413.window="updatePrice($event.detail,86413);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-86413" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">46,08&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">28,80&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-86413" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">38,40&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">24,00&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-86413.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afd0e458()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[86413_65ba7afd0e458]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[86413_65ba7afd0e458]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-86413.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[86413_65ba7afd0e458]"
              aria-label="Ajouter au panier_Verres à bière, PS, gobelets américains 0,4 l Ø 9,5 cm · 12 cm rouge/blanc) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[86413_65ba7afd0e458]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

POST https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/86806/

<form method="post"
  action="https://www.papstar-shop.fr/checkout/cart/add/uenc/aHR0cHM6Ly93d3cucGFwc3Rhci1zaG9wLmZyL3BsYXRlYXV4LWNhcnRvbi1wdXJlLTEyLWNtLXgtOS01LWNtLXgtNjItY20tbWFycm9uLXBvdXItNi1nb2JlbGV0cy04NzY0OC5odG0_Z2FkX3NvdXJjZT0x/product/86806/"
  class="item product product-item product_addtocart_form border rounded p-2.5 bg-container-white hover:shadow-lg flex flex-col w-full h-full">
  <input name="form_key" type="hidden" value="QKJ4PzE8A2DcK1Td"> <input type="hidden" name="product" value="86806">
  <div class="relative product photo product-item-photo block mb-3 ">
    <a x-data="ReqBlind_65ba7afd16665()" href="https://www.papstar-shop.fr/customer/account/" title="Add to list" @click.prevent="open($event)" class="p-2 bg-transparent absolute right-0 hover:text-primary-darker bottom-0">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 85 85" xml:space="preserve" fill="currentColor" class="w-8 h-8 mx-auto"><path d="M23.895 23.457a8.424 8.424 0 0 0-2.896 1.895c-3.408 3.41-3.308 9.06.226 12.594" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path><path d="M68.801 42.971c6.287-6.289 6.389-16.478.224-22.645-6.165-6.164-16.354-6.063-22.644.225l-3.896 3.871-3.87-3.871c-6.287-6.288-16.477-6.389-22.641-.225-6.164 6.167-6.064 16.355.225 22.645l26.295 26.262 26.307-26.262z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2.5" class="stroke-394553"></path></svg>
        <span class="sr-only">Add to list</span>
    </a>
    <script>
      function ReqBlind_65ba7afd16665() {
        return {
          open: function(event) {
            window.scrollTo(0, 0);
            dispatchMessages([{
              type: 'notice',
              text: 'Vous devez vous connecter pour utiliser la fonction Liste de demandes'
            }], 5000);
            let href = event.currentTarget.href;
            setTimeout(function() {
              window.location = href;
            }, 4000);
          }
        }
      }
    </script>
    <a href="https://www.papstar-shop.fr/verres-hurricane-pet-0-28-l-9-5-cm-7-3-cm-transparent-86806.htm" tabindex="-1">
            <img class="object-contain mx-auto py-3 product-image-photo" x-data="" @update-gallery-86806.window="$el.src = $event.detail" src="https://www.papstar-shop.fr/media/catalog/product/cache/8722e48eed7673f91cfbcfe5d0772d92/T/r/Trinkbecher-Hurricane-PET-0-28-l-9-5-cm-7-3-cm-glasklar-86806_b_0_2.jpg" loading="lazy" width="200" height="200" alt="Verres &quot;Hurricane&quot;, PET 0,28 l Ø 9,5 cm · 7,3 cm transparent" title="Verres &quot;Hurricane&quot;, PET 0,28 l Ø 9,5 cm · 7,3 cm transparent">
        </a>
  </div>
  <div class="product-info flex flex-col flex-grow">
    <div class="text-black font-semibold text-base"> Starpak </div>
    <div class="mt-1 text-black font-semibold text-base sm:min-h-90px">
      <a class="product-item-link " href="https://www.papstar-shop.fr/verres-hurricane-pet-0-28-l-9-5-cm-7-3-cm-transparent-86806.htm">
                Verres "Hurricane", PET 0,28 l Ø 9,5 cm · 7,3 cm transparent            </a>
    </div>
    <div class="flex mt-1 mb-1">
      <div class="mt-auto sku text-sm">
        <span>Article-Nr.: </span>86806
      </div>
      <div class="lg:w-auto ml-auto block ">
        <svg xmlns="http://www.w3.org/2000/svg" style="width: 0; height: 0;" viewBox="0 0 20 20" id="pap-rating-star">
          <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" style="width: 0; height: 0;">
          <defs>
            <linearGradient id="pap-half-star" x1="0" x2="100%" y1="0" y2="0">
              <stop offset="50%" stop-color="#f6e05e"></stop>
              <stop offset="50%" stop-color="#cbd5e0"></stop>
            </linearGradient>
          </defs>
        </svg>
        <div x-data="initReviewStars()" class="rating-summary flex justify-end" title="Soyez le premier à commenter ce produit">
          <span class="flex pap-autocomplete-result-rating">
            <template x-for="(star, index) in calculateStars(0)" :key="index">
              <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
                <use href="#pap-rating-star" x-bind:fill="star"></use>
              </svg>
            </template>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
            <svg class="pap-rating-star" width="20" height="20" viewBox="0 0 20 20">
              <use href="#pap-rating-star" x-bind:fill="star" fill="#cbd5e0"></use>
            </svg>
          </span>
        </div>
        <script>
          function initReviewStars() {
            "use strict";
            return {
              /**
               * Calculate the number of filled, empty and half stars per logic
               *
               * Turn them into an array of strings that define the fill color/mask
               */
              calculateStars: function(rating) {
                if (!rating) {
                  rating = 0;
                }
                const steps = 5;
                const filled = Math.floor(rating / 100 * steps);
                const half = rating / 100 * steps - filled;
                const empty = Math.floor(steps - filled - half);
                const stars = [...Array.from({
                  length: filled
                }, () => "#f6e05e"), ...(half ? ["url(#pap-half-star)"] : []), ...Array.from({
                  length: empty
                }, () => "#cbd5e0")];
                return stars;
              },
            }
          }
        </script>
      </div>
    </div>
    <div class="h-full flex justify-between flex-col">
      <script>
        function initConfigurableSwatchOptions_86806() {
          const configurableOptionsComponent = initConfigurableOptions('86806', {
            "attributes": {
              "254": {
                "id": "254",
                "code": "order_unit",
                "label": "Unit\u00e9 de commande",
                "options": [{
                  "id": "7059",
                  "label": "Carton",
                  "products": ["186806"]
                }],
                "position": "0"
              }
            },
            "template": "<%- data.price %>\u00a0\u20ac",
            "currencyFormat": "%s\u00a0\u20ac",
            "optionPrices": {
              "186806": {
                "baseOldPrice": {
                  "amount": 68
                },
                "oldPrice": {
                  "amount": 81.600001
                },
                "basePrice": {
                  "amount": 68
                },
                "finalPrice": {
                  "amount": 81.600001
                },
                "tierPrices": [],
                "msrpPrice": {
                  "amount": 0
                },
                "unitPrice": {
                  "pricePerUnitHTML": {
                    "price": "10,20\u00a0centimes \/ St\u00fcck",
                    "basePrice": "8,50\u00a0centimes \/ St\u00fcck"
                  }
                }
              }
            },
            "priceFormat": {
              "pattern": "%s\u00a0\u20ac",
              "precision": 2,
              "requiredPrecision": 2,
              "decimalSymbol": ",",
              "groupSymbol": "\u202f",
              "groupLength": 3,
              "integerRequired": false
            },
            "prices": {
              "baseOldPrice": {
                "amount": 68
              },
              "oldPrice": {
                "amount": 81.600001
              },
              "basePrice": {
                "amount": 68
              },
              "finalPrice": {
                "amount": 81.600001
              }
            },
            "productId": "86806",
            "chooseText": "Choisissez une option...",
            "images": [],
            "index": {
              "186806": {
                "254": "7059"
              }
            },
            "salable": {
              "254": {
                "7059": ["186806"]
              }
            },
            "canDisplayShowOutOfStockStatus": true,
            "preSelectedGallery": [],
            "channel": "website",
            "salesChannelCode": "papstar_fr",
            "sku": {
              "186806": "4002911333945"
            },
            "quantities": {
              "186806": 9
            }
          });
          const swatchOptionsComponent = initSwatchOptions({
            "254": {
              "7059": {
                "type": "0",
                "value": null,
                "label": "Carton",
                "unit": "###VPE### Piece (16 x 50)",
                "vpe": "800"
              },
              "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.papstar\u002Dshop.fr\u002Fswatches\u002Fajax\u002Fmedia\u002F",
            changeOption(optionId, value, skipUpdateGallery) {
              this.selectedValues[optionId] = value;
              this.findSimpleIndex();
              this.findAllowedAttributeOptions();
              this.updatePrices();
              this.updateStock();
              this.updateSavingPriceInfo();
            },
            unitSavingsPrice: null,
            hasSpecialPrice: false,
            finalPrice: {
              amount: 0.00
            },
            oldPrice: {
              amount: 0.00
            },
            updateHasSpecialPrice() {
              this.hasSpecialPrice = this.finalPrice.amount < this.oldPrice.amount;
            },
            updateSavingPriceInfo() {
              const detail = this.optionConfig.optionPrices[this.productIndex]
              this.oldPrice.amount = detail.oldPrice.amount;
              this.finalPrice.amount = detail.finalPrice.amount;
              this.updateHasSpecialPrice();
              if (!this.hasSpecialPrice) {
                this.unitSavingsPrice = detail.unitSavings;
              }
            },
            preselectQuerystringItems() {
              let found = false;
              // pre-select option like ?size=167
              const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
              Object.values(this.optionConfig.attributes).map(attribute => {
                const skipUpdateGallery = true;
                if (urlQueryParams.get(attribute.code) !== null) {
                  let optionId = urlQueryParams.get(attribute.code);
                  found = false;
                  Object.values(attribute.options).map(option => {
                    if (found === false && option.label === optionId) {
                      optionId = option.id;
                      found = true;
                    }
                  });
                  this.changeOption(attribute.id, optionId, skipUpdateGallery);
                }
              });
              if (found === false) {
                // pre-select first option
                Object.values(this.optionConfig.attributes).map(attribute => {
                  if (attribute.code === 'order_unit') {
                    let optionId = 0;
                    Object.values(attribute.options).map(option => {
                      if (found === false && option.products.length > 0) {
                        optionId = option.id;
                        this.changeOption(attribute.id, optionId, true);
                        found = true;
                      }
                    });
                  }
                });
              }
            },
            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_86806()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()"
        class="relative md:w-full">
        <div>
          <div class="swatch-attribute order_unit">
            <div class="w-full overflow-x-hidden swatch-attribute-options pt-2">
              <template x-if="showSwatches">
                <div class="w-full overflow-auto transition-all snap items-center min-h-14 product-listing-option-wrapper grid" role="radiogroup" x-spread="scrollEvents">
                  <template x-for="(item, index) in optionConfig.attributes[254].options" :key="item.id">
                    <div class="swatch-item">
                      <label :for="'attribute-option-swatch-input65ba7afd1d7ad2.6328723686806-'+item.id" class="swatch-option flex flex-col relative shadow-sm cursor-pointer select-none text-center product-option-value-label" :class="{
                'bg-secondary border-container-lighter text-white' : (selectedValues[254] === item.id),
                'bg-container-lighter' : (selectedValues[254] !== item.id),
                'w-6 h-6' : !isTextSwatch(254, item.id),
                'bg-secondary text-white' : focusedLabel === item.id
            }" :style="getSwatchBackgroundStyle('254',item.id)">
                        <input :id="'attribute-option-swatch-input65ba7afd1d7ad2.6328723686806-'+item.id" :value="item.id" name="super_attribute[254]" 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(254, $event.target.value)" x-model="selectedValues[254]" :required="getAllowedAttributeOptions(254).filter(
                                                                    attributeOption => selectedValues[attributeOption]
                                                                ).length === 0">
                        <div x-html="getSwatchText(254, item.id)" class="whitespace-nowrap text-sm font-bold" :class="{ 'sr-only' : !isTextSwatch(254, item.id) }"></div>
                        <!-- N98 custom attributes start-->
                        <div x-html="getSwatchUnitText(254, item.id)" class="text-xs"></div>
                        <!-- N98 custom attributes end-->
                      </label>
                    </div>
                  </template>
                </div>
              </template>
            </div>
          </div>
        </div>
        <template x-if="isTooltipVisible()">
          <div class="absolute shadow-lg" :style="isLayeredSwatch == false &amp;&amp; getTooltipPosition()">
            <div class="absolute top-0 left-0 z-50 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 x-show="getSwatchType(activeTooltipItem.type) !== 'color'"
                class="inline-block shadow-sm"
                :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)"
            ></div>
        </template-->
              <span class="mx-2 text-sm font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()"></span>
            </div>
            <svg class="absolute z-50 w-8 h-8 text-white transform -translate-x-3
                -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>
        </template>
        <template x-if="unitSavingsPrice">
          <div class="unit-savings-price">
            <span class="-info" x-html="unitSavingsPrice"></span>
          </div>
        </template>
      </div>
      <script>
        function initPriceBox__65ba7afd16510() {
          return {
            updatePrice(priceData, productId) {
              const regularPriceLabel = this.$el.querySelector('.normal-price .price-label');
              const regularOldPriceElement = this.$el.querySelector('.normal-price .old-price');
              const regularPriceElement = this.$el.querySelector('.normal-price .price-wrapper .price');
              const regularPriceElementTax = this.$el.querySelector('.normal-price .price-container .tax');
              const regularOldBasePriceElement = this.$el.querySelector('.base-price .old-price');
              const regularBasePriceElement = this.$el.querySelector('.base-price .price-wrapper .price');
              const regularBasePriceElementTax = this.$el.querySelector('.base-price .price-container .tax');
              const unitPriceElement = this.$el.querySelector('.normal-price .unitPrice');
              const unitBasePriceElement = this.$el.querySelector('.base-price .unitPrice');
              const productTileBadge = document.querySelector('.badge-discounted-' + productId);
              let specialPrice = false;
              let specialPricePercent;
              if (regularPriceLabel) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  regularPriceLabel.classList.remove('hidden');
                } else {
                  regularPriceLabel.classList.add('hidden');
                }
              }
              if (productTileBadge) {
                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                  specialPricePercent = (priceData.oldPrice.amount - priceData.finalPrice.amount) / priceData.oldPrice.amount * 100;
                  productTileBadge.innerText = '-' + Math.round(specialPricePercent) + '%';
                  productTileBadge.classList.remove('hidden');
                }
              }
              if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
                specialPrice = true;
              } else {
                specialPrice = false;
              }
              if (regularOldPriceElement && priceData.oldPrice.amount) {
                if (specialPrice) {
                  regularOldPriceElement.innerText = hyva.formatPrice(priceData.oldPrice.amount);
                } else {
                  regularOldPriceElement.innerText = '';
                }
              }
              if (regularPriceElement) {
                regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
                regularPriceElementTax.style.display = 'block';
              }
              if (unitPriceElement) {
                unitPriceElement.innerText = '';
              }
              if (unitPriceElement && priceData.unitPrice.pricePerUnitHTML.price) {
                unitPriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.price;
              }
              if (regularOldBasePriceElement && priceData.baseOldPrice.amount) {
                if (specialPrice) {
                  regularOldBasePriceElement.innerText = hyva.formatPrice(priceData.baseOldPrice.amount);
                } else {
                  regularOldBasePriceElement.innerText = '';
                }
              }
              if (regularBasePriceElement) {
                regularBasePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount);
                regularBasePriceElementTax.style.display = 'block';
              }
              if (unitBasePriceElement) {
                unitBasePriceElement.innerText = '';
              }
              if (unitBasePriceElement && priceData.unitPrice.pricePerUnitHTML.basePrice) {
                unitBasePriceElement.innerText = priceData.unitPrice.pricePerUnitHTML.basePrice;
              }
              if (priceData.finalPrice.amount === priceData.basePrice.amount) {
                this.$el.querySelector('.normal-price').classList.add('hidden');
              } else {
                this.$el.querySelector('.normal-price').classList.remove('hidden');
              }
            }
          }
        }

        function initQtyField__65ba7afd16510() {
          return {
            qty: 1,
            input: document.getElementById('qty[86806_65ba7afd16510]'),
            addToCart: document.getElementById('add-to-cart[86806_65ba7afd16510]'),
            qtyAlert: document.getElementById('qty-alert[86806_65ba7afd16510]'),
            validateQty(qty) {
              let regex = /^\d+$/;
              let pattern = regex.test(qty);
              this.addToCart.disabled = qty === 0 || qty === null || qty > 10000 || !pattern || this.addToCart.classList.contains('not-available');
              if (qty === 0 || qty === null || qty > 10000 || !pattern) {
                this.qtyAlert.style.display = 'block';
              } else {
                this.qtyAlert.style.display = 'none';
              }
            },
            stepUp() {
              this.input.stepUp();
              let qty = document.getElementById('qty[86806_65ba7afd16510]').value;
              this.validateQty(qty);
            },
            stepDown() {
              this.input.stepDown();
              let qty = document.getElementById('qty[86806_65ba7afd16510]').value;
              this.validateQty(qty);
            }
          };
        }
      </script>
      <div class="relative price-block">
        <div class="flex my-4 sm:min-h-42px w-full">
          <div class="w-full" x-data="initPriceBox__65ba7afd16510()" @update-prices-86806.window="updatePrice($event.detail,86806);">
            <div class="price-box mt-3 price-final_price flex flex-wrap justify-between" data-role="priceBox">
              <div class="normal-price">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs including-tax line-through"></div>
                  <div id="price-including-tax-product-price-86806" data-price-type="finalPrice" class="price-wrapper price-including-tax finalPrice flex items-end">
                    <span class="price">81,60&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">TVA comprise</span>
                  </div>
                  <div class="unitPrice text-xs">10,20&nbsp;centimes / Stück</div>
                </span>
              </div>
              <div class="base-price ">
                <span class="price-container price-final_price tax weee">
                  <div class="old-price text-xs excluding-tax line-through"></div>
                  <div id="price-excluding-tax-product-price-86806" data-price-type="finalPrice" class="price-wrapper price-excluding-tax finalPrice flex items-end">
                    <span class="price">68,00&nbsp;€</span>
                    <span class="tax hidden" style="display: block;">hors TVA</span>
                  </div>
                  <div class="unitPrice text-xs">8,50&nbsp;centimes / Stück</div>
                </span>
              </div>
            </div>
          </div>
        </div>
        <div x-data="{ currentStock: 0 }" @update-stock-86806.window="currentStock = $event.detail" class="flex flex-wrap mt-auto">
          <div class="stock-status text-xs w-full mb-3 mt-auto basis-full">
            <template x-if="currentStock">
              <div>
                <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
                <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
                <span x-show="currentStock <= -1000" class="text-red-600"> Article temporairement indisponible </span>
              </div>
            </template>
            <div>
              <span x-show="currentStock > 0" class="text-green-500"> En stock. Livraison entre 2-4 jours ouvrés </span>
              <span x-show="currentStock <= 0 &amp;&amp; currentStock > -1000" class="text-yellow-600" style="display: none;"> Article momentanément indisponible, délai de livraison: 5-10 jours ouvrés </span>
              <span x-show="currentStock <= -1000" class="text-red-600" style="display: none;"> Article temporairement indisponible </span>
            </div>
          </div>
        </div>
        <div class="flex gap-4 mt-auto justify-end lg:justify-between">
          <div class="w-1/2 flex" x-data="initQtyField__65ba7afd16510()">
            <button class="qty-button -minus-button" type="button" title="Moins" x-on:click="stepDown()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="w-5 h-5" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
            <label for="qty[86806_65ba7afd16510]" class="sr-only"> Quantité </label>
            <input name="qty" class="form-input rounded-none px-2 text-center invalid:ring-2 invalid:ring-red-500 w-11/12" id="qty[86806_65ba7afd16510]" type="number" inputmode="numeric" maxlength="5" min="1" max="10000" step="1" :value="qty"
              x-model.number="qty" x-on:input.change="validateQty(qty);">
            <button class="qty-button -plus-button" type="button" title="Plus" x-on:click="stepUp()">
              <!--?xml version="1.0" encoding="utf-8"?-->
              <!-- Generator: Adobe Illustrator 26.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
              <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Ebene_1" x="0px" y="0px" viewBox="0 0 24 24" fill="currentColor" style="enable-background:new 0 0 24 24;" xml:space="preserve"
                class="text-white" width="20" height="20">
                <g id="Design_here">
                  <g>
                    <path d="M12.7,0.3C13,0.4,13,0.5,13,0.6v22.8c0,0.3-0.4,0.5-1.1,0.5S11,23.7,11,23.5V0.7c0-0.3,0.4-0.5,1.1-0.5    C12.3,0.2,12.5,0.2,12.7,0.3z"></path>
                  </g>
                  <g>
                    <path d="M23.7,11.3c0.1,0.2,0.1,0.4,0.1,0.7c0,0.7-0.2,1.1-0.5,1.1H0.5c-0.3,0-0.4-0.4-0.4-0.9c0-0.7,0.2-1.1,0.5-1.1h22.8    C23.5,11.1,23.6,11.1,23.7,11.3z"></path>
                  </g>
                </g>
                <g id="Guide">
                </g>
              </svg>
            </button>
          </div>
          <div class="w-1/2" x-data="{ currentStock: 0 }" @update-stock-86806.window="currentStock = $event.detail">
            <button class="btn btn-add-to-cart w-full h-full px-2 py-0" :disabled="currentStock <= -1000 || false" :class="{'not-available': currentStock <= -1000 || false}" id="add-to-cart[86806_65ba7afd16510]"
              aria-label="Ajouter au panier_Verres &quot;Hurricane&quot;, PET 0,28 l Ø 9,5 cm · 7,3 cm transparent) ?>">
              <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="w-5 h-5 mx-0 md:mx-auto lg:mx-0">
                <circle cx="25" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <circle cx="47" cy="49.4" fill="none" r="4.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></circle>
                <path d="M6 12h6c.8 0 1.5.6 1.8 1.3l10.7 25.4c.3.7 1 1.3 1.8 1.3H47c.8 0 1.5-.5 1.9-1.2L55.3 23c.5-1.3-.4-2.9-1.9-2.9H21" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10"
                  stroke-width="2" class="stroke-2c3e50"></path>
              </svg>
              <span class="sm:pl-1 md:hidden lg:block w-full text-center"> Ajouter au panier </span>
            </button>
          </div>
        </div>
        <div class="qty-alert hidden" id="qty-alert[86806_65ba7afd16510]">
          <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill="currentColor" viewBox="0 0 20 20" class="w-3 h-3 mr-1 text-energy inline-block align-text-top">
            <path d="M19.64 16.36L11.53 2.3A1.85 1.85 0 0 0 10 1.21 1.85 1.85 0 0 0 8.48 2.3L.36 16.36C-.48 17.81.21 19 1.88 19h16.24c1.67 0 2.36-1.19 1.52-2.64zM11 16H9v-2h2zm0-4H9V6h2z"></path>
          </svg>
          <span>Ne saisissez que des chiffres entiers.</span>
        </div>
      </div>
    </div>
  </div>
</form>

<form class="pap-sticky-button lg:block">
  <button class="contact-btn bg-contact" :class="{'bg-contactActive lg:h-auto': isExpanded, 'bg-contact': !isExpanded}" type="button" :aria-expanded="isExpanded" aria-controls="sticky-contact-information" @click="isExpanded = !isExpanded">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" xml:space="preserve" fill="currentColor" class="m-auto" width="48" height="48">
      <path d="M9 40V14c0-2.2 1.8-4 4-4h38c2.2 0 4 1.8 4 4v26c0 2.2-1.8 4-4 4h-9v10l-9.3-10H13c-2.2 0-4-1.8-4-4z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"
        class="stroke-2c3e50"></path>
      <path d="M26.8 21.7s1-4 5.4-4c3.4 0 5.5 2.6 5.5 4.9 0 4-4.7 5.3-5.7 5.5V33" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" class="stroke-2c3e50"></path>
      <circle cx="32" cy="36" fill="currentColor" r="1" class="fill-dce9ee"></circle>
      <path d="M32 35c-.6 0-1 .4-1 1s.4 1 1 1 1-.4 1-1-.4-1-1-1z" fill="currentColor" class="fill-2c3e50"></path>
    </svg>
  </button>
</form>

Text Content

Livraison gratuite à partir de 100 € d'achat HT / 120 € d'achat TVA incluse
Livraison 2-4 jours ouvrés
Pas de montant de commande minimum

Rechercher...
Rechercher

Recherches populaires

(0)

Produits

Article N°

 TVA comprise
 hors TVA

Pages

Mon Compte
Listes de demandes 0 Mon Panier
Tous les produits
Tous les produits Retour
Vaisselles biodégradables
Vaisselles biodégradables Retour
Assiettes & bols biodégradables
Assiettes & bols biodégradables Retour
Assiettes & bols en résidus agricoles
Assiettes & bols en bambou
Assiettes & bols en bois
Assiettes & bols en carton
Assiettes & bols en feuille de palmier
Assiettes & bols en canne à sucre
Gobelets biodégradables
Gobelets biodégradables Retour
Gobelets à café
Gobelets en carton
Gobelets en PLA
Gobelets en canne à sucre
Pailles biodégradables
Pailles biodégradables Retour
Pailles en bambou
Pailles en carton
Pailles en paille
Couverts biodégradables
Couverts biodégradables Retour
Couverts en bambou
Couverts en bois
Couverts en carton
Couverts en feuille de palmier
Mises en bouche biodégradable
Mises en bouche biodégradable Retour
Assiettes & bols en bambou & palmier
Assiettes & bols en bois
Assiettes & bols en canne à sucre
Piques & brochettes
Emballages écologiques
Emballages écologiques Retour
Pots de glace
Boîtes en carton
Boîtes en canne à sucre
Papiers emballages alimentaires
Moules jetables
Barquettes repas
Boîtes à pizza
Barquettes en carton
Sacs à goûter
Sacs en papier & PLA
Plateaux traiteur & boîtes traiteurs
Barquettes en PLA
Vaisselles jetables de fête
Cure-dents, piques et brochettes
Assiettes & bols
Assiettes & bols Retour
Pots à dessert
Pots à sauce
Bols jetables
Bols jetables Retour
Bols en aluminium
Bols en carton
Bols en plastique
Bols en bambou
Bols en CPLA
Bols en bois
Bols en feuille de palmier
Bols en canne à sucre
Assiettes jetables
Assiettes jetables Retour
Assiettes en carton
Assiettes en résidus agricoles
Assiettes en bambou
Assiettes en bois
Assiettes en feuille de palmier
Assiettes en canne à sucre
Mises en bouche
Mises en bouche Retour
Assiettes & bols en bambou & palmier
Assiettes & bols en bois
Assiettes & bols en plastique
Assiettes & bols en canne à sucre
Bols à salade
Pots à soupe
Gobelets & verres
Gobelets & verres Retour
Accessoires de bar & boissons
Accessoires de bar & boissons Retour
Décorations pour cocktails
Dessous de verre
Agitateurs
Couvercles
Distributeurs de gobelets
Plateaux porte-gobelets
Verres jetables
Verres jetables Retour
Flûtes à champagne
Gobelets boissons chaudes
Gobelets boissons chaudes Retour
Gobelets pour distributeur
Gobelets à café
Tasses à café
Gobelets isothermes
Gobelets en canne à sucre
Gobelets boissons froides
Gobelets boissons froides Retour
Gobelets en PLA
Gobelets en carton
Gobelets à liqueur
Gobelets coniques
Gobelets en canne à sucre
Gobelets réutilisables
Pailles
Pailles Retour
Pailles en bambou & paille
Pailles en carton
Couverts
Couverts Retour
Couverts en bambou
Pochettes à couverts
Couverts jetables - jeux & individuels
Cuillères à glace & piques frites
Couverts & pipettes
Couverts en bois
Pics en bois
Couverts réutilisables
Couverts en carton
Couverts en feuille de palmier
Pics et brochettes
Agitateurs
Cure-dents
Emballages jetables
Emballages jetables Retour
Matériel boulangerie
Matériel boulangerie Retour
Moules & caissettes en papier
Dentelles ovales
Dentelles pour plateaux
Dentelles en papier
Supports pour gâteaux en carton
Boîtes à gateaux
Emballages alimentaires
Emballages alimentaires Retour
Barquettes en aluminium
Pots de glace
Pots à sauce
Boîtes repas & hamburgers
Barquettes snacking
Bols à salade
Barquettes & films scellables
Boîtes snacking
Pots à soupe
Boîtes & plateux traiteur
Films & papiers alimentaires
Films & papiers alimentaires Retour
Papiers aluminiums
Papiers sulfurisés
Papiers ingraissables
Films étirables
Manchettes pour volailles
Plateaux de service
Sacs avec poignée
Sacs & sachets
Sacs & sachets Retour
Sacs de congélation
Sacs & sachets en papier
Sacs & sachets en plastique
Cornets de frites
Poches à douilles
Sacs sous vide
Sacs isolants
Conteneurs isothermes
Vaisselle réutilisable
Vaisselle réutilisable Retour
Gobelets réutilisables
Couverts réutilisables
Emballages réutilisables
Serviettes
Serviettes Retour
Pochettes à couverts
Serviettes décorées
Serviettes décorées Retour
Serviettes décorées 25 x 25 cm
Serviettes décorées 33 x 33 cm
Serviettes décorées 40 x 40 cm
Serviettes pour mariage
Serviettes de Noël
Serviettes "DAILY Collection"
Serviettes "DAILY Collection" Retour
Serviettes 24 x 24 cm
Serviettes 32 x 32 cm
Serviettes en tissu "Royal Collection"
Serviettes en tissu "Royal Collection" Retour
Serviettes décorées 40 x 40 cm
Serviettes unies 25 x 25 cm
Serviettes unies 33 x 33 cm
Serviettes unies 40 x 40 cm
Serviettes unies 48 x 48 cm
Serviettes emballage en papier
Serviettes unies
Serviettes unies Retour
Serviettes 1 couche
Serviettes 2 couches
Serviettes 3 couches
Nappes & chemins
Nappes & chemins Retour
Surnappes de table
Surnappes de table Retour
Surnappes en non-tissé - enduite
Surnappes en PV-tissu
Surnappes en tissu
Surnappes en non-tissé
Nappes de table
Nappes de table Retour
Nappes en non-tissé - enduite
Nappes en airlaid
Nappes en plastique
Nappes à motifs
Nappes en papier
Nappes en PV-tissue
Nappes en tissu
Nappes en non-tissé
Chemins de table
Chemins de table Retour
Chemins en non-tissé - enduite
Chemins en airlaid
Chemins en jute
Chemins en PV-tissu
Chemins en tissu
Chemins en tissu-airlaid
Chemins en non-tissé
Sets de table
Sets de table Retour
Sets de table en non-tissé - enduite
Sets de table en papier
Sets de table en PV-tissu
Sets de table en tissu
Sets de table en non-tissé
Bougies
Bougies Retour
Bougies parfumées
Bougies parfumées Retour
Bougies parfumées en verre
Huiles parfumées
Bougies cylindriques parfumées
Bougies chauffe-plat parfumées
Cires parfumées
Bougies pour cheminées & lanternes
Bougies spéciales
Bougies spéciales Retour
Bougies en verre
Bougies rondes
Bougies par thèmes & occasions
Bougies par thèmes & occasions Retour
Bougies d'anniversaire
Bougies funéraires
Bougies de Noël
Bougies rustiques
Bougies de chandelier & bougies baton
Bougies de stéarine
Bougies pilier
Bougies chauffe-plats
Bougies de table
Bougeoirs
Produits d'hygiène & matériel médical
Produits d'hygiène & matériel médical Retour
Gants jetables
Gants jetables Retour
Gants en coton
Système d'enfilage des gants "Clean Hands"
Gants en latex
Gants en nitrile
Gants en PE
Gants anti-coupures
Gants en vinyl
Matériel hôtellerie
Sachets hygiéniques
Produits d'hygiène en papier & tissu
Produits d'hygiène en papier & tissu Retour
Draps d'examens
Tissus rafraîchissantes
Essuie-touts
Essuie-mains en papier
Rouleaux de tissu de nettoyage
Papiers toilettes
Distributeurs de produits d'hygiène
Vêtements jetables
Vêtements jetables Retour
Charlottes, calots & toques
Blouses, tabliers & combinaisons
Masques de protection
Surchaussures
Pansements auto-adhésifs
Trousses de secours & premiers secours
Ustensiles et produits de nettoyage
Ustensiles et produits de nettoyage Retour
Sacs poubelles
Sacs poubelles Retour
Sacs poubelles biodégradables
Petits sacs poubelles
Grands sacs poubelle
Éponges
Éponges Retour
Éponges de nettoyage
Éponges vaisselles & métalliques
Chiffons & lingettes
Chiffons & lingettes Retour
Lingettes multi-usage
Chiffons microfibres
Fête & Déco
Fête & Déco Retour
Ballons
Ballons Retour
Ballons - unis
Ballons - couleurs assorties
Ballons pour anniversaire
Ballons pour mariage
Ballons avec formes
Ballons avec motif
Accessoires
Ballons chiffres
Déco murale & déco de salle
Déco murale & déco de salle Retour
Guirlandes
Papiers crépons
Confettis & serpentins
Lampions & lanternes
Boules & rosaces
Sets d'articles de fête
Sets d'articles de fête Retour
Fête de la Bière
Clown
Licorne
Fêtes
Funny Monsters
Football
Graphic Leaves
Anniversaires enfant
Little Dancer
Papillons
Pastilles
Pirates
Princesse
Poppy
Super-héros
Autres accessoires de fête
Autres accessoires de fête Retour
Cendriers jetables
Gravillons de table
Bougies d'anniversaire
Papiers cadeaux
Articles de jeux & cadeaux
Décoration de dispersion
Occasions, thèmes & saisons
Occasions, thèmes & saisons Retour
Décoration bavaroise & accessoires
Déco de Carnaval & accessoires
Déco de football & accessoires
Déco de mariage & accessoires
Déco de pays & accessoires
Déco de pays & accessoires Retour
Déco d'Allemagne
Déco de France
Déco d'Italie
Déco de Pays-Bas
Déco d'Autriche
Déco de Suède
Déco d'Espagne
Déco des USA
Déco de Pâques et printemps & accessoires
Sets d'articles de fête
Sets d'articles de fête Retour
Fête de la Bière
Clown
Licorne
Fêtes
Funny Monsters
Football
Graphic Leaves
Anniversaire d'enfants
Little Dancer
Papillons
Pastilles
Pirates
Princesse
Poppy
Super-héros
Déco de Nouvel An & accessoires
Déco d'automne & accessoires
Décorations de Noël & accessoires
Décorations de Noël & accessoires Retour
Assiettes & gobelets de Noël
Papier cadeaux de Noël
Bougies de Noël
Serviettes pour Noël
Nappes de Noël
Sacs cadeaux de Noël
Kit décorations "Chequers Tree"
Kit décorations "Christmas Shine"
Kit décorations "Golden Star"
Kit décorations "Just Stars"
Kit décorations "Rising Star"
Kit décorations "Stardust"
Kit décorations "Winterly"
Déco de marché de Noël & accessoires
Nouveautés
Promos
Remise
Remise
Inspirations
Inspirations
Durabilité
  
* Vaisselles biodégradables
  
  Vaisselles biodégradables
  
* Promesse environementable
  
  Promesse environementable
Durabilité
Durabilité Retour Vaisselles biodégradables
Vaisselles biodégradables
Promesse environementable
Promesse environementable
Onlineshops
  
* www.papstar-shop.de
  
  www.papstar-shop.de
  
* www.papstar-shop.at
  
  www.papstar-shop.at
  
* www.papstar-shop.nl
  
  www.papstar-shop.nl
  
* www.papstar-shop.se
  
  www.papstar-shop.se
Onlineshops
Onlineshops Retour www.papstar-shop.de
www.papstar-shop.de
www.papstar-shop.at
www.papstar-shop.at
www.papstar-shop.nl
www.papstar-shop.nl
www.papstar-shop.se
www.papstar-shop.se
 * Tous les produits
   Vaisselles biodégradables
   Assiettes & bols biodégradables
   Assiettes & bols en résidus agricoles Assiettes & bols en bambou Assiettes &
   bols en bois Assiettes & bols en carton Assiettes & bols en feuille de
   palmier Assiettes & bols en canne à sucre
   Gobelets biodégradables
   Gobelets à café Gobelets en carton Gobelets en PLA Gobelets en canne à sucre
   Pailles biodégradables
   Pailles en bambou Pailles en carton Pailles en paille
   Couverts biodégradables
   Couverts en bambou Couverts en bois Couverts en carton Couverts en feuille de
   palmier
   Mises en bouche biodégradable
   Assiettes & bols en bambou & palmier Assiettes & bols en bois Assiettes &
   bols en canne à sucre Piques & brochettes
   Emballages écologiques
   Pots de glace Boîtes en carton Boîtes en canne à sucre Papiers emballages
   alimentaires Moules jetables Barquettes repas Boîtes à pizza Barquettes en
   carton Sacs à goûter Sacs en papier & PLA Plateaux traiteur & boîtes
   traiteurs Barquettes en PLA
   Vaisselles jetables de fête Cure-dents, piques et brochettes
   Assiettes & bols
   Pots à dessert Pots à sauce Bols jetables
   Bols en aluminium Bols en carton Bols en plastique Bols en bambou Bols en
   CPLA Bols en bois Bols en feuille de palmier Bols en canne à sucre
   Assiettes jetables
   Assiettes en carton Assiettes en résidus agricoles Assiettes en bambou
   Assiettes en bois Assiettes en feuille de palmier Assiettes en canne à sucre
   Mises en bouche
   Assiettes & bols en bambou & palmier Assiettes & bols en bois Assiettes &
   bols en plastique Assiettes & bols en canne à sucre
   Bols à salade Pots à soupe
   Gobelets & verres
   Accessoires de bar & boissons
   Décorations pour cocktails Dessous de verre Agitateurs
   Couvercles Distributeurs de gobelets Plateaux porte-gobelets Verres jetables
   Flûtes à champagne
   Gobelets boissons chaudes
   Gobelets pour distributeur Gobelets à café Tasses à café Gobelets isothermes
   Gobelets en canne à sucre
   Gobelets boissons froides
   Gobelets en PLA Gobelets en carton Gobelets à liqueur Gobelets coniques
   Gobelets en canne à sucre
   Gobelets réutilisables Pailles
   Pailles en bambou & paille Pailles en carton
   Couverts
   Couverts en bambou Pochettes à couverts Couverts jetables - jeux &
   individuels Cuillères à glace & piques frites Couverts & pipettes Couverts en
   bois Pics en bois Couverts réutilisables Couverts en carton Couverts en
   feuille de palmier Pics et brochettes Agitateurs Cure-dents
   Emballages jetables
   Matériel boulangerie
   Moules & caissettes en papier Dentelles ovales Dentelles pour plateaux
   Dentelles en papier Supports pour gâteaux en carton Boîtes à gateaux
   Emballages alimentaires
   Barquettes en aluminium Pots de glace Pots à sauce Boîtes repas & hamburgers
   Barquettes snacking Bols à salade Barquettes & films scellables Boîtes
   snacking Pots à soupe Boîtes & plateux traiteur
   Films & papiers alimentaires
   Papiers aluminiums Papiers sulfurisés Papiers ingraissables Films étirables
   Manchettes pour volailles
   Plateaux de service Sacs avec poignée Sacs & sachets
   Sacs de congélation Sacs & sachets en papier Sacs & sachets en plastique
   Cornets de frites Poches à douilles Sacs sous vide
   Sacs isolants Conteneurs isothermes
   Vaisselle réutilisable
   Gobelets réutilisables Couverts réutilisables Emballages réutilisables
   Serviettes
   Pochettes à couverts Serviettes décorées
   Serviettes décorées 25 x 25 cm Serviettes décorées 33 x 33 cm Serviettes
   décorées 40 x 40 cm Serviettes pour mariage Serviettes de Noël
   Serviettes "DAILY Collection"
   Serviettes 24 x 24 cm Serviettes 32 x 32 cm
   Serviettes en tissu "Royal Collection"
   Serviettes décorées 40 x 40 cm Serviettes unies 25 x 25 cm Serviettes unies
   33 x 33 cm Serviettes unies 40 x 40 cm Serviettes unies 48 x 48 cm Serviettes
   emballage en papier
   Serviettes unies
   Serviettes 1 couche Serviettes 2 couches Serviettes 3 couches
   Nappes & chemins
   Surnappes de table
   Surnappes en non-tissé - enduite Surnappes en PV-tissu Surnappes en tissu
   Surnappes en non-tissé
   Nappes de table
   Nappes en non-tissé - enduite Nappes en airlaid Nappes en plastique Nappes à
   motifs Nappes en papier Nappes en PV-tissue Nappes en tissu Nappes en
   non-tissé
   Chemins de table
   Chemins en non-tissé - enduite Chemins en airlaid Chemins en jute Chemins en
   PV-tissu Chemins en tissu Chemins en tissu-airlaid Chemins en non-tissé
   Sets de table
   Sets de table en non-tissé - enduite Sets de table en papier Sets de table en
   PV-tissu Sets de table en tissu Sets de table en non-tissé
   Bougies
   Bougies parfumées
   Bougies parfumées en verre Huiles parfumées Bougies cylindriques parfumées
   Bougies chauffe-plat parfumées Cires parfumées
   Bougies pour cheminées & lanternes Bougies spéciales
   Bougies en verre Bougies rondes
   Bougies par thèmes & occasions
   Bougies d'anniversaire Bougies funéraires Bougies de Noël
   Bougies rustiques Bougies de chandelier & bougies baton Bougies de stéarine
   Bougies pilier Bougies chauffe-plats Bougies de table Bougeoirs
   Produits d'hygiène & matériel médical
   Gants jetables
   Gants en coton Système d'enfilage des gants "Clean Hands" Gants en latex
   Gants en nitrile Gants en PE Gants anti-coupures Gants en vinyl
   Matériel hôtellerie Sachets hygiéniques Produits d'hygiène en papier & tissu
   Draps d'examens Tissus rafraîchissantes Essuie-touts Essuie-mains en papier
   Rouleaux de tissu de nettoyage Papiers toilettes
   Distributeurs de produits d'hygiène Vêtements jetables
   Charlottes, calots & toques Blouses, tabliers & combinaisons Masques de
   protection Surchaussures
   Pansements auto-adhésifs Trousses de secours & premiers secours
   Ustensiles et produits de nettoyage
   Sacs poubelles
   Sacs poubelles biodégradables Petits sacs poubelles Grands sacs poubelle
   Éponges
   Éponges de nettoyage Éponges vaisselles & métalliques
   Chiffons & lingettes
   Lingettes multi-usage Chiffons microfibres
   Fête & Déco
   Ballons
   Ballons - unis Ballons - couleurs assorties Ballons pour anniversaire Ballons
   pour mariage Ballons avec formes Ballons avec motif Accessoires Ballons
   chiffres
   Déco murale & déco de salle
   Guirlandes Papiers crépons Confettis & serpentins Lampions & lanternes Boules
   & rosaces
   Sets d'articles de fête
   Fête de la Bière Clown Licorne Fêtes Funny Monsters Football Graphic Leaves
   Anniversaires enfant Little Dancer Papillons Pastilles Pirates Princesse
   Poppy Super-héros
   Autres accessoires de fête
   Cendriers jetables Gravillons de table Bougies d'anniversaire Papiers cadeaux
   Articles de jeux & cadeaux Décoration de dispersion
   Occasions, thèmes & saisons
   Décoration bavaroise & accessoires Déco de Carnaval & accessoires Déco de
   football & accessoires Déco de mariage & accessoires Déco de pays &
   accessoires
   Déco d'Allemagne Déco de France Déco d'Italie Déco de Pays-Bas Déco
   d'Autriche Déco de Suède Déco d'Espagne Déco des USA
   Déco de Pâques et printemps & accessoires Sets d'articles de fête
   Fête de la Bière Clown Licorne Fêtes Funny Monsters Football Graphic Leaves
   Anniversaire d'enfants Little Dancer Papillons Pastilles Pirates Princesse
   Poppy Super-héros
   Déco de Nouvel An & accessoires Déco d'automne & accessoires Décorations de
   Noël & accessoires
   Assiettes & gobelets de Noël Papier cadeaux de Noël Bougies de Noël
   Serviettes pour Noël Nappes de Noël Sacs cadeaux de Noël Kit décorations
   "Chequers Tree" Kit décorations "Christmas Shine" Kit décorations "Golden
   Star" Kit décorations "Just Stars" Kit décorations "Rising Star" Kit
   décorations "Stardust" Kit décorations "Winterly"
   Déco de marché de Noël & accessoires
 * Nouveautés
 * Promos
   
 * Remise
   
   Remise
   
 * Inspirations
   
   Inspirations
   
 * Durabilité
     
   * Vaisselles biodégradables
     
     Vaisselles biodégradables
     
   * Promesse environementable
     
     Promesse environementable
   
   Durabilité
   Durabilité Retour Vaisselles biodégradables
   Vaisselles biodégradables
   Promesse environementable
   Promesse environementable
   
 * Onlineshops
     
   * www.papstar-shop.de
     
     www.papstar-shop.de
     
   * www.papstar-shop.at
     
     www.papstar-shop.at
     
   * www.papstar-shop.nl
     
     www.papstar-shop.nl
     
   * www.papstar-shop.se
     
     www.papstar-shop.se
   
   Onlineshops
   Onlineshops Retour www.papstar-shop.de
   www.papstar-shop.de
   www.papstar-shop.at
   www.papstar-shop.at
   www.papstar-shop.nl
   www.papstar-shop.nl
   www.papstar-shop.se
   www.papstar-shop.se


COMMANDER EN UTILISANT VOTRE COMPTE

Adresse email

Mot de passe

S'inscrire Mot de passe oublié ?



COMMANDER EN TANT QUE NOUVEAU CLIENT

La création d’un compte possède de nombreux avantages :

 * Voir le statut de la commande et de l’expédition
 * Suivi de la commande
 * Commandez plus rapidement

Créer un compte
Allez au contenu
 1. Retour |
 2. Vous êtes ici :
 3. Page d'accueil
 4. Tous les produits
 5. Vaisselles biodégradables
 6. Gobelets biodégradables
 7. Gobelets en PLA
 8. Plateaux, carton "pure" 12 cm x 9,5 cm x 62 cm marron pour 6 gobelets

PAPSTAR


PLATEAUX, CARTON "PURE" 12 CM X 9,5 CM X 62 CM MARRON POUR 6 GOBELETS

Article-Nr.: 87648

Porte-gobelets ou plateau de service pratique pour gobelets - Dimensions : 12 x
62 cm- pour 6 gobelets d'un diamètre supérieur...
Toutes les informations sur l'article
Unité de commande

Unité de commande
Carton
150 Piece (5 x 30)


72,00 € TVA comprise
48,00 centimes / Stück

60,00 € hors TVA
40,00 centimes / Stück

En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible

Quantité commandée :
150 Piece
Quantité
Ne saisissez que des chiffres entiers.
À partir de: 72,00 € TVA comprise

À partir de: TVA comprise
À partir de: 72,00 € TVA comprise

48,00 centimes / Stück
excl. frais de port
Livraison offerte
Livraison offerte
Ajouter au panier

Ajouter à ma liste

Certifications du produit :




PRODUITS APPARENTÉS


Add to list
PAPSTAR
Gobelets pour boissons froides en P.L.A. "pure" 0,5 l transparent avec trait de
mousse-idéal pour bière
Article-Nr.: 11161

11,40 € TVA comprise
19,00 centimes / Stück
9,50 € hors TVA
15,83 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
Starpak
Gobelets "Hurricane", PET 0,3 l Ø 9,5 cm · 11,7 cm transparent
Article-Nr.: 11311

91,20 € TVA comprise
11,40 centimes / Stück
76,00 € hors TVA
9,50 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
Starpak
Gobelets "Hurricane", PET 0,4 l Ø 9,5 cm · 12,9 cm transparent
Article-Nr.: 11312

96,00 € TVA comprise
12,00 centimes / Stück
80,00 € hors TVA
10,00 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
Starpak
Gobelets "Hurricane", PET 0,5 l Ø 9,5 cm · 14,9 cm transparent
Article-Nr.: 11313

110,40 € TVA comprise
13,80 centimes / Stück
92,00 € hors TVA
11,50 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
 * Top des ventes
 * Tendance

PAPSTAR
Gobelets pour boissons froides en P.L.A. "pure" 0,3 l transparent idéal pour
biere-avec trait de mousse
Article-Nr.: 16174

10,20 € TVA comprise
14,57 centimes / Stück
8,50 € hors TVA
12,14 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
PAPSTAR
Gobelets pour boissons froides en P.L.A. "pure" 0,4 l Ø 9,5 cm · 13,2 cm
transparent idéal pour biere
Article-Nr.: 16175

11,10 € TVA comprise
15,86 centimes / Stück
9,25 € hors TVA
13,21 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
Starpak
Verres à bière, PS, gobelets américains 0,4 l Ø 9,5 cm · 12 cm rouge/blanc
Article-Nr.: 86413

46,08 € TVA comprise
28,80 centimes / Stück
38,40 € hors TVA
24,00 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.
Add to list
Starpak
Verres "Hurricane", PET 0,28 l Ø 9,5 cm · 7,3 cm transparent
Article-Nr.: 86806

81,60 € TVA comprise
10,20 centimes / Stück
68,00 € hors TVA
8,50 centimes / Stück
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
En stock. Livraison entre 2-4 jours ouvrés Article momentanément indisponible,
délai de livraison: 5-10 jours ouvrés Article temporairement indisponible
Quantité
Ajouter au panier
Ne saisissez que des chiffres entiers.




 * Description du produit
 * Fiche technique du produit
 * Avis

Porte-gobelets ou plateau de service pratique pour gobelets


- Dimensions : 12 x 62 cm
- pour 6 gobelets d'un diamètre supérieur de 9,5 cm
- Diamètre du creux : 8 cm
- idéal pour une utilisation lors de festivals et lors de grands événements
- Les gobelets présentés ne sont pas inclus

PRODUIT STANDARD/CERTIFICATION:
- Certifié FSC®

Couleur marron Série pure Abréviation Plateaux, carton Largeur 9.5 Marque
PAPSTAR No. d´article 87648 Product certifications fscmix

Il n'y a pas encore d'avis sur ce produit
Seul les utilisateurs enregistrés peuvent laisser un avis. Veuillez vous
connecter ou créer un compte
 * Description du produit
 * Fiche technique du produit
 * Avis

Porte-gobelets ou plateau de service pratique pour gobelets


- Dimensions : 12 x 62 cm
- pour 6 gobelets d'un diamètre supérieur de 9,5 cm
- Diamètre du creux : 8 cm
- idéal pour une utilisation lors de festivals et lors de grands événements
- Les gobelets présentés ne sont pas inclus

PRODUIT STANDARD/CERTIFICATION:
- Certifié FSC®

Couleur marron Série pure Abréviation Plateaux, carton Largeur 9.5 Marque
PAPSTAR No. d´article 87648 Product certifications fscmix

Il n'y a pas encore d'avis sur ce produit
Seul les utilisateurs enregistrés peuvent laisser un avis. Veuillez vous
connecter ou créer un compte

DESCRIPTION DU PRODUIT



Porte-gobelets ou plateau de service pratique pour gobelets


- Dimensions : 12 x 62 cm
- pour 6 gobelets d'un diamètre supérieur de 9,5 cm
- Diamètre du creux : 8 cm
- idéal pour une utilisation lors de festivals et lors de grands événements
- Les gobelets présentés ne sont pas inclus

PRODUIT STANDARD/CERTIFICATION:
- Certifié FSC®

FICHE TECHNIQUE DU PRODUIT



Couleur marron Série pure Abréviation Plateaux, carton Largeur 9.5 Marque
PAPSTAR No. d´article 87648 Product certifications fscmix

AVIS



Il n'y a pas encore d'avis sur ce produit
Seul les utilisateurs enregistrés peuvent laisser un avis. Veuillez vous
connecter ou créer un compte



DERNIERS PRODUITS CONSULTÉS

Voir le produit





Obtenez un bon de 10 %!
Abonnez-vous à notre lettre d’informations et économisez 10% sur votre prochaine
commande.
Avantages
 * Des réductions réservées uniquement aux abonnés
 * Des infos thématiques, les tendances et les événements saisonniers
 * Informations préliminaires sur les nouveaux produits de la gamme

Se connecter
Méthodes de paiement sécurisées
 * 
 * 
 * 
 * 
 * 

Commander en ligne en toute sécurité
 * 
 * 
 * 

Réseaux sociaux
 * 
 * 

Support client



E-Mail: shop@papstar.fr

Téléphone: +33 372 602650

Lun-Vend. de 8h00 à 16h00

Autres options de contact
Entreprise



A propos de PAPSTAR

Qualité et Environnement

Catalogues

Mentions légales

Conditions générales de vente

Réductions

FAQs

Juridique & Service



Protection des données

Informations sur la rétractation

Frais d´expédition

Paiement

Contact

Triman

Vos avantages



 * Livraison gratuite à partir de 100 € d'achat HT / 120 € d'achat TVA incluse

 * Livraison en 2-4 jours ouvrables

 * Réductions supplémentaires à partir de 100 € d'achat net

 * Conditions spéciales et offres individuelles pour les commandes importantes

 * Plus de 4 000 articles de qualité

 * Une gamme élargie pour les utilisateurs professionnels de diverses branches

 * Expédition neutre sur le plan climatique avec DPD

Contact



PAPSTAR E-Commerce SARL

7 Place de la Gare

FR 57200 Sarreguemines | France

Questions, suggestions ou critiques?

Notre équipe se tient avec plaisir à votre disposition !

 * Service téléphone
   
   Nous sommes ouvert du:
   
   Lun-Vend. de 9h00 à 16h00
   
   Téléphone: +33 372 602650

 * Contact par courrier ou par e-mail
   
   PAPSTAR GmbH
   
   Daimlerstraße 4-8
   
   DE 53925 Kall | Allemagne
   
   
   shop@papstar.fr

 * Foire aux questions - FAQ
   
   Vous y trouverez également des réponses à vos questions en dehors de nos
   heures d'ouverture


MON PANIER

x

Article-Nr.:


TVA comprise

hors TVA

Prix total Taxe Montant total
Commander Voir le panier
Chargement en cours...


Protection acheteur



4,66

Très bien