301 status code means that the requested resource has been permanently moved to a new URL. All future requests should use the new address.
The browser will automatically redirect the user to the new address, and search engines will update their indexes.
302 status code indicates that the requested resource is temporarily available at a different URL.
The user is automatically redirected to the new URL, but search engines continue to index the old address.
200 status code is a standard successful HTTP server response. It means that the client’s request (e.g., from a browser) was successfully processed, and the server is delivering the requested data.
The user receives content without errors, and the page or application functions properly. If Code 200 is accompanied by data, the browser or program processes and displays it to the user.
GET / HTTP/1.1 Host: adopt.com Accept: */* User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!doctype html><html lang="en"><head ><meta charset="utf-8"/> <meta name="title" content="Adopt : fragrances, face and body care, make-up and jewelry"/> <meta name="description" content="More than 150 high quality perfumes, created and made in France, from 11,95€. Scented care products, make-up at low prices! Secure payment and fast shipping."/> <meta name="keywords" content="french fragrance online perfumer low cost fragrance fragrance of grasse steel jewelry makeup makeup at low prices perfumed box care made in France moisturizing care"/> <meta name="robots" content="INDEX,FOLLOW"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Adopt : fragrances, face and body care, make-up and jewelry</title> <link rel="stylesheet" type="text/css" media="all" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/css/styles.min.css" /> <script type="text/javascript" defer="defer" src="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/Adopt_Theme/js/custom.min.js"></script> <link rel="preload" as="font" crossorigin="anonymous" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/fonts/gotham/Gotham-Book.woff2" /> <link rel="preload" as="font" crossorigin="anonymous" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/fonts/gotham/Gotham-Medium.woff2" /> <link rel="preload" as="font" crossorigin="anonymous" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/fonts/gotham/Gotham-Bold.woff2" /> <link rel="preload" as="font" crossorigin="anonymous" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/fonts/romie/RomieTrial-Bold.woff2" /> <link rel="apple-touch-icon" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/apple-touch-icon-120x120.png" /> <link rel="apple-touch-icon" sizes="152x152" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/apple-touch-icon-152x152.png" /> <link rel="apple-touch-icon" sizes="167x167" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/apple-touch-icon-167x167.png" /> <link rel="apple-touch-icon" sizes="180x180" href="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/apple-touch-icon-180x180.png" /> <link rel="icon" type="image/x-icon" href="https://www.adopt.com/media/favicon/stores/2/Icone_Colibri_sans_cercle.png" /> <link rel="shortcut icon" type="image/x-icon" href="https://www.adopt.com/media/favicon/stores/2/Icone_Colibri_sans_cercle.png" /> <meta name="Language" content="en" /> <meta name="google-site-verification" content="Y7fyVhWivEnPEQCoyS6R4v_jd_8wMxgoovmMebop1go" /> <!-- Magento --> <!--f7a2752ec384f2f093b8b272aec6d10d--> <link rel="dns-prefetch" href="https://use.typekit.net/"> <link rel="dns-prefetch" href="https://connect.facebook.net/"> <link rel="dns-prefetch" href="https://fonts.gstatic.com/"> <link rel="dns-prefetch" href="https://googleads.g.doubleclick.net/"> <link rel="dns-prefetch" href="https://i.ytimg.com/"> <link rel="dns-prefetch" href="https://p.typekit.net/"> <link rel="dns-prefetch" href="https://static.doubleclick.net/"> <link rel="dns-prefetch" href="https://www.facebook.com/"> <link rel="dns-prefetch" href="https://www.google.com/"> <link rel="dns-prefetch" href="https://www.google-analytics.com/"> <link rel="dns-prefetch" href="https://www.googletagmanager.com/"> <link rel="dns-prefetch" href="https://www.gstatic.com/"> <link rel="dns-prefetch" href="https://www.paypal.com/"> <link rel="dns-prefetch" href="https://www.paypalobjects.com/"> <link rel="dns-prefetch" href="https://www.youtube.com/"> <link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2"> <link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2"> <link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2"> <link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2"> <link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2"> <link rel="prefetch" href="https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2"> <link rel="prefetch" href="https://use.typekit.net/aja0eqx.css"> <link href="https://www.googletagmanager.com/gtag/js?id=GTM-T7L2CFJ" rel="preload" as="script"> <link rel="dns-prefetch" href="https://www.googletagmanager.com/"> <div x-data="initNostoElements()" x-init="dispatchNostoInitEvent()"></div><script> "use strict"; function initNostoElements() { return { nostoInitCount: 0, dispatchNostoInitEvent() { const self = this; setTimeout(function() { self.nostoInitCount++; if (typeof nostojs === 'function') { window.dispatchEvent( new CustomEvent('nosto-init') ); } else if (self.nostoInitCount <= 50) { self.dispatchNostoInitEvent(); } }, 50); } } }</script> <script> (function (i, s, o, g, r, a, m) { i["abtiming"] = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, "script", "//try.abtasty.com/fe00c2931023a861967a43fcccc5a369.js");</script> <!-- Google Tag Manager --><script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://superplus.adopt.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-T7L2CFJ');</script> <!-- Google Tag Manager (noscript) --><noscript><iframe src="https://superplus.adopt.com/ns.html?id=GTM-T7L2CFJ" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><!-- End Google Tag Manager (noscript) --> <link rel="alternate" id="alternate-url-en" hreflang="en-gb" href="https://www.adopt.com/en" /> <link rel="alternate" id="alternate-url-fr" hreflang="fr-fr" href="https://www.adopt.com/fr" /> <link rel="alternate" id="alternate-url-es" hreflang="es-es" href="https://www.adopt.com/es" /> <link rel="alternate" id="alternate-url-be-fr" hreflang="fr-be" href="https://www.adopt.com/be-fr" /> <link rel="alternate" id="alternate-url-be-nl" hreflang="nl-be" href="https://www.adopt.com/be-nl" /> <link rel="alternate" id="alternate-url-ca-fr" hreflang="fr-ca" href="https://www.adopt.com/ca-fr" /> <link rel="alternate" id="alternate-url-fr" hreflang="x-default" href="https://www.adopt.com/fr" /> <script> var BASE_URL = 'https://www.adopt.com/en' + '/'; var THEME_PATH = 'https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB'; var COOKIE_CONFIG = { "expires": null, "path": "\u002F", "domain": ".www.adopt.com", "secure": false, "lifetime": "2592000", "cookie_restriction_enabled": false }; var CURRENT_STORE_CODE = 'en'; var CURRENT_WEBSITE_ID = '1'; window.hyva = window.hyva || {} window.cookie_consent_groups = window.cookie_consent_groups || {} window.cookie_consent_groups['necessary'] = true; window.cookie_consent_config = window.cookie_consent_config || {}; window.cookie_consent_config['necessary'] = [].concat( window.cookie_consent_config['necessary'] || [], [ 'user_allowed_save_cookie', 'form_key', 'mage-messages', 'private_content_version', 'mage-cache-sessid', 'last_visited_store', 'section_data_ids' ] );</script> <script> 'use strict'; (function( hyva, undefined ) { function lifetimeToExpires(options, defaults) { const lifetime = options.lifetime || defaults.lifetime; if (lifetime) { const date = new Date; date.setTime(date.getTime() + lifetime * 1000); return date; } return null; } function generateRandomString() { const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', length = 16; let formKey = '', charactersLength = allowedCharacters.length; for (let i = 0; i < length; i++) { formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))] } return formKey; } const sessionCookieMarker = {noLifetime: true} const cookieTempStorage = {}; const internalCookie = { get(name) { const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); return v ? v[2] : null; }, set(name, value, days, skipSetDomain) { let expires, path, domain, secure, samesite; const defaultCookieConfig = { expires: null, path: '/', domain: null, secure: false, lifetime: null, samesite: 'lax' }; const cookieConfig = window.COOKIE_CONFIG || {}; expires = days && days !== sessionCookieMarker ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; path = cookieConfig.path || defaultCookieConfig.path; domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); secure = cookieConfig.secure || defaultCookieConfig.secure; samesite = cookieConfig.samesite || defaultCookieConfig.samesite; document.cookie = name + "=" + encodeURIComponent(value) + (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') + (path ? '; path=' + path : '') + (domain ? '; domain=' + domain : '') + (secure ? '; secure' : '') + (samesite ? '; samesite=' + samesite : 'lax'); }, isWebsiteAllowedToSaveCookie() { const allowedCookies = this.get('user_allowed_save_cookie'); if (allowedCookies) { const allowedWebsites = JSON.parse(unescape(allowedCookies)); return allowedWebsites[CURRENT_WEBSITE_ID] === 1; } return false; }, getGroupByCookieName(name) { const cookieConsentConfig = window.cookie_consent_config || {}; let group = null; for (let prop in cookieConsentConfig) { if (!cookieConsentConfig.hasOwnProperty(prop)) continue; if (cookieConsentConfig[prop].includes(name)) { group = prop; break; } } return group; }, isCookieAllowed(name) { const cookieGroup = this.getGroupByCookieName(name); return cookieGroup ? window.cookie_consent_groups[cookieGroup] : this.isWebsiteAllowedToSaveCookie(); }, saveTempStorageCookies() { for (const [name, data] of Object.entries(cookieTempStorage)) { if (this.isCookieAllowed(name)) { this.set(name, data['value'], data['days'], data['skipSetDomain']); delete cookieTempStorage[name]; } } } }; hyva.getCookie = (name) => { const cookieConfig = window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null; } return internalCookie.get(name); } hyva.setCookie = (name, value, days, skipSetDomain) => { const cookieConfig = window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { cookieTempStorage[name] = {value, days, skipSetDomain}; return; } return internalCookie.set(name, value, days, skipSetDomain); } hyva.setSessionCookie = (name, value, skipSetDomain) => { return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain) } hyva.getBrowserStorage = () => { const browserStorage = window.localStorage || window.sessionStorage; if (!browserStorage) { console.warn('Browser Storage is unavailable'); return false; } try { browserStorage.setItem('storage_test', '1'); browserStorage.removeItem('storage_test'); } catch (error) { console.warn('Browser Storage is not accessible', error); return false; } return browserStorage; } hyva.postForm = (postParams) => { const form = document.createElement("form"); let data = postParams.data; if (! postParams.skipUenc && ! data.uenc) { data.uenc = btoa(window.location.href); } form.method = "POST"; form.action = postParams.action; Object.keys(postParams.data).map(key => { const field = document.createElement("input"); field.type = 'hidden' field.value = postParams.data[key]; field.name = key; form.appendChild(field); }); const form_key = document.createElement("input"); form_key.type = 'hidden'; form_key.value = hyva.getFormKey(); form_key.name="form_key"; form.appendChild(form_key); document.body.appendChild(form); form.submit(); } hyva.getFormKey = function () { let formKey = hyva.getCookie('form_key'); if (!formKey) { formKey = generateRandomString(); hyva.setCookie('form_key', formKey); } return formKey; } hyva.formatPrice = (value, showSign, options = {}) => { const formatter = new Intl.NumberFormat( 'en\u002DGB', Object.assign({ style: 'currency', currency: 'EUR', signDisplay: showSign ? 'always' : 'auto' }, options) ); return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ? formatter.formatToParts(value).map(({type, value}) => { switch (type) { case 'currency': return '\u20AC' || value; case 'minusSign': return '- '; case 'plusSign': return '+ '; default : return value; } }).reduce((string, part) => string + part) : formatter.format(value); } const formatStr = function (str, nStart) { const args = Array.from(arguments).slice(2); return str.replace(/(%+)([0-9]+)/g, (m, p, n) => { const idx = parseInt(n) - nStart; if (args[idx] === null || args[idx] === void 0) { return m; } return p.length % 2 ? p.slice(0, -1).replace('%%', '%') + args[idx] : p.replace('%%', '%') + n; }) } hyva.str = function (string) { const args = Array.from(arguments); args.splice(1, 0, 1); return formatStr.apply(undefined, args); } hyva.strf = function () { const args = Array.from(arguments); args.splice(1, 0, 0); return formatStr.apply(undefined, args); } /** * Take a html string as `content` parameter and * extract an element from the DOM to replace in * the current page under the same selector, * defined by `targetSelector` */ hyva.replaceDomElement = (targetSelector, content) => { const parser = new DOMParser(); const doc = parser.parseFromString(content, 'text/html'); const contentNode = doc.querySelector(targetSelector); if (!contentNode) { return; } hyva.activateScripts(contentNode) document.querySelector(targetSelector).replaceWith(contentNode); window.dispatchEvent(new CustomEvent("reload-customer-section-data")); hyva.initMessages(); } hyva.activateScripts = (contentNode) => { const tmpScripts = contentNode.getElementsByTagName('script'); if (tmpScripts.length > 0) { const scripts = []; for (let i = 0; i < tmpScripts.length; i++) { scripts.push(tmpScripts[i]); } for (let i = 0; i < scripts.length; i++) { let script = document.createElement('script'); script.innerHTML = scripts[i].innerHTML; document.head.appendChild(script); scripts[i].parentNode.removeChild(scripts[i]); } } return contentNode; } const replace = {['+']: '-', ['/']: '_', ['=']: ','}; hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]); let currentTrap; const focusableElements = (rootElement) => { const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]'; return Array.from(rootElement.querySelectorAll(selector)) .filter(el => { return el.style.display !== 'none' && !el.disabled && el.tabIndex !== -1 && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) }) } const focusTrap = (e) => { const isTabPressed = e.key === 'Tab' || e.keyCode === 9; if (!isTabPressed) return; const focusable = focusableElements(currentTrap) const firstFocusableElement = focusable[0] const lastFocusableElement = focusable[focusable.length - 1] e.shiftKey ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()) }; hyva.releaseFocus = (rootElement) => { if (currentTrap && (!rootElement || rootElement === currentTrap)) { currentTrap.removeEventListener('keydown', focusTrap) currentTrap = null } } hyva.trapFocus = (rootElement) => { if (!rootElement) return; hyva.releaseFocus() currentTrap = rootElement rootElement.addEventListener('keydown', focusTrap) const firstElement = focusableElements(rootElement)[0] firstElement && firstElement.focus() } hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true}) window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies()) }( window.hyva = window.hyva || {} ));</script> <script> if (!window.IntersectionObserver) { window.IntersectionObserver = function (callback) { this.observe = el => el && callback(this.takeRecords()); this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}]; this.disconnect = () => {}; this.unobserve = () => {}; } }</script> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.adopt.com/en"> <meta property="og:title" content="Adopt : fragrances, face and body care, make-up and jewelry"> <meta property="og:description" content="More than 150 high quality perfumes, created and made in France, from 11,95€. Scented care products, make-up at low prices! Secure payment and fast shipping."> <meta property="og:image" content="https://adopt.twic.pics/media/picto/image/LIFE_PERF_30ML-100ML_MIX_FEMME_2.jpg?twic=v1"> <meta name="author" content="Adopt Parfums"></head><body class="website-base cms-home page-layout-1column cms-index-index page-layout-cms-full-width" id="html-body"> <script> "use strict"; function initGenericEventDatalayer() { return { browsingData: false, initGenericEvent(data) { if (data['browsing-data']) { this.browsingData = data['browsing-data']; const pageTemplate = this.getPageCodeFromController(); window.pageTemplate = pageTemplate; window.env_currency = this.browsingData.env_currency; const userNewCustomer = this.getIsNewCustomer(pageTemplate, this.browsingData.order_count); window.dataLayer?.push({ 'event': 'generic', 'env_country': this.browsingData.env_country, 'env_currency': this.browsingData.env_currency, 'env_language': this.browsingData.env_language, 'env_template': pageTemplate, 'cvar_template': pageTemplate, 'env_work': this.browsingData.env_work, 'env_version': 'desktop', 'page_cat1_id': '', 'page_cat1_name': '', 'page_cat2_id': '', 'page_cat2_name': '', 'page_cat3_id': '', 'page_cat3_name': '', 'page_content_type': '', 'page_name': window.location.pathname, 'user_logged': this.browsingData.user_logged, 'locale': this.browsingData.locale, 'user_id': this.browsingData.user_id, 'purchase_history': this.browsingData.purchase_history, 'user_gender': this.browsingData.user_gender, 'user_age': this.browsingData.user_age, 'userEmailHash': this.browsingData.userEmailHash, 'userEmailSH1': this.browsingData.userEmailSH1, 'user_identification_tool': this.browsingData.user_identification_tool, 'user_isnew': this.browsingData.user_isnew, 'user_newcustomer': userNewCustomer, 'utilisateurspread': this.browsingData.utilisateurspread, 'customerEmail': this.browsingData.customerEmail, 'customerEmailSHA256': this.browsingData.customerEmailSHA256, 'phoneNumber': this.browsingData.phoneNumber, 'phoneNumberSHA256': this.browsingData.phoneNumberSHA256, 'customerName': this.browsingData.customerName, 'customerNameSHA256': this.browsingData.customerNameSHA256, 'customerLastname': this.browsingData.customerLastname, 'customerLastnameSHA256': this.browsingData.customerLastnameSHA256, 'customerBirthday': this.browsingData.customerBirthday, 'customerBirthdaySHA256': this.browsingData.customerBirthdaySHA256, 'userGender': '', 'userGenderSHA256': '', 'customerCountry': this.browsingData.customerCountry, 'customerCountrySHA256': this.browsingData.customerCountrySHA256, 'customerCity': this.browsingData.customerCity, 'customerCitySHA256': this.browsingData.customerCitySHA256, 'customerStreet': this.browsingData.customerStreet, 'customerStreetSHA256': this.browsingData.customerStreetSHA256, 'customerZipcode': this.browsingData.customerZipcode, 'customerZipcodeSHA256': this.browsingData.customerZipcodeSHA256, }) } }, getIsNewCustomer(page, orderCount) { let isNew = 0; if (page == 'confirmation_paiement') { isNew = orderCount > 1 ? 0 : 1; } else { isNew = orderCount > 0 ? 0 : 1; } return isNew; }, getPageCodeFromController() { const bodyClassList = document.body.classList; const mapping = { 'customer-account-index': 'espace_client', 'sales-order-history': 'espace_client', 'sales-order-view': 'espace_client', 'wishlist-index-index': 'espace_client', 'customer-address-index': 'espace_client', 'customer-address-form': 'espace_client', 'customer-account-edit': 'espace_client', 'review-customer-index': 'espace_client', 'newsletter-manage-index': 'espace_client', 'storelocator-store-search': 'store_locator', 'storelocator-store-view': 'store_locator', 'cms-index-index': 'Homepage', 'catalog-product-view': 'page_produit', 'catalog-category-view': 'page_categorie_produit', 'checkout-cart-index': 'panier', 'checkout-index-index': 'checkout', 'checkout-onepage-success': 'confirmation_paiement', 'catalogsearch-result-index': 'resultat_de_recherche', }; let pageCode = Object.keys(mapping) .filter(key => bodyClassList.contains(key)) .reduce((obj, key) => { obj[key] = mapping[key]; return obj[key]; }, {}); if (Object.keys(pageCode).length === 0) { pageCode = 'autre'; } return pageCode; } } }</script><div x-data="initGenericEventDatalayer()" @private-content-loaded.window.once="initGenericEvent($event.detail.data)" ></div><input name="form_key" type="hidden" value="xBoKz4JPb2kowOJz" /> <noscript><section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"><div class="container text-center"><p><strong>JavaScript seems to be disabled in your browser.</strong> <span> For the best experience on our site, be sure to turn on Javascript in your browser.</span></p></div></section></noscript> <script> document.body.addEventListener('touchstart', () => {}, {passive: true})</script> <div x-data="initSnackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP()"> <div :class="{ 'hidden': ! show }" id="snackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP" class="snackbar snackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP w-[360px] h-[84px] md:w-[446px] md:h-[104px] justify-between items-start border-0 m-auto hidden transition transition-all duration-1000 ease-in-out -right-full bottom-16 " style="background-image: url('https://adopt.twic.pics/media/wysiwyg/snackbar/SNACK-BAR_SNACKBAR_DERNIERS-JOURS-EN.png?twic=v1');box-shadow: 0 29px 42px -15px;background-clip: border-box;background-origin: border-box;background-position-x: 0;background-size: 100%;"> <a @click="sendClickEvent()" href="https://www.adopt.com/en/shopping-days.html" class="flex flex-col text-white font-primary pl-24 justify-center h-full w-full"> <div class="leading-none"></div></a> <button @click="close()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross" version="1.1" x="0px" y="0px" viewBox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve" class="text-white" width="14" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13L13,1"/> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M13,13L1,1"/> <title/></svg> </button></div></div><script> setTimeout(animationSnackbar, 2000 + 1000); function animationSnackbar() { document.querySelector('#snackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP').style.right = '20px'; } function initSnackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP() { return { show: false, excludeUrls: [], init() { let cookieValue = hyva.getCookie('snackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP'), dateNow = new Date(), isDateValid = true, isUrlValid = true, startDate = new Date('2025-04-14 00:00:00') || null, endDate = new Date('2025-04-15 23:59:00') || null; if (startDate) { isDateValid = dateNow >= startDate; } if (isDateValid && endDate) { isDateValid = dateNow <= endDate; } this.excludeUrls.forEach((url) => { if (!isUrlValid) { return; } if (window.location.pathname.includes(url)) { isUrlValid = false; } }); if (!cookieValue && isDateValid && isUrlValid) { this.show = true; window.dataLayer?.push({ 'event': 'Snackbar', 'widget_title': 'Shopping\u0020Days\u0020EN\u0020\u002D\u0020Last\u0020Days', 'action': 'Impression', }); } setTimeout(() => { if (this.show) { this.show = false; hyva.setCookie('snackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP', 1, 0.2); } }, 10000 + 2000 + 1000); }, sendClickEvent() { window.dataLayer?.push({ 'event': 'Snackbar', 'widget_title': 'Shopping\u0020Days\u0020EN\u0020\u002D\u0020Last\u0020Days', 'action': 'ouverture', }); }, close() { hyva.setCookie('snackbar_iLcOmHfxPeIDRhHQHSzBD25O6T6NvjnP', 1, 0.2); window.dataLayer?.push({ 'event': 'Snackbar', 'widget_title': 'Shopping\u0020Days\u0020EN\u0020\u002D\u0020Last\u0020Days', 'action': 'fermeture', }); this.show = false; }, } }</script><div class="page-wrapper"><header class="page-header"> <a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white contentarea" href="#contentarea"><span> Skip to Content</span></a><div class="header promotional"> <div class="block-promotional flex bg-anthracite z-10 max-h-[49.02px]" x-data="initPromotionalHeader()" x-cloak x-init="$el.classList.remove('hidden') ; animate();" ><div class="overflow-hidden flex-1" id="message-promotional-carousel" data-nb-slides="2" ><ul class="flex items-center p-2 md:py-3.75 md:px-0 text-center text-tiny md:text-xxs font-medium text-white min-h-[49.02px] md:min-h-0" :class="{ 'min-h-[49.02px] h-[49.02px] max-h-[49.02px]': !isLoaded }"><li x-show="!isLoaded" style="width: 100% !important;" class="w-full px-5 md:px-7.5"><div class="w-full h-8.5 md:h-3 skeleton-box skeleton-box--discreet"></div></li> <li class="px-8.5 md:px-16 hidden" :class="{ 'hidden': !isLoaded, 'block': isLoaded }"><span @click="clickPromotionalHeaderEvent()">Free delivery from 35€! 🚚 </span></li> <li class="px-8.5 md:px-16 hidden" :class="{ 'hidden': !isLoaded, 'block': isLoaded }"><span @click="clickPromotionalHeaderEvent()">3 <a href=https://www.adopt.com/en/fragrance/women-perfume/women-eau-de-parfum/women-perfume-30ml.html>perfumes purchased</a>= the 4th is FREE (see <a href="https://www.adopt.com/en/commercial-offers.html">conditions</a>)* </span></li> </ul></div><div class="flex gap-2 items-center pl-4 md:pr-4 hidden" :class="{ 'hidden': !isLoaded, 'block': isLoaded }" > <div class="review-header text-white flex flex-col md:flex-row gap-1 md:gap-2 items-center pr-5 md:pr-0 shrink-0"><div class="font-medium flex items-center"><span class="text-base leading-none">4.4</span> <span class="text-xs leading-none">/5</span></div><div class="flex items-center gap-0.5 -mt-[3px]"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-white w-2.5 md:w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-white w-2.5 md:w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-white w-2.5 md:w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-white w-2.5 md:w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-white w-2.5 md:w-4 h-auto" width="24" height="24" role="img"> <path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/> <g style="opacity:0.2988;"> <path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/> </g> <title/></svg> </div><a href="https://trustville.fr/en/customer-reviews/pc/peruda/parfumerie/adopt_com" target="_blank" rel="noopener noreferrer" class="hidden md:flex text-xxs font-normal text-anthracite-300 flex items-center"><span>(12657)</span></a></div></div></div><script> function initPromotionalHeader() { return { isLoaded: false, clickPromotionalHeaderEvent() { window.dataLayer?.push({ 'event': 'clicBandeau' }); }, animate() { if(window.innerWidth < 640) { let li; let nbSlide; const promotionalBlockWidth = parseFloat( getComputedStyle( document.querySelectorAll('#message-promotional-carousel')[0], null ).width ); nbSlide = document.querySelectorAll('#message-promotional-carousel')[0].getAttribute('data-nb-slides'); document.querySelectorAll('#message-promotional-carousel ul')[0].style.width = ( nbSlide * 100 ) + '%'; li = document.querySelectorAll('#message-promotional-carousel ul li'); for(let i = 0; i < li.length; i++) { li[i].style.width = ( 100 / nbSlide ) + '%' } setInterval ( function () { document.querySelectorAll('#message-promotional-carousel ul')[0].animate( { marginLeft: -promotionalBlockWidth + 'px' }, 1200 ); setTimeout ( function () { let currentTile = document.querySelectorAll('#message-promotional-carousel ul')[0].querySelectorAll('li')[0]; document.querySelectorAll('#message-promotional-carousel ul')[0].appendChild(currentTile.cloneNode(true)); currentTile.remove(); }, 1200) }, 5000); } else { document.querySelector('#message-promotional-carousel').classList.add('js--text-marquee') } this.isLoaded = true; } } }</script></div> <script> function initHeader() { return { isLoaded: false, isMenuBreakpoint: window.innerWidth < 1025, isScrolled: false, noSearchOpenMobile: false, searchOpen: false, hiddenSearchClasses: ["checkout-cart-index","customer-account-login","customer-account-create","catalog-product-view","storelocator-index-index","smile_store_locator-store-search","cms-diagnostic-olfactif","cms-mw-store-locator","cms-store-locator","cms-l-univers-adopt","cms-the-adopt-universe","cms-mundo-de-adopt","cms-nos-engagements","cms-our-commitments","cms-nuestros-compromisos","cms-filiere-vanille","cms-vanilla-program","cms-programa-vainilla","cms-tendre-iris","cms-the-tendre-iris-project","category-noel-coffret-parfum","category-dia-del-padre","cms-guide-cadeaux-adopt","cms-jeu-de-noel","cms-juedo-de-navidad","cms-jeu-saint-valentin","cms-juego-de-san-valentin","cms-live-shopping","cms-programme-colibri","cms-filiere-jasmin","cms-programas-colibri","cms-jasmine-program","cms-hummingbird-programs","cms-programa-jazmin","cms-a-propos","cms-carte-wallet","noel-coffret-parfum","kerstfeest","navidad-cajas-perfume","cms-magic-touch","cms-magasin-brest-iroise"], cart: {}, isImmersive: 0, immersiveColor: '', pageColor: '', isAccountPage: document.body.classList.contains('account'), baseHeaderTop: 0, isSearchHidden() { const self = this; let bodyClasses = document.body.classList; this.hiddenSearchClasses.forEach(function (item) { if (bodyClasses.contains(item)) { self.noSearchOpenMobile = true; } }); }, getData(data) { if (data.cart) { this.cart = data.cart } }, clickIconHeaderEvent(label, url = null) { window.dataLayer?.push({ 'event': 'clic-icon-header', 'text': label }); if (url) { window.location.href = url; } }, init() { if (window.pageYOffset > 0) { this.isScrolled = true; } this.isSearchHidden(); this.baseHeaderTop = this.$refs.wrapper.getBoundingClientRect().top; this.$refs.wrapper.dataset.position = this.$refs.wrapper.getBoundingClientRect().top; this.$refs.wrapper.dataset.topBase = this.$refs.wrapper.offsetTop; this.$refs.wrapper.dataset.heightBase = this.$refs.wrapper.getBoundingClientRect().height; this.scroll(this.$refs); if (this.immersiveColor) { if (!this.isScrolled) { this.$refs.wrapper.style.backgroundColor = this.immersiveColor } else { this.$refs.wrapper.style.backgroundColor = '#ffffff' } } if (document.body.classList.contains('catalog-category-view')) { document.body.style.background = this.immersiveColor } if (this.pageColor) { document.body.classList.add(this.pageColor) } }, scroll() { let headerTop = this.$refs.wrapper.getBoundingClientRect().top; this.$refs.wrapper.dataset.position = headerTop; let headerRealHeight = document.querySelector('.header.promotional').getBoundingClientRect().height + parseInt(this.$refs.wrapper.dataset.heightBase); if(window.scrollY * 2 >= this.$refs.wrapper.dataset.topBase ) { this.$refs.wrapper.style.position = 'fixed'; this.$refs.wrapper.style.top = '0'; this.$refs.wrapper.style.backgroundColor = '#ffffff'; this.isScrolled = true; } else { if (this.$refs.wrapper.dataset.immersiveColor !== "") { this.$refs.wrapper.style.backgroundColor = this.$refs.wrapper.dataset.immersiveColor; } else { if (this.immersiveColor !== "") { this.$refs.wrapper.style.backgroundColor = this.immersiveColor; } else { this.$refs.wrapper.style.backgroundColor = ''; } } this.$refs.wrapper.style.position = 'static'; this.$refs.wrapper.style.top = 'auto'; this.isScrolled = false; } if (window.outerWidth > 1025) { document.querySelector('.page-wrapper').style.paddingTop = headerRealHeight + 'px'; } else { document.querySelector('.page-wrapper').style.paddingTop = 'unset'; } }, toggleSearch() { this.searchOpen = !this.searchOpen; if (this.searchOpen) { window.dispatchEvent( new CustomEvent('open-mini-cart') ); this.clickIconHeaderEvent('Search'); this.$nextTick(function () { document.querySelector('#search').select(); }); } else { window.dispatchEvent( new CustomEvent('close-mini-cart') ); } }, closeSearch() { this.searchOpen = false; window.dispatchEvent( new CustomEvent('close-mini-cart') ); } } } function initCompareHeader() { return { compareProducts: null, itemCount: 0, receiveCompareData(data) { if (data['compare-products']) { this.compareProducts = data['compare-products']; this.itemCount = this.compareProducts.count; } } } }</script><div class="header-wrapper relative z-30 w-full bg-white" :class="{ 'bg-white': isAccountPage }" x-data="initHeader()" @scroll.window.debounce.50ms="scroll()" x-ref="wrapper" data-immersive-color="" data-position="default" data-top-base data-height-base ><nav id="header" class="relative w-full transition-all duration-200 bg-white" @keydown.window.escape="closeSearch()" @private-content-loaded.window="getData(event.detail.data)" ><div class="container flex items-center justify-between px-0 md:px-7.5 py-2.25 md:py-2.5 mt-0 menu-bp:relative h-[63px] md:h-auto"><!--Logo--> <h1 class="order-2 shrink-0 grow-[1] menu-bp:grow-[0] menu-bp:min-w-[121px] lg:min-w-[200px] menu-bp:pb-0 md:pl-2 menu-bp:pl-0" x-data="initLogo()" x-init="init($refs)" @scroll.window.debounce.50ms="scroll($refs)" ><a class="flex items-center lg:min-w-[120px] w-fit" href="https://www.adopt.com/en" title="Adopt : fragrances, face and body care and make-up." aria-label="store logo"><img id="logo" loading="lazy" src="https://adopt.twic.pics/static/version1742480106/frontend/Adopt/hyva/en_GB/images/logo.svg?twic=v1" title="Adopt : fragrances, face and body care and make-up." alt="adopt-parfums-eau-de-parfum-make-up-skincare-fashion" class="w-auto h-[33px] transition-all duration-200 md:h-[44px] lg:h-auto lg:min-w-[120px] lg:w-[120px] ml-4 md:ml-0" x-ref="logo" :class="{ 'md:h-[34px] lg:min-w-[101px] lg:w-[101px]': isScrolled, 'md:h-[44px] lg:min-w-[120px] lg:w-[120px]': !isScrolled }" width="189" height="64" /></a></h1><script> function initLogo() { return { isNavLight: 0, immersiveColor: '', isScrolled: false, init($refs) { if(window.pageYOffset > 0) { this.isScrolled = true; } if(this.immersiveColor) { if(!this.isScrolled) { $refs.logo.src = 'https://adopt.twic.pics/static/version1742480106/frontend/Adopt/hyva/en_GB/images/logo-white.svg?twic=v1' } else { $refs.logo.src = 'https://adopt.twic.pics/static/version1742480106/frontend/Adopt/hyva/en_GB/images/logo.svg?twic=v1' } } }, scroll($refs) { this.isScrolled = window.pageYOffset > 0 if(this.immersiveColor) { if(!this.isScrolled) { $refs.logo.src = 'https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/logo-white.svg' } else { $refs.logo.src = 'https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/logo.svg' } } } } }</script> <!--Main Navigation--> <div x-data="initMenuMobile_681edf19e8c8f()" class="z-40 navigation menu-bp:hidden" @open-mini-cart.window="$el.style.zIndex = '20'" @close-mini-cart.window.debounce="$el.style.zIndex = '40'" ><div class="flex flex-row h-[63px]"><div class="flex justify-end"><div @click="toggleMobileMenu()" class="flex items-center justify-center cursor-pointer text-pink" :class="{ 'ml-auto': open }"><svg width="17" height="15" version="1.1" viewBox="0 0 17 15" xmlns="http://www.w3.org/2000/svg" class="block w-12 h-12 p-3 fill-current text-lavender block" :class="{ 'hidden' : open, 'block': !open, 'text-lavender': 1, 'text-white': 0 }"><g id="icons/burger-adopt" fill="none" fill-rule="evenodd"><g id="adopt" fill="currentColor"><rect width="17" height="1" rx=".5"/><rect y="7" width="13" height="1" rx=".5"/><rect y="14" width="17" height="1" rx=".5"/></g></g></svg><svg width="15.5" height="15.5" version="1.1" viewBox="0 0 15.5 15.5" xmlns="http://www.w3.org/2000/svg" class="hidden w-12 h-12 p-4 text-[#F98CDC]" :class="{ 'hidden' : !open, 'block': open }"><g transform="translate(.75 .75)" fill="currentColor" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><line x2="14" y1="14"/><line transform="matrix(-1,0,0,1,14,0)" x2="14" y1="14"/></g></svg></div></div></div><!-- mobile --><div class="nav-mobile flex flex-col" :class="{'fixed left-0 w-full bg-container-lighter' : open}" @keydown.window.escape="closeMenuMobile()" ><nav class="nav-wrapper hidden w-full duration-150 ease-in-out transform transition-display border-container overflow-x-hidden overflow-y-auto flex-1" :class="{ 'hidden' : !open }" > <div class="py-3"> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <a href="https://www.adopt.com/en/commercial-offers.html" class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" title="Offers"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Sans_titre_62_-min_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Sans_titre_62_-min_2.png" data-twic-bot="cover-max=74" alt="Offers" title="Offers" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Offers</a> </span> </div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium" style="color:#fb89d7;" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1607' ? 0 : 'category-node-1607'; nameActiveMenu = 'Mother\u0027s\u0020Day'; activeSubNav();" title="Mother's Day"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/COMPOS_PRODUITS_SM_copie_7.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/COMPOS_PRODUITS_SM_copie_7.jpg" data-twic-bot="cover-max=74" alt="Mother's Day" title="Mother's Day" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Mother's Day</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1607' ? 0 : 'category-node-1607'; nameActiveMenu = 'Mother\u0027s\u0020Day'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1607', 'translate-x-0' : mobilePanelActiveId === 'category-node-1607', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Mother's Day</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/mother-day.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/COMPOS_PRODUITS_SM_copie_7.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/COMPOS_PRODUITS_SM_copie_7.jpg" alt="Mother's Day" title="Mother's Day" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <a href="https://www.adopt.com/en/mother-day/sets-mother-day.html" title="Boxes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/sets-mother-day.html', '2', 'Boxes')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Boxes</span></a> <a href="https://www.adopt.com/en/mother-day/perfume-gifts-mother-day.html" title="Fragrance gifts" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/perfume-gifts-mother-day.html', '2', 'Fragrance gifts')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/RS_GLAMOURAMA_LOVEINFINITY_30ML_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/RS_GLAMOURAMA_LOVEINFINITY_30ML_1_1.jpg" alt="Fragrance gifts" title="Fragrance gifts" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Fragrance gifts</span></a> <a href="https://www.adopt.com/en/mother-day/body-gifts-mother-day.html" title="Body gifts " @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/body-gifts-mother-day.html', '2', 'Body gifts ')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Body gifts </span></a> <a href="https://www.adopt.com/en/mother-day/make-up-gifts-mother-day.html" title="Make-up gifts" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/make-up-gifts-mother-day.html', '2', 'Make-up gifts')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Make-up gifts</span></a> <div class="bg-pink-100 mt-5 py-2"> </div></div> </div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1472' ? 0 : 'category-node-1472'; nameActiveMenu = 'Fragrance'; activeSubNav();" title="Fragrance"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg" data-twic-bot="cover-max=74" alt="Fragrance" title="Fragrance" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Fragrance</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1472' ? 0 : 'category-node-1472'; nameActiveMenu = 'Fragrance'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1472', 'translate-x-0' : mobilePanelActiveId === 'category-node-1472', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Fragrance</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/fragrance.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/CRM_MIXMULTIPRODUIT_MIXTE_1_1.jpg" alt="Fragrance" title="Fragrance" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Women's perfume" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_PERF_MULTI_CARROUSELS_30_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_PERF_MULTI_CARROUSELS_30_1_2.jpg" alt="Women's perfume" title="Women's perfume" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Women's perfume</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/fragrance/women-perfume/women-eau-de-parfum.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/women-eau-de-parfum.html', '3', 'Eau de parfum')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eau de parfum</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/women-perfume-set.html" title="Perfume set" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/women-perfume-set.html', '3', 'Perfume set')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Perfume set</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/travel-collection.html" title="The Travel Collection" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/travel-collection.html', '3', 'The Travel Collection')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">The Travel Collection</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/intense-perfume.html" title="The Intenses" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/intense-perfume.html', '3', 'The Intenses')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">The Intenses</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/parfum-cheveux.html" title="Parfums Cheveux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/parfum-cheveux.html', '3', 'Parfums Cheveux')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Parfums Cheveux</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume.html" title="Women's perfume" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Men's fragrance" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/life_perf_auboutdumonde_30ml_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/life_perf_auboutdumonde_30ml_1.jpg" alt="Men's fragrance" title="Men's fragrance" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Men's fragrance</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/fragrance/men-perfume/men-eau-de-parfum.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/men-perfume/men-eau-de-parfum.html', '3', 'Eau de parfum')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eau de parfum</span></a> <a href="https://www.adopt.com/en/fragrance/men-perfume/men-perfume-set.html" title="Perfume set" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/men-perfume/men-perfume-set.html', '3', 'Perfume set')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Perfume set</span></a> <a href="https://www.adopt.com/en/fragrance/men-perfume.html" title="Men's fragrance" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Mixed fragrance" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-mixte-coffret-parfum_1__1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-mixte-coffret-parfum_1__1.jpg" alt="Mixed fragrance" title="Mixed fragrance" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Mixed fragrance</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/fragrance/mixed-perfume/mixed-perfume-sets.html" title="Perfume box" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/mixed-perfume/mixed-perfume-sets.html', '3', 'Perfume box')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Perfume box</span></a> <a href="https://www.adopt.com/en/fragrance/mixed-perfume.html" title="Mixed fragrance" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Olfactory universe" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/diag-olfa-circle_COLIBRI-min.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/diag-olfa-circle_COLIBRI-min.png" alt="Olfactory universe" title="Olfactory universe" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Olfactory universe</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/cotton-and-softness.html" title="Delicate " @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/cotton-and-softness.html', '3', 'Delicate ')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Delicate </span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/woody-and-character.html" title="Woody" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/woody-and-character.html', '3', 'Woody')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Woody</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/freshness-and-citrus.html" title="Fresh" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/freshness-and-citrus.html', '3', 'Fresh')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Fresh</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/flowers-and-romanticism.html" title="Floral" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/flowers-and-romanticism.html', '3', 'Floral')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Floral</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/fruits-and-pleasure.html" title="Fruity" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/fruits-and-pleasure.html', '3', 'Fruity')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Fruity</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/delights-and-seduction.html" title="Gourmand" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/delights-and-seduction.html', '3', 'Gourmand')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Gourmand</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/sun-and-sensuality.html" title="Solar" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/sun-and-sensuality.html', '3', 'Solar')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Solar</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe.html" title="Olfactory universe" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <a href="https://www.adopt.com/en/fragrance/accessoire-parfum.html" title="Accessoire Parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/accessoire-parfum.html', '2', 'Accessoire Parfum')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> Accessoire Parfum</span></a> <a href="https://www.adopt.com/en/fragrance/composez-votre-pack.html" title="3 parfums achetés = le 4ème offert" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/composez-votre-pack.html', '2', '3 parfums achetés = le 4ème offert')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> 3 parfums achetés = le 4ème offert</span></a> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/en/fragrance/web-exclusive.html" title="Web exclusive" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Web exclusive</span></a> <a href="https://www.adopt.com/en/fragrance/new-perfume.html" title="News" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> News</span></a> <a href="https://www.adopt.com/en/fragrance/bestsellers-perfume.html" title="Bestsellers" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Bestsellers</span></a> <a href="https://www.adopt.com/en/fragrance/discovery-format.html" title="Discovery format" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Discovery format</span></a> <a href="https://www.adopt.com/en/fragrance/magic-touch.html" title="Magic Touch" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Magic Touch</span></a> <a href="https://www.adopt.com/en/fragrance/easter-gifts.html" title="Easter gifts" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Easter gifts</span></a> </div></div> <div class="py-5 border-t border-dashed border-lavender"><div class="px-5 text-pink uppercase text-xxs font-medium tracking-spaced-lg mb-5"><a href="https://www.adopt.com/en/fragrance/scents.html">#olfactorynotes</a></div><div class="w-full overflow-x-hidden"><div class="flex gap-2.5 overflow-x-auto pb-1 hide-scrollbar"> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/vanilla-perfume.html"> #Vanilla</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/orange-blossom.html"> #Orange blossom</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/rose.html"> #Rose</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/patchouly.html"> #Patchouli</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/monoi.html"> #Monoï</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/musk.html"> #Musk</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/amber.html"> #Amber</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/oud.html"> #Oud</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/coco.html"> #Coco</a> </div></div></div> </div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1369' ? 0 : 'category-node-1369'; nameActiveMenu = 'Body\u0020care'; activeSubNav();" title="Body care"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/SOINS_POT_1_1__5.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/SOINS_POT_1_1__5.jpg" data-twic-bot="cover-max=74" alt="Body care" title="Body care" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Body care</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1369' ? 0 : 'category-node-1369'; nameActiveMenu = 'Body\u0020care'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1369', 'translate-x-0' : mobilePanelActiveId === 'category-node-1369', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Body care</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/body-care.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/SOINS_POT_1_1__5.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/SOINS_POT_1_1__5.jpg" alt="Body care" title="Body care" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('1')"><button title="By product" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-soins-corps-rituel-yummy-candy_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-soins-corps-rituel-yummy-candy_1_1.jpg" alt="By product" title="By product" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> By product</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/body-care/body-care-by-product/perfumed-shower-gel.html" title="Perfumed shower gel" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/perfumed-shower-gel.html', '3', 'Perfumed shower gel')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Perfumed shower gel</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-cream-lotion.html" title="Body cream & milk" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-cream-lotion.html', '3', 'Body cream & milk')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Body cream & milk</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/hand-care.html" title="Hand care" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/hand-care.html', '3', 'Hand care')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Hand care</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-scrub.html" title="Body scrub" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-scrub.html', '3', 'Body scrub')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Body scrub</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/scented-mist.html" title="Scented mist" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/scented-mist.html', '3', 'Scented mist')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Scented mist</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/deodorant.html" title="Deodorant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/deodorant.html', '3', 'Deodorant')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Deodorant</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-oil.html" title="Body oil" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-oil.html', '3', 'Body oil')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Body oil</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-gel.html" title="Body jelly" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-gel.html', '3', 'Body jelly')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Body jelly</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/bombe-de-bain.html" title="Bath bombs" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/bombe-de-bain.html', '3', 'Bath bombs')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Bath bombs</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-accessory.html" title="Body accessory" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-accessory.html', '3', 'Body accessory')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Body accessory</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product.html" title="By product" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="By concern" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <span class="inline-block mr-4 w-8.75 h-8.75"></span> By concern</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/moisturising-body-care.html" title="Moisturising" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/moisturising-body-care.html', '3', 'Moisturising')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Moisturising</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/nourishing-body-care.html" title="Nourishing" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/nourishing-body-care.html', '3', 'Nourishing')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Nourishing</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/brightening-body-care.html" title="Radiance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/brightening-body-care.html', '3', 'Radiance')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Radiance</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/exfoliating-body-care.html" title="Exfoliating" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/exfoliating-body-care.html', '3', 'Exfoliating')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Exfoliating</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/cleansing-body-care.html" title="Cleansing " @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/cleansing-body-care.html', '3', 'Cleansing ')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Cleansing </span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern.html" title="By concern" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Perfumed care ritual" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maixte-eau-parfum_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maixte-eau-parfum_1.jpg" alt="Perfumed care ritual" title="Perfumed care ritual" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Perfumed care ritual</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/maestro.html" title="Maestro" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/maestro.html', '3', 'Maestro')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Maestro</span></a> <a href="https://www.adopt.com/en/catalog/category/view/s/wonderful/id/1596/" title="Wonderful" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/catalog/category/view/s/wonderful/id/1596/', '3', 'Wonderful')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Wonderful</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/golden-queen.html" title="Golden Queen" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/golden-queen.html', '3', 'Golden Queen')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Golden Queen</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/coeur-a-coeur.html" title="Coeur à coeur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/coeur-a-coeur.html', '3', 'Coeur à coeur')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Coeur à coeur</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/rose-noire.html" title="Rose noire" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/rose-noire.html', '3', 'Rose noire')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Rose noire</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/vanille-bourbon.html" title="Vanille Bourbon" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/vanille-bourbon.html', '3', 'Vanille Bourbon')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Vanille Bourbon</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/sublimissime.html" title="Sublimissime" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/sublimissime.html', '3', 'Sublimissime')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Sublimissime</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/starnight.html" title="Starnight" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/starnight.html', '3', 'Starnight')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Starnight</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/love-mood.html" title="Love mood" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/love-mood.html', '3', 'Love mood')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Love mood</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual.html" title="Perfumed care ritual" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/en/body-care/new-body-care.html" title="New" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> New</span></a> <a href="https://www.adopt.com/en/body-care/best-sellers-body-care.html" title="Bestsellers" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Bestsellers</span></a> <a href="https://www.adopt.com/en/body-care/the-exceptional-care.html" title="The exceptional care" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> The exceptional care</span></a> <a href="https://www.adopt.com/en/body-care/gift-ideas-body-care.html" title="Gift ideas" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Gift ideas</span></a> <a href="https://www.adopt.com/en/body-care/men-body-care.html" title="Men care" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Men care</span></a> <a href="https://www.adopt.com/en/body-care/oriental-beauty.html" title="Oriental beauty" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Oriental beauty</span></a> <a href="https://www.adopt.com/en/body-care/bath-range.html" title="Bath range" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Bath range</span></a> </div></div> </div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1343' ? 0 : 'category-node-1343'; nameActiveMenu = 'Facial\u0020care'; activeSubNav();" title="Facial care"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg" data-twic-bot="cover-max=74" alt="Facial care" title="Facial care" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Facial care</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1343' ? 0 : 'category-node-1343'; nameActiveMenu = 'Facial\u0020care'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1343', 'translate-x-0' : mobilePanelActiveId === 'category-node-1343', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Facial care</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/skincare.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ADOPT_RS_AVRIL_176_4.jpg" alt="Facial care" title="Facial care" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('1')"><button title="By product" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Dimension_special_category_3__1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Dimension_special_category_3__1.png" alt="By product" title="By product" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> By product</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/skincare/skincare-by-product/lip-balm.html" title="Lip balm" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/lip-balm.html', '3', 'Lip balm')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Lip balm</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/make-up-removers.html" title="Make-up removers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/make-up-removers.html', '3', 'Make-up removers')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Make-up removers</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/cleansers.html" title="Cleansers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/cleansers.html', '3', 'Cleansers')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Cleansers</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/masks-and-scrubs.html" title="Masks & Scrubs" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/masks-and-scrubs.html', '3', 'Masks & Scrubs')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Masks & Scrubs</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/serums.html" title="Serums" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/serums.html', '3', 'Serums')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Serums</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/eye-contour-skincare.html" title="Eye contour care" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/eye-contour-skincare.html', '3', 'Eye contour care')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eye contour care</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/day-and-night-cream.html" title="Day and night cream" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/day-and-night-cream.html', '3', 'Day and night cream')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Day and night cream</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product.html" title="By product" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="By concern" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_CARE_FLEURDETIARE_HANDCREAM_3700719022351_2_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_CARE_FLEURDETIARE_HANDCREAM_3700719022351_2_2.jpg" alt="By concern" title="By concern" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> By concern</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/skincare/skincare-by-concern/moisture-and-radiance.html" title="Moisture & Radiance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-concern/moisture-and-radiance.html', '3', 'Moisture & Radiance')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Moisture & Radiance</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-concern/purifying-and-matifying.html" title="Purifying & Matifying" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-concern/purifying-and-matifying.html', '3', 'Purifying & Matifying')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Purifying & Matifying</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-concern.html" title="By concern" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/en/skincare/best-sellers-skincare.html" title="Best sellers" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Best sellers</span></a> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/ECOMM_SKINCARE_Overlay_01_EN_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_SKINCARE_Overlay_01_EN_1.png" width="701" height="994" alt="Facial care" title="Facial care"></a></div></div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1443' ? 0 : 'category-node-1443'; nameActiveMenu = 'Make\u002Dup'; activeSubNav();" title="Make-up"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_FDM_Maquillage_Overlay_EN_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_FDM_Maquillage_Overlay_EN_2.png" data-twic-bot="cover-max=74" alt="Make-up" title="Make-up" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Make-up</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1443' ? 0 : 'category-node-1443'; nameActiveMenu = 'Make\u002Dup'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1443', 'translate-x-0' : mobilePanelActiveId === 'category-node-1443', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Make-up</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/make-up.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_FDM_Maquillage_Overlay_EN_2.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_FDM_Maquillage_Overlay_EN_2.png" alt="Make-up" title="Make-up" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Complexion" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-fond-de-teint_1__1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-fond-de-teint_1__1.jpg" alt="Complexion" title="Complexion" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Complexion</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/make-up/face-make-up/foundation.html" title="Foundation" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/foundation.html', '3', 'Foundation')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Foundation</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/concealer.html" title="Concealer & corrector" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/concealer.html', '3', 'Concealer & corrector')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Concealer & corrector</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/face-primer-setting-spray.html" title="Face primer & setting spray" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/face-primer-setting-spray.html', '3', 'Face primer & setting spray')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Face primer & setting spray</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/blush.html" title="Blush" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/blush.html', '3', 'Blush')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Blush</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/powder.html" title="Powder" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/powder.html', '3', 'Powder')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Powder</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/face-accessories.html" title="Accessories" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/face-accessories.html', '3', 'Accessories')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessories</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up.html" title="Complexion" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Eyes" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-mascara_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-mascara_1_1.jpg" alt="Eyes" title="Eyes" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Eyes</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/make-up/eyes-make-up/mascara.html" title="Mascara" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/mascara.html', '3', 'Mascara')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Mascara</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eyeliner.html" title="Eyeliner" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eyeliner.html', '3', 'Eyeliner')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eyeliner</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eye-pencil.html" title="Eye pencil" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eye-pencil.html', '3', 'Eye pencil')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eye pencil</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eyeshadow.html" title="Eyeshadow" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eyeshadow.html', '3', 'Eyeshadow')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eyeshadow</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eyebrow.html" title="Eyebrow" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eyebrow.html', '3', 'Eyebrow')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Eyebrow</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eye-palette.html" title="Palette" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eye-palette.html', '3', 'Palette')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Palette</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eye-accessories.html" title="Accessories" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eye-accessories.html', '3', 'Accessories')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessories</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up.html" title="Eyes" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Lips" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-rouge-a-levres_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-rouge-a-levres_1_1.jpg" alt="Lips" title="Lips" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Lips</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/make-up/lips-make-up/lipstick.html" title="Lipstick" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up/lipstick.html', '3', 'Lipstick')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Lipstick</span></a> <a href="https://www.adopt.com/en/make-up/lips-make-up/gloss.html" title="Gloss" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up/gloss.html', '3', 'Gloss')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Gloss</span></a> <a href="https://www.adopt.com/en/make-up/lips-make-up/lip-balm.html" title="Lip balm" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up/lip-balm.html', '3', 'Lip balm')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Lip balm</span></a> <a href="https://www.adopt.com/en/make-up/lips-make-up.html" title="Lips" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="Nails" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-maquillage-vernis-ongles_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-maquillage-vernis-ongles_1_1.jpg" alt="Nails" title="Nails" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Nails</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/make-up/nails-make-up/nail-polish.html" title="Nail polish" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/nails-make-up/nail-polish.html', '3', 'Nail polish')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Nail polish</span></a> <a href="https://www.adopt.com/en/make-up/nails-make-up/nail-accessories.html" title="Accessories" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/nails-make-up/nail-accessories.html', '3', 'Accessories')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Accessories</span></a> <a href="https://www.adopt.com/en/make-up/nails-make-up.html" title="Nails" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/en/make-up/new-make-up.html" title="News" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> News</span></a> <a href="https://www.adopt.com/en/make-up/best-sellers-make-up.html" title="Bestsellers" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Bestsellers</span></a> </div></div> </div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1428' ? 0 : 'category-node-1428'; nameActiveMenu = 'Gift'; activeSubNav();" title="Gift"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-cadeaux-emballage-cadeaux.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-cadeaux-emballage-cadeaux.jpg" data-twic-bot="cover-max=74" alt="Gift" title="Gift" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Gift</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1428' ? 0 : 'category-node-1428'; nameActiveMenu = 'Gift'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1428', 'translate-x-0' : mobilePanelActiveId === 'category-node-1428', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Gift</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/gift.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/Cat-cadeaux-emballage-cadeaux.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/Cat-cadeaux-emballage-cadeaux.jpg" alt="Gift" title="Gift" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('1')"><button title="By recipient" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/M_chamment_styl_feeling_box_fdp-min_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/M_chamment_styl_feeling_box_fdp-min_1.png" alt="By recipient" title="By recipient" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> By recipient</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-her.html" title="Woman" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-her.html', '3', 'Woman')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Woman</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-him.html" title="Men" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-him.html', '3', 'Men')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Men</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-them.html" title="Mixed" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-them.html', '3', 'Mixed')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Mixed</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-kids.html" title="Child" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-kids.html', '3', 'Child')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Child</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient.html" title="By recipient" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div x-data="initMobileCmsPageMenuItem_681edf19e8c8f('0')"><button title="By price" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" @click="openSubElement = !openSubElement"><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/PACK_MULTI_DESTINATIONSOLEIL_FEELINGBOX_Montage_Vanille_Bourbon-1-min_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/PACK_MULTI_DESTINATIONSOLEIL_FEELINGBOX_Montage_Vanille_Bourbon-1-min_1.png" alt="By price" title="By price" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> By price</span> <span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="text-pink-lighter w-3 h-auto" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button> <div x-show="openSubElement"> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-under-10-euros.html" title="Under 10€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-under-10-euros.html', '3', 'Under 10€')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Under 10€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-between-10-and-20-euros.html" title="Between 10€ and 20€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-between-10-and-20-euros.html', '3', 'Between 10€ and 20€')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Between 10€ and 20€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-between-20-and-30-euros.html" title="Between 20€ and 30€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-between-20-and-30-euros.html', '3', 'Between 20€ and 30€')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Between 20€ and 30€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-over-30-euros.html" title="Over 30€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-over-30-euros.html', '3', 'Over 30€')" class="block text-tiny group py-3 px-7.5 tracking-wider hover:bg-lavender-300"><span class="pl-[41px]">Over 30€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price.html" title="By price" class="block text-tiny group py-3 px-7.5 font-medium tracking-spaced-lg underline uppercase hover:bg-lavender-300"><span class="pl-[41px]">View All</span></a></div></div> <div class="bg-pink-100 mt-5 py-2"> <a href="https://www.adopt.com/en/guide-cadeaux-adopt" title="Gifts guide " class="a flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium gradient-text-purple" data-parent-id="category-node-1428">Gifts guide </a> <a href="https://www.adopt.com/en/gift/gift-our-favorites.html" title="Our favorites" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Our favorites</span></a> <a href="https://www.adopt.com/en/gift/exclu-web.html" title="Exclu web" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Exclu web</span></a> <a href="https://www.adopt.com/en/gift/gift-wrapping.html" title="Gift wrapping" class="flex items-center justify-between w-full px-5 py-2 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" ><span> Gift wrapping</span></a> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/ECOMM_FDM_Overlay_Coffret_01_EN_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_FDM_Overlay_Coffret_01_EN_1.png" width="701" height="994" alt="Gift" title="Gift"></a></div></div></div> <div class="level-0"> <span class="flex items-center transition-transform duration-150 ease-in-out transform" :class="{ '-translate-x-full' : mobilePanelActiveId, 'translate-x-0' : !mobilePanelActiveId }" > <button class="flex items-center w-full pr-8 pl-4 py-1.5 cursor-pointer uppercase text-anthracite font-medium tracking-spaced-lg border-container level-0 hover:bg-lavender-300 transition duration-300 text-xs font-medium" style="color:#46405a;" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1667' ? 0 : 'category-node-1667'; nameActiveMenu = 'House'; activeSubNav();" title="House"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg" data-twic-bot="cover-max=74" alt="House" title="House" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> House</button> <div class="absolute -top-px right-0 flex w-14 h-full items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container" @click="mobilePanelActiveId = mobilePanelActiveId === 'category-node-1667' ? 0 : 'category-node-1667'; nameActiveMenu = 'House'; activeSubNav();"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="text-pink-lighter h-2.5 w-auto" width="8" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </div></span> <div class="subnav-wrapper absolute top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto translate-x-full transform bg-container-lighter" :class="{ 'translate-x-full' : mobilePanelActiveId !== 'category-node-1667', 'translate-x-0' : mobilePanelActiveId === 'category-node-1667', }" ><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="mobilePanelActiveId = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">House</span></button> <div><div><a class="flex items-center w-full px-5 py-1.5 cursor-pointer border-container text-tiny uppercase underline tracking-spaced-lg font-medium hover:bg-container-darker hover:bg-lavender-300" href="https://www.adopt.com/en/home.html" > <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__2.jpg" alt="House" title="House" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> <span>View All</span></a></div> <a href="https://www.adopt.com/en/home/scented-candle.html" title="Scented candle" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home/scented-candle.html', '2', 'Scented candle')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_2.jpg" alt="Scented candle" title="Scented candle" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Scented candle</span></a> <a href="https://www.adopt.com/en/home/home-fragrances.html" title="Home fragrances" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home/home-fragrances.html', '2', 'Home fragrances')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_2.jpg" alt="Home fragrances" title="Home fragrances" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Home fragrances</span></a> <a href="https://www.adopt.com/en/home/essential-oils.html" title="Essential oils" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home/essential-oils.html', '2', 'Essential oils')" class="flex items-center justify-between w-full px-5 py-1.5 cursor-pointer border-container text-xs-tiny uppercase tracking-spaced-lg font-medium hover:bg-lavender-300" ><span class="flex items-center"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/life_care_danstesreves_synergie_1_3.webp?twic=v1/output=preview" data-twic-src="image:media/catalog/category/life_care_danstesreves_synergie_1_3.webp" alt="Essential oils" title="Essential oils" width="37px" height="37px" class="overflow-hidden rounded-full mr-4 w-8.75 h-8.75"> Essential oils</span></a> <div class="bg-pink-100 mt-5 py-2"> </div></div> <div class="pt-2.5"><a href="#" class="block"><img loading="lazy" class="w-full" src="https://adopt.twic.pics/media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_BEST_SLIDER_MAISON_1_1__4.jpg" width="1200" height="1200" alt="House" title="House"></a></div></div></div> </div> <div class="border-t border-lavender-400 py-3 overflow-hidden "><div class=""> <div x-data="{ ...initMobileCmsPageMenuItem_681edf19e8c8f(), openBrandElement: false, openSubElement: false }"><button type="button" title="Our commitments" class="flex items-center justify-between w-full px-8 py-4 cursor-pointer border-container text-xs font-medium tracking-spaced-lg transition duration-300 hover:bg-lavender-300" @click="openBrandElement = !openBrandElement">Our commitments <div class="absolute right-0 flex w-14 items-center justify-center cursor-pointer bg-transparent border-container hover:bg-transparent hover:border-container"><span class="transform" :class="{'rotate-180': openSubElement}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="h-2.5 w-auto" width="14" height="13" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> </span></div></button> <div class="absolute pb-16 bg-lavender-300 top-0 right-0 z-10 w-full h-full transition-transform duration-200 ease-in-out overflow-y-auto transform bg-container-lighter" :class="{ 'translate-x-full' : !openBrandElement, 'translate-x-0' : openBrandElement }"><button class="link flex items-center gap-2.5 p-5 bg-lavender-300 w-full" @click="openBrandElement = null"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-right" version="1.1" x="0px" y="0px" viewBox="0 0 8.4 14" enable-background="new 0 0 8.4 14" xml:space="preserve" class="-rotate-180 w-2.75 h-auto -mt-0.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M1,13l6-6L1,1"/> <title/></svg> <span class="uppercase font-medium tracking-spaced-lg text-xxs leading-tiny">Our commitments</span></button> <div class="flex flex-col gap-2.5 px-2"> <a href="https://www.adopt.com/en/hummingbird-programs" title="The Hummingbird Programs" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/hummingbird-programs', '2', 'The Hummingbird Programs')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/carr__2.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/carr__2.jpg" data-twic-transform="max=500" alt="The Hummingbird Programs" title="The Hummingbird Programs"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">The Hummingbird Programs</button></a> <a href="https://www.adopt.com/en/our-commitments" title="Our commitments" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/our-commitments', '2', 'Our commitments')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/nos_engagements.jpg_1__0_0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/nos_engagements.jpg_1__0_0.jpg" data-twic-transform="max=500" alt="Our commitments" title="Our commitments"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">Our commitments</button></a> <a href="https://www.adopt.com/en/the-adopt-universe" title="The adopt universe" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/the-adopt-universe', '2', 'The adopt universe')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/Adopt_0505_Capots_2_Invio_1.png?twic=v1/output=preview" data-twic-src="image:media/picto/image/Adopt_0505_Capots_2_Invio_1.png" data-twic-transform="max=500" alt="The adopt universe" title="The adopt universe"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">The adopt universe</button></a> <a href="https://www.adopt.com/en/know-how" title="Know-how" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/know-how', '2', 'Know-how')" class="relative block text-anthracite text-xxs group tracking-wider hover:bg-lavender-300"><img loading="lazy" class="w-full rounded-[10px] h-[200px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/savoir-faire-adopt_1_1_0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/savoir-faire-adopt_1_1_0.jpg" data-twic-transform="max=500" alt="Know-how" title="Know-how"><button class="absolute bottom-6 btn btn-primary-white-cta min-h-[55px] text-smaller mx-auto left-0 right-0 w-fit">Know-how</button></a> </div></div></div> </div> <div class="bg-pink-100 py-5 px-8"><a href="https://www.adopt.com/en/checkout/cart" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="bag" version="1.1" x="0px" y="0px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="w-4.5 h-auto" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M16.8,5.3c-0.5-2.8-2.7-4.8-5.3-4.8 c-2.6,0-4.8,2-5.3,4.8"/> <path fill="none" stroke="currentColor" d="M10.1,5.3h3.8c5.3,0,9.6,4.3,9.6,9.6v8.6h-23v-8.6C0.5,9.6,4.8,5.3,10.1,5.3z"/> <title/></svg> <span>My cart</span></a> <a href="https://www.adopt.com/en/customer/account" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="compte" version="1.1" x="0px" y="0px" viewBox="0 0 22.8 23.9" enable-background="new 0 0 22.8 23.9" xml:space="preserve" class="w-4.5 h-auto" width="24" height="25" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.4,11.9c3.2,0,5.7-2.6,5.7-5.7 s-2.6-5.7-5.7-5.7C8.3,0.4,5.7,3,5.7,6.2S8.3,11.9,11.4,11.9z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M22.3,23.4c-1.5-4.7-5.9-7.9-10.9-7.9 S2,18.7,0.5,23.4H22.3z"/> <title/></svg> <span>My account</span></a> <a href="https://www.adopt.com/en/wishlist" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite" version="1.1" x="0px" y="0px" viewBox="0 0 26.3 22.8" enable-background="new 0 0 26.3 22.8" xml:space="preserve" class="w-4.5 h-auto" width="26" height="23" role="img"> <path fill="none" stroke="currentColor" stroke-width="0.948" d="M13.2,22.3c-24.4-13.5-7.3-28.2,0-18.9C20.5-5.9,37.6,8.8,13.2,22.3z"/> <title/></svg> <span>My favorites</span></a> <a href="https://www.adopt.com/en/store-locator" class="py-4 flex items-center gap-6 text-xs-tiny tracking-spaced-lg font-medium uppercase transition duration-300 hover:text-pink"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="pin-shop" version="1.1" x="0px" y="0px" viewBox="0 0 21.3 23.9" enable-background="new 0 0 21.3 23.9" xml:space="preserve" class="w-4.5 h-auto" width="23" height="26" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.7,0.5c2.2,0,4.3,0.6,6.2,1.8 c4.8,3,5.2,9.2,1.3,13.7c-2.3,2.7-4.8,5.2-7.5,7.4c-2.7-2.2-5.3-4.7-7.5-7.4C-0.7,11.4-0.4,5.3,4.4,2.3C6.3,1.1,8.5,0.5,10.7,0.5z M10.7,5.2c-2.4,0-4.4,1.9-4.4,4.3c0,2.4,1.9,4.3,4.4,4.3c2.4,0,4.4-1.9,4.4-4.3C15,7.1,13.1,5.2,10.7,5.2z"/> <title/></svg> <span>Our shops</span></a> <div x-data="initStoreSwitcherForm_681edf1a228ec()" @private-content-loaded.window.debounce="onPrivateContentLoaded($event.detail.data)"><div :class="!isFromMobileMenu ? 'relative inline-block text-left' : ''"><template x-if="currentStoreCountryName && currentStoreLanguageCode && currentStoreSvg"><div><button @click.prevent="storeMenuMobile();" @keydown.window.escape="storeMenuMobile('close');" type="button" :class="isFromMobileMenu ? 'py-4 text-xs-tiny gap-6' : 'justify-center w-full focus:outline-none border-none p-0 flex-row-reverse gap-2'" class="flex items-center" aria-haspopup="true" aria-expanded="true" x-html='isFromMobileMenu ? currentStoreSvg + "<span>" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span>" : "<span class=\"link link-simple \">" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span> " + currentStoreSvg' ></button></div></template></div></div><script> function initStoreSwitcherForm_681edf1a228ec() { return { currentCountrySvg: null, currentStoreCountryCode: 'FR', currentStoreCountryName: '', currentStoreLanguageCode: 'en', currentStoreSvg: null, destinationUrl: null, directoryData: null, geoIpCountryCode: hyva.getCookie('select-store-user-country-code'), isFromMobileMenu: 1, selectedStore: null, svgBaseUrl: 'https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/Hyva_Theme/svg/flag', svgTemplate: '<img loading="lazy" src="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/Hyva_Theme/svg/flag/%1.svg" alt="%2" height="20" width="20">', translatedWordings: {"modalTitle":{"fr":"Bienvenue sur Adopt.com","en":"Welcome on Adopt.com","es":"Bienvenido a Adopt.com"},"selectTitle":{"fr":"Pays de livraison","en":"Shipping country","es":"Pa\u00eds de entrega","nl":"Land van levering"},"modalDescription":{"fr":"Veuillez choisir votre <b>pays de livraison<\/b>","en":"Please choose your <b>delivery country<\/b>","es":"Elija su pa\u00eds de <b>entrega<\/b>"},"modalButton":{"fr":"Appliquer","en":"Apply","es":"Solicitar"}}, userLanguageCode: window.navigator.language.indexOf("-") > 0 ? window.navigator.language.substring(0, window.navigator.language.indexOf("-")) : window.navigator.language, websites: [{"country_code":"FR","country_label":{"fr":"France","es":"Francia","en":"France","nl":"Frankrijk"},"locale_code":"default","locale_label":"fr","store_code":"fr","destinationUrl":"https:\/\/www.adopt.com\/fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"FR","locale_label":"fr","store_code":"be-fr","destinationUrl":"https:\/\/www.adopt.com\/be-fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"NL","locale_label":"nl","store_code":"be-nl","destinationUrl":"https:\/\/www.adopt.com\/be-nl\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CA","country_label":{"fr":"Canada","es":"Canad\u00e1","en":"Canada","nl":"Canada"},"locale_code":"default","locale_label":"fr","store_code":"ca-fr","destinationUrl":"https:\/\/www.adopt.com\/ca-fr\/"},{"country_code":"DE","country_label":{"fr":"Allemagne","es":"Alemania","en":"Germany","nl":"Duitsland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"AT","country_label":{"fr":"Autriche","es":"Austria","en":"Austria","nl":"Oostenrijk"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HR","country_label":{"fr":"Croatie","es":"Croacia","en":"Croatia","nl":"Kroati\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"DK","country_label":{"fr":"Danemark","es":"Dinamarca","en":"Denmark","nl":"Denemarken"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"ES","country_label":{"fr":"Espagne","es":"Espa\u00f1a","en":"Spain","nl":"Spanje"},"locale_code":"default","locale_label":"es","store_code":"es","destinationUrl":"https:\/\/www.adopt.com\/es\/"},{"country_code":"EE","country_label":{"fr":"Estonie","es":"Estonia","en":"Estonia","nl":"Estland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"FI","country_label":{"fr":"Finlande","es":"Finlandia","en":"Finland","nl":"Finland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"GR","country_label":{"fr":"Gr\u00e8ce","es":"Grecia","en":"Greece","nl":"Griekenland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HU","country_label":{"fr":"Hongrie","es":"Hungr\u00eda","en":"Hungary","nl":"Hongarije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IE","country_label":{"fr":"Irlande","es":"Irlanda","en":"Ireland","nl":"Ierland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IT","country_label":{"fr":"Italie","es":"Italia","en":"Italy","nl":"Itali\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LV","country_label":{"fr":"Lettonie","es":"Letonia","en":"Latvia","nl":"Letland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LT","country_label":{"fr":"Lituanie","es":"Lituania","en":"Lithuania","nl":"Litouwen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LU","country_label":{"fr":"Luxembourg","es":"Luxemburgo","en":"Luxembourg","nl":"Luxemburg"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"NL","country_label":{"fr":"Pays-Bas","es":"Pa\u00edses Bajos","en":"Netherlands","nl":"Nederland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PL","country_label":{"fr":"Pologne","es":"Polonia","en":"Poland","nl":"Polen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PT","country_label":{"fr":"Portugal","es":"Portugal","en":"Portugal","nl":"Portugal"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"RO","country_label":{"fr":"Roumanie","es":"Ruman\u00eda","en":"Romania","nl":"Roemeni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SK","country_label":{"fr":"Slovaquie","es":"Eslovaquia","en":"Slovakia","nl":"Slowakije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SI","country_label":{"fr":"Slov\u00e9nie","es":"Eslovenia","en":"Slovenia","nl":"Sloveni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SE","country_label":{"fr":"Su\u00e8de","es":"Suecia","en":"Sweden","nl":"Zweden"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CZ","country_label":{"fr":"Tch\u00e9quie","es":"Chequia","en":"Czechia","nl":"Tsjechi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"}], initComponent() { this.$watch('geoIpCountryCode', (value) => { this.openModaleIfNeeded(value); }); this.initDefaultValues(); if (!this.hasUserChoice() && !this.geoIpCountryCode) { this.getCountryFromHeader(); } this.openModaleIfNeeded(this.geoIpCountryCode); }, onPrivateContentLoaded(data) { if (data['directory-data']) { this.directoryData = data['directory-data']; this.initComponent() } }, openModaleIfNeeded(geoIpCountryCode) { if (!geoIpCountryCode) { return; } if (!this.hasUserChoice() && (geoIpCountryCode != this.currentStoreCountryCode)) { this.selectStoreBasedOnUser(geoIpCountryCode); if (this.selectedStore) { this.storeMenuMobile(); } } }, selectStoreBasedOnUser(geoIpCountryCode) { let defaultStoreForCountry = null; this.websites.forEach(element => { if (element.country_code.toLowerCase() == geoIpCountryCode.toLowerCase()) { if (element.locale_code.toLowerCase() == 'default') { defaultStoreForCountry = element; } if (element.locale_code.toLowerCase() == this.userLanguageCode.toLowerCase()) { this.selectedStore = element; } } }) if (!this.selectedStore) { this.selectedStore = defaultStoreForCountry; } if (this.selectedStore) { const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code); this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl; } }, selectStore(website) { this.selectedStore = website; const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code); this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl; }, initDefaultValues() { const selectedCountry = hyva.getCookie('selected_country'); if (selectedCountry) { this.currentStoreCountryCode = selectedCountry; } if (this.directoryData) { this.currentStoreCountryName = this.directoryData[this.currentStoreCountryCode].name; this.currentStoreSvg = this.svgTemplate .replace('%1', this.currentStoreCountryCode.toLowerCase()) .replace('%2', this.currentStoreCountryName + ' flag'); } }, remindUserChoice() { hyva.setCookie('select-store-user-choice', true, 365, true); }, hasUserChoice() { return hyva.getCookie('select-store-user-choice') !== null; }, getCountryFromHeader() { const client = new XMLHttpRequest(); client.open("HEAD", window.location, true); client.send(null); client.onreadystatechange = () => { if (client.readyState === client.HEADERS_RECEIVED) { const disCountry = client.getResponseHeader("X-Dis-Country"); if (disCountry) { hyva.setCookie('select-store-user-country-code', disCountry, 7, true); this.geoIpCountryCode = disCountry; } client.abort(); } }; }, submitForm() { const $form = document.querySelector('#store-switcher-form'); window.dataLayer?.push({ 'event': 'selectionPaysLivraison', 'pays': this.selectedStore.country_label['en'], 'langue': this.selectedStore.store_code.toUpperCase(), }); this.remindUserChoice(); $form.submit(); }, storeMenuMobile($close) { const storeSelectorModale = document.querySelector('.stores-choice'); if (storeSelectorModale) { if ($close) { this.remindUserChoice(); storeSelectorModale.style.display = 'none'; } else { storeSelectorModale.style.display = 'flex'; } } } } }</script></div></nav></div></div><script> 'use strict'; const initMobileCmsPageMenuItem_681edf19e8c8f = (isChildOpen = 0) => { return { openSubElement: isChildOpen == 1 ? true : false, clickMenuEntryEvent(url, level, label, blank = false) { window.dataLayer?.push({ 'event': 'clicMenuniveau' + level, 'text': label }); if (blank) { window.open(url, '_blank'); } else { window.location.href = url } } } } const initMenuMobile_681edf19e8c8f = () => { return { mobilePanelActiveId: null, hoverPanelActiveId: null, open: false, topOpened: document.querySelector('.block-promotional').offsetHeight, isSubnavOpen: false, nameActiveMenu: null, isNavLight: 0, clickMenuEntryEvent(url, level, label, blank = false) { window.dataLayer?.push({ 'event': 'clicMenuniveau' + level, 'text': label }); if (blank) { window.open(url, '_blank'); } else { window.location.href = url } }, setActiveMenu(menuNode) { Array.from(menuNode.querySelectorAll('a')).filter(link => { return link.href === window.location.href.split('?')[0]; }).map(item => { item.classList.add('text-pink'); item.closest('div.level-0') && item.closest('div.level-0').querySelector('a.level-0').classList.add('text-pink'); }); }, toggleMobileMenu() { this.open = !this.open; const headerPosition = document.querySelector('.header-wrapper').offsetHeight; if (window.innerWidth < 1025) { if (this.open) { document.body.classList.add('overflow-hidden'); let headerHeight = document.querySelector('.header-wrapper').offsetHeight; document.querySelector('.nav-mobile').style.height = `calc(100svh - ${headerHeight}px)`; document.getElementById('header').style.backgroundColor = 'white'; document.querySelector('.header').style.display = 'none'; document.body.classList.add('is-menu-open'); } else { document.body.classList.remove('overflow-hidden'); document.querySelector('.nav-mobile').style.height = 'unset'; document.querySelector('.header').style.display = 'block'; this.mobilePanelActiveId = null; document.body.classList.remove('is-menu-open'); } document.querySelector('.nav-wrapper').style.overflowY = 'auto'; } }, closeMenuMobile() { this.open = false; const headerPosition = document.querySelector('.header-wrapper').offsetHeight; document.body.classList.remove('overflow-hidden'); document.querySelector('.nav-mobile').style.height = 'unset'; document.querySelector('.header').style.display = 'block'; this.mobilePanelActiveId = null; document.body.classList.remove('is-menu-open'); document.querySelector('.nav-wrapper').style.overflowY = 'auto'; }, activeSubNav() { this.isSubnavOpen = !this.isSubnavOpen; document.querySelector('.nav-wrapper').style.overflowY = 'hidden'; if (this.isSubnavOpen) { document.querySelector('.nav-wrapper').scrollTop = 0 document.querySelector('.nav-wrapper').style.height = 'auto'; document.querySelector('.nav-wrapper').style.overflowY = 'hidden'; } } } }</script> <div x-data="initMenuDesktop_681edf1a22f28()" class="z-20 order-2 menu-bp:flex-1 sm:order-1 menu-bp:order-2 navigation hidden menu-bp:flex overflow-auto hide-scrollbar"><!-- desktop --><div x-ref="navDesktop" @load.window="setActiveMenu($el)" class="hidden lg:block lg:min-h-0 px-7 lg:w-auto lg:pt-0 overflow-auto hide-scrollbar mx-auto relative"><button class="left-0 top-1/2 -translate-y-1/2 absolute hover:bg-anthracite-200 border border-lavender-lightest bg-white rounded-full p-1 text-pink transition duration-300" type="button" title="Previous" x-cloak x-show="showPrevious" @click="prevMenu()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-3.5 h-auto filter drop-shadow-pink-lighter-icon -scale-x-100" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </button> <nav x-ref="slider" @resize.window.debounce.100="resizeMenu()" x-cloak class="duration-150 ease-in-out transform flex justify-start min-h-0 transition-display leading-none relative overflow-auto hide-scrollbar scroll-smooth" > <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1547', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1547" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/commercial-offers.html', '1', ' Offers')" href="https://www.adopt.com/en/commercial-offers.html" title="Offers" >Offers</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1607', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny font-bold tracking-[1.77px] category-node" id="category-node-1607" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day.html', '1', ' Mother\'s Day')" style="color:#fb89d7;" href="https://www.adopt.com/en/mother-day.html" title="Mother's Day" >Mother's Day</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1472', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1472" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance.html', '1', ' Fragrance')" href="https://www.adopt.com/en/fragrance.html" title="Fragrance" >Fragrance</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1369', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1369" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care.html', '1', ' Body care')" href="https://www.adopt.com/en/body-care.html" title="Body care" >Body care</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1343', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1343" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare.html', '1', ' Facial care')" href="https://www.adopt.com/en/skincare.html" title="Facial care" >Facial care</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1443', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1443" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up.html', '1', ' Make-up')" href="https://www.adopt.com/en/make-up.html" title="Make-up" >Make-up</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1428', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny category-node" id="category-node-1428" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift.html', '1', ' Gift')" href="https://www.adopt.com/en/gift.html" title="Gift" >Gift</a></span></div> <div class="menu-item level-0 text-tiny text-center" @mouseenter="openSubNav( 'category-node-1667', $refs )" @mouseleave="openSubNav(0, $refs)"><span class="flex h-full items-center text-md bg-opacity-95 relative"> <a class="main-nav-link font-medium tracking-spaced-lg leading-none w-full py-3 px-2 lg:px-2.5 uppercase transition duration-300 level-0 text-tiny font-bold tracking-[1.77px] category-node" id="category-node-1667" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home.html', '1', ' House')" style="color:#46405a;" href="https://www.adopt.com/en/home.html" title="House" >House</a></span></div> <div class="flex justify-start menu-item"><div class="text-center my-auto"><span class="w-1 h-1 bg-anthracite rounded-full relative -top-0.5 inline-block mx-3"></span></div> <div class="level-0 text-tiny text-center" @mouseenter="hoverPanelActiveId = 'cms-node-681edf1a23653'" @mouseleave="hoverPanelActiveId = 0" ><span class="flex h-full items-center block text-md bg-opacity-95 relative"><span class="flex main-nav-link main-nav-link--cms cursor-pointer leading-none w-full py-3 px-2 lg:px-2.5 transition duration-300 level-0 text-smaller tracking-spaced-lg font-secondary font-bold">Our commitments</span></span></div> </div></nav> <button class="right-0 top-1/2 -translate-y-1/2 absolute hover:bg-anthracite-200 border border-lavender-lightest bg-white rounded-full p-1 text-pink transition duration-300" type="button" title="Next" x-cloak x-show="showNext" @click="nextMenu()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-3.5 h-auto filter drop-shadow-pink-lighter-icon" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </button></div><div id="subnav-wrapper" class="subnav-wrapper absolute z-50 left-0 right-0 px-5"> <div @mouseenter="openSubNav( 'category-node-1607', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1607', 'block' : hoverPanelActiveId === 'category-node-1607' }"><div class="shadow-lg bg-white"> <div class="flex p-12 gap-12"> <div class="flex gap-7"> <a href="https://www.adopt.com/en/mother-day/sets-mother-day.html" title="Boxes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/sets-mother-day.html', '2', 'Boxes')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1607"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/RS_FDM_PATTERN_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/RS_FDM_PATTERN_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Boxes" title="Boxes"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Boxes</span></a> <a href="https://www.adopt.com/en/mother-day/perfume-gifts-mother-day.html" title="Fragrance gifts" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/perfume-gifts-mother-day.html', '2', 'Fragrance gifts')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1607"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/RS_GLAMOURAMA_LOVEINFINITY_30ML_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/RS_GLAMOURAMA_LOVEINFINITY_30ML_1_2.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Fragrance gifts" title="Fragrance gifts"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Fragrance gifts</span></a> <a href="https://www.adopt.com/en/mother-day/body-gifts-mother-day.html" title="Body gifts " @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/body-gifts-mother-day.html', '2', 'Body gifts ')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1607"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/SOINS_POT_1_1__4.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/SOINS_POT_1_1__4.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Body gifts " title="Body gifts "><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Body gifts </span></a> <a href="https://www.adopt.com/en/mother-day/make-up-gifts-mother-day.html" title="Make-up gifts" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/mother-day/make-up-gifts-mother-day.html', '2', 'Make-up gifts')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1607"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_MUP_GLOWTOUCH_HIGHLIGHTER_3701429828608_2_3_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_MUP_GLOWTOUCH_HIGHLIGHTER_3701429828608_2_3_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Make-up gifts" title="Make-up gifts"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Make-up gifts</span></a> </div></div></div></div> <div @mouseenter="openSubNav( 'category-node-1472', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto " :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1472', 'block' : hoverPanelActiveId === 'category-node-1472' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Selections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/web-exclusive.html" title="Web exclusive" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/web-exclusive.html', '3', 'Web exclusive')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Web exclusive</span></a> <a href="https://www.adopt.com/en/fragrance/new-perfume.html" title="News" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/new-perfume.html', '3', 'News')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">News</span></a> <a href="https://www.adopt.com/en/fragrance/bestsellers-perfume.html" title="Bestsellers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/bestsellers-perfume.html', '3', 'Bestsellers')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Bestsellers</span></a> <a href="https://www.adopt.com/en/fragrance/discovery-format.html" title="Discovery format" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/discovery-format.html', '3', 'Discovery format')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Discovery format</span></a> <a href="https://www.adopt.com/en/fragrance/magic-touch.html" title="Magic Touch" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/magic-touch.html', '3', 'Magic Touch')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Magic Touch</span></a> <a href="https://www.adopt.com/en/fragrance/easter-gifts.html" title="Easter gifts" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/easter-gifts.html', '3', 'Easter gifts')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Easter gifts</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/fragrance/women-perfume.html" title="Women's perfume" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume.html', '2','Women\'s perfume')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Women's perfume</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/women-perfume/women-eau-de-parfum.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/women-eau-de-parfum.html', '3', 'Eau de parfum')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eau de parfum</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/women-perfume-set.html" title="Perfume set" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/women-perfume-set.html', '3', 'Perfume set')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Perfume set</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/travel-collection.html" title="The Travel Collection" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/travel-collection.html', '3', 'The Travel Collection')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">The Travel Collection</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/intense-perfume.html" title="The Intenses" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/intense-perfume.html', '3', 'The Intenses')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">The Intenses</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume/parfum-cheveux.html" title="Parfums Cheveux" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume/parfum-cheveux.html', '3', 'Parfums Cheveux')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Parfums Cheveux</span></a> <a href="https://www.adopt.com/en/fragrance/women-perfume.html" title="Women's perfume" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/women-perfume.html', '3', 'Women\'s perfume')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/fragrance/men-perfume.html" title="Men's fragrance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/men-perfume.html', '2','Men\'s fragrance')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Men's fragrance</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/men-perfume/men-eau-de-parfum.html" title="Eau de parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/men-perfume/men-eau-de-parfum.html', '3', 'Eau de parfum')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eau de parfum</span></a> <a href="https://www.adopt.com/en/fragrance/men-perfume/men-perfume-set.html" title="Perfume set" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/men-perfume/men-perfume-set.html', '3', 'Perfume set')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Perfume set</span></a> <a href="https://www.adopt.com/en/fragrance/men-perfume.html" title="Men's fragrance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/men-perfume.html', '3', 'Men\'s fragrance')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/fragrance/mixed-perfume.html" title="Mixed fragrance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/mixed-perfume.html', '2','Mixed fragrance')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Mixed fragrance</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/mixed-perfume/mixed-perfume-sets.html" title="Perfume box" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/mixed-perfume/mixed-perfume-sets.html', '3', 'Perfume box')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Perfume box</span></a> <a href="https://www.adopt.com/en/fragrance/mixed-perfume.html" title="Mixed fragrance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/mixed-perfume.html', '3', 'Mixed fragrance')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/fragrance/olfactory-universe.html" title="Olfactory universe" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe.html', '2','Olfactory universe')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Olfactory universe</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/cotton-and-softness.html" title="Delicate " @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/cotton-and-softness.html', '3', 'Delicate ')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Delicate </span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/woody-and-character.html" title="Woody" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/woody-and-character.html', '3', 'Woody')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Woody</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/freshness-and-citrus.html" title="Fresh" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/freshness-and-citrus.html', '3', 'Fresh')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Fresh</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/flowers-and-romanticism.html" title="Floral" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/flowers-and-romanticism.html', '3', 'Floral')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Floral</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/fruits-and-pleasure.html" title="Fruity" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/fruits-and-pleasure.html', '3', 'Fruity')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Fruity</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/delights-and-seduction.html" title="Gourmand" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/delights-and-seduction.html', '3', 'Gourmand')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gourmand</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe/sun-and-sensuality.html" title="Solar" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe/sun-and-sensuality.html', '3', 'Solar')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Solar</span></a> <a href="https://www.adopt.com/en/fragrance/olfactory-universe.html" title="Olfactory universe" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/olfactory-universe.html', '3', 'Olfactory universe')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/fragrance/accessoire-parfum.html" title="Accessoire Parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/accessoire-parfum.html', '2','Accessoire Parfum')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Accessoire Parfum</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/accessoire-parfum.html" title="Accessoire Parfum" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/accessoire-parfum.html', '3', 'Accessoire Parfum')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/fragrance/composez-votre-pack.html" title="3 parfums achetés = le 4ème offert" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/composez-votre-pack.html', '2','3 parfums achetés = le 4ème offert')" data-parent-id="category-node-1472" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >3 parfums achetés = le 4ème offert</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/fragrance/composez-votre-pack.html" title="3 parfums achetés = le 4ème offert" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance/composez-votre-pack.html', '3', '3 parfums achetés = le 4ème offert')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1472" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> </div></div> <div><div class="flex justify-between"><div class="text-pink uppercase text-xxs font-semibold tracking-spaced-lg mb-5"><a href="https://www.adopt.com/en/fragrance/scents.html">#olfactorynotes</a></div><div class="olfactive-notes__navigation text-pink flex hidden" x-ref="olfactiveNav"><button type="button" @click="prevOlfactive($refs)" class="olfactive-notes__navigation__item prev p-2.5 inline-block hover:text-lavender transition duration-300 -scale-x-100" :class="{'opacity-30' : sliderPosition === 'start'}" ><svg width="8" height="14" version="1.1" viewBox="0 0 8 14" xmlns="http://www.w3.org/2000/svg"><g transform="translate(.5385 .5385)" fill="none" fill-rule="evenodd" stroke-linecap="round"><path d="m6.4615 6.4615-6 6m6-6-6-6" stroke="currentColor" stroke-width="2"></path></g></svg></button> <button type="button" @click="nextOlfactive($refs)" class="olfactive-notes__navigation__item next px-2.5 py-2 inline-block hover:text-lavender transition duration-300" :class="{'opacity-30' : sliderPosition === 'end'}" ><svg width="8" height="14" version="1.1" viewBox="0 0 8 14" xmlns="http://www.w3.org/2000/svg"><g transform="translate(.5385 .5385)" fill="none" fill-rule="evenodd" stroke-linecap="round"><path d="m6.4615 6.4615-6 6m6-6-6-6" stroke="currentColor" stroke-width="2"></path></g></svg></button></div></div><div class="olfactive-notes w-full pb-1.25 overflow-hidden" @resize.window.debounce.100="isMobile = window.outerWidth < 768; loadSliderOlfactive($refs)" x-ref="olfactiveWrapper"><div class="olfactive-notes__content flex gap-2.5 w-fit relative" x-ref="olfactiveContent"> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/vanilla-perfume.html"> #Vanilla</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/orange-blossom.html"> #Orange blossom</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/rose.html"> #Rose</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/patchouly.html"> #Patchouli</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/monoi.html"> #Monoï</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/musk.html"> #Musk</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/amber.html"> #Amber</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/oud.html"> #Oud</a> <a class="btn btn-primary-pill btn-size-pill first:ml-5 md:first:ml-0 last:mr-5 md:last:mr-0 whitespace-nowrap" href="https://www.adopt.com/en/fragrance/scents/coco.html"> #Coco</a> </div></div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/en/kawaii-pop-eau-de-parfum-30-ml-8883701429841714-en.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/en/kawaii-pop-eau-de-parfum-30-ml-8883701429841714-en.html', 'Fragrance')" > <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_FDM_Overlay_KV_EN.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_FDM_Overlay_KV_EN.png" data-twic-transform="max=450" alt="Fragrance" title="Fragrance"/></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1369', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1369', 'block' : hoverPanelActiveId === 'category-node-1369' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Selections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/body-care/new-body-care.html" title="New" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/new-body-care.html', '3', 'New')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">New</span></a> <a href="https://www.adopt.com/en/body-care/best-sellers-body-care.html" title="Bestsellers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/best-sellers-body-care.html', '3', 'Bestsellers')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Bestsellers</span></a> <a href="https://www.adopt.com/en/body-care/the-exceptional-care.html" title="The exceptional care" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/the-exceptional-care.html', '3', 'The exceptional care')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">The exceptional care</span></a> <a href="https://www.adopt.com/en/body-care/gift-ideas-body-care.html" title="Gift ideas" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/gift-ideas-body-care.html', '3', 'Gift ideas')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gift ideas</span></a> <a href="https://www.adopt.com/en/body-care/men-body-care.html" title="Men care" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/men-body-care.html', '3', 'Men care')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Men care</span></a> <a href="https://www.adopt.com/en/body-care/oriental-beauty.html" title="Oriental beauty" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/oriental-beauty.html', '3', 'Oriental beauty')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Oriental beauty</span></a> <a href="https://www.adopt.com/en/body-care/bath-range.html" title="Bath range" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/bath-range.html', '3', 'Bath range')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Bath range</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"> <a href="https://www.adopt.com/en/body-care/body-care-by-product.html" title="By product" class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block" >By product</a> <div class="gap-2.5 mb-2.5 flex flex-col"> <a href="https://www.adopt.com/en/body-care/body-care-by-product/perfumed-shower-gel.html" title="Perfumed shower gel" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/perfumed-shower-gel.html', '3', 'Perfumed shower gel')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Perfumed shower gel</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-cream-lotion.html" title="Body cream & milk" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-cream-lotion.html', '3', 'Body cream & milk')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Body cream & milk</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/hand-care.html" title="Hand care" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/hand-care.html', '3', 'Hand care')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Hand care</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-scrub.html" title="Body scrub" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-scrub.html', '3', 'Body scrub')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Body scrub</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/scented-mist.html" title="Scented mist" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/scented-mist.html', '3', 'Scented mist')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Scented mist</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product.html" title="By product" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product.html', '3', 'By product')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"> <div class="h-4.5 mb-6"></div> <div class="gap-2.5 mb-2.5 flex flex-col"> <a href="https://www.adopt.com/en/body-care/body-care-by-product/deodorant.html" title="Deodorant" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/deodorant.html', '3', 'Deodorant')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Deodorant</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-oil.html" title="Body oil" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-oil.html', '3', 'Body oil')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Body oil</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-gel.html" title="Body jelly" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-gel.html', '3', 'Body jelly')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Body jelly</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/bombe-de-bain.html" title="Bath bombs" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/bombe-de-bain.html', '3', 'Bath bombs')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Bath bombs</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-product/body-accessory.html" title="Body accessory" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-product/body-accessory.html', '3', 'Body accessory')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Body accessory</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/body-care/body-care-by-concern.html" title="By concern" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern.html', '2','By concern')" data-parent-id="category-node-1369" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >By concern</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/moisturising-body-care.html" title="Moisturising" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/moisturising-body-care.html', '3', 'Moisturising')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Moisturising</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/nourishing-body-care.html" title="Nourishing" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/nourishing-body-care.html', '3', 'Nourishing')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nourishing</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/brightening-body-care.html" title="Radiance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/brightening-body-care.html', '3', 'Radiance')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Radiance</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/exfoliating-body-care.html" title="Exfoliating" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/exfoliating-body-care.html', '3', 'Exfoliating')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Exfoliating</span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern/cleansing-body-care.html" title="Cleansing " @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern/cleansing-body-care.html', '3', 'Cleansing ')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Cleansing </span></a> <a href="https://www.adopt.com/en/body-care/body-care-by-concern.html" title="By concern" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/body-care-by-concern.html', '3', 'By concern')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/body-care/perfumed-care-ritual.html" title="Perfumed care ritual" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual.html', '2','Perfumed care ritual')" data-parent-id="category-node-1369" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Perfumed care ritual</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/maestro.html" title="Maestro" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/maestro.html', '3', 'Maestro')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Maestro</span></a> <a href="https://www.adopt.com/en/catalog/category/view/s/wonderful/id/1596/" title="Wonderful" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/catalog/category/view/s/wonderful/id/1596/', '3', 'Wonderful')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Wonderful</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/golden-queen.html" title="Golden Queen" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/golden-queen.html', '3', 'Golden Queen')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Golden Queen</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/coeur-a-coeur.html" title="Coeur à coeur" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/coeur-a-coeur.html', '3', 'Coeur à coeur')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Coeur à coeur</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/rose-noire.html" title="Rose noire" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/rose-noire.html', '3', 'Rose noire')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Rose noire</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/vanille-bourbon.html" title="Vanille Bourbon" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/vanille-bourbon.html', '3', 'Vanille Bourbon')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Vanille Bourbon</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/sublimissime.html" title="Sublimissime" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/sublimissime.html', '3', 'Sublimissime')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Sublimissime</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/starnight.html" title="Starnight" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/starnight.html', '3', 'Starnight')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Starnight</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual/love-mood.html" title="Love mood" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual/love-mood.html', '3', 'Love mood')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Love mood</span></a> <a href="https://www.adopt.com/en/body-care/perfumed-care-ritual.html" title="Perfumed care ritual" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care/perfumed-care-ritual.html', '3', 'Perfumed care ritual')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1369" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> </div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/en/catalog/category/view/s/wonderful/id/1596" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/en/catalog/category/view/s/wonderful/id/1596', 'Body care')" > <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_SKINCARE_Overlay_Rituel_Wonderful_01_EN.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_SKINCARE_Overlay_Rituel_Wonderful_01_EN.png" data-twic-transform="max=450" alt="Body care" title="Body care"/></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1343', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1343', 'block' : hoverPanelActiveId === 'category-node-1343' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Selections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/skincare/best-sellers-skincare.html" title="Best sellers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/best-sellers-skincare.html', '3', 'Best sellers')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Best sellers</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"> <a href="https://www.adopt.com/en/skincare/skincare-by-product.html" title="By product" class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block" >By product</a> <div class="gap-2.5 mb-2.5 flex flex-col"> <a href="https://www.adopt.com/en/skincare/skincare-by-product/lip-balm.html" title="Lip balm" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/lip-balm.html', '3', 'Lip balm')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Lip balm</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/make-up-removers.html" title="Make-up removers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/make-up-removers.html', '3', 'Make-up removers')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Make-up removers</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/cleansers.html" title="Cleansers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/cleansers.html', '3', 'Cleansers')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Cleansers</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/masks-and-scrubs.html" title="Masks & Scrubs" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/masks-and-scrubs.html', '3', 'Masks & Scrubs')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Masks & Scrubs</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product.html" title="By product" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product.html', '3', 'By product')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"> <div class="h-4.5 mb-6"></div> <div class="gap-2.5 mb-2.5 flex flex-col"> <a href="https://www.adopt.com/en/skincare/skincare-by-product/serums.html" title="Serums" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/serums.html', '3', 'Serums')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Serums</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/eye-contour-skincare.html" title="Eye contour care" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/eye-contour-skincare.html', '3', 'Eye contour care')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eye contour care</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-product/day-and-night-cream.html" title="Day and night cream" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-product/day-and-night-cream.html', '3', 'Day and night cream')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Day and night cream</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/skincare/skincare-by-concern.html" title="By concern" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-concern.html', '2','By concern')" data-parent-id="category-node-1343" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >By concern</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/skincare/skincare-by-concern/moisture-and-radiance.html" title="Moisture & Radiance" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-concern/moisture-and-radiance.html', '3', 'Moisture & Radiance')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Moisture & Radiance</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-concern/purifying-and-matifying.html" title="Purifying & Matifying" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-concern/purifying-and-matifying.html', '3', 'Purifying & Matifying')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Purifying & Matifying</span></a> <a href="https://www.adopt.com/en/skincare/skincare-by-concern.html" title="By concern" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare/skincare-by-concern.html', '3', 'By concern')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1343" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> </div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/en/skincare/skincare-by-product.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/en/skincare/skincare-by-product.html', 'Facial care')" > <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_SKINCARE_Overlay_01_EN.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_SKINCARE_Overlay_01_EN.png" data-twic-transform="max=450" alt="Facial care" title="Facial care"/></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1443', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1443', 'block' : hoverPanelActiveId === 'category-node-1443' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Selections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/make-up/new-make-up.html" title="News" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/new-make-up.html', '3', 'News')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">News</span></a> <a href="https://www.adopt.com/en/make-up/best-sellers-make-up.html" title="Bestsellers" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/best-sellers-make-up.html', '3', 'Bestsellers')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Bestsellers</span></a> </div></div> <div class="gap-10 w-fit columns-4"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/make-up/face-make-up.html" title="Complexion" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up.html', '2','Complexion')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Complexion</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/make-up/face-make-up/foundation.html" title="Foundation" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/foundation.html', '3', 'Foundation')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Foundation</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/concealer.html" title="Concealer & corrector" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/concealer.html', '3', 'Concealer & corrector')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Concealer & corrector</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/face-primer-setting-spray.html" title="Face primer & setting spray" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/face-primer-setting-spray.html', '3', 'Face primer & setting spray')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Face primer & setting spray</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/blush.html" title="Blush" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/blush.html', '3', 'Blush')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Blush</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/powder.html" title="Powder" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/powder.html', '3', 'Powder')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Powder</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up/face-accessories.html" title="Accessories" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up/face-accessories.html', '3', 'Accessories')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessories</span></a> <a href="https://www.adopt.com/en/make-up/face-make-up.html" title="Complexion" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/face-make-up.html', '3', 'Complexion')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/make-up/eyes-make-up.html" title="Eyes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up.html', '2','Eyes')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Eyes</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/make-up/eyes-make-up/mascara.html" title="Mascara" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/mascara.html', '3', 'Mascara')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Mascara</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eyeliner.html" title="Eyeliner" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eyeliner.html', '3', 'Eyeliner')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eyeliner</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eye-pencil.html" title="Eye pencil" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eye-pencil.html', '3', 'Eye pencil')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eye pencil</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eyeshadow.html" title="Eyeshadow" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eyeshadow.html', '3', 'Eyeshadow')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eyeshadow</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eyebrow.html" title="Eyebrow" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eyebrow.html', '3', 'Eyebrow')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Eyebrow</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eye-palette.html" title="Palette" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eye-palette.html', '3', 'Palette')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Palette</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up/eye-accessories.html" title="Accessories" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up/eye-accessories.html', '3', 'Accessories')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessories</span></a> <a href="https://www.adopt.com/en/make-up/eyes-make-up.html" title="Eyes" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/eyes-make-up.html', '3', 'Eyes')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/make-up/lips-make-up.html" title="Lips" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up.html', '2','Lips')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Lips</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/make-up/lips-make-up/lipstick.html" title="Lipstick" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up/lipstick.html', '3', 'Lipstick')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Lipstick</span></a> <a href="https://www.adopt.com/en/make-up/lips-make-up/gloss.html" title="Gloss" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up/gloss.html', '3', 'Gloss')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gloss</span></a> <a href="https://www.adopt.com/en/make-up/lips-make-up/lip-balm.html" title="Lip balm" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up/lip-balm.html', '3', 'Lip balm')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Lip balm</span></a> <a href="https://www.adopt.com/en/make-up/lips-make-up.html" title="Lips" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/lips-make-up.html', '3', 'Lips')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/make-up/nails-make-up.html" title="Nails" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/nails-make-up.html', '2','Nails')" data-parent-id="category-node-1443" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >Nails</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/make-up/nails-make-up/nail-polish.html" title="Nail polish" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/nails-make-up/nail-polish.html', '3', 'Nail polish')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Nail polish</span></a> <a href="https://www.adopt.com/en/make-up/nails-make-up/nail-accessories.html" title="Accessories" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/nails-make-up/nail-accessories.html', '3', 'Accessories')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Accessories</span></a> <a href="https://www.adopt.com/en/make-up/nails-make-up.html" title="Nails" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up/nails-make-up.html', '3', 'Nails')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1443" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> </div></div></div> <div class="max-w-[25%]"> <a href="https://www.adopt.com/en/essential-color-shadow-eyeshadow-8883701429841140-en.html" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/en/essential-color-shadow-eyeshadow-8883701429841140-en.html', 'Make-up')" > <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_FDM_Maquillage_Overlay_EN_2_1.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_FDM_Maquillage_Overlay_EN_2_1.png" data-twic-transform="max=450" alt="Make-up" title="Make-up"/></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1428', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1428', 'block' : hoverPanelActiveId === 'category-node-1428' }"><div class="shadow-lg bg-white"> <div class="flex"><div class="pt-12 px-12 flex-1 max-w-[75%] pb-5"><div class="flex items-start gap-28"> <div class="w-fit"><span class="uppercase text-pink text-xxs tracking-widest font-semibold mb-6 block">Selections</span> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/gift/gift-our-favorites.html" title="Our favorites" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-our-favorites.html', '3', 'Our favorites')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Our favorites</span></a> <a href="https://www.adopt.com/en/gift/exclu-web.html" title="Exclu web" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/exclu-web.html', '3', 'Exclu web')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Exclu web</span></a> <a href="https://www.adopt.com/en/gift/gift-wrapping.html" title="Gift wrapping" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-wrapping.html', '3', 'Gift wrapping')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428"><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Gift wrapping</span></a> <a href="https://www.adopt.com/en/guide-cadeaux-adopt" title="Gifts guide " class="text-xxs font-medium uppercase gradient-text-purple tracking-[2.57px]" data-parent-id="category-node-1428" >Gifts guide </a> </div></div> <div class="gap-10 w-fit columns-2"> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/gift/gift-by-recipient.html" title="By recipient" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient.html', '2','By recipient')" data-parent-id="category-node-1428" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >By recipient</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-her.html" title="Woman" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-her.html', '3', 'Woman')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Woman</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-him.html" title="Men" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-him.html', '3', 'Men')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Men</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-them.html" title="Mixed" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-them.html', '3', 'Mixed')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Mixed</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient/gift-for-kids.html" title="Child" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient/gift-for-kids.html', '3', 'Child')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Child</span></a> <a href="https://www.adopt.com/en/gift/gift-by-recipient.html" title="By recipient" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-recipient.html', '3', 'By recipient')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> <div class="break-inside-avoid-column"><a href="https://www.adopt.com/en/gift/gift-by-price.html" title="By price" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price.html', '2','By price')" data-parent-id="category-node-1428" class="uppercase text-pink text-xxs tracking-spaced-lg font-semibold mb-6 block" >By price</a> <div class="flex flex-col gap-2.5 items-start mb-10"> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-under-10-euros.html" title="Under 10€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-under-10-euros.html', '3', 'Under 10€')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Under 10€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-between-10-and-20-euros.html" title="Between 10€ and 20€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-between-10-and-20-euros.html', '3', 'Between 10€ and 20€')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Between 10€ and 20€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-between-20-and-30-euros.html" title="Between 20€ and 30€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-between-20-and-30-euros.html', '3', 'Between 20€ and 30€')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Between 20€ and 30€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price/gift-over-30-euros.html" title="Over 30€" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price/gift-over-30-euros.html', '3', 'Over 30€')" class="block text-anthracite text-sm group relative pb-1 group" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">Over 30€</span></a> <a href="https://www.adopt.com/en/gift/gift-by-price.html" title="By price" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift/gift-by-price.html', '3', 'By price')" class="text-xxs uppercase font-bold group tracking-spaced text-anthracite inline-block" data-parent-id="category-node-1428" ><span class="relative pb-1 after:h-px after:bg-anthracite after:w-0 after:absolute after:left-0 after:bottom-0 after:transition-all after:duration-300 group-hover:after:w-full">View All</span></a> </div></div> </div></div></div> <div class=" "> <a href="https://www.adopt.com/en/guide-cadeaux-adopt" @click.prevent="clickMenuBannerEvent('https://www.adopt.com/en/guide-cadeaux-adopt', 'Gift')" > <img class="h-full" loading="lazy" src="https://adopt.twic.pics/media/catalog/category/ECOMM_FDM_Overlay_Coffret_01_EN.png?twic=v1/output=preview" data-twic-src="image:media/catalog/category/ECOMM_FDM_Overlay_Coffret_01_EN.png" data-twic-transform="max=450" alt="Gift" title="Gift"/></a> </div></div> </div></div> <div @mouseenter="openSubNav( 'category-node-1667', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'category-node-1667', 'block' : hoverPanelActiveId === 'category-node-1667' }"><div class="shadow-lg bg-white"> <div class="flex p-12 gap-12"> <div class="flex gap-7"> <a href="https://www.adopt.com/en/home/scented-candle.html" title="Scented candle" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home/scented-candle.html', '2', 'Scented candle')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1667"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_CANDLE_JARDINDESROSES_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Scented candle" title="Scented candle"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Scented candle</span></a> <a href="https://www.adopt.com/en/home/home-fragrances.html" title="Home fragrances" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home/home-fragrances.html', '2', 'Home fragrances')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1667"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/category/LIFE_HOME_MULTI_DIFFUSER_1.jpg" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Home fragrances" title="Home fragrances"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Home fragrances</span></a> <a href="https://www.adopt.com/en/home/essential-oils.html" title="Essential oils" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/home/essential-oils.html', '2', 'Essential oils')" class="block relative group text-center flex flex-col flex-1" data-parent-id="category-node-1667"> <img loading="lazy" src="https://adopt.twic.pics/media/catalog/category/life_care_danstesreves_synergie_1_1.webp?twic=v1/output=preview" data-twic-src="image:media/catalog/category/life_care_danstesreves_synergie_1_1.webp" class="w-full" data-twic-transform="cover-max=500" width="205" height="296" alt="Essential oils" title="Essential oils"><span class="text-anthracite text-center font-bold tracking-spaced text-xxs uppercase mt-5 transition duration-300 group-hover:text-pink">Essential oils</span></a> </div></div></div></div> <div @mouseenter="openSubNav( 'cms-node-681edf1a23653', $refs )" @mouseleave="openSubNav(0, $refs)" class="subnav-content hidden overflow-y-auto w-fit m-auto" :class="{ 'hidden' : hoverPanelActiveId !== 'cms-node-681edf1a23653', 'block' : hoverPanelActiveId === 'cms-node-681edf1a23653' }"><div class="shadow-lg bg-white"><div class="p-1 flex items-stretch gap-5 w-full" x-data="initSliderMenuPage(4)"> <div class="overflow-hidden flex-1"><ul class="flex justify-between transition-all duration-300 gap-1" :style="calcSlider()"> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/hummingbird-programs', '2', 'The Hummingbird Programs')" href="https://www.adopt.com/en/hummingbird-programs" title="The Hummingbird Programs"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/carr__2.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/carr__2.jpg" data-twic-transform="max=500" alt="The Hummingbird Programs" title="The Hummingbird Programs"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">The Hummingbird Programs</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/our-commitments', '2', 'Our commitments')" href="https://www.adopt.com/en/our-commitments" title="Our commitments"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/nos_engagements.jpg_1__0_0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/nos_engagements.jpg_1__0_0.jpg" data-twic-transform="max=500" alt="Our commitments" title="Our commitments"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">Our commitments</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/the-adopt-universe', '2', 'The adopt universe')" href="https://www.adopt.com/en/the-adopt-universe" title="The adopt universe"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/Adopt_0505_Capots_2_Invio_1.png?twic=v1/output=preview" data-twic-src="image:media/picto/image/Adopt_0505_Capots_2_Invio_1.png" data-twic-transform="max=500" alt="The adopt universe" title="The adopt universe"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">The adopt universe</button></a></li> <li class="w-1/4"><a class="block group relative" @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/know-how', '2', 'Know-how')" href="https://www.adopt.com/en/know-how" title="Know-how"><img loading="lazy" class="w-full rounded-[10px] h-[440px] object-cover object-center" src="https://adopt.twic.pics/media/picto/image/savoir-faire-adopt_1_1_0.jpg?twic=v1/output=preview" data-twic-src="image:media/picto/image/savoir-faire-adopt_1_1_0.jpg" data-twic-transform="max=500" alt="Know-how" title="Know-how"><button class="absolute bottom-5 btn btn-primary-white-cta min-h-[60px] mx-auto left-0 right-0 w-fit">Know-how</button></a></li> </ul></div></div></div></div></div></div><script> 'use strict'; const initMenuDesktop_681edf1a22f28 = () => { return { hoverPanelActiveId: null, isOpenSubNav: false, isMobile: window.outerWidth < 768, hasOlfactiveSlider: false, lastOlfactiveShow: 0, childOlfactive: [], numberChild: 0, sliderPosition: 'start', showPrevious: false, showNext: false, index: 0, calcIndex: 0, init() { this.slider = this.$refs.slider; this.items = this.$refs.slider.querySelectorAll('.menu-item'); this.maxSlide = this.items.length; this.resizeMenu(); }, resizeMenu() { this.$refs.slider.style.width = 'auto'; let totalWidth = this.$refs.slider.offsetWidth; if(this.$refs.slider.scrollWidth > this.$refs.slider.offsetWidth){ for (let i = 0; i < this.maxSlide; i++) { if (this.items[i].offsetWidth > totalWidth) { this.$refs.slider.style.width = (this.$refs.slider.offsetWidth - totalWidth) + 'px'; this.showNext = true; break; } totalWidth = totalWidth - this.items[i].offsetWidth; } } else { this.showNext = false; } this.index = 0; this.$refs.slider.scrollLeft = 0; this.showPrevious = false; }, nextMenu() { if (this.index === 0) { let totalWidth = this.$refs.slider.offsetWidth; for (let i = this.index; i < this.maxSlide; i++) { if (totalWidth - this.items[i].offsetWidth < 0) { break; } totalWidth = totalWidth - this.items[i].offsetWidth; this.index += 1; this.calcIndex = i; } } else { this.index += 1; } this.$refs.slider.scrollLeft += this.items[this.index].offsetWidth; if (this.index === this.maxSlide - 1) { this.showNext = false; } else { this.showNext = true; } if (this.index != this.calcIndex) { this.showPrevious = true; } }, prevMenu() { this.$refs.slider.scrollLeft -= this.items[this.index].offsetWidth; this.index -= 1; if (this.index === this.calcIndex) { this.showPrevious = false; } else { this.showPrevious = true; } if (this.index === this.maxSlide - 1) { this.showNext = false; } else { this.showNext = true; } }, setActiveMenu(menuNode) { Array.from(menuNode.querySelectorAll('a')).filter(link => { return link.href === window.location.href.split('?')[0]; }).map(item => { if (item.classList.contains('main-nav-link')) { item.classList.add('current'); } else { const parentId = item.getAttribute('data-parent-id'); const element = document.querySelector('#' + parentId); element && element.classList.add('current'); } }); }, clickMenuEntryEvent(url, level, label, blank = false) { window.dataLayer?.push({ 'event': 'clicMenuniveau' + level, 'text': label }); if (blank) { window.open(url, '_blank'); } else { window.location.href = url } }, clickMenuBannerEvent(url, label) { window.dataLayer?.push({ 'event': 'clicMenuBannière', 'text': label }); window.location.href = url }, openSubNav(idCat, $refs) { this.hoverPanelActiveId = idCat; const subnavWrapper = document.getElementById('subnav-wrapper'); const subnavContent = document.querySelectorAll('.subnav-content'); subnavWrapper.style.top = $refs.navDesktop.offsetHeight + 10 + 'px'; if (idCat !== 0) { this.isOpenSubNav = true; subnavWrapper.style.maxHeight = 'calc(100vh - ' + subnavWrapper.getBoundingClientRect().top + 'px - 2px)'; subnavContent.forEach(item => { item.style.maxHeight = 'calc(100vh - ' + subnavWrapper.getBoundingClientRect().top + 'px - 2px)'; this.loadSliderOlfactive($refs); }) window.dispatchEvent( new CustomEvent('open-menu-subnav') ); } else { this.isOpenSubNav = false; subnavWrapper.style.maxHeight = 'unset'; subnavContent.forEach(item => { item.style.maxHeight = 'unset'; }); window.dispatchEvent( new CustomEvent('close-menu-subnav') ); } }, loadSliderOlfactive($refs) { if ($refs.olfactiveContent) { if ($refs.olfactiveContent.offsetWidth > $refs.olfactiveWrapper.offsetWidth && !this.isMobile) { this.hasOlfactiveSlider = true; $refs.olfactiveNav.classList.remove('hidden'); } $refs.olfactiveContent.dataset.translate = 0; let child = [] $refs.olfactiveContent.childNodes.forEach(item => { if (item.nodeType === 1) { this.childOlfactive.push(item); if ((item.offsetLeft + item.offsetWidth) > $refs.olfactiveWrapper.offsetWidth) { item.classList.add('no-showed') child.push(item); } } }) this.numberChild = this.childOlfactive.length - 1; this.lastOlfactiveShow = child[0]; } }, prevOlfactive($refs) { if ($refs.olfactiveContent.dataset.translate > 0 && this.lastOlfactiveShow.previousElementSibling !== null) { this.lastOlfactiveShow = this.lastOlfactiveShow.previousElementSibling; let translation = $refs.olfactiveContent.dataset.translate - this.lastOlfactiveShow.previousElementSibling.offsetWidth - 10; $refs.olfactiveContent.style.marginLeft = "-" + translation + "px"; $refs.olfactiveContent.dataset.translate = translation; this.sliderPosition = null } else { $refs.olfactiveContent.style.marginLeft = 0; $refs.olfactiveContent.dataset.translate = 0; this.sliderPosition = 'start'; } }, nextOlfactive($refs) { if (this.lastOlfactiveShow.nextElementSibling !== null) { this.lastOlfactiveShow = this.lastOlfactiveShow.nextElementSibling; let translation = this.lastOlfactiveShow.offsetWidth - ($refs.olfactiveWrapper.offsetWidth - this.lastOlfactiveShow.offsetLeft) + 10 $refs.olfactiveContent.style.marginLeft = "-" + translation + "px"; $refs.olfactiveContent.dataset.translate = translation; this.sliderPosition = null } else { this.sliderPosition = "end" } } } } function initSliderMenuPage(numberSlide) { return { currentSlide: 1, sliderPosition: 0, widthWrapper: 100, gap: 24, next() { if (this.currentSlide < numberSlide && this.currentSlide < (numberSlide - 3)) { this.currentSlide = this.currentSlide + 1; } else { this.currentSlide = 1; } }, prev() { if (this.currentSlide <= 1) { this.currentSlide = numberSlide - 3; } else { this.currentSlide = this.currentSlide - 1; } }, calcSlider() { this.sliderPosition = (100 / 4) * this.currentSlide this.widthWrapper = (100 / 4) * numberSlide; return 'width: calc(' + this.widthWrapper + '%); margin-left: calc(-' + this.sliderPosition + '% + 25%)'; }, clickMenuEntryEvent(url, level, label) { window.dataLayer?.push({ 'event': 'clicMenuniveau' + level, 'text': label }); window.location.href = url } } }</script> <div class="flex items-center order-3 gap-2.5 menu-bp:gap-0.5"><!--Search Icon--><button id="menu-search-icon" class="hidden md:inline-block p-1 menu-bp:py-2 menu-bp:pl-3.75 menu-bp:pr-[36px] menu-bp:pr-[66px] no-underline rounded-full text-lavender hover:text-anthracite-400 menu-bp:border menu-bp:border-lavender menu-bp:border-opacity-30" :class="{ 'hidden': !isScrolled && !noSearchOpenMobile }" @click.prevent="toggleSearch()" @click.prevent.stop="$dispatch('close-mini-cart',{});" ><span class="flex items-center justify-center"><span class="sr-only label">Search</span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="search" version="1.1" x="0px" y="0px" viewBox="0 0 23.9 23.9" enable-background="new 0 0 23.9 23.9" xml:space="preserve" class=""w-auto h-5.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.9,19.4c5.2,0,9.4-4.2,9.4-9.4 c0-5.2-4.2-9.4-9.4-9.4c-5.2,0-9.4,4.2-9.4,9.4C0.5,15.2,4.7,19.4,9.9,19.4z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M23.4,23.4l-6-6"/> <title/></svg> </span></button> <!-- Stores --><a aria-label="stores" class="inline-block no-underline p-1 md:p-2 text-lavender hover:text-anthracite-400 flex items-center justify-center" @click.prevent="clickIconHeaderEvent('Store locator', 'https://www.adopt.com/en/store-locator')" href="https://www.adopt.com/en/store-locator"> <span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="pin-shop" version="1.1" x="0px" y="0px" viewBox="0 0 21.3 23.9" enable-background="new 0 0 21.3 23.9" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.7,0.5c2.2,0,4.3,0.6,6.2,1.8 c4.8,3,5.2,9.2,1.3,13.7c-2.3,2.7-4.8,5.2-7.5,7.4c-2.7-2.2-5.3-4.7-7.5-7.4C-0.7,11.4-0.4,5.3,4.4,2.3C6.3,1.1,8.5,0.5,10.7,0.5z M10.7,5.2c-2.4,0-4.4,1.9-4.4,4.3c0,2.4,1.9,4.3,4.4,4.3c2.4,0,4.4-1.9,4.4-4.3C15,7.1,13.1,5.2,10.7,5.2z"/> <title/></svg> </span></a> <!-- Wishlist --><a aria-label="wishlist" class="hidden md:flex p-1 no-underline md:p-2 text-lavender hover:text-anthracite-400 items-center justify-center w-fit h-fit" href="https://www.adopt.com/en/wishlist" @click.prevent="clickIconHeaderEvent('wishlist', 'https://www.adopt.com/en/wishlist')" > <span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite" version="1.1" x="0px" y="0px" viewBox="0 0 26.3 22.8" enable-background="new 0 0 26.3 22.8" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="0.948" d="M13.2,22.3c-24.4-13.5-7.3-28.2,0-18.9C20.5-5.9,37.6,8.8,13.2,22.3z"/> <title/></svg> </span></a> <!--Customer Icon & Dropdown--> <script> function customerLocalStorage() { let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage'); let customer = ""; browserStorage = JSON.parse(browserStorage); if (browserStorage) { customer = browserStorage.customer; } else { customer = undefined; } return customer; } function initCustomerNav() { return { open: false, immersiveColor: '', isScrolled: false, name: '', isMobile: window.outerWidth < 768, movementInterval: null, openNav($event) { if (this.isMobile) { window.location.href = $event.target.href; } else { this.open = !this.open; if (this.open) { window.dispatchEvent( new CustomEvent('open-mini-cart') ); } } }, init($refs) { if (window.pageYOffset > 0) { this.isScrolled = true; } let intervalCustomer = setInterval(() => { if (customerLocalStorage() !== undefined) { this.name = customerLocalStorage().firstname; clearInterval(intervalCustomer); } }, 500) this.svgClean($refs); if (!localStorage.getItem("animationLoginPellet") || (((localStorage.getItem("animationLoginPellet") / 1000) - (new Date().getTime() / 1000)) < -86400)) { this.animationPellet(); } }, clickIconHeaderEvent(label) { localStorage.setItem("animationLoginPellet", new Date().getTime()); clearInterval(this.movementInterval); window.dataLayer?.push({ 'event': 'clic-icon-header', 'text': label }); }, scroll($refs) { this.isScrolled = window.pageYOffset > 0 }, svgClean($refs) { if (this.$refs.reassurance) { this.$refs.reassurance.querySelectorAll('svg').forEach(icon => { icon.removeAttribute('width'); icon.removeAttribute('height') }) } if (this.$refs.nav) { this.$refs.nav.querySelectorAll('svg').forEach(icon => { icon.removeAttribute('width'); icon.removeAttribute('height') }) } }, closeNav() { this.open = false; window.dispatchEvent( new CustomEvent('close-mini-cart') ); }, movementPellet() { this.$refs.pellet.style.top = '20%' setTimeout(() => { this.$refs.pellet.style.top = '70%' }, "150"); setTimeout(() => { this.$refs.pellet.style.top = '20%' }, "300"); setTimeout(() => { this.$refs.pellet.style.top = '50%' }, "450"); }, animationPellet() { clearInterval(this.movementInterval); this.movementInterval = setInterval(() => { this.movementPellet() }, 6000) }, } }</script><div x-data="initCustomerNav()" x-init="init($refs)" @scroll.window.debounce.50ms="scroll($refs)" @resize.window.debounce.100="isMobile = window.outerWidth < 768;" class="relative inline-block" ><a href="https://www.adopt.com/en/customer/account" type="button" class="block no-button-appearance text-lavender hover:text-anthracite" @click.prevent.stop="openNav($event); clickIconHeaderEvent('My Account')" aria-haspopup="true" aria-expanded="true" aria-label="My Account" > <span class="pointer-events-none p-0.5 md:p-1.5 flex justify-center items-center"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="compte" version="1.1" x="0px" y="0px" viewBox="0 0 22.8 23.9" enable-background="new 0 0 22.8 23.9" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.4,11.9c3.2,0,5.7-2.6,5.7-5.7 s-2.6-5.7-5.7-5.7C8.3,0.4,5.7,3,5.7,6.2S8.3,11.9,11.4,11.9z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M22.3,23.4c-1.5-4.7-5.9-7.9-10.9-7.9 S2,18.7,0.5,23.4H22.3z"/> <title/></svg> </span> <span x-ref="pellet" class="block absolute pointer-events-none w-2 h-2 bg-pink rounded-full top-1/2 right-[15%] transition-all duration-300"></span> </a> <nav class="account-pop absolute right-0 z-40 hidden w-40 bg-white w-fit mt-2.5 md:min-w-[370px] border border-lilac text-anthracite" :class="{ 'hidden' : (!open && !isMobile) || isMobile }" @click.away.outside="closeNav()" aria-labelledby="customer-menu" > <div class="p-5 md:py-7.5 md:px-9 text-anthracite"><div class="pb-1.25 font-secondary font-bold text-2.75xl md:text-4.5xl tracking-spaced">Hello</div><div class="text-anthracite-400 text-smaller md:text-base md:leading-[21px]">Log in for a better experience</div><div class="pt-5 flex gap-2 items-center"><a class="btn btn-secondary px-5 py-1.25 text-xxs w-fit whitespace-nowrap" onclick="hyva.setCookie && hyva.setCookie( 'login_redirect', window.location.href, 1 )" href="https://www.adopt.com/en/customer/account/index">Log in</a> <a class="btn btn-secondary px-5 py-1.25 text-xxs w-fit whitespace-nowrap" href="https://www.adopt.com/en/customer/account/create" >Create an Account</a> </div><div x-ref="reassurance" class="flex flex-col gap-5.5 pt-7.5"><div class="flex items-center gap-5 uppercase text-xs-tiny md:text-tiny font-medium tracking-spaced"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="easy" version="1.1" x="0px" y="0px" viewBox="0 0 26.6 23.6" enable-background="new 0 0 26.6 23.6" xml:space="preserve" class="text-lavender w-5 min-w-[20px] h-auto" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.2,9.5l5-8c0.4-0.6,1.1-1,1.9-1 c0.6,0,1.2,0.2,1.6,0.6c0.4,0.4,0.7,1,0.7,1.6v5.7h8.6c0.6,0,1.3,0.3,1.7,0.8c0.4,0.5,0.6,1.1,0.5,1.8l-1.6,10.2 c-0.1,1.1-1.1,2-2.2,2H9.4c-0.6,0-1.2-0.1-1.8-0.4L6.2,22"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M6.2,9.5v12.4"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1.5,9.5h4.7v12.4H1.5c-0.5,0-1-0.4-1-1V10.5 C0.5,10,0.9,9.5,1.5,9.5z"/> <title/></svg> Simple & fast</div><div class="flex items-center gap-5 uppercase text-xs-tiny md:text-tiny font-medium tracking-spaced"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="colis-shipping" version="1.1" x="0px" y="0px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="text-lavender w-5 min-w-[20px] h-auto" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.2,23.5c1,0,1.8-0.8,1.8-1.8 S11.2,20,10.2,20s-1.8,0.8-1.8,1.8S9.3,23.5,10.2,23.5z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M18.2,23.5c1,0,1.8-0.8,1.8-1.8 S19.2,20,18.2,20s-1.8,0.8-1.8,1.8S17.2,23.5,18.2,23.5z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14.5,5.9c-0.7-3-3.4-5.2-6.4-5.4 C4.9,0.3,2.1,2.1,1,5s-0.2,6.2,2.2,8.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.6,7.6l2.7-2.7"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.1,16.4v-1.8H8.5c-2,0-3.5,1.6-3.5,3.5 v3.5"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M23.5,21.7v-8.9c0-1-0.8-1.8-1.8-1.8h-8.9 c-1,0-1.8,0.8-1.8,1.8v3.5"/> <title/></svg> Track your orders</div><div class="flex items-center gap-5 uppercase text-xs-tiny md:text-tiny font-medium tracking-spaced"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="gift-box" version="1.1" x="0px" y="0px" viewBox="0 0 23.9 19.5" enable-background="new 0 0 23.9 19.5" xml:space="preserve" class="text-lavender w-5 min-w-[20px] h-auto" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="0.9936" stroke-linecap="round" stroke-linejoin="round" d="M23.4,4.4 c-0.1,1.2-0.7,2.2-1.7,2.8l-9.4,6.7c-0.2,0.1-0.4,0.1-0.6,0L2.2,7.2c-1-0.6-1.6-1.6-1.7-2.8c0-0.6,0.2-1.3,0.6-1.8 C3.3-0.3,10-0.4,12,3.4c2-3.8,8.7-3.7,10.8-0.7C23.2,3.2,23.4,3.8,23.4,4.4z"/> <path fill="none" stroke="currentColor" stroke-width="0.9936" stroke-linecap="round" stroke-linejoin="round" d="M23.4,4.4v4.3 c0,1.4-0.7,2.7-1.8,3.6l-9.3,6.6c-0.2,0.1-0.4,0.1-0.6,0c-1.7-1.2-9.3-6.6-9.3-6.6c-1.1-0.8-1.8-2.1-1.8-3.6V4.4 c0.1,1.2,0.7,2.2,1.7,2.8l9.4,6.7c0.2,0.1,0.4,0.1,0.6,0l9.4-6.7C22.7,6.6,23.3,5.6,23.4,4.4z"/> <title/></svg> 30ml perfume offered for your birthday</div></div></div><div style="background-image: url('https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/account/se-connecter.jpg')" class="min-h-[198px] bg-center bg-cover" ></div></nav></div> <!--Cart Icon--><a id="menu-cart-icon" @click.prevent.stop="$dispatch('toggle-cart',{});clickIconHeaderEvent('Cart')" class="relative inline-block p-1 no-underline md:p-2 text-lavender hover:text-anthracite h-10 w-10 flex items-center justify-center" href="https://www.adopt.com/en/checkout/cart" aria-label="Cart" ><span class="sr-only label">Cart</span> <span> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="bag" version="1.1" x="0px" y="0px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M16.8,5.3c-0.5-2.8-2.7-4.8-5.3-4.8 c-2.6,0-4.8,2-5.3,4.8"/> <path fill="none" stroke="currentColor" d="M10.1,5.3h3.8c5.3,0,9.6,4.3,9.6,9.6v8.6h-23v-8.6C0.5,9.6,4.8,5.3,10.1,5.3z"/> <title/></svg> </span> <span x-text="cart.summary_count" class="absolute top-0 right-0 hidden h-5 px-[7px] py-1.25 -mt-3 md:-mr-2 text-xs-tiny md:text-xs font-medium leading-none text-center text-white uppercase transform -translate-x-1 translate-y-1/2 rounded-full bg-pink-300" :class="{ 'hidden': !cart.summary_count, 'block': cart.summary_count }" ></span></a> </div></div><!--Search--><div id="search-container" class="absolute z-30 bg-transparent rounded-full md:rounded-none md:hidden w-full bg-container-lighter border-container-lighter md:subnav-content" :class="{ 'hidden' : (isScrolled && !searchOpen) || (noSearchOpenMobile && !searchOpen), 'md:block': searchOpen, 'md:hidden': !searchOpen }" @click.away.self="closeSearch()" > <script> function initMiniSearchComponent() { "use strict"; return { show: false, formSelector: "#search_mini_form", url: "https://www.adopt.com/en/search/ajax/suggest", templates: {"term":{"title":"Search terms","template":"Hyva_SmileElasticsuite::core\/autocomplete\/term.phtml"},"product":{"title":"Products","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product.phtml"},"category":{"title":"Categories","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/category.phtml"},"product_attribute":{"title":"Attributes","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product_attribute.phtml","titleRenderer":"renderEsAutocompleteTitleAttribute"},"cms_page":{"title":"Cms page","template":"Hyva_SmileElasticsuite::cms-search\/autocomplete\/cms.phtml"}}, priceFormat: {"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false}, minSearchLength: 4, searchResultsByType: {}, currentRequest: null, focusInput: false, /** * Get search results. */ getSearchResults: function () { let value = document.querySelector('#search').value.trim(); if (value.length < parseInt(this.minSearchLength, 10)) { this.searchResultsByType = []; return false; } let url = this.url + '?' + new URLSearchParams({ q: document.querySelector('#search').value, _: Date.now() }).toString(); if (this.currentRequest !== null) { this.currentRequest.abort(); } this.currentRequest = new AbortController(); fetch(url, { method: 'GET', signal: this.currentRequest.signal, }).then((response) => { if (response.ok) { return response.json(); } }).then((data) => { this.show = data.length > 0; this.searchResultsByType = data.reduce((acc, result) => { if (!acc[result.type]) acc[result.type] = []; acc[result.type].push(result); if (acc) { if (window.matchMedia("(max-width: 1025px)").matches) { document.body.style.overflow = 'hidden'; } document.querySelector('#search-container').style.borderRadius = '0'; document.querySelector('#search-container').style.background = 'white'; document.querySelector('#search_autocomplete').style.display = 'block'; if (window.scrollY >= 1) { const headerPosition = document.querySelector('#header').offsetHeight + document.querySelector('#search').offsetHeight + parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-top")) + parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-bottom")); if (window.matchMedia("(max-width: 1025px)").matches) { document.querySelector('#search_autocomplete').style.height = 'calc(100vh - ' + headerPosition + 'px)'; document.querySelector('.header').style.display = 'none'; } } else { const headerPosition = document.querySelector('.page-header').offsetHeight + document.querySelector('#search').offsetHeight + parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-top")) + parseInt(window.getComputedStyle(document.getElementById('search-box')).getPropertyValue("margin-bottom")); if (window.matchMedia("(max-width: 1025px)").matches) { document.querySelector('#search_autocomplete').style.height = 'calc(100vh - ' + headerPosition + 'px)'; } } } return acc; }, {}); }).catch((error) => { ; }); }, search() { const search = document.querySelector('#search'); let term = document.querySelector('#search').value.trim(); if (term.length >= 1) { this.sendSearchEvent(term); document.querySelector('#search_mini_form').submit(); } }, clean() { this.searchResultsByType = []; this.show = false; }, searchBarClickEvent() { window.dataLayer?.push({ 'event': 'searchBar_click', 'template': window.pageTemplate }); }, autocompleteProductClickEvent() { window.dataLayer?.push({ 'event': 'searchBar_interaction', 'interaction_type': 'productclick', 'template': window.pageTemplate, 'search_term': document.querySelector('#search').value.trim(), }); }, sendSearchEvent(term) { window.dataLayer?.push({ 'event': 'searchBar_interaction', 'interaction_type': 'search', 'template': window.pageTemplate, 'search_term': term, }); } } }</script><div id="search-content" x-show="true"><div class="container px-0 py-0 md:py-2 mx-auto text-black" x-data="initMiniSearchComponent()" @click.away="show = false" @click.away.outside="closeSearch()"><form class="form minisearch" id="search_mini_form" x-ref="form" action="https://www.adopt.com/en/catalogsearch/result" @submit.prevent="search()" method="get"><div id="search-box" class="relative bg-white mx-3 mt-2.5 md:mt-2 mb-4 rounded-full"><label class="sr-only" for="search">Search entire store here...</label> <input id="search" x-on:input.debounce="getSearchResults()" x-ref="searchInput" type="search" autocomplete="off" name="q" value="" placeholder="I find my happiness..." maxlength="128" class="text-[#9177D8] border border-anthracite-200 input-search w-full p-2 pl-10 leading-normal transition appearance-none bg-white/75 filter backdrop-blur-md rounded-full focus:outline-none focus:border-transparent menu-bp:box-shadow-search-input focus:ring-0 focus:box-shadow-search-input" @click.once="searchBarClickEvent()" @focusout="setTimeout(function(){ focusInput = false },100);" @focusin="focusInput = true" /><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="search" version="1.1" x="0px" y="0px" viewBox="0 0 23.9 23.9" enable-background="new 0 0 23.9 23.9" xml:space="preserve" class="text-anthracite-400 w-4.5 h-auto absolute left-3 top-1/2 transform -translate-y-1/2" width="17" height="20" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.9,19.4c5.2,0,9.4-4.2,9.4-9.4 c0-5.2-4.2-9.4-9.4-9.4c-5.2,0-9.4,4.2-9.4,9.4C0.5,15.2,4.7,19.4,9.9,19.4z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M23.4,23.4l-6-6"/> <title/></svg> <button class="absolute right-4 top-1/2 transform -translate-y-1/2 p-2" type="reset" @click="closeSearch()" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross-menu" version="1.1" x="0px" y="0px" viewBox="0 0 15.5 15.5" enable-background="new 0 0 15.5 15.5" xml:space="preserve" class="text-pink w-3.5 h-3.5" width="16" height="16" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M0.8,14.8l14-14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14.8,14.8l-14-14"/> <title/></svg> </button> <template x-if="!show"><script> document.querySelector('#search-container').style.borderRadius = '9999px'; document.querySelector('#search-container').style.background = 'none'; document.querySelector('#search_autocomplete').style.height = 'auto'; document.querySelector('.header').style.display = 'block';</script></template></div><div id="search_autocomplete" class="search-autocomplete relative w-full overflow-scroll md:overflow-visible" x-show="show" style="display:none;"><div class="absolute z-50 w-full grid grid-cols-1 md:grid-cols-2 md:p-10 md:pt-5 p-5 pt-0 gap-4 subnav-content bg-white"><template x-for="searchResultByType in Object.values(searchResultsByType)"><div class="flex flex-col gap-3"><template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].title && templates[searchResultByType[0].type].titleRenderer === undefined"><div class="font-semibold pt-2 uppercase text-xs-tiny md:text-xxs text-pink md:tracking-spaced-lg tracking-spaced-xs" x-text="templates[searchResultByType[0].type].title"></div></template><template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].titleRenderer !== undefined"><div class="font-bold pt-2 pl-2 text-center" x-text="window[templates[searchResultByType[0].type].titleRenderer](searchResultByType)"></div></template><div class="grid md:grid-cols-2 grid-cols-1 gap-3"><template x-for="searchResult in searchResultByType"><div class="hover:bg-lilac"> <template x-if="searchResult.type == 'term'"><a class="w-full block p-2" x-bind:href="'https://www.adopt.com/en/catalogsearch/result/?q=' + searchResult.title" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span> <span class="text-sm" x-text="'(' + searchResult.num_results + ')'"></span></a></template> <template x-if="searchResult.type == 'product'"><a class="search-item flex flex-row md:gap-4 gap-3 items-start" @click="autocompleteProductClickEvent()" :href="searchResult.url" :title="searchResult.title"><img class="md:w-20 w-16" :src="searchResult.image" :alt="searchResult.title"><div class="flex flex-col w-full"><span class="font-medium text-xs md:text-sm" x-text="searchResult.title"></span> <span class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced" x-text="searchResult.short_description"></span> <span class="search-item__price font-medium text-xs md:text-sm" x-html="searchResult.price"></span></div></a></template> <template x-if="searchResult.type == 'category'"><a class="w-full block" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span></a></template> <template x-if="searchResult.type == 'product_attribute'"><a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span> <span class="text-xs uppercase text-gray-500" x-text="searchResult.attribute_label" style="vertical-align: super;"></span></a></template><script> function renderEsAutocompleteTitleAttribute(data) { data = data.filter(function(item) { return item.type === 'product_attribute'; }).map(function(item) { return item['attribute_label'] }).reduce(function(prev, item) { if (item in prev) { prev[item]++; } else { prev[item] = 1; } return prev; }, {}); data = Object.entries(data).sort(function(item1, item2) { return item2[1] - item1[1] }).map(function(item) {return item[0]}); if (data.length > 2) { data = data.slice(0, 2); data.push('...'); } return data.join(', '); }</script> <template x-if="searchResult.type == 'cms_page'"><a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span></a></template> </div></template></div></div></template></div></div></form></div></div> </div> <!--Cart Drawer--> <script> function initCartDrawer() { return { open: false, cart: {}, twicPicsUrl: 'https://adopt.twic.pics/media/', getData(data) { if (data.cart) { this.cart = data.cart this.freeShippingValue = this.cart.freeShippingAmount; this.setCartItems(); } }, cartItems: {}, setCartItems() { this.cartItems = this.cart && this.cart.items.sort(function (a, b) { return a.item_id - b.item_id }) || {}; }, deleteItemFromCart(item, itemId) { this.isLoading = true; const itemToDelete = item; const self = this; const formKey = hyva.getFormKey(); const postUrl = BASE_URL + 'checkout/sidebar/removeItem/'; fetch(postUrl, { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": "form_key=" + formKey + "&item_id=" + itemId, "method": "POST", "mode": "cors", "credentials": "include" }).then(response => { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { window.dispatchMessages && window.dispatchMessages([{ type: 'warning', text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' }]); this.isLoading = false; } }).then(result => { if (result.success) { self.removeFromCartEvent(itemToDelete); } window.dispatchMessages && window.dispatchMessages([{ type: result.success ? 'success' : 'error', text: result.success ? 'You\u0020removed\u0020the\u0020item.' : result.error_message }], result.success ? 5000 : 0) window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['cart', 'cart-tagging', 'messages'] } } ) ); }); }, removeFromCartEvent(item) { let productData = { 'product_ean': item.product_sku, 'product_name': item.product_name, 'product_quantity': item.qty, 'product_id': item.product_id, 'product_family': item.product_family, 'product_rayon': item.product_rayon, 'product_size': item.product_size, 'product_color': item.product_color, 'product_unitprice_ati': item.product_unitprice_ati, 'product_unitprice_tf': item.product_unitprice_tf, 'product_discount_ati': item.product_discount_ati, 'product_discount_tf': item.product_discount_tf, }; let removeFromCart = window.dataLayer?.filter(function (entry) { return entry.event === 'removeFromCart' && entry.hasOwnProperty('productremoveFromCart'); })[0]; if (typeof removeFromCart === 'undefined') { window.dataLayer?.push({ 'event': 'removeFromCart', 'productremoveFromCart': [productData] }) } else { removeFromCart.productremoveFromCart.push(productData); window.dataLayer?.push(removeFromCart); } }, openMiniCart() { this.open = true; window.dispatchEvent( new CustomEvent('open-mini-cart') ); document.body.style.overflow = 'hidden'; }, closeMiniCart() { this.open = false; window.dispatchEvent( new CustomEvent('close-mini-cart') ); document.body.style.removeProperty('overflow'); }, extractSubtotal() { let subtotal = this.cart.subtotal; subtotal = parseFloat(subtotal.replace(/(<([^>]+)>)/gi, "").replace("€", "").replace(",", ".")); return subtotal; }, getCartImage(image) { return this.twicPicsUrl + image + "?twic=v1/cover=80"; }, } }</script><section id="cart-drawer" x-data="initCartDrawer()" @private-content-loaded.window="getData(event.detail.data)" @toggle-cart.window="openMiniCart()" @keydown.window.escape="closeMiniCart()" ><template x-if="cart && cart.summary_count >= 0"><div role="dialog" aria-labelledby="cart-drawer-title" aria-modal="true" @click.away.self="closeMiniCart()" class="fixed inset-y-0 right-0 z-30 flex max-w-full"><div class="backdrop" x-show="open" x-transition:enter="ease-in-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @click="closeMiniCart()" aria-label="Close panel"></div><div class="relative w-screen max-w-md shadow-2xl" x-show="open" x-transition:enter="transform transition ease-in-out duration-300" x-transition:enter-start="translate-x-full" x-transition:enter-end="translate-x-0" x-transition:leave="transform transition ease-in-out duration-300" x-transition:leave-start="translate-x-0" x-transition:leave-end="translate-x-full" ><div x-show="open" x-transition:enter="ease-in-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="absolute top-0 right-0 flex px-6 py-5"><button @click="closeMiniCart();" aria-label="Close panel" class="p-2 text-anthracite-400 transition duration-150 ease-in-out hover:text-anthracite-600"><svg viewBox="0 0 15.5 15.5" class="w-3.5 h-auto"><g transform="translate(.75 .75)" fill="currentColor" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><line x2="14" y1="14"/><line transform="matrix(-1,0,0,1,14,0)" x2="14" y1="14"/></g></svg></button></div><div class="flex flex-col h-full bg-white shadow-xl"><header class="px-6 py-7 border-b border-lavender-400 flex gap-2.5 items-center"><div id="cart-drawer-title" class="font-medium text-xl leading-very-tiny uppercase tracking-spaced">My Cart</div><span x-text="cart.summary_count" class="md:hidden text-white text-tiny md:text-xxs font-medium bg-anthracite-600 rounded-full leading-none flex justify-center items-center min-w-[25px] h-[25px] px-1.25"></span></header> <div x-show="cart.summary_count === 0"> <div class="relative flex items-center bg-lavender-300 text-anthracite-600 rounded-xl" x-data="initMiniCartSnackbarSlider()" x-init="sliderAuto($refs)"><div class="flex flex-row items-center overflow-hidden gap-4"><div class="w-full flex flex-row transition-all duration-300 leading-tightened" x-ref="snackWrapper"> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium">3 fragrances 30ml bought = the 3rd with 50% off</span></div> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium">4 fragrances 30ml bought = the 4th is FREE</span></div></div></div><div class="px-6 flex flex-row"> <div @click="sliderMove($refs, 0)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 0, 'bg-anthracite/30': slideActive !== 0 }" ></span></div> <div @click="sliderMove($refs, 1)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 1, 'bg-anthracite/30': slideActive !== 1 }" ></span></div></div></div><script> function initMiniCartSnackbarSlider() { return { slideActive: 0, numberSlide: 2, sliderMove($refs, slide) { this.slideActive = slide; const margin = -100 * slide; this.$refs.snackWrapper.style.marginLeft = margin + "%"; }, sliderAuto($refs) { const self = this; function sliderBounce() { self.slideActive = self.slideActive + 1; if (self.slideActive > self.numberSlide - 1) { self.slideActive = 0; self.$refs.snackWrapper.style.marginLeft = 0; } else { const margin = -100 * self.slideActive; self.$refs.snackWrapper.style.marginLeft = margin + "%"; } } setInterval(() => { sliderBounce(); }, 3000) } } }</script> <div class="flex flex-col justify-center px-6 pt-6 pb-9"><span class="text-3xl md:text-3.5xl font-secondary font-bold tracking-spaced">Your cart is empty</span> <div class="flex flex-col pb-5 pt-3">Start shopping</div></div></div><div class="flex-1 overflow-y-auto overflow-x-hidden flex flex-col"> <div class="relative flex flex-col gap-9 bg-white border-container" x-show="cart.summary_count > 0" > <div class="relative flex items-center bg-lavender-300 text-anthracite-600 rounded-xl" x-data="initMiniCartSnackbarSlider()" x-init="sliderAuto($refs)"><div class="flex flex-row items-center overflow-hidden gap-4"><div class="w-full flex flex-row transition-all duration-300 leading-tightened" x-ref="snackWrapper"> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium">3 fragrances 30ml bought = the 3rd with 50% off</span></div> <div class="flex flex-col w-full shrink-0 p-6 whitespace-pre-line justify-center"><span class="leading-none md:max-w-1/2 font-medium">4 fragrances 30ml bought = the 4th is FREE</span></div></div></div><div class="px-6 flex flex-row"> <div @click="sliderMove($refs, 0)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 0, 'bg-anthracite/30': slideActive !== 0 }" ></span></div> <div @click="sliderMove($refs, 1)" class="px-1"><span class="rounded-full bg-anthracite-400 w-1 h-1 block cursor-pointer" :class="{ 'bg-anthracite': slideActive === 1, 'bg-anthracite/30': slideActive !== 1 }" ></span></div></div></div><script> function initMiniCartSnackbarSlider() { return { slideActive: 0, numberSlide: 2, sliderMove($refs, slide) { this.slideActive = slide; const margin = -100 * slide; this.$refs.snackWrapper.style.marginLeft = margin + "%"; }, sliderAuto($refs) { const self = this; function sliderBounce() { self.slideActive = self.slideActive + 1; if (self.slideActive > self.numberSlide - 1) { self.slideActive = 0; self.$refs.snackWrapper.style.marginLeft = 0; } else { const margin = -100 * self.slideActive; self.$refs.snackWrapper.style.marginLeft = margin + "%"; } } setInterval(() => { sliderBounce(); }, 3000) } } }</script> <div class="pl-6 pr-4 pb-9 flex flex-col gap-2.5"><template x-for="item in cartItems"><div class="flex flex-row gap-3 md:gap-4.5"><a class="shrink-0" :href="item.product_url"><img class="xl:w-20 w-16" :src="getCartImage(item.product_image.src)" :width="item.product_image.width" :height="item.product_image.height" :alt="item.product_name" loading="lazy"/></a> <div class="relative flex flex-col w-full justify-between py-3.25"><a :href="item.product_url" class="flex flex-row gap-2 justify-between group"><div class="flex flex-col"><span class="font-medium leading-[1.1] transition duration-300 group-hover:text-anthracite-400"><span x-html="item.qty"></span> x <span x-html="item.product_name"></span></span> <span class="uppercase font-medium text-pink text-xs-tiny md:text-tiny tracking-spaced-lg leading-[1.2] mt-0.5 truncate-short" x-html="item.product_short_description"></span> <dl class="item-options w-full break-all text-sm clearfix"><div class="flex flex-row text-xxs"><dd x-html="item.displayed_label"></dd></div></dl></div><div class="flex flex-col"><span class="font-medium text-xs xl:text-smaller" :class="{ 'text-pink' : item.has_special_price || (item.product_discount_ati > 0 && !item.has_special_price), 'text-anthracite' : !item.has_special_price && item.product_discount_ati === 0 }" x-html="item.product_price"></span> <span class="text-tiny xl:text-xs line-through" x-show="item.has_special_price" x-html="item.original_price"></span> <template x-if="item.product_discount_ati > 0 && !item.has_special_price"><span class="text-tiny xl:text-xs line-through" x-text="hyva.formatPrice(item.product_discount_ati + item.product_unitprice_ati)"></span></template></div></a> <div class="absolute right-0 bottom-0 flex flex-row justify-end items-center"><button @click="deleteItemFromCart(item, item.item_id)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="trash" version="1.1" x="0px" y="0px" viewBox="0 0 21.6 23.3" enable-background="new 0 0 21.6 23.3" xml:space="preserve" class="text-lavender fat-icon hover:text-pink transition duration-300 w-3.75 h-auto" width="13" height="14" role="img"> <path fill="none" stroke="currentColor" stroke-width="0.9237" stroke-linecap="round" stroke-linejoin="round" d="M0.5,5.6h20.7"/> <path fill="none" stroke="currentColor" stroke-width="0.9237" stroke-linecap="round" stroke-linejoin="round" d="M3,5.6h15.5v15.5 c0,1-0.8,1.7-1.7,1.7H4.8c-1,0-1.7-0.8-1.7-1.7L3,5.6z"/> <path fill="none" stroke="currentColor" stroke-width="0.9237" stroke-linecap="round" stroke-linejoin="round" d="M6.5,5.6V4.8 c0-2.4,1.9-4.3,4.3-4.3c2.4,0,4.3,1.9,4.3,4.3v0.9"/> <title/></svg> </button></div></div></div></template></div></div> <div class="product-slider-minicart"> <div class="product-slider product-slider--crosssell"><div> <!-- product-slider-container-crosssell.phtml --><section class="relative product-widget-slider body-font" x-data="{ isMobile: window.outerWidth < 768, numberSlide: 0, currentSlide: 0, index: 0, isSlider: true, items: null, itemWidth: 0, maxSlide: false, gapWidth: 30, isMaxScroll: false, showStickyBar: false, loadSlider() { if(this.$refs.slider) { this.items = this.$refs.slider.querySelectorAll('.item-slider'); this.numberSlide = this.items.length; this.isSlider = this.$refs.slider.scrollWidth > this.$refs.slider.clientWidth; this.itemWidth = this.items[this.numberSlide - 1].offsetWidth; } this.$nextTick(() => { window.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml' }, skipUpdateGallery: true } } ) ); }); }, next() { if(this.currentSlide < this.numberSlide) { if(this.currentSlide === this.numberSlide - 1) { this.$refs.slider.scrollLeft = this.items[this.numberSlide - 1].offsetLeft; } else { if(this.currentSlide === 0) { this.$refs.slider.scrollLeft = this.items[this.currentSlide + 1].offsetLeft - this.gapWidth; this.currentSlide = this.currentSlide + 1; } else { this.currentSlide = this.currentSlide + 1; this.$refs.slider.scrollLeft = this.items[this.currentSlide].offsetLeft - this.gapWidth; } } } let restOfScroll = this.$refs.slider.scrollWidth - this.$refs.slider.offsetWidth - this.$refs.slider.scrollLeft; this.maxSlide = restOfScroll < this.itemWidth; }, prev() { if(this.currentSlide === 0 || this.currentSlide === 1) { this.currentSlide = 0; this.$refs.slider.scrollLeft = 0; } else { this.currentSlide = this.currentSlide - 1; this.$refs.slider.scrollLeft = this.items[this.currentSlide].offsetLeft; } this.maxSlide = false; } }" x-init="loadSlider()" @resize.window.debounce.100="isMobile = window.outerWidth < 768; loadSlider($refs);" ></section></div><script> 'use strict'; window.addEventListener('DOMContentLoaded', function() { if (! window.productSliderEventHandlerInitialized) { window.productSliderEventHandlerInitialized = true; window.addEventListener('product-add-to-wishlist', (event) => { const productId = event.detail.productId; fetch(BASE_URL + "wishlist/index/add/", { headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: new URLSearchParams({ form_key: hyva.getFormKey(), product: productId, uenc: btoa(window.location.href) } ), method: "POST", mode: "cors", credentials: "include" }).then(function (response) { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Could not add item to wishlist." }], 5000 ); } }).then(function (result) { if (!result) { return } typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: (result.success) ? "success" : "error", text: (result.success) ? "Product has been added to your Wish List." : result.error_message }], 5000 ); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['wishlist', 'messages'] } } ) ); }).catch(function (error) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); }) window.addEventListener('product-add-to-compare', (event) => { const productId = event.detail.productId; hyva.postForm({ action: BASE_URL + 'catalog/product_compare/add/', data: {product: productId} }) }) } });</script></div></div> <div class="bg-lavender-300 flex-1 p-5 pb-7 md:px-10 md:pt-6"><div class="flex justify-between font-medium text-xs md:text-smaller"><span>Subtotal</span><span x-html="cart.subtotal"></span></div><div class="border-t border-lavender-400 pt-5.5 md:pt-7 mt-5"><div class="flex flex-row gap-4"><div class="flex flex-row items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="pin-shop" version="1.1" x="0px" y="0px" viewBox="0 0 21.3 23.9" enable-background="new 0 0 21.3 23.9" xml:space="preserve" class="text-lavender w-6 h-auto" width="25" height="25" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.7,0.5c2.2,0,4.3,0.6,6.2,1.8 c4.8,3,5.2,9.2,1.3,13.7c-2.3,2.7-4.8,5.2-7.5,7.4c-2.7-2.2-5.3-4.7-7.5-7.4C-0.7,11.4-0.4,5.3,4.4,2.3C6.3,1.1,8.5,0.5,10.7,0.5z M10.7,5.2c-2.4,0-4.4,1.9-4.4,4.3c0,2.4,1.9,4.3,4.4,4.3c2.4,0,4.4-1.9,4.4-4.3C15,7.1,13.1,5.2,10.7,5.2z"/> <title/></svg> <div class="flex flex-col text-sm font-medium"><span class="">Shipped 72 hours and free delivery under conditions</span> <span class="text-xxs text-anthracite-400">Free delivery from <span x-html="freeShippingValue"></span>€ purchase</span></div></div></div></div></div></div> <div class="relative grid bg-white border-t border-lavender-400 pt-5 pb-3.5 px-6"><div x-data="initIncentiveCart" class="incentiveBar hidden flex flex-col gap-2" :class="{'hidden': isLoading}" @private-content-loaded.window="calcFreeShipping($event.detail.data.cart)"><div class="text-xs md:text-sm font-medium leading-none md:leading-none pb-2" x-show="amountStep > 0"><span class="text-lavender">Only <span x-html="amountStep" ></span> € left</span> <span>for a <span x-text="labelShippingStep"></span></span></div><div class="text-xs md:text-sm font-medium leading-none md:leading-none flex flex-col gap-2"><div x-show="amountStep < 0 && !freeGift2Amount && !freeGift3Amount">Free shipping</div><div x-show="!freeGift2Amount && !freeGift3Amount" class="w-full flex flex-row"><span class="w-3/4 shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div x-show="freeGift2Amount && !freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Free shipping</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-2/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/3 relative"><div class="w-full flex flex-row"><span x-show="amountStep2 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div></div></div></div></div><div x-show="freeGift2Amount && freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/4 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Free shipping</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute mx-auto left-0 right-0 bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step3')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/4 relative"><div class="w-full flex flex-row"><span x-show="amountStep3 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep3 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift3Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift3Amount"></span></div></div></div></div></div></div> <div class="pt-3.5"> <a href="https://www.adopt.com/en/checkout/cart" class="inline-flex btn btn-primary w-full justify-center items-center py-5.5 leading-none">See cart - <span x-html="cart.subtotal"></span></a> </div></div></div></div></div></template></section> <!--Authentication Pop-Up--> </nav></div></header><div class="top-container"> </div> <script> 'use strict'; function initAwRbslider(config) { return { options: Object.assign({ autoplay: true, pauseTimeBetweenTransitions: 3000, slideTransitionSpeed: 500, isStopAnimationMouseOnBanner: true, animation: 'fade', isRandomOrderImage: false, sliderListSelector: '.uk-slideshow', sliderItemSelector: '.aw-rbslider-item', $refs: null }, config), slideshow: {options: {}}, init() { this.options.$refs = this.$refs; }, initSlider($refs) { this.slideshow = window.awRbslider(this.$el, { autoplay: this.options.autoplay, autoplayInterval: this.options.pauseTimeBetweenTransitions, duration: this.options.slideTransitionSpeed, pauseOnHover: this.options.isStopAnimationMouseOnBanner, animation: this.options.animation, $refs: this.options.$refs, }); this.loadSlides($refs); this.slideshow.resize = () => this.resizeBanner(this.slideshow); if (this.options.bannerSchedule.length > 0) { if (!this.timeValidator([this.options.bannerSchedule[0]])) { this.delayedUpdate(this.options.bannerSchedule[0]); } if (this.timeValidator(this.options.bannerSchedule)) { this.sendRequest(this.options.bannerId); } } }, loadSlider($refs) { if (!window.awRbslider) { let callbacks = []; window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)}; } if (window.awRbslider['-isLoading']) { window.awRbslider['-isLoading'](() => this.loadSlider($refs)) } if (!window.awRbslider['-isLoading']) { this.initSlider($refs); } }, pauseOnEnter() { if (this.slideshow.options.pauseOnHover) { this.slideshow.hovering = true; } }, resumeOnLeave() { this.slideshow.hovering = false; }, /** * Recalculate the width and height of the banner */ resizeBanner(slideshow) { if (slideshow.slides.length) { let firstChild = slideshow.slides[slideshow.current]; if (firstChild.querySelector('.rbslider__video')) { const video = firstChild.querySelector('video'); if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = video.getBoundingClientRect().height; slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; } } else { if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = slideshow.slides[slideshow.current].getBoundingClientRect().height; slideshow.container.style.height = height + 'px'; } } } }, /** * Lazy load slides */ loadSlides($refs) { this.slideshow.slides.forEach((slideElem, index) => { if (index) { const slideImg = slideElem.querySelector('img.aw-rbslider__img'); if (slideImg && slideImg.dataset.src) { slideImg.addEventListener('load', () => { slideImg.classList.add('is-loaded'); }); slideImg.src = slideImg.dataset.src; slideImg.removeAttribute('data-src'); } } }); }, clickSliderEvent(url, label) { window.dataLayer?.push({ 'event': 'clicSliderHP', 'text': label }); window.location.href = url }, /** * Compare current time with schedule */ timeValidator(schedule) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); let isValid = false; schedule.forEach(item => { if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) { isValid = true; } }); return isValid; }, /** * Send request for clean banner cache */ sendRequest(bannerId) { const formKey = hyva.getFormKey(); fetch(this.options.cacheCleanUrl, { method: 'post', headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: "form_key=" + formKey + "&bannerId=" + bannerId, mode: "cors", credentials: "include" }); }, /** * Schedule call to sendRequest for future schedule item */ delayedUpdate(futureTime) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute; if (interval > 0) { setTimeout(() => this.sendRequest(this.options.bannerId), interval); } }, /** * @private */ _randomSort() { const sliderListSelector = this.options.sliderListSelector, sliderItemSelector = this.options.sliderItemSelector; this.$el.querySelector(sliderListSelector) .innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector)) .sort(() => Math.random() - 0.5) .map(item => item.outerHTML) .join(''); }, } }</script> <script> 'use strict'; function initAwRbslider(config) { return { options: Object.assign({ autoplay: true, pauseTimeBetweenTransitions: 3000, slideTransitionSpeed: 500, isStopAnimationMouseOnBanner: true, animation: 'fade', isRandomOrderImage: false, sliderListSelector: '.uk-slideshow', sliderItemSelector: '.aw-rbslider-item', $refs: null }, config), slideshow: {options: {}}, init() { this.options.$refs = this.$refs; }, initSlider($refs) { this.slideshow = window.awRbslider(this.$el, { autoplay: this.options.autoplay, autoplayInterval: this.options.pauseTimeBetweenTransitions, duration: this.options.slideTransitionSpeed, pauseOnHover: this.options.isStopAnimationMouseOnBanner, animation: this.options.animation, $refs: this.options.$refs, }); this.loadSlides($refs); this.slideshow.resize = () => this.resizeBanner(this.slideshow); if (this.options.bannerSchedule.length > 0) { if (!this.timeValidator([this.options.bannerSchedule[0]])) { this.delayedUpdate(this.options.bannerSchedule[0]); } if (this.timeValidator(this.options.bannerSchedule)) { this.sendRequest(this.options.bannerId); } } }, loadSlider($refs) { if (!window.awRbslider) { let callbacks = []; window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)}; } if (window.awRbslider['-isLoading']) { window.awRbslider['-isLoading'](() => this.loadSlider($refs)) } if (!window.awRbslider['-isLoading']) { this.initSlider($refs); } }, pauseOnEnter() { if (this.slideshow.options.pauseOnHover) { this.slideshow.hovering = true; } }, resumeOnLeave() { this.slideshow.hovering = false; }, /** * Recalculate the width and height of the banner */ resizeBanner(slideshow) { if (slideshow.slides.length) { let firstChild = slideshow.slides[slideshow.current]; if (firstChild.querySelector('.rbslider__video')) { const video = firstChild.querySelector('video'); if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = video.getBoundingClientRect().height; slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; } } else { if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = slideshow.slides[slideshow.current].getBoundingClientRect().height; slideshow.container.style.height = height + 'px'; } } } }, /** * Lazy load slides */ loadSlides($refs) { this.slideshow.slides.forEach((slideElem, index) => { if (index) { const slideImg = slideElem.querySelector('img.aw-rbslider__img'); if (slideImg && slideImg.dataset.src) { slideImg.addEventListener('load', () => { slideImg.classList.add('is-loaded'); }); slideImg.src = slideImg.dataset.src; slideImg.removeAttribute('data-src'); } } }); }, clickSliderEvent(url, label) { window.dataLayer?.push({ 'event': 'clicSliderHP', 'text': label }); window.location.href = url }, /** * Compare current time with schedule */ timeValidator(schedule) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); let isValid = false; schedule.forEach(item => { if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) { isValid = true; } }); return isValid; }, /** * Send request for clean banner cache */ sendRequest(bannerId) { const formKey = hyva.getFormKey(); fetch(this.options.cacheCleanUrl, { method: 'post', headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: "form_key=" + formKey + "&bannerId=" + bannerId, mode: "cors", credentials: "include" }); }, /** * Schedule call to sendRequest for future schedule item */ delayedUpdate(futureTime) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute; if (interval > 0) { setTimeout(() => this.sendRequest(this.options.bannerId), interval); } }, /** * @private */ _randomSort() { const sliderListSelector = this.options.sliderListSelector, sliderItemSelector = this.options.sliderItemSelector; this.$el.querySelector(sliderListSelector) .innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector)) .sort(() => Math.random() - 0.5) .map(item => item.outerHTML) .join(''); }, } }</script> <div class="hero-slider transition relative"><div x-data='initAwRbslider({"autoplay":3000,"pauseTimeBetweenTransitions":3000,"slideTransitionSpeed":500,"isStopAnimationMouseOnBanner":true,"animation":"fade","isRandomOrderImage":false,"bannerSchedule":["2025-04-15 22:00:00","2025-04-28 22:00:00","2025-04-29 01:16:00","2025-05-01 22:00:00","2025-05-01 22:00:00","2025-05-01 22:00:00","2025-05-05 02:02:00","2025-05-06 22:00:00","2025-05-06 22:00:00","2025-05-06 22:00:00","2025-05-06 22:00:00","2025-05-11 21:59:00","2025-05-11 21:59:00","2025-05-11 21:59:00","2025-05-11 21:59:00","2025-05-11 21:59:00","2025-05-11 22:00:00","2025-05-11 22:00:00","2025-05-13 21:59:00","2025-05-13 21:59:00","2025-05-21 21:59:00","2025-05-25 21:59:00","2025-05-25 21:59:00","2025-05-25 21:59:00","2025-05-25 21:59:00","2025-05-25 21:59:00"],"bannerId":"1","cacheCleanUrl":"https:\/\/www.adopt.com\/en\/aw_rbslider\/cache\/clean"})' x-intersect="loadSlider($refs)" data-aw-rbslider-banner-id='1' class="aw-rbslider-container uk-slidenav-position" x-ref="wrapper"> <div x-ref="bullets" class="absolute z-20 flex md:flex-col gap-2.5 md:bottom-8 bottom-2 right-auto md:right-8 md:left-auto transform-translate-50 md:transform-none left-1/2"> <button @click="slideshow.show(0,1)" type="button" aria-label="button_bullets_slider" class="p-1 border-[3px] border-opacity-40 rounded-full border-lavender-400"><span class="w-1.5 h-1.5 rounded-full bg-white block opacity-100"></span></button> <button @click="slideshow.show(1,1)" type="button" aria-label="button_bullets_slider" class="p-1 border-[3px] border-opacity-40 rounded-full border-transparent"><span class="w-1.5 h-1.5 rounded-full bg-white block opacity-50"></span></button> </div> <div class="uk-slideshow uk-overlay-active a-aspect-slider transition-all"> <div class="aw-rbslider-item absolute" data-bg=""><div class="aw-rbslider-img-wrapper"> <picture><source media="(max-width: 1023px)" srcset="https://adopt.twic.pics/media/aw_rbslider/slides/ECOMM_FDM_Sliders_AVP_MOB_EN_1.png?twic=v1/max=1280" class="aw-rbslider__img object-cover object-center transition-all is-loaded" title="Mother's Day fragrances"/><source media="(min-width: 1024px)" srcset="https://adopt.twic.pics/media/aw_rbslider/slides/ECOMM_FDM_Sliders_AVP_DESK_EN_1.png?twic=v1/max=2500" class="aw-rbslider__img object-cover object-center transition-all is-loaded" title="Mother's Day fragrances"/><img class="aw-rbslider__img object-cover object-center transition-all is-loaded" width="2880" height="1200" fetchpriority="high" title="Mother's Day fragrances" alt="Fragrances Glamourama, Sublimissime, Golden Queen, Wonderful & Love Infinity" /></picture> <a href="https://www.adopt.com/en/mother-day.html" @click.prevent="clickSliderEvent('https://www.adopt.com/en/mother-day.html', 'Fragrances Glamourama, Sublimissime, Golden Queen, Wonderful & Love Infinity')" class="aw-rbslider-img-url" title="Fragrances Glamourama, Sublimissime, Golden Queen, Wonderful & Love Infinity" ></a> <div class="aw-rbslider-content-wrapper uk-overlay-panel flex items-end justify-center md:justify-start h-fit w-full top-auto bottom-0 text-white"><div class="flex flex-col items-center md:items-start w-full md:px-8.5 pb-14 md:pb-12"> <div class="font-secondary font-bold text-4.5xl md:text-[4.375rem] leading-none px-0 text-center md:text-left md:block hidden"></div><div class="font-secondary font-bold text-4.5xl leading-none px-6 text-center md:hidden"></div> <div class="w-full flex md:justify-start justify-center "><div class="pt-4.5 md:pt-6 flex flex-wrap gap-2.5 justify-center md:justify-start px-6 md:px-0 relative z-[101]"> <a href="https://www.adopt.com/en/mother-day.html" class="btn btn-secondary-white text-lg whitespace-nowrap">Discover</a> </div></div></div></div></div></div> <div class="aw-rbslider-item absolute" data-bg=""><div class="aw-rbslider-img-wrapper"> <picture><source media="(max-width: 1023px)" srcset="https://adopt.twic.pics/media/aw_rbslider/slides/ECOMM_E-MOTION_Slider_KV_avec_wording_MOB_EN_1.png?twic=v1/max=1280" class="aw-rbslider__img object-cover object-center transition-all is-loaded" title="E-Motion"/><source media="(min-width: 1024px)" srcset="https://adopt.twic.pics/media/aw_rbslider/slides/ECOMM_E-MOTION_Slider_KV_avec_wording_DESK_EN.png?twic=v1/max=2500" class="aw-rbslider__img object-cover object-center transition-all is-loaded" title="E-Motion"/><img class="aw-rbslider__img object-cover object-center transition-all is-loaded" width="2880" height="1200" loading="lazy" title="E-Motion" alt="Parfum Nostalgia, Overlove & Extasia " /></picture> <a href="https://www.adopt.com/en/fragrance/new-perfume.html" @click.prevent="clickSliderEvent('https://www.adopt.com/en/fragrance/new-perfume.html', 'Parfum Nostalgia, Overlove & Extasia ')" class="aw-rbslider-img-url" title="Parfum Nostalgia, Overlove & Extasia " target="_blank" rel="nofollow"></a> <div class="aw-rbslider-content-wrapper uk-overlay-panel flex items-end justify-center md:justify-start h-fit w-full top-auto bottom-0 text-anthracite-600"><div class="flex flex-col items-center md:items-start w-full md:px-8.5 pb-14 md:pb-12"> <div class="font-secondary font-bold text-4.5xl md:text-[4.375rem] leading-none px-0 text-center md:text-left md:block hidden"></div><div class="font-secondary font-bold text-4.5xl leading-none px-6 text-center md:hidden"></div> <div class="w-full flex md:justify-start justify-center "><div class="pt-4.5 md:pt-6 flex flex-wrap gap-2.5 justify-center md:justify-start px-6 md:px-0 relative z-[101]"> <a href="https://www.adopt.com/en/extasia-eau-de-parfum-30-ml-3701429841256-en.html" class="btn btn-secondary-white text-lg whitespace-nowrap">Extasia</a> <a href="https://www.adopt.com/en/nostalgia-eau-de-parfum-30-ml-8883701429841270-en.html" class="btn btn-secondary-white text-lg whitespace-nowrap">Nostalgia</a> <a href="https://www.adopt.com/en/overlove-eau-de-parfum-30-ml-3701429841294-en.html" class="btn btn-secondary-white text-lg whitespace-nowrap">Overlove</a> </div></div></div></div></div></div></div> <a href="#" aria-label="slider left" class="uk-slidenav uk-slidenav-contrast uk-slidenav-previous" @mouseenter="pauseOnEnter" @mouseleave="resumeOnLeave" @click.prevent="slideshow.previous();" data-uk-slideshow-item="previous"><span class="visually-hidden sr-only">Show previous slide</span></a> <a href="#" aria-label="slider right" class="uk-slidenav uk-slidenav-contrast uk-slidenav-next" @mouseenter="pauseOnEnter" @mouseleave="resumeOnLeave" @click.prevent="slideshow.next();" data-uk-slideshow-item="next"><span class="visually-hidden sr-only">Show next slide</span></a> <ul class="uk-dotnav uk-dotnav-contrast uk-position-bottom uk-flex-center" @mouseenter="pauseOnEnter" @mouseleave="resumeOnLeave" ></ul> </div></div> <main id="maincontent" class="page-main-full-width"> <span id="contentarea" tabindex="-1"></span><div class="page messages"> <script> function initMessages() { "use strict"; return { messages: window.mageMessages || [], init($refs) { if(this.$refs.banner.closest('.page-main')) { this.$refs.banner.closest('.page-main').style.background = 'none' } }, isEmpty() { return this.messages.reduce( function (isEmpty, message) { return isEmpty && message === undefined }, true ) }, removeMessage(messageIndex) { this.messages[messageIndex] = undefined; }, addMessages(messages, hideAfter) { messages.map((message) => { this.messages = this.messages.concat(message); let pageMessages = document.querySelector('.page.messages'); if (typeof message.class !== 'undefined') { pageMessages.classList.add(message.class); } if (message.type === 'success' && message.text.toString().includes('checkout/cart')) { pageMessages.classList.add("fixed"); } if(window.location.pathname.includes("checkout/cart")) { if(message.type === "error" && message.errorType === 'login') { pageMessages.classList.add("fixed"); pageMessages.classList.add("w-full"); } else { pageMessages.classList.remove("fixed"); } } if (hideAfter) { this.setHideTimeOut(this.messages.length -1, hideAfter); } if(!hideAfter && message.type === "success") { this.setHideTimeOut(this.messages.length -1, 3000); } }); }, setHideTimeOut(messageIndex, hideAfter) { setTimeout((messageIndex) => { this.removeMessage(messageIndex); }, hideAfter, messageIndex); }, eventListeners: { ['@messages-loaded.window']() { this.addMessages(event.detail.messages, event.detail.hideAfter) }, ['@private-content-loaded.window'](event) { const data = event.detail.data; if ( data.messages && data.messages.messages && data.messages.messages.length ) { this.addMessages(data.messages.messages); } }, ['@clear-messages.window']() { this.messages = []; } } } }</script><section id="messages" x-data="initMessages()" x-bind="eventListeners" x-ref="banner" x-init="init($refs)" ><template x-if="!isEmpty()"><div class="w-full"><div role="alert" class="messages container mx-auto py-3"><template x-for="(message, index) in messages" :key="index"><div><template x-if="message"><div class="message" :class="message.type" :ui-id="'message-' + message.type" ><div class="flex items-center gap-2 md:gap-3.5"><svg x-show="message.type === 'success'" class="text-pink-lighter bg-white rounded-full box-content pt-1 pr-[3px] pb-1.5 pl-1 w-2.5 h-auto shrink-0 md:w-3" width="17" height="12.702" version="1.1" viewBox="0 0 17 12.702" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1,1)" fill="none" fill-rule="evenodd" stroke-linecap="round"><path d="M 15,0 6.0879121,10.702128 M 6,10 0,5" stroke="currentColor" stroke-width="2"></path></g></svg><span x-html="message.text"></span></div><a href="#" class="close cursor-pointer" title="close" @click.prevent="removeMessage(index)"><svg class="fill-current text-white" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"><path d="M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47 4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z"></path></svg></a></div></template></div></template></div></div></template></section></div><div class="columns"><div class="column main"> <script> 'use strict'; function initAwRbslider(config) { return { options: Object.assign({ autoplay: true, pauseTimeBetweenTransitions: 3000, slideTransitionSpeed: 500, isStopAnimationMouseOnBanner: true, animation: 'fade', isRandomOrderImage: false, sliderListSelector: '.uk-slideshow', sliderItemSelector: '.aw-rbslider-item', $refs: null }, config), slideshow: {options: {}}, init() { this.options.$refs = this.$refs; }, initSlider($refs) { this.slideshow = window.awRbslider(this.$el, { autoplay: this.options.autoplay, autoplayInterval: this.options.pauseTimeBetweenTransitions, duration: this.options.slideTransitionSpeed, pauseOnHover: this.options.isStopAnimationMouseOnBanner, animation: this.options.animation, $refs: this.options.$refs, }); this.loadSlides($refs); this.slideshow.resize = () => this.resizeBanner(this.slideshow); if (this.options.bannerSchedule.length > 0) { if (!this.timeValidator([this.options.bannerSchedule[0]])) { this.delayedUpdate(this.options.bannerSchedule[0]); } if (this.timeValidator(this.options.bannerSchedule)) { this.sendRequest(this.options.bannerId); } } }, loadSlider($refs) { if (!window.awRbslider) { let callbacks = []; window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)}; } if (window.awRbslider['-isLoading']) { window.awRbslider['-isLoading'](() => this.loadSlider($refs)) } if (!window.awRbslider['-isLoading']) { this.initSlider($refs); } }, pauseOnEnter() { if (this.slideshow.options.pauseOnHover) { this.slideshow.hovering = true; } }, resumeOnLeave() { this.slideshow.hovering = false; }, /** * Recalculate the width and height of the banner */ resizeBanner(slideshow) { if (slideshow.slides.length) { let firstChild = slideshow.slides[slideshow.current]; if (firstChild.querySelector('.rbslider__video')) { const video = firstChild.querySelector('video'); if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = video.getBoundingClientRect().height; slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; } } else { if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = slideshow.slides[slideshow.current].getBoundingClientRect().height; slideshow.container.style.height = height + 'px'; } } } }, /** * Lazy load slides */ loadSlides($refs) { this.slideshow.slides.forEach((slideElem, index) => { if (index) { const slideImg = slideElem.querySelector('img.aw-rbslider__img'); if (slideImg && slideImg.dataset.src) { slideImg.addEventListener('load', () => { slideImg.classList.add('is-loaded'); }); slideImg.src = slideImg.dataset.src; slideImg.removeAttribute('data-src'); } } }); }, clickSliderEvent(url, label) { window.dataLayer?.push({ 'event': 'clicSliderHP', 'text': label }); window.location.href = url }, /** * Compare current time with schedule */ timeValidator(schedule) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); let isValid = false; schedule.forEach(item => { if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) { isValid = true; } }); return isValid; }, /** * Send request for clean banner cache */ sendRequest(bannerId) { const formKey = hyva.getFormKey(); fetch(this.options.cacheCleanUrl, { method: 'post', headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: "form_key=" + formKey + "&bannerId=" + bannerId, mode: "cors", credentials: "include" }); }, /** * Schedule call to sendRequest for future schedule item */ delayedUpdate(futureTime) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute; if (interval > 0) { setTimeout(() => this.sendRequest(this.options.bannerId), interval); } }, /** * @private */ _randomSort() { const sliderListSelector = this.options.sliderListSelector, sliderItemSelector = this.options.sliderItemSelector; this.$el.querySelector(sliderListSelector) .innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector)) .sort(() => Math.random() - 0.5) .map(item => item.outerHTML) .join(''); }, } }</script><style>::backdrop { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / 0.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: } .font-bold { font-weight: 700 } .font-light { font-weight: 300 } .leading-tight { line-height: 1.25 }</style> <p> <div class="product-slider" ><div> <section class="relative product-widget-slider text-gray-700 body-font pt-6 md:pt-12 pb-6 md:pb-12" x-data="{ numberSlide: 5, currentSlide: 0, isMobile: window.outerWidth < 1024, isSlider: true, items: null, maxSlide: false, itemWidth: 0, gapWidth: 30, isFullWidthSlider: 1, loadSlider() { this.items = this.$refs.slider.querySelectorAll('.item'); this.isSlider = this.$refs.slider.scrollWidth > this.$refs.slider.clientWidth; if(!this.isFullWidthSlider) { this.gapWidth = 0; } this.itemWidth = this.items[this.numberSlide - 1].offsetWidth; this.$nextTick(() => { window.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml' }, skipUpdateGallery: true } } ) ); }); }, next() { if(this.currentSlide < this.numberSlide) { if(this.currentSlide === this.numberSlide - 1) { this.$refs.slider.scrollLeft = this.items[this.numberSlide - 1].offsetLeft; } else { if(this.currentSlide === 0) { this.$refs.slider.scrollLeft = this.items[this.currentSlide + 1].offsetLeft - this.gapWidth; this.currentSlide = this.currentSlide + 1; } else { this.currentSlide = this.currentSlide + 1; this.$refs.slider.scrollLeft = this.items[this.currentSlide].offsetLeft - this.gapWidth; } } } let restOfScroll = this.$refs.slider.scrollWidth - this.$refs.slider.offsetWidth - this.$refs.slider.scrollLeft; this.maxSlide = restOfScroll < this.itemWidth; }, prev() { if(this.currentSlide === 0 || this.currentSlide === 1) { this.currentSlide = 0; this.$refs.slider.scrollLeft = 0; } else { this.currentSlide = this.currentSlide - 1; this.$refs.slider.scrollLeft = this.items[this.currentSlide].offsetLeft; } this.maxSlide = false; }, resize() { this.isMobile = window.outerWidth < 1024; this.loadSlider(); this.$refs.slider.scrollLeft = 0; } }" x-init="loadSlider()" @resize.window.debounce.100="resize()" > <div class="relative"> <div class="mb-7.5 md:mb-12 px-4 md:px-7.5"> <div class="flex justify-between items-center"> <h2 class="text-3xl md:text-3.5xl font-romie font-bold leading-none tracking-spaced ">Best-sellers</h2> </div></div> <div class="product-widget-slider__slider w-full relative " x-ref="wrapper"><div class="scroll-smooth relative flex flex-nowrap overflow-auto transition-all js_slides snap-x md:px-7.5 hide-scrollbar md:gap-x-px" x-ref="slider" id="slider"> <div class="item flex shrink-0 px-0.5 js_slide w-[70%] md:w-[20.3125rem]"> <!--suppress BadExpressionStatementJS --><a @click.prevent="clickProductLink('https://www.adopt.com/en/coeur-a-coeur-eau-de-parfum-8883701429819309-en.html')" href="https://www.adopt.com/en/coeur-a-coeur-eau-de-parfum-8883701429819309-en.html" class="product-item product-item--widget flex flex-col pb-6 w-full border border-transparent transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="{ currentProductData: { 'sku': '8883701429819309', 'name': 'C\u0153ur\u0020\u00E0\u0020c\u0153ur', 'short_description': 'Eau\u0020de\u0020parfum', 'id': '38233', 'image': 'https://adopt.twic.pics/media/catalog/product/c/o/coeuracoeur_30ml.jpg?twic=v1', 'old_price': '0', 'final_price': '11.95', }, showStickyBar: false, isProductUpSell: true, isProductCrossSell: false, isProductRelated: false, isProductItemWidget: true, isProductRitual: false, isLoaded: false, nostoElementId: '', productId: '38233', isFromNosto: 0, load() { window.setAjaxCart('form[name=category-add-to-cart-form-product-_681e252086e9e]'); this.$nextTick(() => { this.$el.querySelector('.swatches-container')?.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml', }, skipUpdateGallery: true } } ) ); }); this.isLoaded = true; }, clickProductLink(productUrl) { this.sendProductClickEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('vp', this.productId, this.nostoElementId) .done(); }); } } window.location.href = productUrl; }, updateGallery(imageUrl) { const mainImageElement = this.$el.querySelector('.main-image'); mainImageElement.src = imageUrl; const url = new URL(imageUrl); mainImageElement.dataset.twicSrc = 'image:' + url.pathname; this.currentProductData.image = imageUrl; }, showAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.remove('hidden'); addButton.classList.add('hidden'); }, hideAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.add('hidden'); addButton.classList.remove('hidden'); }, addToCart() { this.sendProductDetailsAddToCartEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('cp', this.productId, this.nostoElementId) .done(); }); } } }, openAddCartPanel() { this.$dispatch('last-added-cart-pannel', this.currentProductData); }, sendProductClickEvent() { window.dataLayer?.push({ 'event': 'productClic', 'productClic': [{ 'product_ean': '8883701429819309', 'product_name': 'cœur-à-cœur', 'product_id': '38233', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.96', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'list': '' }] }) }, sendProductDetailsAddToCartEvent() { window.dataLayer?.push( { 'event': 'addToCart', 'list': 'product list', 'productaddToCart': [{ 'product_ean': '8883701429819309', 'product_name': 'cœur-à-cœur', 'product_quantity': '1', 'product_id': '38233', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_season': 'eau-de-parfum', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.9583333333333', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'product_res': '' }] } ) }, updateFlagsData(eventData) { this.flagsData = eventData.flagsData; }, updatePrice(priceData, productId) { const finalPriceElement = this.$el.querySelectorAll('.product-item-price'); let finalPrice = priceData.finalPrice.amount; let oldPrice = priceData.oldPrice.amount; if (finalPrice === oldPrice) { finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(finalPrice); }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; return; } let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">'; priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Special Price</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>'; priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Regular Price</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>'; priceTemplate += '</div>'; finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerHTML = priceTemplate; }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; }, updateUrl(eventData) { const productLinks = this.$el.querySelectorAll('a'); productLinks.forEach((arrayElement, index) => { if (eventData.option_label.includes('30+')) { arrayElement.href = arrayElement.href.split('?')[0]; } else { arrayElement.href = arrayElement.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label; } }) }, updateShortDescription(value) { this.$el.querySelector('.product-item-short').innerText = value; this.currentProductData.short_description = value.toString(); } }" x-init="load()" @product-addtocart-success-38233.window="openAddCartPanel()" @update-prices-38233="updatePrice($event.detail, 38233);" @update-short-description-listing-38233="updateShortDescription($event.detail);" @update-configurable-url-38233="updateUrl($event.detail);" @configurable-selection-changed-38233="updateFlagsData($event.detail);" @update-gallery-38233="updateGallery($event.detail)" @stock-alert-modal-open-38233="showAlertButton($event)" @stock-alert-modal-close-38233="hideAlertButton($event)" data-sku="8883701429819309"> <form method="post" action="https://www.adopt.com/en/checkout/cart/add/uenc/%25uenc%25/product/38233/" name="category-add-to-cart-form-product-_681e252086e9e" class="flex flex-col flex-1 item-widget-add-to-cart category-add-to-cart-form-product-_681e252086e9e" > <input type="hidden" name="form_key" :value="hyva.getFormKey()"/><input type="hidden" name="product" value="38233"/> <div class="link product photo product-item-photo block mx-auto mb-3 w-full aspect-square bg-pink-150" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-pink-150': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist(38233)" aria-label="Add to Wish List" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:m-4 m-2 z-10" data-wishlist="38233"><template x-if="!isInWishlist(38233)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-4 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template><template x-if="isInWishlist(38233)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template></button> <img src="https://adopt.twic.pics/media/catalog/product/c/o/coeuracoeur_30ml.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/c/o/coeuracoeur_30ml.jpg" data-twic-transform="cover-max=614" width="256px" height="286px" alt="Cœur à cœur" title="Cœur à cœur" loading="lazy" class="main-image w-full relative transition duration-300 aspect-square h-auto " :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col p-2 gap-2 md:px-5 md:py-2.5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-2 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><div class="text-anthracite font-medium text-xs md:text-base leading-tightened md:leading-tightened">Cœur à cœur</div></div><div class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced-lg flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum</div></div> <div class="product-item-review cursor-pointer md:order-1 "> <div class="flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38233' }); window.location.href = 'https://www.adopt.com/en/coeur-a-coeur-eau-de-parfum-8883701429819309-en.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> </div></div></div></div> <div class="flex gap-2.25 items-baseline pb-1.75"><div class="text-tiny leading-tightened font-medium uppercase tracking-spaced-md">Intensity</div><div class="flex gap-1.25 items-center"> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> </div></div> <div x-data='{ ...initConfigurableOptions(38233, {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39300"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38138"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"38138":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}},"39300":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38233","chooseText":"Choose an Option...","images":[],"index":{"38138":{"153":"351"},"39300":{"153":"350"}},"salable":{"153":{"351":["38138"],"350":["39300"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"38138":"3701429830892","39300":"3701429838867"},"short_description":{"38138":"Eau de parfum 100 ml","39300":"Eau de parfum 30ml"},"flags_data":{"38138":{"is_preview":{"label":"Preview","icon":""},"is_vegan":{"label":"Vegan","icon":""}},"39300":{"is_bestseller":{"label":"BEST-SELLER","icon":""},"is_vegan":{"label":"Vegan","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39300"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38138"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"38138":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}},"39300":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38233","chooseText":"Choose an Option...","images":[],"index":{"38138":{"153":"351"},"39300":{"153":"350"}},"salable":{"153":{"351":["38138"],"350":["39300"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"38138":"3701429830892","39300":"3701429838867"},"short_description":{"38138":"Eau de parfum 100 ml","39300":"Eau de parfum 30ml"},"flags_data":{"38138":{"is_preview":{"label":"Preview","icon":""},"is_vegan":{"label":"Vegan","icon":""}},"39300":{"is_bestseller":{"label":"BEST-SELLER","icon":""},"is_vegan":{"label":"Vegan","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Fen\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-38233", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-38233", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 38233, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, 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; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper38233" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Volume</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38233-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 38233);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38233-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38233-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 38233);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38233-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_2" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_2)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_2" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_2)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_2" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_2)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewBox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div> <div class="grow-[1]"></div> <div class="product-item-bottom flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewBox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/> <title/></svg> <span class="leading-none text-xs">Add</span></span> <span class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38233" data-price-box="product-id-38233"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span> </span></button> <button type="submit" class="added-to-cart hidden absolute product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit min-h-[3.125rem] py-0 px-4.25 min-h-[3.125rem] leading-none" aria-label="Add to Cart"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewBox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/> <title/></svg> <span class="leading-none text-xs">Added</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38233" data-price-box="product-id-38233"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group py-4.25 md:py-3.25 px-4.25" aria-label="Alert me"><span class="leading-none text-xs">Alert me</span> <div class="hidden md:block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38233" data-price-box="product-id-38233"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></div></div></div> </div></div></form></a> </div> <div class="item flex shrink-0 px-0.5 js_slide w-[70%] md:w-[20.3125rem]"> <!--suppress BadExpressionStatementJS --><a @click.prevent="clickProductLink('https://www.adopt.com/en/golden-queen-eau-de-parfum-glittery-8883701429828295-en.html')" href="https://www.adopt.com/en/golden-queen-eau-de-parfum-glittery-8883701429828295-en.html" class="product-item product-item--widget flex flex-col pb-6 w-full border border-transparent transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="{ currentProductData: { 'sku': '8883701429828295', 'name': 'Golden\u0020Queen', 'short_description': 'Eau\u0020de\u0020parfum\u0020glittery', 'id': '38276', 'image': 'https://adopt.twic.pics/media/catalog/product/g/o/goldenqueen_30ml_1_1.jpg?twic=v1', 'old_price': '0', 'final_price': '11.95', }, showStickyBar: false, isProductUpSell: true, isProductCrossSell: false, isProductRelated: false, isProductItemWidget: true, isProductRitual: false, isLoaded: false, nostoElementId: '', productId: '38276', isFromNosto: 0, load() { window.setAjaxCart('form[name=category-add-to-cart-form-product-_681e2520b15c9]'); this.$nextTick(() => { this.$el.querySelector('.swatches-container')?.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml', }, skipUpdateGallery: true } } ) ); }); this.isLoaded = true; }, clickProductLink(productUrl) { this.sendProductClickEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('vp', this.productId, this.nostoElementId) .done(); }); } } window.location.href = productUrl; }, updateGallery(imageUrl) { const mainImageElement = this.$el.querySelector('.main-image'); mainImageElement.src = imageUrl; const url = new URL(imageUrl); mainImageElement.dataset.twicSrc = 'image:' + url.pathname; this.currentProductData.image = imageUrl; }, showAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.remove('hidden'); addButton.classList.add('hidden'); }, hideAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.add('hidden'); addButton.classList.remove('hidden'); }, addToCart() { this.sendProductDetailsAddToCartEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('cp', this.productId, this.nostoElementId) .done(); }); } } }, openAddCartPanel() { this.$dispatch('last-added-cart-pannel', this.currentProductData); }, sendProductClickEvent() { window.dataLayer?.push({ 'event': 'productClic', 'productClic': [{ 'product_ean': '8883701429828295', 'product_name': 'golden-queen', 'product_id': '38276', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.96', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'list': '' }] }) }, sendProductDetailsAddToCartEvent() { window.dataLayer?.push( { 'event': 'addToCart', 'list': 'product list', 'productaddToCart': [{ 'product_ean': '8883701429828295', 'product_name': 'golden-queen', 'product_quantity': '1', 'product_id': '38276', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_season': 'eau-de-parfum', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.9583333333333', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'product_res': '' }] } ) }, updateFlagsData(eventData) { this.flagsData = eventData.flagsData; }, updatePrice(priceData, productId) { const finalPriceElement = this.$el.querySelectorAll('.product-item-price'); let finalPrice = priceData.finalPrice.amount; let oldPrice = priceData.oldPrice.amount; if (finalPrice === oldPrice) { finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(finalPrice); }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; return; } let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">'; priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Special Price</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>'; priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Regular Price</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>'; priceTemplate += '</div>'; finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerHTML = priceTemplate; }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; }, updateUrl(eventData) { const productLinks = this.$el.querySelectorAll('a'); productLinks.forEach((arrayElement, index) => { if (eventData.option_label.includes('30+')) { arrayElement.href = arrayElement.href.split('?')[0]; } else { arrayElement.href = arrayElement.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label; } }) }, updateShortDescription(value) { this.$el.querySelector('.product-item-short').innerText = value; this.currentProductData.short_description = value.toString(); } }" x-init="load()" @product-addtocart-success-38276.window="openAddCartPanel()" @update-prices-38276="updatePrice($event.detail, 38276);" @update-short-description-listing-38276="updateShortDescription($event.detail);" @update-configurable-url-38276="updateUrl($event.detail);" @configurable-selection-changed-38276="updateFlagsData($event.detail);" @update-gallery-38276="updateGallery($event.detail)" @stock-alert-modal-open-38276="showAlertButton($event)" @stock-alert-modal-close-38276="hideAlertButton($event)" data-sku="8883701429828295"> <form method="post" action="https://www.adopt.com/en/checkout/cart/add/uenc/%25uenc%25/product/38276/" name="category-add-to-cart-form-product-_681e2520b15c9" class="flex flex-col flex-1 item-widget-add-to-cart category-add-to-cart-form-product-_681e2520b15c9" > <input type="hidden" name="form_key" :value="hyva.getFormKey()"/><input type="hidden" name="product" value="38276"/> <div class="link product photo product-item-photo block mx-auto mb-3 w-full aspect-square bg-pink-150" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-pink-150': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist(38276)" aria-label="Add to Wish List" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:m-4 m-2 z-10" data-wishlist="38276"><template x-if="!isInWishlist(38276)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-4 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template><template x-if="isInWishlist(38276)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template></button> <img src="https://adopt.twic.pics/media/catalog/product/g/o/goldenqueen_30ml_1_1.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/g/o/goldenqueen_30ml_1_1.jpg" data-twic-transform="cover-max=614" width="256px" height="286px" alt="Golden Queen" title="Golden Queen" loading="lazy" class="main-image w-full relative transition duration-300 aspect-square h-auto " :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col p-2 gap-2 md:px-5 md:py-2.5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-2 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><div class="text-anthracite font-medium text-xs md:text-base leading-tightened md:leading-tightened">Golden Queen</div></div><div class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced-lg flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum glittery</div></div> <div class="product-item-review cursor-pointer md:order-1 "> <div class="flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38276' }); window.location.href = 'https://www.adopt.com/en/golden-queen-eau-de-parfum-glittery-8883701429828295-en.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/> <g style="opacity:0.2988;"> <path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/> </g> <title/></svg> </div></div></div></div> <div class="flex gap-2.25 items-baseline pb-1.75"><div class="text-tiny leading-tightened font-medium uppercase tracking-spaced-md">Intensity</div><div class="flex gap-1.25 items-center"> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> </div></div> <div x-data='{ ...initConfigurableOptions(38276, {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39298"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["37593"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"37593":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}},"39298":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38276","chooseText":"Choose an Option...","images":[],"index":{"37593":{"153":"351"},"39298":{"153":"350"}},"salable":{"153":{"351":["37593"],"350":["39298"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"37593":"3701429828301","39298":"3701429838843"},"short_description":{"37593":"Eau de parfum glittery 100 ml ","39298":"Eau de parfum 30 ml "},"flags_data":{"37593":{"paillete":{"label":"Glittery","icon":""},"is_vegan":{"label":"Vegan","icon":""}},"39298":{"publication_at":{"label":"New","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39298"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["37593"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"37593":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}},"39298":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38276","chooseText":"Choose an Option...","images":[],"index":{"37593":{"153":"351"},"39298":{"153":"350"}},"salable":{"153":{"351":["37593"],"350":["39298"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"37593":"3701429828301","39298":"3701429838843"},"short_description":{"37593":"Eau de parfum glittery 100 ml ","39298":"Eau de parfum 30 ml "},"flags_data":{"37593":{"paillete":{"label":"Glittery","icon":""},"is_vegan":{"label":"Vegan","icon":""}},"39298":{"publication_at":{"label":"New","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Fen\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-38276", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-38276", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 38276, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, 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; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper38276" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Volume</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38276-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 38276);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38276-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_3" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_3)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_3" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_3)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_3" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_3)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38276-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 38276);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38276-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_4" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_4)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_4" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_4)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_4" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_4)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewBox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div> <div class="grow-[1]"></div> <div class="product-item-bottom flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewBox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/> <title/></svg> <span class="leading-none text-xs">Add</span></span> <span class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38276" data-price-box="product-id-38276"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span> </span></button> <button type="submit" class="added-to-cart hidden absolute product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit min-h-[3.125rem] py-0 px-4.25 min-h-[3.125rem] leading-none" aria-label="Add to Cart"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewBox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/> <title/></svg> <span class="leading-none text-xs">Added</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38276" data-price-box="product-id-38276"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group py-4.25 md:py-3.25 px-4.25" aria-label="Alert me"><span class="leading-none text-xs">Alert me</span> <div class="hidden md:block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38276" data-price-box="product-id-38276"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></div></div></div> </div></div></form></a> </div> <div class="item flex shrink-0 px-0.5 js_slide w-[70%] md:w-[20.3125rem]"> <!--suppress BadExpressionStatementJS --><a @click.prevent="clickProductLink('https://www.adopt.com/en/melrose-paradise-eau-de-parfum-8883701429830823-en.html')" href="https://www.adopt.com/en/melrose-paradise-eau-de-parfum-8883701429830823-en.html" class="product-item product-item--widget flex flex-col pb-6 w-full border border-transparent transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="{ currentProductData: { 'sku': '8883701429830823', 'name': 'Melrose\u0020Paradise', 'short_description': 'eau\u0020de\u0020parfum', 'id': '38282', 'image': 'https://adopt.twic.pics/media/catalog/product/l/i/life_perf_melroseparadise_30ml_1_2_.jpg?twic=v1', 'old_price': '0', 'final_price': '11.95', }, showStickyBar: false, isProductUpSell: true, isProductCrossSell: false, isProductRelated: false, isProductItemWidget: true, isProductRitual: false, isLoaded: false, nostoElementId: '', productId: '38282', isFromNosto: 0, load() { window.setAjaxCart('form[name=category-add-to-cart-form-product-_681e2520c52c5]'); this.$nextTick(() => { this.$el.querySelector('.swatches-container')?.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml', }, skipUpdateGallery: true } } ) ); }); this.isLoaded = true; }, clickProductLink(productUrl) { this.sendProductClickEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('vp', this.productId, this.nostoElementId) .done(); }); } } window.location.href = productUrl; }, updateGallery(imageUrl) { const mainImageElement = this.$el.querySelector('.main-image'); mainImageElement.src = imageUrl; const url = new URL(imageUrl); mainImageElement.dataset.twicSrc = 'image:' + url.pathname; this.currentProductData.image = imageUrl; }, showAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.remove('hidden'); addButton.classList.add('hidden'); }, hideAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.add('hidden'); addButton.classList.remove('hidden'); }, addToCart() { this.sendProductDetailsAddToCartEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('cp', this.productId, this.nostoElementId) .done(); }); } } }, openAddCartPanel() { this.$dispatch('last-added-cart-pannel', this.currentProductData); }, sendProductClickEvent() { window.dataLayer?.push({ 'event': 'productClic', 'productClic': [{ 'product_ean': '8883701429830823', 'product_name': 'melrose-paradise', 'product_id': '38282', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.96', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'list': '' }] }) }, sendProductDetailsAddToCartEvent() { window.dataLayer?.push( { 'event': 'addToCart', 'list': 'product list', 'productaddToCart': [{ 'product_ean': '8883701429830823', 'product_name': 'melrose-paradise', 'product_quantity': '1', 'product_id': '38282', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_season': 'eau-de-parfum', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.9583333333333', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'product_res': '' }] } ) }, updateFlagsData(eventData) { this.flagsData = eventData.flagsData; }, updatePrice(priceData, productId) { const finalPriceElement = this.$el.querySelectorAll('.product-item-price'); let finalPrice = priceData.finalPrice.amount; let oldPrice = priceData.oldPrice.amount; if (finalPrice === oldPrice) { finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(finalPrice); }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; return; } let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">'; priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Special Price</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>'; priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Regular Price</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>'; priceTemplate += '</div>'; finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerHTML = priceTemplate; }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; }, updateUrl(eventData) { const productLinks = this.$el.querySelectorAll('a'); productLinks.forEach((arrayElement, index) => { if (eventData.option_label.includes('30+')) { arrayElement.href = arrayElement.href.split('?')[0]; } else { arrayElement.href = arrayElement.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label; } }) }, updateShortDescription(value) { this.$el.querySelector('.product-item-short').innerText = value; this.currentProductData.short_description = value.toString(); } }" x-init="load()" @product-addtocart-success-38282.window="openAddCartPanel()" @update-prices-38282="updatePrice($event.detail, 38282);" @update-short-description-listing-38282="updateShortDescription($event.detail);" @update-configurable-url-38282="updateUrl($event.detail);" @configurable-selection-changed-38282="updateFlagsData($event.detail);" @update-gallery-38282="updateGallery($event.detail)" @stock-alert-modal-open-38282="showAlertButton($event)" @stock-alert-modal-close-38282="hideAlertButton($event)" data-sku="8883701429830823"> <form method="post" action="https://www.adopt.com/en/checkout/cart/add/uenc/%25uenc%25/product/38282/" name="category-add-to-cart-form-product-_681e2520c52c5" class="flex flex-col flex-1 item-widget-add-to-cart category-add-to-cart-form-product-_681e2520c52c5" > <input type="hidden" name="form_key" :value="hyva.getFormKey()"/><input type="hidden" name="product" value="38282"/> <div class="link product photo product-item-photo block mx-auto mb-3 w-full aspect-square bg-pink-150" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-pink-150': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist(38282)" aria-label="Add to Wish List" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:m-4 m-2 z-10" data-wishlist="38282"><template x-if="!isInWishlist(38282)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-4 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template><template x-if="isInWishlist(38282)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template></button> <img src="https://adopt.twic.pics/media/catalog/product/l/i/life_perf_melroseparadise_30ml_1_2_.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/l/i/life_perf_melroseparadise_30ml_1_2_.jpg" data-twic-transform="cover-max=614" width="256px" height="286px" alt="Melrose Paradise" title="Melrose Paradise" loading="lazy" class="main-image w-full relative transition duration-300 aspect-square h-auto " :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col p-2 gap-2 md:px-5 md:py-2.5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-2 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><div class="text-anthracite font-medium text-xs md:text-base leading-tightened md:leading-tightened">Melrose Paradise</div></div><div class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced-lg flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">eau de parfum</div></div> <div class="product-item-review cursor-pointer md:order-1 "> <div class="flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38282' }); window.location.href = 'https://www.adopt.com/en/melrose-paradise-eau-de-parfum-8883701429830823-en.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/> <g style="opacity:0.2988;"> <path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/> </g> <title/></svg> </div></div></div></div> <div class="flex gap-2.25 items-baseline pb-1.75"><div class="text-tiny leading-tightened font-medium uppercase tracking-spaced-md">Intensity</div><div class="flex gap-1.25 items-center"> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> </div></div> <div x-data='{ ...initConfigurableOptions(38282, {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39317"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38021"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"39317":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"38021":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38282","chooseText":"Choose an Option...","images":[],"index":{"39317":{"153":"350"},"38021":{"153":"351"}},"salable":{"153":{"350":["39317"],"351":["38021"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"39317":"3701429839031","38021":"3701429830830"},"short_description":{"39317":"eau de parfum 30 ml","38021":"Eau de parfum 100 ml"},"flags_data":{"39317":{"is_bestseller":{"label":"BEST-SELLER","icon":""}},"38021":[]}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39317"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38021"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"39317":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"38021":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38282","chooseText":"Choose an Option...","images":[],"index":{"39317":{"153":"350"},"38021":{"153":"351"}},"salable":{"153":{"350":["39317"],"351":["38021"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"39317":"3701429839031","38021":"3701429830830"},"short_description":{"39317":"eau de parfum 30 ml","38021":"Eau de parfum 100 ml"},"flags_data":{"39317":{"is_bestseller":{"label":"BEST-SELLER","icon":""}},"38021":[]}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Fen\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-38282", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-38282", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 38282, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, 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; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper38282" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Volume</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38282-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 38282);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38282-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_5" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_5)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_5" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_5)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_5" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_5)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38282-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 38282);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38282-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_6" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_6)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_6" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_6)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_6" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_6)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewBox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div> <div class="grow-[1]"></div> <div class="product-item-bottom flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewBox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/> <title/></svg> <span class="leading-none text-xs">Add</span></span> <span class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38282" data-price-box="product-id-38282"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span> </span></button> <button type="submit" class="added-to-cart hidden absolute product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit min-h-[3.125rem] py-0 px-4.25 min-h-[3.125rem] leading-none" aria-label="Add to Cart"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewBox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/> <title/></svg> <span class="leading-none text-xs">Added</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38282" data-price-box="product-id-38282"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group py-4.25 md:py-3.25 px-4.25" aria-label="Alert me"><span class="leading-none text-xs">Alert me</span> <div class="hidden md:block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38282" data-price-box="product-id-38282"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></div></div></div> </div></div></form></a> </div> <div class="item flex shrink-0 px-0.5 js_slide w-[70%] md:w-[20.3125rem]"> <!--suppress BadExpressionStatementJS --><a @click.prevent="clickProductLink('https://www.adopt.com/en/rose-diamant-eau-de-parfum-8883701429819996-en.html')" href="https://www.adopt.com/en/rose-diamant-eau-de-parfum-8883701429819996-en.html" class="product-item product-item--widget flex flex-col pb-6 w-full border border-transparent transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="{ currentProductData: { 'sku': '8883701429819996', 'name': 'Rose\u0020Diamant', 'short_description': 'Eau\u0020de\u0020parfum\u0020glittery', 'id': '38302', 'image': 'https://adopt.twic.pics/media/catalog/product/l/i/life_perf_rosediamant_30ml_3701429819996_1_2.jpg?twic=v1', 'old_price': '0', 'final_price': '11.95', }, showStickyBar: false, isProductUpSell: true, isProductCrossSell: false, isProductRelated: false, isProductItemWidget: true, isProductRitual: false, isLoaded: false, nostoElementId: '', productId: '38302', isFromNosto: 0, load() { window.setAjaxCart('form[name=category-add-to-cart-form-product-_681e2520d8246]'); this.$nextTick(() => { this.$el.querySelector('.swatches-container')?.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml', }, skipUpdateGallery: true } } ) ); }); this.isLoaded = true; }, clickProductLink(productUrl) { this.sendProductClickEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('vp', this.productId, this.nostoElementId) .done(); }); } } window.location.href = productUrl; }, updateGallery(imageUrl) { const mainImageElement = this.$el.querySelector('.main-image'); mainImageElement.src = imageUrl; const url = new URL(imageUrl); mainImageElement.dataset.twicSrc = 'image:' + url.pathname; this.currentProductData.image = imageUrl; }, showAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.remove('hidden'); addButton.classList.add('hidden'); }, hideAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.add('hidden'); addButton.classList.remove('hidden'); }, addToCart() { this.sendProductDetailsAddToCartEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('cp', this.productId, this.nostoElementId) .done(); }); } } }, openAddCartPanel() { this.$dispatch('last-added-cart-pannel', this.currentProductData); }, sendProductClickEvent() { window.dataLayer?.push({ 'event': 'productClic', 'productClic': [{ 'product_ean': '8883701429819996', 'product_name': 'rose-diamant', 'product_id': '38302', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.96', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'list': '' }] }) }, sendProductDetailsAddToCartEvent() { window.dataLayer?.push( { 'event': 'addToCart', 'list': 'product list', 'productaddToCart': [{ 'product_ean': '8883701429819996', 'product_name': 'rose-diamant', 'product_quantity': '1', 'product_id': '38302', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_season': 'eau-de-parfum', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.9583333333333', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'product_res': '' }] } ) }, updateFlagsData(eventData) { this.flagsData = eventData.flagsData; }, updatePrice(priceData, productId) { const finalPriceElement = this.$el.querySelectorAll('.product-item-price'); let finalPrice = priceData.finalPrice.amount; let oldPrice = priceData.oldPrice.amount; if (finalPrice === oldPrice) { finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(finalPrice); }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; return; } let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">'; priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Special Price</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>'; priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Regular Price</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>'; priceTemplate += '</div>'; finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerHTML = priceTemplate; }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; }, updateUrl(eventData) { const productLinks = this.$el.querySelectorAll('a'); productLinks.forEach((arrayElement, index) => { if (eventData.option_label.includes('30+')) { arrayElement.href = arrayElement.href.split('?')[0]; } else { arrayElement.href = arrayElement.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label; } }) }, updateShortDescription(value) { this.$el.querySelector('.product-item-short').innerText = value; this.currentProductData.short_description = value.toString(); } }" x-init="load()" @product-addtocart-success-38302.window="openAddCartPanel()" @update-prices-38302="updatePrice($event.detail, 38302);" @update-short-description-listing-38302="updateShortDescription($event.detail);" @update-configurable-url-38302="updateUrl($event.detail);" @configurable-selection-changed-38302="updateFlagsData($event.detail);" @update-gallery-38302="updateGallery($event.detail)" @stock-alert-modal-open-38302="showAlertButton($event)" @stock-alert-modal-close-38302="hideAlertButton($event)" data-sku="8883701429819996"> <form method="post" action="https://www.adopt.com/en/checkout/cart/add/uenc/%25uenc%25/product/38302/" name="category-add-to-cart-form-product-_681e2520d8246" class="flex flex-col flex-1 item-widget-add-to-cart category-add-to-cart-form-product-_681e2520d8246" > <input type="hidden" name="form_key" :value="hyva.getFormKey()"/><input type="hidden" name="product" value="38302"/> <div class="link product photo product-item-photo block mx-auto mb-3 w-full aspect-square bg-pink-150" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-pink-150': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist(38302)" aria-label="Add to Wish List" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:m-4 m-2 z-10" data-wishlist="38302"><template x-if="!isInWishlist(38302)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-4 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template><template x-if="isInWishlist(38302)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template></button> <img src="https://adopt.twic.pics/media/catalog/product/l/i/life_perf_rosediamant_30ml_3701429819996_1_2.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/l/i/life_perf_rosediamant_30ml_3701429819996_1_2.jpg" data-twic-transform="cover-max=614" width="256px" height="286px" alt="Rose Diamant" title="Rose Diamant" loading="lazy" class="main-image w-full relative transition duration-300 aspect-square h-auto " :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col p-2 gap-2 md:px-5 md:py-2.5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-2 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><div class="text-anthracite font-medium text-xs md:text-base leading-tightened md:leading-tightened">Rose Diamant</div></div><div class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced-lg flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum glittery</div></div> <div class="product-item-review cursor-pointer md:order-1 "> <div class="flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38302' }); window.location.href = 'https://www.adopt.com/en/rose-diamant-eau-de-parfum-8883701429819996-en.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> </div></div></div></div> <div class="flex gap-2.25 items-baseline pb-1.75"><div class="text-tiny leading-tightened font-medium uppercase tracking-spaced-md">Intensity</div><div class="flex gap-1.25 items-center"> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> </div></div> <div x-data='{ ...initConfigurableOptions(38302, {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["37578"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["37579"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"37578":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"37579":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38302","chooseText":"Choose an Option...","images":[],"index":{"37578":{"153":"350"},"37579":{"153":"351"}},"salable":{"153":{"350":["37578"],"351":["37579"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"37578":"3701429830564","37579":"3701429830588"},"short_description":{"37578":"Eau de parfum glittery 30 ml ","37579":"Eau de parfum 100 ml"},"flags_data":{"37578":{"paillete":{"label":"Glittery","icon":""},"is_vegan":{"label":"Vegan","icon":""}},"37579":{"is_bestseller":{"label":"BEST-SELLER","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["37578"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["37579"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"37578":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"37579":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38302","chooseText":"Choose an Option...","images":[],"index":{"37578":{"153":"350"},"37579":{"153":"351"}},"salable":{"153":{"350":["37578"],"351":["37579"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"37578":"3701429830564","37579":"3701429830588"},"short_description":{"37578":"Eau de parfum glittery 30 ml ","37579":"Eau de parfum 100 ml"},"flags_data":{"37578":{"paillete":{"label":"Glittery","icon":""},"is_vegan":{"label":"Vegan","icon":""}},"37579":{"is_bestseller":{"label":"BEST-SELLER","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Fen\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-38302", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-38302", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 38302, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, 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; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper38302" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Volume</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38302-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 38302);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38302-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_7" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_7)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_7" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_7)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_7" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_7)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38302-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 38302);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38302-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_8" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_8)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_8" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_8)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_8" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_8)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewBox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div> <div class="grow-[1]"></div> <div class="product-item-bottom flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewBox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/> <title/></svg> <span class="leading-none text-xs">Add</span></span> <span class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38302" data-price-box="product-id-38302"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span> </span></button> <button type="submit" class="added-to-cart hidden absolute product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit min-h-[3.125rem] py-0 px-4.25 min-h-[3.125rem] leading-none" aria-label="Add to Cart"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewBox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/> <title/></svg> <span class="leading-none text-xs">Added</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38302" data-price-box="product-id-38302"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group py-4.25 md:py-3.25 px-4.25" aria-label="Alert me"><span class="leading-none text-xs">Alert me</span> <div class="hidden md:block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38302" data-price-box="product-id-38302"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></div></div></div> </div></div></form></a> </div> <div class="item flex shrink-0 px-0.5 js_slide w-[70%] md:w-[20.3125rem]"> <!--suppress BadExpressionStatementJS --><a @click.prevent="clickProductLink('https://www.adopt.com/en/rose-noire-eau-de-parfum-8883701429820015-en.html')" href="https://www.adopt.com/en/rose-noire-eau-de-parfum-8883701429820015-en.html" class="product-item product-item--widget flex flex-col pb-6 w-full border border-transparent transition duration-300 hover:bg-lavender-300 hover:border-lavender-300 group" x-data="{ currentProductData: { 'sku': '8883701429820015', 'name': 'Rose\u0020Noire', 'short_description': 'Eau\u0020de\u0020parfum', 'id': '38308', 'image': 'https://adopt.twic.pics/media/catalog/product/s/t/still_perf_rosenoire_30ml_3701429820015_hd_invio.jpg?twic=v1', 'old_price': '0', 'final_price': '11.95', }, showStickyBar: false, isProductUpSell: true, isProductCrossSell: false, isProductRelated: false, isProductItemWidget: true, isProductRitual: false, isLoaded: false, nostoElementId: '', productId: '38308', isFromNosto: 0, load() { window.setAjaxCart('form[name=category-add-to-cart-form-product-_681e2520ec364]'); this.$nextTick(() => { this.$el.querySelector('.swatches-container')?.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml', }, skipUpdateGallery: true } } ) ); }); this.isLoaded = true; }, clickProductLink(productUrl) { this.sendProductClickEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('vp', this.productId, this.nostoElementId) .done(); }); } } window.location.href = productUrl; }, updateGallery(imageUrl) { const mainImageElement = this.$el.querySelector('.main-image'); mainImageElement.src = imageUrl; const url = new URL(imageUrl); mainImageElement.dataset.twicSrc = 'image:' + url.pathname; this.currentProductData.image = imageUrl; }, showAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.remove('hidden'); addButton.classList.add('hidden'); }, hideAlertButton() { const alertButton = this.$el.querySelector('.product-item-alertstock'); const addButton = this.$el.querySelector('.product-item-addtocart'); alertButton.classList.add('hidden'); addButton.classList.remove('hidden'); }, addToCart() { this.sendProductDetailsAddToCartEvent(); if (this.isFromNosto) { if (typeof nostojs === 'function') { nostojs(api => { api.defaultSession() .recordAttribution('cp', this.productId, this.nostoElementId) .done(); }); } } }, openAddCartPanel() { this.$dispatch('last-added-cart-pannel', this.currentProductData); }, sendProductClickEvent() { window.dataLayer?.push({ 'event': 'productClic', 'productClic': [{ 'product_ean': '8883701429820015', 'product_name': 'rose-noire', 'product_id': '38308', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.96', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'list': '' }] }) }, sendProductDetailsAddToCartEvent() { window.dataLayer?.push( { 'event': 'addToCart', 'list': 'product list', 'productaddToCart': [{ 'product_ean': '8883701429820015', 'product_name': 'rose-noire', 'product_quantity': '1', 'product_id': '38308', 'product_family': 'fragrance', 'product_rayon': 'eau-de-parfum-for-women', 'product_season': 'eau-de-parfum', 'product_size': '', 'product_color': '', 'product_unitprice_ati': '11.95', 'product_unitprice_tf': '9.9583333333333', 'product_discount_ati': '-11.95', 'product_discount_tf': '-11.95', 'product_res': '' }] } ) }, updateFlagsData(eventData) { this.flagsData = eventData.flagsData; }, updatePrice(priceData, productId) { const finalPriceElement = this.$el.querySelectorAll('.product-item-price'); let finalPrice = priceData.finalPrice.amount; let oldPrice = priceData.oldPrice.amount; if (finalPrice === oldPrice) { finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(finalPrice); }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; return; } let priceTemplate = '<div class="price-box price-final_price" data-role="priceBox" data-product-id="' + productId + '" data-price-box="product-id-' + productId + '">'; priceTemplate += '<span class="special-price"><span class="price-container price-final_price tax weee"><span class="price-label">Special Price</span><span id="product-price-' + productId + '" data-price-amount="' + finalPrice + '" data-price-type="finalPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(finalPrice) + '</span></span></span></span>'; priceTemplate += '<span class="old-price no-underline-important"><span class="price-container price-final_price tax weee"><span class="price-label">Regular Price</span><span id="old-price-' + productId + '" data-price-amount="' + oldPrice + '" data-price-type="oldPrice" class="price-wrapper">'; priceTemplate += '<span class="price">' + hyva.formatPrice(oldPrice) + '</span></span></span></span>'; priceTemplate += '</div>'; finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerHTML = priceTemplate; }); this.currentProductData.final_price = finalPrice; this.currentProductData.old_price = oldPrice; }, updateUrl(eventData) { const productLinks = this.$el.querySelectorAll('a'); productLinks.forEach((arrayElement, index) => { if (eventData.option_label.includes('30+')) { arrayElement.href = arrayElement.href.split('?')[0]; } else { arrayElement.href = arrayElement.href.split('?')[0] + '?' + eventData.attribute_code + '=' + eventData.option_label; } }) }, updateShortDescription(value) { this.$el.querySelector('.product-item-short').innerText = value; this.currentProductData.short_description = value.toString(); } }" x-init="load()" @product-addtocart-success-38308.window="openAddCartPanel()" @update-prices-38308="updatePrice($event.detail, 38308);" @update-short-description-listing-38308="updateShortDescription($event.detail);" @update-configurable-url-38308="updateUrl($event.detail);" @configurable-selection-changed-38308="updateFlagsData($event.detail);" @update-gallery-38308="updateGallery($event.detail)" @stock-alert-modal-open-38308="showAlertButton($event)" @stock-alert-modal-close-38308="hideAlertButton($event)" data-sku="8883701429820015"> <form method="post" action="https://www.adopt.com/en/checkout/cart/add/uenc/%25uenc%25/product/38308/" name="category-add-to-cart-form-product-_681e2520ec364" class="flex flex-col flex-1 item-widget-add-to-cart category-add-to-cart-form-product-_681e2520ec364" > <input type="hidden" name="form_key" :value="hyva.getFormKey()"/><input type="hidden" name="product" value="38308"/> <div class="link product photo product-item-photo block mx-auto mb-3 w-full aspect-square bg-pink-150" :class="{ 'aspect-auto': isLoaded, 'aspect-square bg-pink-150': !isLoaded }" tabindex="-1"><div class="relative aspect-square overflow-hidden"> <button x-data="initWishlist()" @click.prevent.stop="toggleWishlist(38308)" aria-label="Add to Wish List" type="button" class="product-item-wishlist btn-favorite absolute right-0 md:m-4 m-2 z-10" data-wishlist="38308"><template x-if="!isInWishlist(38308)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="w-4 md:w-5.5 h-auto stroke-anthracite-300" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template><template x-if="isInWishlist(38308)"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="favorite-full" version="1.1" x="0px" y="0px" viewBox="0 0 22.5 19.8" enable-background="new 0 0 22.5 19.8" xml:space="preserve" class="btn-favorite-listing btn-favorite in-favorite w-4 md:w-5.5 h-auto" width="23" height="20" role="img"> <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M11.3,19.8c-21.7-12.3-6.5-25.6,0-17.1C17.8-5.8,33,7.5,11.3,19.8z "/> <title/></svg> </template></button> <img src="https://adopt.twic.pics/media/catalog/product/s/t/still_perf_rosenoire_30ml_3701429820015_hd_invio.jpg?twic=v1/output=preview" data-twic-src="image:media/catalog/product/s/t/still_perf_rosenoire_30ml_3701429820015_hd_invio.jpg" data-twic-transform="cover-max=614" width="256px" height="286px" alt="Rose Noire" title="Rose Noire" loading="lazy" class="main-image w-full relative transition duration-300 aspect-square h-auto " :class="{ 'aspect-square' : !isLoaded}"></div></div><div @click.stop class="product-item-content flex flex-col p-2 gap-2 md:px-5 md:py-2.5 flex-1"> <div class="flex flex-col md:flex-row gap-2 md:items-start md:justify-between"><div class="flex flex-col gap-2 md:flex-row md:flex-wrap"><div class="product-item-name flex-1 cursor-pointer flex items-center"><div class="text-anthracite font-medium text-xs md:text-base leading-tightened md:leading-tightened">Rose Noire</div></div><div class="uppercase font-medium text-pink text-very-tiny md:text-tiny tracking-spaced-lg flex md:justify-between items-center gap-x-2.5 md:order-2 w-full"> <div class="product-item-short">Eau de parfum</div></div> <div class="product-item-review cursor-pointer md:order-1 "> <div class="flex cursor-pointer items-center gap-0.5" x-data="{ clickViewReviewsEvent() { window.dataLayer?.push({ 'event': 'voirAvis', 'product_id': '38308' }); window.location.href = 'https://www.adopt.com/en/rose-noire-eau-de-parfum-8883701429820015-en.html#customer-reviews' } }" @click="clickViewReviewsEvent()"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> </div></div></div></div> <div class="flex gap-2.25 items-baseline pb-1.75"><div class="text-tiny leading-tightened font-medium uppercase tracking-spaced-md">Intensity</div><div class="flex gap-1.25 items-center"> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full bg-anthracite"></span> <span class="block w-2.25 h-2.25 border border-anthracite rounded-full "></span> </div></div> <div x-data='{ ...initConfigurableOptions(38308, {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39302"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38465"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"39302":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"38465":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38308","chooseText":"Choose an Option...","images":[],"index":{"39302":{"153":"350"},"38465":{"153":"351"}},"salable":{"153":{"350":["39302"],"351":["38465"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"39302":"3701429838911","38465":"3701429827441"},"short_description":{"39302":"Eau de parfum 30 ml ","38465":"Eau de parfum 100 ml "},"flags_data":{"39302":{"is_bestseller":{"label":"BEST-SELLER","icon":""}},"38465":{"is_bestseller":{"label":"BEST-SELLER","icon":""}}}}), ...initSwatchOptions({"153":{"350":{"type":"0","value":null,"label":"30 ml"},"351":{"type":"0","value":null,"label":"100 ml"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}}), ...{ optionConfig: {"attributes":{"153":{"id":"153","code":"contenance","label":"Volume","options":[{"id":"350","label":"30 ml","products":["39302"],"price_per_contenance":39.833333333333,"is_first":true,"is_last":false},{"id":"351","label":"100 ml","products":["38465"],"price_per_contenance":26.95,"is_last":true,"is_first":false}],"position":"0"}},"template":"\u20ac<%- data.price %>","currencyFormat":"\u20ac%s","optionPrices":{"39302":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95},"tierPrices":[],"msrpPrice":{"amount":0}},"38465":{"baseOldPrice":{"amount":22.458332333333},"oldPrice":{"amount":26.95},"basePrice":{"amount":22.458332333333},"finalPrice":{"amount":26.95},"tierPrices":[],"msrpPrice":{"amount":0}}},"priceFormat":{"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":9.9583323333333},"oldPrice":{"amount":11.95},"basePrice":{"amount":9.9583323333333},"finalPrice":{"amount":11.95}},"productId":"38308","chooseText":"Choose an Option...","images":[],"index":{"39302":{"153":"350"},"38465":{"153":"351"}},"salable":{"153":{"350":["39302"],"351":["38465"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"base","sku":{"39302":"3701429838911","38465":"3701429827441"},"short_description":{"39302":"Eau de parfum 30 ml ","38465":"Eau de parfum 100 ml "},"flags_data":{"39302":{"is_bestseller":{"label":"BEST-SELLER","icon":""}},"38465":{"is_bestseller":{"label":"BEST-SELLER","icon":""}}}}, mediaCallback: "https\u003A\u002F\u002Fwww.adopt.com\u002Fen\u002Fswatches\u002Fajax\u002Fmedia", changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0, productId) { if (value === "") { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-open-" + parentId, { detail: {productId: this.productIndex }})); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { this.selectedValues[optionId] = value; this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); if (!skipUpdateGallery) { this.updateGallery(); } updateUrl && attributeCode && optionLabel && this.updateUrl(attributeCode, optionLabel); this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "configurable-selection-changed-" + this.productId, { detail: { productId: this.productIndex, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); this.$el.closest(".product-item").dispatchEvent(new CustomEvent("stock-alert-modal-close-" + parentId, { productId: this.productIndex })); }, updateUrl(attributeCode, optionLabel) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-configurable-url-" + this.productId, { detail: { attribute_code: attributeCode, option_label: optionLabel.trim().replace(/ /g,"+") } } ) ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updatePrice(priceData) { const finalPriceElement = this.$el.querySelectorAll(".product-item-price"); finalPriceElement.forEach((arrayElement, index) => { arrayElement.innerText = hyva.formatPrice(priceData.finalPrice.amount); }) }, updateShortDescription() { let shortDescValue = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (shortDescValue) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-short-description-listing-" + this.productId, { detail: Object.assign( shortDescValue ) } ) ) } }, updateGallery() { if (!this.productIndex) { return; } fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, { method: "GET", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }).then(response => { return response.json() }).then(data => { if (data.errors) { console.warn(data.errors); } else { const image = data && data.medium; if (image) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-38308", {detail: image} ) ); } const hoverImage = data && data.hover_image; if (hoverImage) { this.$el.closest(".product-item").dispatchEvent( new CustomEvent( "update-gallery-hover-38308", {detail: hoverImage} ) ); } } }).catch(error => { console.warn(error) }); }, preselectDefaultContenance(orderedOptionsIds, skipUpdateGallery = false) { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); let contenanceParam = urlQueryParams.get("contenance"); if (contenanceParam !== null) { return; } Object.values(this.optionConfig.attributes).map(attribute => { let found = false; let hasSpecialPriceFound = false; let optionId; let optionLabel; let isOptionFoundDisabled = false; Object.values(orderedOptionsIds).map(orderedOptionId => { Object.values(attribute.options).map(option => { if ((option.disabled === true) || (typeof this.optionConfig.optionPrices[option.products[0]] === "undefined")) { return; } let hasSpecialPrice = this.optionConfig.optionPrices[option.products[0]]?.finalPrice.amount !== this.optionConfig.optionPrices[option.products[0]]?.oldPrice.amount; if (!hasSpecialPriceFound && hasSpecialPrice && option.label === orderedOptionId) { found = true; hasSpecialPriceFound = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } if ((found === false) && option.label === orderedOptionId) { found = true; optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); }); if (attribute.code === "contenance") { if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } else { this.changeOption(attribute.id, optionId, skipUpdateGallery, attribute.code, optionLabel); } } else { this.changeOption(attribute.id, optionId); } }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace("?", "")); Object.values(this.optionConfig.attributes).map(attribute => { let isOptionFoundDisabled = false; if (urlQueryParams.get(attribute.code) !== null) { let optionId = urlQueryParams.get(attribute.code); let found = false; Object.values(attribute.options).map(option => { if (found === false && option.label === optionId) { optionId = option.id; optionLabel = option.label; if (option.disabled === true) { isOptionFoundDisabled = true; } } }); if (isOptionFoundDisabled) { this.changeDisabledOption(attribute.id, optionId, false, attribute.code, optionLabel, true, 38308, this.productIndex); } else { this.changeOption(attribute.id, optionId); } } }); }, mouseDown: false, startX: 0, maxScroll: 0, scrollLeft: null, slider: null, show: false, 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; }) }, openSwitch() { this.show = !this.show; }, isLoaded: false, moreSwatch: false, isMobile: window.innerWidth < 768, heightSwatch: 0, openSwatch($refs) { const wrapper = this.$el.parentElement.querySelector(".swatch-attribute-wrapper"); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(this.show) { wrapper.style.height = height + "px"; this.show = false; } else { wrapper.style.height = "auto"; this.show = true; } }, initIfMoreSwatch($refs) { let thisParent = this; let timer; timer = setInterval(() => { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { clearInterval(timer); wrapper.dataset.baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(thisParent.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(Math.floor(wrapper.getBoundingClientRect().height) > height) { thisParent.moreSwatch = true; wrapper.style.height = height + "px"; } } }, 500); }, checkIfMoreSwatch() { const wrapper = this.$el.querySelector(".swatch-attribute-wrapper"); if (wrapper && (wrapper.dataset.swatchCode !== "contenance")) { wrapper.style.height = ""; const baseHeight = Math.floor(wrapper.getBoundingClientRect().height); let height; if(this.isMobile) { height = parseInt(wrapper.dataset.swatchMobile); } else { height = parseInt(wrapper.dataset.swatchDesktop); } if(baseHeight > height) { this.moreSwatch = true; wrapper.style.height = height + "px"; } else { this.moreSwatch = false; } } } } }' x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect(); initIfMoreSwatch($refs); isLoaded = true" @select-default-contenance="preselectDefaultContenance($event.detail.contenance, $event.detail.skipUpdateGallery);" @resize.window="resizeEvent(); isMobile = window.outerWidth < 768; checkIfMoreSwatch()" class="grow-[1] relative swatches-container" > <div class="swatch-attribute contenance"><div class="w-full flex !flex-nowrap overflow-hidden swatch-attribute-options -ml-1 w-full justify-between gap-1.25 items-center"><div class="swatch-attribute-wrapper w-full flex flex-wrap gap-y-1 m-0 overflow-y-hidden transition-all items-center contenance" :class="{ 'gap-x-0.5': ('contenance' != 'contenance'), 'gap-x-1': (isProductPage && !isProductUpSell), 'gap-x-0 md:gap-x-1': ('contenance' == 'contenance') && (isCategoryPage || isProductRelated || isProductItemWidget || isProductRitual), '!p-0': isProductUpSell }" role="radiogroup" x-bind="scrollEvents" x-ref="swatchWrapper38308" data-swatch-mobile="30" data-swatch-desktop="38" data-swatch-code="contenance" ><label class="sr-only" for="attributecontenance"><span> Volume</span></label> <template x-for="(item, index) in optionConfig.attributes[153]?.options" :key="item.id"> <div class="pill-radio-container" :style="isMobile ? `width: calc(100% / ${attribueOptionsLength});` : ``" :class="{'hidden': (typeof item.disabled === 'undefined') && item.products.length === 0 , 'w-full': isProductPage && !isProductUpSell, 'p-1': optionConfig.attributes[153].code === 'adopt_swatch_color' || optionConfig.attributes[153].code === 'adopt_color', 'flex-1': optionConfig.attributes[153].code === 'contenance' && isProductPage}"> <template x-if="(typeof item.disabled === 'undefined') && item.products.length > 0"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38308-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(153, $event.target.value, false, 'contenance', item.label, true, 38308);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38308-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity flex flex-row-reverse gap-4 bg-lavender-300 text-anthracite-400" ><div class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs"><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></div><div x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_9" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_9)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_9" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_9)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_9" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_9)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></div></label></div></template><template x-if="(typeof item.disabled !== 'undefined') && item.disabled === true"><div class="pill-radio" :class="{ 'checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell && !showStickyBar, 'pill-radio--small': (isProductUpSell && !isProductRelated) || isProductCrossSell }"><input :id="'attribute-option--38308-' + item.id" :value="item.id" name="super_attribute[153]" type="radio" class="sr-only" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeDisabledOption(153, $event.target.value, false, 'contenance', item.label, true, 38308);" :checked="selectedValues[153] === item.id" ><label :for="'attribute-option--38308-'+item.id" :style="getSwatchBackgroundStyle('153',item.id)" :class="{ 'swatch-attribute-item__notext' : !isTextSwatch(153, item.id), 'flex-col-reverse gap-3 text-center checked-pill-radio': attribueOptionsLength > 2 && isProductPage && !isProductUpSell, 'rounded-[10px]': (isProductPage && !isProductUpSell), '!px-1 md:!px-3.75': attribueOptionsLength > 2 && isCategoryPage, 'three-pill-radio': attribueOptionsLength > 2 && isProductPage || (isProductPage && isProductUpSell) || (isProductCrossSell), '!rounded-l-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_first === true), '!rounded-r-[10px] md:!rounded-none': (isCategoryPage || isProductRelated || isProductItemWidget) && (item.is_last === true), '!rounded-l-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_first === true), '!rounded-r-[10px]': (isProductUpSell || isProductCrossSell) && (item.is_last === true), '!py-1.5 lg:!px-6 !px-2 !gap-6 !flex-row-reverse': showStickyBar, 'lg:!flex-row-reverse !flex-col-reverse': attribueOptionsLength > 2 && showStickyBar }" class="pill-radio-capacity out-of-stock flex flex-row-reverse gap-4 !text-[#9691A1] !bg-[#EEECF1]" ><span class="leading-3.75 flex flex-col gap-3" :class="{'!gap-1.5': showStickyBar}"><span class="line-through" :class="{ 'uppercase text-sm leading-3.75': isProductPage && !isProductUpSell, 'lowercase text-tiny leading-[13.2px] md:text-xs md:leading-3.9': isCategoryPage || isProductItemWidget, 'lowercase text-tiny leading-[13.2px]': isProductUpSell || isProductCrossSell }" x-text="item.label"></span> <span x-show="isProductPage && !isProductUpSell" class="font-normal text-very-tiny md:text-xxs" ><span x-data="{ getPriceForContenance(price) { return hyva.formatPrice(price).replace(' ', ''); } }" x-show="item.price_per_contenance > 0" x-text="getPriceForContenance(item.price_per_contenance) + '/100ml'"></span></span></span> <span x-show="isProductPage && !isProductUpSell"><template x-if="optionConfig.attributes[153].options[0]"><template x-if="item.label === optionConfig.attributes[153].options[0].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="30ml-capacity" viewBox="0 0 17 47" fill="none" class="h-full" width="17" height="47" role="img"> <mask id="path-1-inside-1_4535_16993_10" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.56633 2.03088C6.56633 2.03088 5.75568 2.84154 5.75568 3.84154V4.14132C5.75568 4.23906 5.77953 4.33532 5.82516 4.42176C5.86817 4.50324 5.92838 4.5721 5.99995 4.62485V12.8147H11.3333V4.65578C11.4253 4.60034 11.5024 4.52027 11.5544 4.42176C11.6 4.33532 11.6239 4.23906 11.6239 4.14132V3.84154C11.6239 2.84154 10.8132 2.03088 9.81323 2.03088H7.56633Z" fill="white"/> <path d="M5.82516 4.42176L6.70949 3.95489L6.70949 3.95489L5.82516 4.42176ZM5.99995 4.62485H6.99995V4.11957L6.59319 3.81982L5.99995 4.62485ZM5.99995 12.8147H4.99995V13.8147H5.99995V12.8147ZM11.3333 12.8147V13.8147H12.3333V12.8147H11.3333ZM11.3333 4.65578L10.8171 3.79932L10.3333 4.09091V4.65578H11.3333ZM11.5544 4.42176L12.4387 4.88862L12.4387 4.88862L11.5544 4.42176ZM6.75568 3.84154C6.75568 3.39383 7.11862 3.03088 7.56633 3.03088V1.03088C6.01405 1.03088 4.75568 2.28926 4.75568 3.84154H6.75568ZM6.75568 4.14132V3.84154H4.75568V4.14132H6.75568ZM6.70949 3.95489C6.73982 4.01236 6.75568 4.07635 6.75568 4.14132H4.75568C4.75568 4.40177 4.81923 4.65829 4.94083 4.88862L6.70949 3.95489ZM6.59319 3.81982C6.64078 3.85489 6.68097 3.90088 6.70949 3.95489L4.94083 4.88862C5.05537 5.10559 5.21598 5.28932 5.40672 5.42988L6.59319 3.81982ZM6.99995 12.8147V4.62485H4.99995V12.8147H6.99995ZM11.3333 11.8147H5.99995V13.8147H11.3333V11.8147ZM10.3333 4.65578V12.8147H12.3333V4.65578H10.3333ZM10.6701 3.9549C10.7046 3.88945 10.7561 3.83605 10.8171 3.79932L11.8495 5.51224C12.0944 5.36463 12.3002 5.15109 12.4387 4.88862L10.6701 3.9549ZM10.6239 4.14132C10.6239 4.07635 10.6397 4.01235 10.6701 3.9549L12.4387 4.88862C12.5603 4.65829 12.6239 4.40178 12.6239 4.14132H10.6239ZM10.6239 3.84154V4.14132H12.6239V3.84154H10.6239ZM9.81323 3.03088C10.2609 3.03088 10.6239 3.39383 10.6239 3.84154H12.6239C12.6239 2.28926 11.3655 1.03088 9.81323 1.03088V3.03088ZM7.56633 3.03088H9.81323V1.03088H7.56633V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_16993_10)"/> <rect x="5.74982" y="12.572" width="5.87997" height="32.9392" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="6.2807" y="13.929" width="4.77193" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[1]"><template x-if="item.label === optionConfig.attributes[153].options[1].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="50ml-capacity" width="17" height="47" viewBox="0 0 16 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17007_10" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M6.89971 2.03088C5.89971 2.03088 5.08905 2.84154 5.08905 3.84154V4.14132C5.08905 4.23906 5.1129 4.33532 5.15853 4.42176C5.20155 4.50324 5.26175 4.5721 5.33333 4.62485V12.8147H10.6667V4.65578C10.7586 4.60034 10.8358 4.52027 10.8878 4.42176C10.9334 4.33532 10.9573 4.23906 10.9573 4.14132V3.84154C10.9573 2.84154 10.1466 2.03088 9.1466 2.03088H6.89971Z" fill="white"/> <path d="M5.15853 4.42176L6.04286 3.95489L6.04286 3.95489L5.15853 4.42176ZM5.33333 4.62485H6.33333V4.11957L5.92656 3.81982L5.33333 4.62485ZM5.33333 12.8147H4.33333V13.8147H5.33333V12.8147ZM10.6667 12.8147V13.8147H11.6667V12.8147H10.6667ZM10.6667 4.65578L10.1504 3.79932L9.66666 4.09091V4.65578H10.6667ZM10.8878 4.42176L11.7721 4.88862L11.7721 4.88862L10.8878 4.42176ZM6.08905 3.84154C6.08905 3.39383 6.45199 3.03088 6.89971 3.03088V1.03088C5.34742 1.03088 4.08905 2.28926 4.08905 3.84154H6.08905ZM6.08905 4.14132V3.84154H4.08905V4.14132H6.08905ZM6.04286 3.95489C6.0732 4.01236 6.08905 4.07635 6.08905 4.14132H4.08905C4.08905 4.40177 4.1526 4.65829 4.2742 4.88862L6.04286 3.95489ZM5.92656 3.81982C5.97415 3.85489 6.01434 3.90088 6.04286 3.95489L4.2742 4.88862C4.38875 5.10559 4.54935 5.28932 4.74009 5.42988L5.92656 3.81982ZM6.33333 12.8147V4.62485H4.33333V12.8147H6.33333ZM10.6667 11.8147H5.33333V13.8147H10.6667V11.8147ZM9.66666 4.65578V12.8147H11.6667V4.65578H9.66666ZM10.0034 3.9549C10.038 3.88945 10.0895 3.83605 10.1504 3.79932L11.1829 5.51224C11.4278 5.36463 11.6335 5.15109 11.7721 4.88862L10.0034 3.9549ZM9.95726 4.14132C9.95726 4.07635 9.97311 4.01235 10.0034 3.9549L11.7721 4.88862C11.8937 4.65829 11.9573 4.40178 11.9573 4.14132H9.95726ZM9.95726 3.84154V4.14132H11.9573V3.84154H9.95726ZM9.1466 3.03088C9.59432 3.03088 9.95726 3.39383 9.95726 3.84154H11.9573C11.9573 2.28926 10.6989 1.03088 9.1466 1.03088V3.03088ZM6.89971 3.03088H9.1466V1.03088H6.89971V3.03088Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17007_10)"/> <rect x="3.58777" y="12.479" width="9.10526" height="32.9869" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="4.07025" y="13.9292" width="8.14035" height="31.2011" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template><template x-if="optionConfig.attributes[153].options[2]"><template x-if="item.label === optionConfig.attributes[153].options[2].label"><div :class="{'h-11': showStickyBar, 'h-[55px]': !showStickyBar}"><svg xmlns="http://www.w3.org/2000/svg" data-icon="100ml-capacity" width="17" height="47" viewBox="0 0 17 47" fill="none" class="h-full" role="img"> <mask id="path-1-inside-1_4535_17021_10" fill="white"> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z"/> </mask> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.38586 0C6.28129 0 5.38586 0.895431 5.38586 2V2.40714C5.38586 2.50364 5.40711 2.59895 5.4481 2.68631C5.49797 2.7926 5.57407 2.88119 5.66657 2.94584V10.5861H10.9999V2.94584C11.0924 2.88119 11.1685 2.7926 11.2184 2.68631C11.2594 2.59895 11.2806 2.50364 11.2806 2.40714V2C11.2806 0.895431 10.3852 0 9.2806 0H7.38586Z" fill="white"/> <path d="M5.4481 2.68631L6.35341 2.26156L6.35341 2.26156L5.4481 2.68631ZM5.66657 2.94584H6.66657V2.42471L6.23943 2.12618L5.66657 2.94584ZM5.66657 10.5861H4.66657V11.5861H5.66657V10.5861ZM10.9999 10.5861V11.5861H11.9999V10.5861H10.9999ZM10.9999 2.94584L10.427 2.12618L9.9999 2.42471V2.94584H10.9999ZM11.2184 2.68631L10.3131 2.26156L10.3131 2.26156L11.2184 2.68631ZM6.38586 2C6.38586 1.44772 6.83358 1 7.38586 1V-1C5.72901 -1 4.38586 0.343146 4.38586 2H6.38586ZM6.38586 2.40714V2H4.38586V2.40714H6.38586ZM6.35341 2.26156C6.37478 2.30712 6.38586 2.35682 6.38586 2.40714H4.38586C4.38586 2.65045 4.43944 2.89078 4.54279 3.11106L6.35341 2.26156ZM6.23943 2.12618C6.28753 2.1598 6.32746 2.20625 6.35341 2.26156L4.54279 3.11106C4.66847 3.37894 4.86061 3.60258 5.09371 3.76549L6.23943 2.12618ZM6.66657 10.5861V2.94584H4.66657V10.5861H6.66657ZM10.9999 9.58609H5.66657V11.5861H10.9999V9.58609ZM9.9999 2.94584V10.5861H11.9999V2.94584H9.9999ZM10.3131 2.26156C10.339 2.20625 10.3789 2.1598 10.427 2.12618L11.5728 3.76549C11.8059 3.60257 11.998 3.37894 12.1237 3.11106L10.3131 2.26156ZM10.2806 2.40714C10.2806 2.35682 10.2917 2.30712 10.3131 2.26156L12.1237 3.11106C12.227 2.89078 12.2806 2.65045 12.2806 2.40714H10.2806ZM10.2806 2V2.40714H12.2806V2H10.2806ZM9.2806 1C9.83288 1 10.2806 1.44772 10.2806 2H12.2806C12.2806 0.343145 10.9375 -1 9.2806 -1V1ZM7.38586 1H9.2806V-1H7.38586V1Z" fill="#D9DAFF" mask="url(#path-1-inside-1_4535_17021_10)"/> <rect x="0.833252" y="10.5312" width="15" height="35.2132" rx="1.5" fill="white" stroke="#D9DAFF"/> <rect x="2.24207" y="12.8147" width="12.3509" height="32.3154" rx="2" fill="#FFE7EC"/> <title/></svg> </div></template></template></span></label></div></template></div></template></div><button @click.prevent="openSwatch($refs)" x-ref="swatchButton" :class="{ 'hidden': !moreSwatch }" class="hidden relative top-px border rounded-full xl:w-6.5 xl:h-6.5 w-5.5 h-5.5 flex items-center justify-center bg-white transition duration-300 shrink-0 border-lavender-400 hover:border-anthracite-400"><span :class="{'rotate-180': show}"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="tick-down" version="1.1" x="0px" y="0px" viewBox="0 0 9 5" enable-background="new 0 0 9 5" xml:space="preserve" class="xl:w-2.5 xl:h-auto w-2 h-2" width="9" height="5" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,0.5l4,4l4-4"/> <title/></svg> </span></button></div></div> <template x-if="isTooltipVisible()"><div class="absolute" :style="getTooltipPosition()" ><div class="shadow-lg"><div class="absolute top-0 left-0 z-10 min-w-20 p-2 -mt-6 text-tiny md:text-xxs leading-tight text-black transform -translate-x-1/2 -translate-y-full bg-white rounded-xl border-[2px] border-lavender-400 text-center" ><template x-if="isVisualSwatch(activeTooltipItem.attribute, activeTooltipItem.item)"><div class="inline-block border shadow-sm border-container rounded-tl-xl rounded-tr-xl" :style="getTooltipImageStyle(activeTooltipItem.attribute, activeTooltipItem.item)" ></div></template><span class="text-xxs md:text-smaller font-semibold whitespace-nowrap subtitle" x-html="getTooltipLabel()" ></span></div><svg class="absolute z-10 w-10 h-10 text-white transform -translate-x-1/5 -translate-y-11 fill-current stroke-current filter drop-shadow-[0_3px_0_rgb(217,218,255)] -mt-0.5 -ml-2" viewBox="0 0 320 512"><path d="m302.7 226.1-128.6 128.7c-7.8 7.8-20.5 7.8-28.3 0l-128.6-128.7z"/></svg></div></div></template> </div> <div class="grow-[1]"></div> <div class="product-item-bottom flex flex-col justify-between items-center saleable"> <div class="relative w-full flex flex-col"> <button type="submit" class="product-item-addtocart w-full btn btn-add-to-cart px-4.25 min-h-[3.125rem] py-0 group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group" @click="addToCart()"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="plus" version="1.1" x="0px" y="0px" viewBox="0 0 14.7 14.7" enable-background="new 0 0 14.7 14.7" xml:space="preserve" class="w-2.75 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M7.4,0.8V14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14,7.4H0.8"/> <title/></svg> <span class="leading-none text-xs">Add</span></span> <span class="flex flex-col items-end leading-tightened"><span class="block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38308" data-price-box="product-id-38308"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span> </span></button> <button type="submit" class="added-to-cart hidden absolute product-item-addtocart btn btn-add-to-cart btn-add-to-cart--submit min-h-[3.125rem] py-0 px-4.25 min-h-[3.125rem] leading-none" aria-label="Add to Cart"><span class="flex gap-1.5 md:gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="check-cta" version="1.1" x="0px" y="0px" viewBox="0 0 16 11.9" enable-background="new 0 0 16 11.9" xml:space="preserve" class="w-3 text-pink" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" d="M15.5,0.5L6.6,11.2L0.5,5.5"/> <title/></svg> <span class="leading-none text-xs">Added</span></span> <span class="hidden md:block product-item-price text-xs md:text-smaller catalog-category-item-price-widget"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38308" data-price-box="product-id-38308"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></span></button> <div class="hidden product-item-alertstock link w-full btn btn-add-to-cart group-hover:bg-white group-hover:hover:bg-anthracite group-hover:hover:text-white group py-4.25 md:py-3.25 px-4.25" aria-label="Alert me"><span class="leading-none text-xs">Alert me</span> <div class="hidden md:block product-item-price text-xs md:text-smaller font-medium catalog-category-item-price"><div class="price-box price-final_price" data-role="priceBox" data-product-id="38308" data-price-box="product-id-38308"> <span class="price-container price-final_price tax weee"> <span data-price-amount="11.95" data-price-type="finalPrice" class="price-wrapper" ><span class="price">€11.95</span></span> </span> </div></div></div></div> </div></div></form></a> </div></div><button class="product-widget-slider__button absolute z-10 top-1/3 border border-lavender-lightest bg-white rounded-full p-3.5 left-5 text-pink opacity-0 transition duration-300 hidden" :class="{ 'md:block' : currentSlide > 0 }" type="button" title="Previous" x-show="isSlider" @click="prev()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-4 h-auto filter drop-shadow-pink-lighter-icon -scale-x-100" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </button> <button class="product-widget-slider__button absolute z-10 top-1/3 border border-lavender-lightest bg-white rounded-full p-3.5 right-5 text-pink opacity-0 transition duration-300 hidden md:block" :class="{ 'md:block' : !maxSlide }" type="button" title="Next" x-show="isSlider" @click="next()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-4 h-auto filter drop-shadow-pink-lighter-icon" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </button></div></div> <script> window.dataLayer?.push({ 'event': 'productImpressions', 'productImpressions': [{"position":1,"product_ean":"8883701429819309","product_name":"c\u0153ur-\u00e0-c\u0153ur","product_id":"38233","product_family":"fragrance","product_rayon":"eau-de-parfum-for-women","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":"Best-sellers"},{"position":2,"product_ean":"8883701429828295","product_name":"golden-queen","product_id":"38276","product_family":"fragrance","product_rayon":"eau-de-parfum-for-women","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":"Best-sellers"},{"position":3,"product_ean":"8883701429830823","product_name":"melrose-paradise","product_id":"38282","product_family":"fragrance","product_rayon":"eau-de-parfum-for-women","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":"Best-sellers"},{"position":4,"product_ean":"8883701429819996","product_name":"rose-diamant","product_id":"38302","product_family":"fragrance","product_rayon":"eau-de-parfum-for-women","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":"Best-sellers"},{"position":5,"product_ean":"8883701429820015","product_name":"rose-noire","product_id":"38308","product_family":"fragrance","product_rayon":"eau-de-parfum-for-women","product_color":"","product_unitprice_ati":11.95,"product_unitprice_tf":9.9583333333333,"product_discount_ati":-11.95,"product_discount_tf":-11.95,"list":"Best-sellers"}] });</script> </section></div><script> 'use strict'; window.addEventListener('DOMContentLoaded', function() { if (! window.productSliderEventHandlerInitialized) { window.productSliderEventHandlerInitialized = true; window.addEventListener('product-add-to-wishlist', (event) => { const productId = event.detail.productId; fetch(BASE_URL + "wishlist/index/add/", { headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: new URLSearchParams({ form_key: hyva.getFormKey(), product: productId, uenc: btoa(window.location.href) } ), method: "POST", mode: "cors", credentials: "include" }).then(function (response) { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Could not add item to wishlist." }], 5000 ); } }).then(function (result) { if (!result) { return } typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: (result.success) ? "success" : "error", text: (result.success) ? "Product has been added to your Wish List." : result.error_message }], 5000 ); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['wishlist', 'messages'] } } ) ); }).catch(function (error) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); }) window.addEventListener('product-add-to-compare', (event) => { const productId = event.detail.productId; hyva.postForm({ action: BASE_URL + 'catalog/product_compare/add/', data: {product: productId} }) }) } });</script></div> <div class="cms-widget widget-push-3-tiles-simple" ><div class=" pt-6 md:pt-12 pb-6 md:pb-12 container--desktop"> <div class="flex flex-col md:flex-row gap-2 px-6 md:px-0" x-data="{ isMobile: window.innerWidth < 768, tileHeight: 0, minHeight() { if(!this.isMobile && this.tileHeight) { return 'min-height: ' + (this.tileHeight) + 'rem'; } else { return ''; } } }" @resize.window="isMobile = window.innerWidth < 768" > <span class="widget-push-3-tiles-simple__item tile-group group overflow-hidden relative flex flex-col justify-end md:w-1/3 min-h-[24.375rem] md:min-h-[31.5rem] 2xl:min-h-[37.5rem]" :style="minHeight()" > <a href="https://www.adopt.com/en/kawaii-pop-eau-de-parfum-30-ml-8883701429841714-en.html" target="_self" class="absolute inset-0 w-full h-full z-10" > </a> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_KAWAII_POP_Bloc_Actu_DESK_30-100.png?twic=v1 1x" media="(min-width: 896px)"> <source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_KAWAII_POP_Bloc_Actu_MOB_30-100.png?twic=v1 1x" media="(min-width: 300px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_KAWAII_POP_Bloc_Actu_DESK_30-100.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Bloc_actu/ECOMM_KAWAII_POP_Bloc_Actu_DESK_30-100.png" alt="Kawaii Pop" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture> <div class="relative h-full flex flex-col items-center justify-end p-11 md:p-16"> <div class="font-romie font-bold text-3.5xl leading-none text-center text-white drop-shadow-text">Kawaii Pop</div> <a class="link z-10 btn btn-primary-white mt-6" href="https://www.adopt.com/en/kawaii-pop-eau-de-parfum-30-ml-8883701429841714-en.html" target="_self" >New</a> </div></span> <span class="widget-push-3-tiles-simple__item tile-group group overflow-hidden relative flex flex-col justify-end md:w-1/3 min-h-[24.375rem] md:min-h-[31.5rem] 2xl:min-h-[37.5rem]" :style="minHeight()" > <a href="Skin care" target="_self" class="absolute inset-0 w-full h-full z-10" > </a> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_SKINCARE_Bloc_Actu_03_DESK.png?twic=v1 1x" media="(min-width: 896px)"> <source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_SKINCARE_Bloc_Actu_03_MOB.png?twic=v1 1x" media="(min-width: 300px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_SKINCARE_Bloc_Actu_03_DESK.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Bloc_actu/ECOMM_SKINCARE_Bloc_Actu_03_DESK.png" alt="https://www.adopt.com/en/skincare.html" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture> <div class="relative h-full flex flex-col items-center justify-end p-11 md:p-16"> <div class="font-romie font-bold text-3.5xl leading-none text-center text-white drop-shadow-text">Skin care</div> <a class="link z-10 btn btn-primary-white mt-6" href="https://www.adopt.com/en/skincare.html" target="_self" >Let's go</a> </div></span> <span class="widget-push-3-tiles-simple__item tile-group group overflow-hidden relative flex flex-col justify-end md:w-1/3 min-h-[24.375rem] md:min-h-[31.5rem] 2xl:min-h-[37.5rem]" :style="minHeight()" > <a href="https://www.adopt.com/en/essential-color-shadow-eyeshadow-8883701429841140-en.html" target="_self" class="absolute inset-0 w-full h-full z-10" > </a> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_FDM_Maquillage_Bloc_Actu_2_DESK.png?twic=v1 1x" media="(min-width: 896px)"> <source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_FDM_Maquillage_Bloc_Actu_2_MOB.png?twic=v1 1x" media="(min-width: 300px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_FDM_Maquillage_Bloc_Actu_2_DESK.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Bloc_actu/ECOMM_FDM_Maquillage_Bloc_Actu_2_DESK.png" alt="Essential Color Shadow" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture> <div class="relative h-full flex flex-col items-center justify-end p-11 md:p-16"> <div class="font-romie font-bold text-3.5xl leading-none text-center text-white drop-shadow-text">Essential Color Shadow</div> <a class="link z-10 btn btn-primary-white mt-6" href="https://www.adopt.com/en/essential-color-shadow-eyeshadow-8883701429841140-en.html" target="_self" >New</a> </div></span> </div></div></div> <div style="background-color: #ffe7ec" ><div class="cms-widget cms-container categories pt-6 md:pt-8 pb-6 md:pb-3 "><div class="md:mx-0"> <div class="flex flex-col gap-4 py-12"> <span style="color: #000000" class="font-romie font-bold text-4xl leading-tiny">Our product ranges</span> </div> <div class="flex md:gap-1 md:flex-row md:flex-nowrap flex-wrap"> <div class="pr-0.5 md:pr-0 flex flex-col justify-center items-center w-[50%] md:w-full "> <a class="w-full" href="https://www.adopt.com/en/fragrance.html"> <img class="aspect-square max-h-[20.3125rem] object-center object-cover w-full" src="https://adopt.twic.pics/media/wysiwyg/home/recrop/LIFE_PERF_3x30ML_VOYAGE.jpg?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/recrop/LIFE_PERF_3x30ML_VOYAGE.jpg" data-twic-transform="max=688"/> </a> <div class="py-6 md:px-6 flex flex-col gap-6 justify-start items-center w-full flex-grow"> <a class="flex flex-col gap-6 justify-start items-center w-full md:flex-grow" href="https://www.adopt.com/en/fragrance.html"> <span style="color: #000000" class="font-romie font-bold text-xl leading-tight">Over 100 fragrances to suit every taste</span> </a> <a href="https://www.adopt.com/en/fragrance.html" class="text-center btn btn-secondary min-h-[3.75rem] !text-anthracite-500 hover:!text-white justify-center w-full hover:!bg-anthracite hover:!border-anthracite " >FRAGRANCE</a> </div></div> <div class="pl-0.5 md:pl-0 flex flex-col justify-center items-center w-[50%] md:w-full "> <a class="w-full" href="https://www.adopt.com/en/gift.html"> <img class="aspect-square max-h-[20.3125rem] object-center object-cover w-full" src="https://adopt.twic.pics/media/wysiwyg/home/recrop/RS_FDM_PATTERN_1.jpg?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/recrop/RS_FDM_PATTERN_1.jpg" data-twic-transform="max=688"/> </a> <div class="py-6 md:px-6 flex flex-col gap-6 justify-start items-center w-full flex-grow"> <a class="flex flex-col gap-6 justify-start items-center w-full md:flex-grow" href="https://www.adopt.com/en/gift.html"> <span style="color: #000000" class="font-romie font-bold text-xl leading-tight">Our beauty rituals in boxes up to 25% off</span> </a> <a href="https://www.adopt.com/en/gift.html" class="text-center btn btn-secondary min-h-[3.75rem] !text-anthracite-500 hover:!text-white justify-center w-full hover:!bg-anthracite hover:!border-anthracite " >GIFT</a> </div></div> <div class="pr-0.5 md:pr-0 flex flex-col justify-center items-center w-[50%] md:w-full "> <a class="w-full" href="https://www.adopt.com/en/body-care.html"> <img class="aspect-square max-h-[20.3125rem] object-center object-cover w-full" src="https://adopt.twic.pics/media/wysiwyg/home/recrop/LIFE_MULTI_WONDERFUL_GAMME_1.jpg?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/recrop/LIFE_MULTI_WONDERFUL_GAMME_1.jpg" data-twic-transform="max=688"/> </a> <div class="py-6 md:px-6 flex flex-col gap-6 justify-start items-center w-full flex-grow"> <a class="flex flex-col gap-6 justify-start items-center w-full md:flex-grow" href="https://www.adopt.com/en/body-care.html"> <span style="color: #000000" class="font-romie font-bold text-xl leading-tight">Natural skincare made in France</span> </a> <a href="https://www.adopt.com/en/body-care.html" class="text-center btn btn-secondary min-h-[3.75rem] !text-anthracite-500 hover:!text-white justify-center w-full hover:!bg-anthracite hover:!border-anthracite " >BODY CARE</a> </div></div> <div class="pl-0.5 md:pl-0 flex flex-col justify-center items-center w-[50%] md:w-full "> <a class="w-full" href="https://www.adopt.com/en/skincare.html"> <img class="aspect-square max-h-[20.3125rem] object-center object-cover w-full" src="https://adopt.twic.pics/media/wysiwyg/home/recrop/LIFE_CARE_SKINCARE_GAMME.jpg?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/recrop/LIFE_CARE_SKINCARE_GAMME.jpg" data-twic-transform="max=688"/> </a> <div class="py-6 md:px-6 flex flex-col gap-6 justify-start items-center w-full flex-grow"> <a class="flex flex-col gap-6 justify-start items-center w-full md:flex-grow" href="https://www.adopt.com/en/skincare.html"> <span style="color: #000000" class="font-romie font-bold text-xl leading-tight">Facial treatments for every need</span> </a> <a href="https://www.adopt.com/en/skincare.html" class="text-center btn btn-secondary min-h-[3.75rem] !text-anthracite-500 hover:!text-white justify-center w-full hover:!bg-anthracite hover:!border-anthracite " >FACIAL CARE</a> </div></div></div></div></div></div> <div class="cms-widget widget-push-3-tiles-simple" ><div class=" pt-6 md:pt-12 pb-6 md:pb-12 container--desktop"> <div class="flex flex-col md:flex-row gap-2 px-6 md:px-0" x-data="{ isMobile: window.innerWidth < 768, tileHeight: 0, minHeight() { if(!this.isMobile && this.tileHeight) { return 'min-height: ' + (this.tileHeight) + 'rem'; } else { return ''; } } }" @resize.window="isMobile = window.innerWidth < 768" > <span class="widget-push-3-tiles-simple__item tile-group group overflow-hidden relative flex flex-col justify-end md:w-1/3 min-h-[24.375rem] md:min-h-[31.5rem] 2xl:min-h-[37.5rem]" :style="minHeight()" > <a href="https://www.adopt.com/en/commercial-offers.html" target="_self" class="absolute inset-0 w-full h-full z-10" > </a> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOM_Mise_en_avant_Carrousels_Blocactu.png?twic=v1 1x" media="(min-width: 896px)"> <source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOM_Mise_en_avant_Carrousels_Blocactu.png?twic=v1 1x" media="(min-width: 300px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOM_Mise_en_avant_Carrousels_Blocactu.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Bloc_actu/ECOM_Mise_en_avant_Carrousels_Blocactu.png" alt="Parfums Offres" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture> <div class="relative h-full flex flex-col items-center justify-end p-11 md:p-16"> <div class="font-romie font-bold text-3.5xl leading-none text-center text-white drop-shadow-text">Perfume Offers</div> <a class="link z-10 btn btn-primary-white mt-6" href="https://www.adopt.com/en/commercial-offers.html" target="_self" >Let's go</a> </div></span> <span class="widget-push-3-tiles-simple__item tile-group group overflow-hidden relative flex flex-col justify-end md:w-1/3 min-h-[24.375rem] md:min-h-[31.5rem] 2xl:min-h-[37.5rem]" :style="minHeight()" > <a href="https://www.adopt.com/en/olfactory-diagnosis" target="_self" class="absolute inset-0 w-full h-full z-10" > </a> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_DIAG_Bloc_Actu_EN.png?twic=v1 1x" media="(min-width: 896px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_DIAG_Bloc_Actu_EN.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Bloc_actu/ECOMM_DIAG_Bloc_Actu_EN.png" alt="Olfactory Diagnosis" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture> <div class="relative h-full flex flex-col items-center justify-end p-11 md:p-16"> <a class="link z-10 btn btn-primary-white mt-6" href="https://www.adopt.com/en/olfactory-diagnosis" target="_self" >Do it</a> </div></span> <span class="widget-push-3-tiles-simple__item tile-group group overflow-hidden relative flex flex-col justify-end md:w-1/3 min-h-[24.375rem] md:min-h-[31.5rem] 2xl:min-h-[37.5rem]" :style="minHeight()" > <a href="https://www.adopt.com/en/fragrance/magic-touch.html" target="_self" class="absolute inset-0 w-full h-full z-10" > </a> <picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_MAGIC_TOUCH_2025_Bloc_Actu_KV_Mixte.png?twic=v1 1x" media="(min-width: 896px)"> <source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_MAGIC_TOUCH_2025_Bloc_Actu_KV_Mixte.png?twic=v1 1x" media="(min-width: 300px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Bloc_actu/ECOMM_MAGIC_TOUCH_2025_Bloc_Actu_KV_Mixte.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Bloc_actu/ECOMM_MAGIC_TOUCH_2025_Bloc_Actu_KV_Mixte.png" alt="Magic Touch" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture> <div class="relative h-full flex flex-col items-center justify-end p-11 md:p-16"> <div class="font-romie font-bold text-3.5xl leading-none text-center text-white drop-shadow-text">Our Magic touch</div> <a class="link z-10 btn btn-primary-white mt-6" href="https://www.adopt.com/en/fragrance/magic-touch.html" target="_self" >Let's go</a> </div></span> </div></div></div> <div class="cms-widget widget-push-3-tiles-accordion overflow-hidden" x-data="{ isMobile: window.innerWidth < 768, tileOpened: window.innerWidth < 768 ? null : 1, resize() { this.isMobile = window.innerWidth < 768; this.tileOpened = window.innerWidth < 768 ? null : 1; }, toggle(tile) { if(this.tileOpened === tile) { this.tileOpened = null; } else { this.tileOpened = tile; } } }" @resize.window="resize()" ><div class="px-4 flex flex-col md:flex-row gap-2 pt-6 md:pt-12 pb-6 md:pb-12"><div class="widget-push-3-tiles-accordion__item relative transition-all duration-300 min-h-[12.5rem]" @click="if(isMobile) toggle(1);" @mouseenter="if(!isMobile) tileOpened = 1" :class="{ 'md:w-[calc(76%_-_4px)]': tileOpened === 1, 'md:w-[calc(44%_-_4px)]': tileOpened !== 1 }" ><picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/pages_CMS/Vanille/VANILLE_INGREDIENT_2_HD.jpg?twic=v1 1x" media="(min-width: 896px)"> <img src="https://adopt.twic.pics/media/wysiwyg/pages_CMS/Vanille/VANILLE_INGREDIENT_2_HD.jpg?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/pages_CMS/Vanille/VANILLE_INGREDIENT_2_HD.jpg" alt="Vanilla Program" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture><div class="relative h-full md:min-h-[34.5rem] 2xl:min-h-[45.4375rem] flex flex-col items-start justify-end pt-[3.625rem] pb-7.5 px-7.5"> <div class="no-selection-text font-romie font-bold text-3xl text-white drop-shadow-text">Vanilla Program</div> <div class="overflow-hidden grid grid-rows-[0fr] transition-all" :class="{ 'grid-rows-[1fr]': tileOpened === 1, 'grid-rows-[0fr]': tileOpened !== 1 }" ><div class="min-h-0"><a href="https://www.adopt.com/en/vanilla-program" class="link btn btn-primary-white mt-6" target="_self" >Discover</a></div></div></div></div> <div class="widget-push-3-tiles-accordion__item relative transition-all duration-300 min-h-[12.5rem]" @click="if(isMobile) toggle(2);" @mouseenter="if(!isMobile) tileOpened = 2" :class="{ 'md:w-[calc(44%_-_4px)]': tileOpened === 2, 'md:w-[calc(12%_-_4px)]': tileOpened !== 2 }" ><picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/pages_CMS/Tiare/RSE_2.jpg?twic=v1 1x" media="(min-width: 896px)"> <img src="https://adopt.twic.pics/media/wysiwyg/pages_CMS/Tiare/RSE_2.jpg?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/pages_CMS/Tiare/RSE_2.jpg" alt="Our commitments" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture><div class="relative h-full md:min-h-[34.5rem] 2xl:min-h-[45.4375rem] flex flex-col items-start justify-end pt-[3.625rem] pb-7.5 px-7.5"> <div class="font-romie font-bold text-3xl text-white drop-shadow-none">Our commitments</div> <div class="overflow-hidden grid grid-rows-[0fr] transition-all" :class="{ 'grid-rows-[1fr]': tileOpened === 2, 'grid-rows-[0fr]': tileOpened !== 2 }" ><div class="min-h-0"><a href="https://www.adopt.com/en/our-commitments" class="link btn btn-primary-white mt-6" target="_self" >Discover</a></div></div></div></div> <div class="widget-push-3-tiles-accordion__item relative transition-all duration-300 min-h-[12.5rem]" @click="if(isMobile) toggle(3);" @mouseenter="if(!isMobile) tileOpened = 3" :class="{ 'md:w-[calc(44%_-_4px)]': tileOpened === 3, 'md:w-[calc(12%_-_4px)]': tileOpened !== 3 }" ><picture><source type="image/jpeg" srcset="https://adopt.twic.pics/media/wysiwyg/home/Adopt_0505_Capots_2_Invio.png?twic=v1 1x" media="(min-width: 896px)"> <img src="https://adopt.twic.pics/media/wysiwyg/home/Adopt_0505_Capots_2_Invio.png?twic=v1/output=preview" data-twic-src="image:media/wysiwyg/home/Adopt_0505_Capots_2_Invio.png" alt="The Adopt universe" width="360" height="360" loading="lazy" decoding="async" class="absolute top-0 left-1/2 -translate-x-1/2 h-full w-full object-cover transition-all group-hover:scale-105"></picture><div class="relative h-full md:min-h-[34.5rem] 2xl:min-h-[45.4375rem] flex flex-col items-start justify-end pt-[3.625rem] pb-7.5 px-7.5"> <div class="font-romie font-bold text-3xl text-white drop-shadow-none">The Adopt universe</div> <div class="overflow-hidden grid grid-rows-[0fr] transition-all" :class="{ 'grid-rows-[1fr]': tileOpened === 3, 'grid-rows-[0fr]': tileOpened !== 3 }" ><div class="min-h-0"><a href="https://www.adopt.com/en/the-adopt-universe" class="link btn btn-primary-white mt-6" target="_self" >Discover</a></div></div></div></div></div></div></p> <p> <div class="cms-widget widget-reviews widget-reviews--listing pt-6 md:pt-12 pb-6 md:pb-12 md:px-7.5 pl-7.5" style="background-color: #F5F5FD" ><div class=""><div class="flex flex-col md:flex-row justify-between items-start md:items-center gap-4.5 pb-9"> <h2 class="font-romie font-bold tracking-spaced text-3xl md:text-3.5xl leading-none md:leading-none text-anthracite-600">adopt in your hearts!</h2> <a href="https://trustville.fr/avis-clients/pc/peruda/parfumerie/adopt_com" class="link btn btn-secondary bg-white" target="_blank" >See all reviews</a> </div><div class="overflow-hidden"><div class="flex gap-12 overflow-auto hide-scrollbar"><div class="shrink-0 md:shrink w-[70%] md:w-1/3"><div class="flex items-center gap-1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> </div><div class="font-secondary font-bold text-lg text-anthracite-600 mt-3.5">Léa G.</div><div class="text-anthracite-400 font-medium mt-3.5">"Sales advisers who are always smiling, pleasant and give good advice !"</div></div><div class="shrink-0 md:shrink w-[70%] md:w-1/3"><div class="flex items-center gap-1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> </div><div class="font-secondary font-bold text-lg text-anthracite-600 mt-3.5">Laure L.</div><div class="text-anthracite-400 font-medium mt-3.5">"Welcoming and friendly teams, French products that have everything to seduce ! I'm very satisfied !"</div></div><div class="shrink-0 md:shrink w-[70%] md:w-1/3"><div class="flex items-center gap-1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4.5 h-auto" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> </div><div class="font-secondary font-bold text-lg text-anthracite-600 mt-3.5">Olivia H.</div><div class="text-anthracite-400 font-medium mt-3.5">"Pleasant, long-lasting and affordable French fragrances."</div></div></div></div></div></div></p> <p> </p> <script> 'use strict'; function initAmScroll() { return { options: { product_container: '.products.products-grid, .products.products-list, .products-grid.grid', product_link: '.product-item-link', footerSelector: '.page-footer' }, type: 'auto', is_loading: 0, next_data_url: "", prev_data_url: "", next_data_cache: "", flag_next_cache: 0, prev_data_cache: "", flag_prev_cache: 0, pageFirst: 1, pagesCount: 1, pagesLoaded: [], currentPage: 1, last_scroll: 0, disabled: 0, additionalHeight: null, classes: { loadButton: 'amscroll-load-button', loadingBlock: 'amscroll-loading-block', loadingIcon: 'amscroll-loading-icon', loadingIconSource: '#amscroll-loading-icon-source', svgPathToFill: 'amscroll-fill-path', backToTopButton: '#amscroll-back-to-top', active: '-amscroll-active', text: 'amscroll-text', animate: '-amscroll-animate', pageNumber: 'amscroll-page-num' }, pageSelector: '[amscroll-page="%1"]', lastPageSelector: '.amscroll-page, .amscroll-pages', totalAmountSelector: '.toolbar-amount', totalNumberSelector: '.toolbar-number', toolbarSelector: '.toolbar.toolbar-products', amPageCountSelector: '#am-page-count', canShowAfter: false, canShowBefore: false, pagesBeforeButton: 0, isReinitialized: false, afterButton: null, beforeButton: null, insertedPages: 0, afterStepBackData: null, isBackToTopVisible: false, backToTopTriggerHeight: 400, loadingBlock: { before: { node: undefined, visible: false }, after: { node: undefined, visible: false } }, /** * @returns {void} */ processInit() { this.options = {"product_container":".products.products-grid:not(.amasty-banners), .products.product-list-container:not(.amasty-banners)","product_link":".product-item","loadingImage":"https:\/\/www.adopt.com\/static\/version1742480106\/frontend\/Adopt\/hyva\/en_GB\/Amasty_Scroll\/images\/loader.svg","pageNumbers":"0","pageNumberContent":"Page #","pageNumberStyle":"button","buttonColor":"#ffffff","buttonColorPressed":"#ffffff","loadingafterTextButton":"See more products","loadingbeforeTextButton":"See previous products","backToTop":{"enabled":"0","style_desktop":"text","style_mobile":"arrow","color":"#ffffff","styles":"background: #dadada;"},"backToTopText":"Back to Top","current_page":1,"footerSelector":".page-footer","actionMode":"button"}; if (document.querySelectorAll(this.options.product_container).length) { this._initNodes(); this.initialize(); } }, /** * @private * @returns {void} */ _initNodes() { this.loadButtonElement = document.createElement('button'); this.loadButtonElement.setAttribute('class', 'btn btn-primary block mx-auto ' + this.classes.loadButton); this.loadButtonElement.setAttribute('style', this.options['loadNextStyle']); this.loadButtonTextElement = document.createElement('span'); this.loadButtonTextElement.setAttribute('class', this.classes.text); const loader = document.querySelector(this.classes.loadingIconSource); const productContainer = document.querySelector(this.options.product_container); if (!productContainer) { return; } const productContainerParent = productContainer.parentElement; this.loadingBlock.before.node = productContainerParent.insertBefore( loader.content.firstElementChild.cloneNode(true), productContainer ); this.loadingBlock.after.node = productContainerParent.insertBefore( loader.content.firstElementChild.cloneNode(true), productContainerParent.lastChild ); }, /** * @returns {void} */ initialize() { this.next_data_cache = ""; this.pagesLoaded = []; this._initPagesCount(); this.disabled = 1; if (!this._validate()) { return; } this.disabled = 0; this.type = this.options['actionMode']; this.pagesBeforeButton = this.options['pages_before_button']; this.currentPage = this._getCurrentPage(); this.pagesLoaded.push(this.currentPage); if (this.type === 'button') { this._generateButton('before'); this._generateButton('after'); } this._preloadPages(); this._hideToolbars(); this.initPageStepForwardListener(this.currentPage); this._pagePositionAfterStepBack(); }, /** * @private * @returns {boolean} */ _validate() { switch (true) { case !this.options['product_container'] || document.querySelectorAll(this.options['product_container']).length === 0 : console.warn('Please specify "Products Group" DOM selector in module settings.'); return false; case !this.options['product_link'] || document.querySelectorAll(this.options['product_link']).length === 0 : console.warn('Please specify "Product Link" DOM selector in module settings.'); return false; case !this.options['footerSelector'] || document.querySelectorAll(this.options['footerSelector']).length === 0 : console.warn('Please specify "Footer Selector" DOM selector in module settings.'); return false; case this.pagesCount <= 1 : return false; } return true; }, /** * @private * @returns {void} */ _externalAfterAjax() { this.insertedPages++; try { if (document.getElementsByTagName('head')[0].innerHTML.indexOf('Infortis') > -1) { document.dispatchEvent('last-swatch-found'); } if (this.insertedPages < this.pagesBeforeButton) { return; } if (this.type === 'auto' && this.options['origActionMode'] === 'combined') { this.changeType('button'); } if (this.type === 'button' && this.options['origActionMode'] === 'combined_button_auto') { this.changeType('auto'); } } catch (e) { console.warn(e); } }, /** * @param {Node} productBlock * @returns {void} */ beforeInsertProductBlock(productBlock) { }, /** * @param {string} requestUrl * @param {callback} successCallback * @returns {void} */ doAjax(requestUrl, successCallback) { fetch(requestUrl, { method: "GET", headers: { "X-Requested-With": "XMLHttpRequest", }, }) .then(response => { if (response.ok) { return response.json(); } else { console.warn("GET request failed", response); this._stop(); } }) .then(data => { if (data) { this.preprocessRawAjaxResponse(successCallback, data); } }); }, /** * @param {callback} successCallback * @param {Object} response */ preprocessRawAjaxResponse(successCallback, response) { if (typeof response === 'string' || response instanceof String) { try { response = JSON.parse(response) } catch (e) { return this.handleUnexpectedResponse(response); } } if (response !== null && response.hasOwnProperty('categoryProducts') && response.hasOwnProperty('currentPage') && response.categoryProducts.trim().length !== 0 ) { successCallback.call(this, response); } else { this.handleUnexpectedResponse(response); } }, /** * @param {Object} response */ handleUnexpectedResponse(response) { console.warn('Amasty_Scroll: invalid response from server.', {response: response}); this._stop(); }, /** * @private * @returns {void} */ _initPagesCount() { const amPager = document.querySelector(this.amPageCountSelector); let parent; let childs; let limit; let allProducts; let result; this.pagesLoaded = []; if (amPager) { this.pagesCount = parseInt(amPager.innerHTML); return; } parent = document.querySelectorAll(this.totalAmountSelector)[0]; if (parent) { childs = parent.querySelectorAll(this.totalNumberSelector); if (parent && childs.length >= 3) { limit = document.querySelector('.limiter-options').value; if (childs[2].textContent > 0 && limit) { allProducts = childs[2].textContent; result = Math.ceil(parseInt(allProducts) / parseInt(limit)); if (result > 1) { this.pagesCount = result; return; } } } } this.pagesCount = 1; }, /** * @param {string} type */ changeType(type) { if (this.isReinitialized) { return; } switch (type) { case 'button': this.type = 'button'; this.$nextTick(() => { this._generateButton('before'); this._generateButton('after'); }); break; case 'auto': this.type = 'auto'; break; } this.isReinitialized = true; }, /** * @private * @returns {void} */ _preloadPages() { const productContainer = document.querySelector(this.options['product_container']); let pageNumEl; productContainer.setAttribute('amscroll-page', this.currentPage); productContainer.classList.add('amscroll-page'); if (this.options['pageNumbers'] === '1') { pageNumEl = this._generatePageTitle(this.currentPage); if (pageNumEl) { productContainer.before(pageNumEl); } } this._preloadPageAfter(this.currentPage); this._preloadPageBefore(this.currentPage); }, /** * @returns {number} * @private */ _getCurrentPage() { let currentPage = parseInt(this.options['current_page']); if (currentPage > this.pagesCount) { currentPage = this.pagesCount; } return currentPage; }, /** * @private * @param {number} page * @returns {void} */ _preloadPageAfter(page) { const nextPage = page + 1; if (nextPage && nextPage <= this.pagesCount) { this.next_data_url = this._generateUrl(nextPage, 1); this.pagesLoaded.push(nextPage); this.flag_next_cache = 1; this.type !== 'button' && this.loadingBlock.after.node?.classList.remove('hidden'); this.doAjax(this.next_data_url, (data) => { this.flag_next_cache = 0; this.next_data_cache = data; this.type !== 'button' && this.loadingBlock.after.node?.classList.add('hidden'); this.showButton(this.afterButton); }); this.next_data_url = ''; } }, /** * @private * @param {number} page * @returns {void} */ _preloadPageBefore(page) { const prevPage = page - 1; if (prevPage && prevPage >= 1) { this.prev_data_url = this._generateUrl(prevPage, 1); this.pagesLoaded.unshift(prevPage); this.flag_prev_cache = 1; this.type !== 'button' && this.loadingBlock.before.node?.classList.remove('hidden'); this.doAjax(this.prev_data_url, (data) => { this.flag_prev_cache = 0; this.prev_data_cache = data; this.type !== 'button' && this.loadingBlock.before.node?.classList.add('hidden'); this.showButton(this.beforeButton); }); this.prev_data_url = ''; } }, /** * @private * @returns {void} */ _stop() { this.disabled = 1; this._showToolbars(); document.querySelector(`.${this.classes.loadingBlock}`).style.display = 'none'; }, /** * @private * @returns {void} */ _getAdditionalBlockHeight() { if (this.additionalHeight === null) { let height = 0; const pageBottom = document.querySelectorAll('.page-bottom'); const blockAfterProducts = document.querySelectorAll('.main .products ~ .block-static-block'); if (blockAfterProducts.length) { height += blockAfterProducts.offsetHeight; } if (document.querySelectorAll(this.options.footerSelector).length) { document.querySelectorAll(this.options.footerSelector).forEach((footer) => { height += footer.offsetHeight; }); } if (pageBottom.length > 0) { height += pageBottom[0].offsetHeight; } this.additionalHeight = height; } return this.additionalHeight; }, /** * @private * @returns {void} */ _initPaginator() { if (this.disabled) { return; } let scroll_pos = window.scrollY; let diff = document.querySelector('body').offsetHeight - window.innerHeight; diff -= this._getAdditionalBlockHeight(); diff = 0.8 * diff; if (scroll_pos < this.lastScrollPos) { this.isScrolledBack = true; } this.lastScrollPos = scroll_pos; if (scroll_pos >= diff && this.is_loading === 0) { this._loadFollowing(); } if (scroll_pos <= this._getTopContainersHeight() && (this.is_loading === 0 && this._isScrolledBack())) { this._loadPrevious(); } this._calculateCurrentScrollPage(scroll_pos); document.addEventListener("DOMContentLoaded", (event) => { if (window.innerHeight > document.querySelector(this.options['product_container']).offsetHeight && '' !== this.next_data_url) { this._loadFollowing(); } }); }, /** * @private * @returns {void} */ _isScrolledBack() { return this.isScrolledBack; }, /** * @param {number} scroll_pos * @private * @returns {void} */ _calculateCurrentScrollPage(scroll_pos) { if (Math.abs(scroll_pos - this.last_scroll) > window.innerHeight * 0.1) { this.last_scroll = scroll_pos; this._updateUrlAndCurrentPage(); } }, /** * @private * @returns {void} */ _updateUrlAndCurrentPage() { const productContainers = document.querySelectorAll(this.options['product_container']); productContainers.forEach((container, index) => { if (this._mostlyVisible(container, index)) { var page = parseInt(container.getAttribute('amscroll-page')); if (page && page !== this.currentPage) { var newUrl = this._generateUrl(page, 0); if (!window.history.state || newUrl !== window.history.state.url) { window.history.replaceState({url: newUrl}, '', newUrl); } this.currentPage = page; } return false; } }); }, /** * @private * @returns {void} */ _loadFollowing() { if (this.flag_next_cache && this.type !== 'button') { this.loadingBlock.after.node?.classList.remove('hidden'); } if (this.next_data_url !== "" || this.next_data_cache) { if (this.type !== 'button') { this.loadingBlock.after.node?.classList.remove('hidden'); } if (this.next_data_cache) { this.showFollowing(this.next_data_cache); } else { if (!this.flag_next_cache) { this.is_loading = 1; this.doAjax(this.next_data_url, (data) => { this.showFollowing(data); }); } } } }, /** * @param {Object} data * @returns {void} */ showFollowing(data) { if (data.categoryProducts) { if (this.type === 'button') { if (this.canShowAfter) { this.is_loading = 0; this.canShowAfter = false; } else { return; } } this.next_data_url = ''; this.next_data_cache = false; this.loadingBlock.after.node?.classList.add('hidden'); this._insertNewProductBlock(data, 'after'); this._afterShowFollowing(); } }, /** * @private * @returns {void} */ _afterShowFollowing() { const nextPage = this.pagesLoaded[this.pagesLoaded.length - 1] + 1; if (nextPage && nextPage <= this.pagesCount && this.pagesLoaded.indexOf(nextPage) === -1) { this.next_data_url = this._generateUrl(nextPage, 1); this.pagesLoaded.push(nextPage); this.flag_next_cache = 1; this.doAjax(this.next_data_url, (preview_data) => { this.flag_next_cache = 0; this.next_data_cache = preview_data; window.dispatchEvent(new Event('scroll')); this.showButton(this.afterButton); }); } this.is_loading = 0; }, /** * @private * @returns {void} */ _loadPrevious() { if (this.flag_prev_cache && this.type !== 'button') { this.loadingBlock.before.node?.classList.remove('hidden'); } if (this.prev_data_url !== "" || this.prev_data_cache) { if (this.type !== 'button') { this.loadingBlock.before.node?.classList.remove('hidden'); } if (this.prev_data_cache) { this.showPrevious(this.prev_data_cache); } else { if (!this.flag_prev_cache) { this.is_loading = 1; this.doAjax(this.prev_data_url, (data) => { this.showPrevious(data); }); } } } }, /** * @param {Object} data * @returns {void} */ showPrevious(data) { if (data.categoryProducts) { if (this.type === 'button') { if (this.canShowBefore) { this.is_loading = 0; this.canShowBefore = false; } else { return; } } this.prev_data_cache = false; this.prev_data_url = ''; this.loadingBlock.before.node?.classList.add('hidden'); this._insertNewProductBlock(data, 'before'); this._afterShowPrevious(); } }, /** * @private * @returns {void} */ _afterShowPrevious() { const prevPage = this.pagesLoaded[0] - 1; if (prevPage && prevPage <= this.pagesCount && this.pagesLoaded.indexOf(prevPage) === -1) { this.prev_data_url = this._generateUrl(prevPage, 1); this.pagesLoaded.unshift(prevPage); this.flag_prev_cache = 1; this.doAjax(this.prev_data_url, (preview_data) => { this.flag_prev_cache = 0; this.prev_data_cache = preview_data; window.dispatchEvent(new Event('scroll')); this.showButton(this.beforeButton); }); } this.is_loading = 0; }, /** * @private * @param {string} position * @returns {void} */ _generateButton(position) { if (this.type !== 'button') { return; } if ((position === 'before' && this.pagesLoaded.indexOf(1) !== -1 && (document.querySelector(this.pageSelector.replace('%1', this.pageFirst)) || this.currentPage === this.pageFirst)) ) { return; } if (position === 'after' && this.pagesLoaded.indexOf(this.pagesCount) !== -1 && (document.querySelector(this.pageSelector.replace('%1', this.pagesCount)) || this.currentPage === this.pagesCount)) { return; } const buttonElement = this.loadButtonElement.cloneNode(true); const textElement = this.loadButtonTextElement.cloneNode(true); const color = this.options['buttonColor']; const buttonSelector = `.${this.classes.loadButton}.-${position}`; textElement.textContent = this.options[`loading${position}TextButton`]; buttonElement.append(textElement); buttonElement.style.color = color; buttonElement.style.borderColor = color; buttonElement.setAttribute('amscroll_type', position); buttonElement.classList.add(`-${position}`); if (position === 'after') { if (this.afterButton) { this.afterButton.remove(); } this._insertBlockInTheEnd(buttonElement.outerHTML); this.afterButton = document.querySelector(buttonSelector); } else { buttonElement.className += ' mb-4 mt-2'; if (this.beforeButton) { this.beforeButton.remove(); } this._insertBlockInTheBegin(buttonElement.outerHTML); this.beforeButton = document.querySelector(buttonSelector); } this.$nextTick(() => { const buttons = document.querySelectorAll(`.${this.classes.loadButton}[amscroll_type="${position}"]`); buttons.forEach((button) => { if (!!button.dataset.amscrollHasEvent) { return; } button.addEventListener('click', (event) => { this.buttonClick(event); }); button.dataset.amscrollHasEvent = true; }); }); }, /** * @param {Node} buttonElement * @returns {void} */ showButton(buttonElement) { if (buttonElement) { buttonElement.style.display = 'block'; } }, /** * @param {Event} event * @returns {void} */ buttonClick(event) { const element = event.currentTarget; const type = element.getAttribute('amscroll_type'); element.style.color = this.options['buttonColorPressed']; if (type === 'after') { this.canShowAfter = true; this._loadFollowing(); } else { this.canShowBefore = true; this._loadPrevious(); } this.$nextTick(() => { this._updateUrlAndCurrentPage(); }); }, /** * @private * @param {Object} data * @param {string} position * @returns {void} */ _insertNewProductBlock(data, position) { let htmlData = data.categoryProducts; let tmp = document.createElement('div'); tmp.innerHTML = htmlData; let html = tmp.querySelector('section'); this._removeToolbars(html); const productContainer = html.querySelector(this.options['product_container']); productContainer.classList.add('amscroll-pages'); productContainer.setAttribute('amscroll-page', data.currentPage); this.beforeInsertProductBlock(productContainer); if (this.options['pageNumbers'] == '1') { var pageNumEl = this._generatePageTitle(data.currentPage); if (pageNumEl) { productContainer.before(pageNumEl); } } if ('after' === position) { this.afterButton?.remove(); this._moveScriptToTop(html); this._insertBlockInTheEnd(html.innerHTML); window.setAjaxCart(); } else { this._moveScriptToTop(html); const element = this._insertBlockInTheBegin(html.innerHTML); window.setAjaxCart(); const itemHeight = element !== undefined ? element.offsetHeight : 0; if (this.type != 'button') { window.scrollTo(0, window.scrollTop + itemHeight); } } this.$nextTick(() => { const currentProductContainer = document.querySelector(`.amscroll-pages[amscroll-page="${data.currentPage}"]`); this._addObserverToProductLink(currentProductContainer); if (this.type == 'button') { this._generateButton(position); } }); this.initPageStepForwardListener(data.currentPage); }, /** * @private * @param {Node} productContainer * @returns {void} */ _addObserverToProductLink(productContainer) { this._externalAfterAjax(); const links = productContainer.querySelectorAll('.item a'); links.forEach((link) => { link.addEventListener('click', (event) => { try { const parent = event.target.closest('.amscroll-pages'); const page = parent ? parent.getAttribute('amscroll-page') : null; if (page) { var newUrl = this._generateUrl(page, 0); if (!window.history.state || newUrl !== window.history.state.url) { window.history.replaceState( { url: newUrl }, '', newUrl ); } } } catch (e) { console.warn(e); } }); }); }, /** * @private * @param {number} page * @param {number} addScroll * @returns {string} */ _generateUrl(page, addScroll) { const parameters = addScroll > 0 ? `p=${page}&is_scroll=${addScroll}` : `p=${page}`; const currentUrl = window.location.origin + window.location.pathname; const urlHasArgument = currentUrl.includes('?'); const parameterType = urlHasArgument ? '&' : '?'; const currentParameters = new URLSearchParams(window.location.search); const newParameters = new URLSearchParams(parameters); const newUrlParams = new URLSearchParams({ ...Object.fromEntries(currentParameters), ...Object.fromEntries(newParameters) }); return `${currentUrl}${parameterType}${newUrlParams}`; }, /** * @private * @returns {void} */ _hideToolbars() { if (document.querySelector('.products ~ ' + this.toolbarSelector)) { document.querySelector('.products ~ ' + this.toolbarSelector).style.display = 'none'; } }, /** * @private * @returns {void} */ _showToolbars() { document.querySelector(this.totalAmountSelector).style.display = 'block'; document.querySelector(`.products ~ ${this.toolbarSelector}`).style.display = 'block'; }, /** * @private * @param {number} page * @returns {HTMLDivElement|boolean} */ _generatePageTitle(page) { if (document.querySelector(`#amscroll-page-num${page}`)) { return false; } const pageNumEl = document.createElement('div'); pageNumEl.setAttribute('class', `product-list-container amscroll-page-num -amscroll-${this.options['pageNumberStyle']}`); pageNumEl.setAttribute('id', `#amscroll-page-num${page}`); pageNumEl.textContent = `${this.options['pageNumberContent']}${page}`; return pageNumEl; }, /** * @private * @param {Node} element * @param {number} index * @returns {boolean} */ _mostlyVisible(element, index) { const visible = element.offsetParent !== null; const scroll_pos = window.scrollY; const window_height = window.innerHeight; const el_top = element.offsetTop; const el_height = element.offsetHeight; const el_bottom = el_top + el_height; const isVisible = ((el_bottom - el_height * 0.25 > scroll_pos) && (el_top < (scroll_pos + 0.5 * window_height)) && visible) || (index == 0 && scroll_pos < el_top); return ((el_bottom - el_height * 0.25 > scroll_pos) && (el_top < (scroll_pos + 0.5 * window_height)) && visible) || (index == 0 && scroll_pos < el_top); }, /** * @private * @returns {number} */ _getTopContainersHeight() { if (!this.topContainersHeight) { let result = document.querySelector('.page-header').offsetHeight; if (document.querySelectorAll(".main .block-static-block ~ .products, .main .block-static-block ~ #amasty-shopby-product-list").length) { result += document.querySelector(".main .block-static-block").offsetHeight; } this.topContainersHeight = 0.9 * result; } return this.topContainersHeight; }, /** * @returns {void} */ resolveBackToTopVisibility() { if (this.options?.backToTop?.enabled !== '1') { return; } this.isBackToTopVisible = document.body.scrollTop > this.backToTopTriggerHeight || document.documentElement.scrollTop > this.backToTopTriggerHeight; }, /** * @private * @returns {void} */ _scrollToTop() { const items = document.querySelectorAll(`[amscroll-page="${currentPage}"] .product-item a`); items.forEach((item) => { item.addEventListener('click', (event) => { var scrollPositionAfterStepBackData = { pageUrl: this.getCurrentUrl(), clickedProductLink: event.currentTarget.attributes.href.value }; hyva.getBrowserStorage().setItem('am-scroll-go-back-data', JSON.stringify(scrollPositionAfterStepBackData)); }); }); }, /** * @private * @param {Node} block * @returns {void} */ _insertBlockInTheEnd(block) { const productContainer = document.querySelectorAll(this.options['product_container']); productContainer[productContainer.length - 1].insertAdjacentHTML('afterend', block); }, /** * @private * @param {Node} block * @returns {Node} */ _insertBlockInTheBegin(block) { const element = document.querySelector(`.${this.classes.pageNumber}`) ?? document.querySelector(this.options['product_container']); this.beforeButton?.remove(); element.insertAdjacentHTML('beforebegin', block); return element; }, /** * @returns {string} */ getCurrentUrl() { return location.href.split('?')[0]; }, /** * @returns {void} */ getSavedAfterStepBackData() { let savedData = hyva.getBrowserStorage().getItem('am-scroll-go-back-data'); if (savedData) { savedData = JSON.parse(savedData); this.afterStepBackData = savedData; hyva.getBrowserStorage().removeItem('am-scroll-go-back-data'); } return this.afterStepBackData; }, /** * @param {number} currentPage */ initPageStepForwardListener(currentPage) { const items = document.querySelectorAll(`[amscroll-page="${currentPage}"] .product-item a`); items.forEach((item) => { item.addEventListener('click', (event) => { var scrollPositionAfterStepBackData = { pageUrl: this.getCurrentUrl(), clickedProductLink: event.currentTarget.attributes.href.value }; hyva.getBrowserStorage().setItem('am-scroll-go-back-data', JSON.stringify(scrollPositionAfterStepBackData)); }); }); }, /** * @private * @returns {void} */ _pagePositionAfterStepBack() { const savedScrollData = this.getSavedAfterStepBackData(); if (savedScrollData) { const productItem = document.querySelector(`a[href="${savedScrollData.clickedProductLink}"]`); history.scrollRestoration = 'auto'; if (productItem) { history.scrollRestoration = 'manual'; productItem.scrollIntoView(); } } }, /** * @private * @param {string} html */ _moveScriptToTop(html) { const htmlScripts = html.getElementsByTagName('script'); if (htmlScripts.length > 0) { const scripts = []; for (let i = 0; i < htmlScripts.length; i++) { scripts.push(htmlScripts[i]); } for (let i = 0; i < scripts.length; i++) { let script = document.createElement('script'); script.innerHTML = scripts[i].innerHTML; document.head.appendChild(script); scripts[i].parentNode.removeChild(scripts[i]); } } }, /** * @private * @param {string} html */ _removeToolbars(html) { const contentToolbars = html.querySelectorAll(this.toolbarSelector); contentToolbars.forEach((toolbar) => { toolbar.previousElementSibling.remove(); toolbar.remove(); }); }, /** * @param {Node} elem * @param {string} selector * @returns {Element|null} */ getNext(elem, selector) { let nextElem = elem.nextElementSibling; if (!selector) { return nextElem; } if (nextElem && nextElem.matches(selector)) { return nextElem; } return null; } }; }</script><div x-data="initAmScroll()" x-init="processInit" @scroll.window.debounce="_initPaginator()"><div x-cloak x-show="isBackToTopVisible" @scroll.window.debounce="resolveBackToTopVisibility"><template id="amscroll-loading-icon-source"><div class="amscroll-loading-block hidden loader"><img src="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/loader-1.gif" alt="Loading..."></div></template></div></div></div></div> <script> function initLastAddedToCartPanel() { return { currentProduct: null, open: false, isMobile: window.outerWidth < 768, setLastProductAddedToCart(detail) { this.currentProduct = detail; this.openMiniCart(); }, openMiniCart() { this.open = true; this.resizeHeight(); window.dispatchEvent( new CustomEvent('open-mini-cart') ); document.body.style.overflow = 'hidden'; }, closeMiniCart() { this.open = false; this.currentProduct = null; window.dispatchEvent( new CustomEvent('close-mini-cart') ); document.body.style.removeProperty('overflow'); }, resizeHeight() { this.$nextTick(() => { if (this.isMobile && document.querySelector('.page-header')) { this.$refs.minicart.style.maxHeight = (window.innerHeight - document.querySelector('.page-header').offsetHeight) + 'px'; } }) } } } function escapeHtml(unsafe) { return unsafe .replace('<p>', "") .replace('</p>', "") }</script><section id="mini-cart" class="mini-cart 123"><div x-data="initLastAddedToCartPanel()" x-cloak class="fixed z-50" @last-added-cart-pannel.window="setLastProductAddedToCart($event.detail)" @keydown.window.escape="closeMiniCart()"><div class="backdrop" x-show="open" x-transition:enter="ease-in-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in-out duration-300" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" @click="closeMiniCart()" aria-label="Close panel"></div><div class="minicart overflow-y-auto hide-scrollbar scroll-smooth fixed bottom-0 md:inset-y-0 right-0 z-50 max-h-full h-full w-full md:max-w-md w-full bg-white px-3.75 bg-white flex flex-col gap-3.75 md:gap-6 rounded-t-lg md:rounded-t-none" @click.away="closeMiniCart()" x-show="open" x-ref="minicart" x-transition:enter="transform transition ease-in-out duration-300" x-transition:enter-start="translate-y-full md:translate-y-0 md:translate-x-full" x-transition:enter-end="translate-y-0 md:translate-x-0" x-transition:leave="transform transition ease-in-out duration-300" x-transition:leave-start="translate-y-0 md:translate-x-0" x-transition:leave-end="translate-y-full md:translate-y-0 md:translate-x-full"><div class="flex items-center justify-between py-6"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="valide-colored" version="1.1" x="0px" y="0px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve" class="w-5 h-auto" width="24" height="24" role="img"> <path fill="#4BBFA7" d="M20,10c0-5.5-4.5-10-10-10C4.5,0,0,4.5,0,10c0,5.5,4.5,10,10,10C15.5,20,20,15.5,20,10z"/> <path fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" d="M7.5,9.7l2,2l3-3.5"/> <title/></svg> <span class="uppercase text-anthracite-600 font-medium font-gotham text-base leading-4 tracking-spaced">Product Added</span></div><div class="cursor-pointer" @click="closeMiniCart()"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="cross-menu" version="1.1" x="0px" y="0px" viewBox="0 0 15.5 15.5" enable-background="new 0 0 15.5 15.5" xml:space="preserve" class="text-lavender w-4.5 h-auto" width="24" height="24" role="img"> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M0.8,14.8l14-14"/> <path fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" d="M14.8,14.8l-14-14"/> <title/></svg> </div></div><template x-if="currentProduct != null"><div class="flex flex-row gap-4 -mt-6 md:py-3.75"><img class="w-[5.938rem] h-[5.938rem] object-center object-cover" :src="currentProduct.image" alt=""><div class="flex flex-col gap-3 font-gotham font-medium w-full"><div class="flex items-start justify-between gap-2"><div class="flex flex-col gap-2 text-anthracite-500"><span x-text="currentProduct.name" class="text-base leading-5"></span> <span class="uppercase text-tiny leading-[0.813rem]" x-text="escapeHtml(currentProduct.short_description)"></span></div><div class="flex flex-col gap-1"><span class="text-base leading-4" :class="{ 'text-pink': Number.parseFloat(currentProduct.old_price) > Number.parseFloat(currentProduct.final_price) }" x-text="hyva.formatPrice(currentProduct.final_price)"></span> <template x-if="Number.parseFloat(currentProduct.old_price) > Number.parseFloat(currentProduct.final_price)"><span class="text-anthracite-400 text-sm leading-[0.875rem] line-through" x-text="hyva.formatPrice(currentProduct.old_price)"></span></template></div></div></div></div></template><div class="flex flex-col gap-3.75"><div class="bg-lavender-300 rounded-[10px] px-3.5 py-3 "><div x-data="initIncentiveCart" class="incentiveBar hidden flex flex-col gap-2" :class="{'hidden': isLoading}" @private-content-loaded.window="calcFreeShipping($event.detail.data.cart)"><div class="text-xs md:text-sm font-medium leading-none md:leading-none pb-2" x-show="amountStep > 0"><span class="text-lavender">Only <span x-html="amountStep" ></span> € left</span> <span>for a <span x-text="labelShippingStep"></span></span></div><div class="text-xs md:text-sm font-medium leading-none md:leading-none flex flex-col gap-2"><div x-show="amountStep < 0 && !freeGift2Amount && !freeGift3Amount">Free shipping</div><div x-show="!freeGift2Amount && !freeGift3Amount" class="w-full flex flex-row"><span class="w-3/4 shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div x-show="freeGift2Amount && !freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Free shipping</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-2/3 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/3 relative"><div class="w-full flex flex-row"><span x-show="amountStep2 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div></div></div></div></div><div x-show="freeGift2Amount && freeGift3Amount" class="h-24 flex flex-col"><div class="text-xs md:text-sm font-medium leading-none md:leading-none my-auto"><div class="relative w-full flex"><div class="w-1/4 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] rounded-l-lg border-lavender transition-all" :style="calcBarSize('step1')"></span> <span class="w-full block border-b-[7px] rounded-l-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep1 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute left-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center">Free shipping</span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeShippingValue"></span></div></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step2')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div :class="{'text-lavender': amountStep2 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute mx-auto left-0 right-0 bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift2Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift2Amount"></span></div><div class="w-1/2 relative"><div class="w-full flex flex-row"><span class="shrink-0 block border-b-[7px] border-lavender transition-all" :style="calcBarSize('step3')"></span> <span class="w-full block border-b-[7px] border-lavender-400"></span></div></div><div class="w-1/4 relative"><div class="w-full flex flex-row"><span x-show="amountStep3 < 0" class="w-full shrink-0 block border-b-[7px] rounded-r-lg border-lavender transition-all" ></span> <span class="w-full block border-b-[7px] rounded-r-lg border-lavender-400"></span></div><div :class="{'text-lavender': amountStep3 < 0}" class="w-[70px] flex flex-col justify-center items-center absolute right-[calc(100%_-_35px)] bottom-[-28px]"><span class="text-center" x-text="cartDatas?.freeGift3Label"></span> <span class="text-2xl text-[#FFABFF]">|</span> <span x-text="freeGift3Amount"></span></div></div></div></div></div></div></div><a href="https://www.adopt.com/en/checkout/cart" class="btn btn-primary flex justify-center min-h-[3.75rem] w-full md:mb-3.75">See cart</a></div><div class="bg-lavender-300 h-full -mx-3.75"><div class="pl-3.75 py-6"> <div class="product-slider product-slider--crosssell"><div> <!-- product-slider-container-crosssell.phtml --><section class="relative product-widget-slider body-font" x-data="{ isMobile: window.outerWidth < 768, numberSlide: 0, currentSlide: 0, index: 0, isSlider: true, items: null, itemWidth: 0, maxSlide: false, gapWidth: 30, isMaxScroll: false, showStickyBar: false, loadSlider() { if(this.$refs.slider) { this.items = this.$refs.slider.querySelectorAll('.item-slider'); this.numberSlide = this.items.length; this.isSlider = this.$refs.slider.scrollWidth > this.$refs.slider.clientWidth; this.itemWidth = this.items[this.numberSlide - 1].offsetWidth; } this.$nextTick(() => { window.dispatchEvent( new CustomEvent( 'select-default-contenance', { detail: { contenance: { 1: '30 ml', 2: '50 ml', 3: '100 ml', 4: '10 ml' }, skipUpdateGallery: true } } ) ); }); }, next() { if(this.currentSlide < this.numberSlide) { if(this.currentSlide === this.numberSlide - 1) { this.$refs.slider.scrollLeft = this.items[this.numberSlide - 1].offsetLeft; } else { if(this.currentSlide === 0) { this.$refs.slider.scrollLeft = this.items[this.currentSlide + 1].offsetLeft - this.gapWidth; this.currentSlide = this.currentSlide + 1; } else { this.currentSlide = this.currentSlide + 1; this.$refs.slider.scrollLeft = this.items[this.currentSlide].offsetLeft - this.gapWidth; } } } let restOfScroll = this.$refs.slider.scrollWidth - this.$refs.slider.offsetWidth - this.$refs.slider.scrollLeft; this.maxSlide = restOfScroll < this.itemWidth; }, prev() { if(this.currentSlide === 0 || this.currentSlide === 1) { this.currentSlide = 0; this.$refs.slider.scrollLeft = 0; } else { this.currentSlide = this.currentSlide - 1; this.$refs.slider.scrollLeft = this.items[this.currentSlide].offsetLeft; } this.maxSlide = false; } }" x-init="loadSlider()" @resize.window.debounce.100="isMobile = window.outerWidth < 768; loadSlider($refs);" ></section></div><script> 'use strict'; window.addEventListener('DOMContentLoaded', function() { if (! window.productSliderEventHandlerInitialized) { window.productSliderEventHandlerInitialized = true; window.addEventListener('product-add-to-wishlist', (event) => { const productId = event.detail.productId; fetch(BASE_URL + "wishlist/index/add/", { headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: new URLSearchParams({ form_key: hyva.getFormKey(), product: productId, uenc: btoa(window.location.href) } ), method: "POST", mode: "cors", credentials: "include" }).then(function (response) { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Could not add item to wishlist." }], 5000 ); } }).then(function (result) { if (!result) { return } typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: (result.success) ? "success" : "error", text: (result.success) ? "Product has been added to your Wish List." : result.error_message }], 5000 ); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['wishlist', 'messages'] } } ) ); }).catch(function (error) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); }) window.addEventListener('product-add-to-compare', (event) => { const productId = event.detail.productId; hyva.postForm({ action: BASE_URL + 'catalog/product_compare/add/', data: {product: productId} }) }) } });</script></div> </div></div></div></div></section></main><footer class="page-footer"> <script> 'use strict'; function initAwRbslider(config) { return { options: Object.assign({ autoplay: true, pauseTimeBetweenTransitions: 3000, slideTransitionSpeed: 500, isStopAnimationMouseOnBanner: true, animation: 'fade', isRandomOrderImage: false, sliderListSelector: '.uk-slideshow', sliderItemSelector: '.aw-rbslider-item', $refs: null }, config), slideshow: {options: {}}, init() { this.options.$refs = this.$refs; }, initSlider($refs) { this.slideshow = window.awRbslider(this.$el, { autoplay: this.options.autoplay, autoplayInterval: this.options.pauseTimeBetweenTransitions, duration: this.options.slideTransitionSpeed, pauseOnHover: this.options.isStopAnimationMouseOnBanner, animation: this.options.animation, $refs: this.options.$refs, }); this.loadSlides($refs); this.slideshow.resize = () => this.resizeBanner(this.slideshow); if (this.options.bannerSchedule.length > 0) { if (!this.timeValidator([this.options.bannerSchedule[0]])) { this.delayedUpdate(this.options.bannerSchedule[0]); } if (this.timeValidator(this.options.bannerSchedule)) { this.sendRequest(this.options.bannerId); } } }, loadSlider($refs) { if (!window.awRbslider) { let callbacks = []; window.awRbslider = {'-isLoading': (callback) => callbacks.push(callback)}; } if (window.awRbslider['-isLoading']) { window.awRbslider['-isLoading'](() => this.loadSlider($refs)) } if (!window.awRbslider['-isLoading']) { this.initSlider($refs); } }, pauseOnEnter() { if (this.slideshow.options.pauseOnHover) { this.slideshow.hovering = true; } }, resumeOnLeave() { this.slideshow.hovering = false; }, /** * Recalculate the width and height of the banner */ resizeBanner(slideshow) { if (slideshow.slides.length) { let firstChild = slideshow.slides[slideshow.current]; if (firstChild.querySelector('.rbslider__video')) { const video = firstChild.querySelector('video'); if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = video.getBoundingClientRect().height; slideshow.container.style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; document.querySelector('.wrapperVideo').style.height = 'calc(100vh - ' + (document.querySelector('.page-header').offsetHeight - 2) + 'px)'; } } else { if (slideshow.options.height === 'auto' && slideshow.slides.length) { slideshow.slides[slideshow.current].style.height = ''; const height = slideshow.slides[slideshow.current].getBoundingClientRect().height; slideshow.container.style.height = height + 'px'; } } } }, /** * Lazy load slides */ loadSlides($refs) { this.slideshow.slides.forEach((slideElem, index) => { if (index) { const slideImg = slideElem.querySelector('img.aw-rbslider__img'); if (slideImg && slideImg.dataset.src) { slideImg.addEventListener('load', () => { slideImg.classList.add('is-loaded'); }); slideImg.src = slideImg.dataset.src; slideImg.removeAttribute('data-src'); } } }); }, clickSliderEvent(url, label) { window.dataLayer?.push({ 'event': 'clicSliderHP', 'text': label }); window.location.href = url }, /** * Compare current time with schedule */ timeValidator(schedule) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); let isValid = false; schedule.forEach(item => { if (currentDateMinute === Math.floor(new Date(item).getTime() / 1000 / 60)) { isValid = true; } }); return isValid; }, /** * Send request for clean banner cache */ sendRequest(bannerId) { const formKey = hyva.getFormKey(); fetch(this.options.cacheCleanUrl, { method: 'post', headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, body: "form_key=" + formKey + "&bannerId=" + bannerId, mode: "cors", credentials: "include" }); }, /** * Schedule call to sendRequest for future schedule item */ delayedUpdate(futureTime) { const currentDateMinute = Math.floor(Date.now() / 1000 / 60); const interval = Math.floor(new Date(futureTime).getTime() / 1000 / 60) - currentDateMinute; if (interval > 0) { setTimeout(() => this.sendRequest(this.options.bannerId), interval); } }, /** * @private */ _randomSort() { const sliderListSelector = this.options.sliderListSelector, sliderItemSelector = this.options.sliderItemSelector; this.$el.querySelector(sliderListSelector) .innerHTML = Array.from(this.$el.querySelectorAll(sliderListSelector + ' ' + sliderItemSelector)) .sort(() => Math.random() - 0.5) .map(item => item.outerHTML) .join(''); }, } }</script><div class="footer content"> <div class="bg-white"><div class="max-w-footer-container px-2 md:px-8.5 xl:px-0 py-12 md:py-20 grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-x-2 md:gap-x-5 items-start text-center mx-auto"> <div class="reassurance-item mx-auto flex flex-col gap-3.5 "><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="colis-shipping" version="1.1" x="0px" y="0px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="text-lavender shrink-0 w-8.75 h-auto mx-auto" width="20" height="22" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.2,23.5c1,0,1.8-0.8,1.8-1.8 S11.2,20,10.2,20s-1.8,0.8-1.8,1.8S9.3,23.5,10.2,23.5z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M18.2,23.5c1,0,1.8-0.8,1.8-1.8 S19.2,20,18.2,20s-1.8,0.8-1.8,1.8S17.2,23.5,18.2,23.5z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M14.5,5.9c-0.7-3-3.4-5.2-6.4-5.4 C4.9,0.3,2.1,2.1,1,5s-0.2,6.2,2.2,8.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.6,7.6l2.7-2.7"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M11.1,16.4v-1.8H8.5c-2,0-3.5,1.6-3.5,3.5 v3.5"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M23.5,21.7v-8.9c0-1-0.8-1.8-1.8-1.8h-8.9 c-1,0-1.8,0.8-1.8,1.8v3.5"/> <title/></svg> <div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><a href="https://www.adopt.com/en/delivery-returns">Free delivery</a></p></div><div class="font-medium text-sm text-anthracite-400"><a href="https://www.adopt.com/en/delivery-returns">under conditions</a></p></div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5 "><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="eclair" version="1.1" x="0px" y="0px" viewBox="0 0 16.7 23.7" enable-background="new 0 0 16.7 23.7" xml:space="preserve" class="text-lavender shrink-0 w-8.75 h-auto mx-auto" width="20" height="22" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M16.2,9.2l-9.6,14v-8.7H0.5l9.6-14v8.7H16.2z "/> <title/></svg> <div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words">100% secure payment</div><div class="font-medium text-sm text-anthracite-400">by credit card, paypal, amex, apple pay and klarna</div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5 "><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="transport-standard" version="1.1" x="0px" y="0px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="text-lavender shrink-0 w-8.75 h-auto mx-auto" width="20" height="22" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M13.5,23.5c-1.1,0-2-0.9-2-2s0.9-2,2-2 s2,0.9,2,2S14.6,23.5,13.5,23.5z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5.5,23.5c-1.1,0-2-0.9-2-2s0.9-2,2-2 s2,0.9,2,2S6.6,23.5,5.5,23.5z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M9.5,6c0.7-3.1,3.4-5.3,6.5-5.5 c3.1-0.2,6,1.7,7.1,4.7c1.1,3,0.2,6.3-2.2,8.3"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M15.5,8.5l3-3"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M12.5,16.2v-1.8h2.6c1.9,0,3.4,1.6,3.4,3.5 v3.5"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,22.5v-9.2c0-1,0.8-1.8,1.7-1.8h8.6 c0.9,0,1.7,0.8,1.7,1.8V17"/> <title/></svg> <div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><p><a href="https://www.adopt.com/en/commercial-offers.html">the 4th free</a></p></div><div class="font-medium text-sm text-anthracite-400"><p><a href="https://www.adopt.com/en/commercial-offers.html">3 scents bought, 4th offered</a></p></div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5 "><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="bank-card" version="1.1" x="0px" y="0px" viewBox="0 0 33 24" enable-background="new 0 0 33 24" xml:space="preserve" class="text-lavender shrink-0 w-8.75 h-auto mx-auto" width="20" height="22" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M29.1,0.8H3.5C2.1,0.8,1,1.9,1,3.3v17.5 c0,1.3,1.1,2.4,2.4,2.4h25.6c1.3,0,2.4-1.1,2.4-2.4V3.3C31.5,1.9,30.4,0.8,29.1,0.8z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M1,6.9h30.5"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.1,13h11.2"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M7.1,17.1h7.1"/> <title/></svg> <div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words">Customer service</div><div class="font-medium text-sm text-anthracite-400"><a href="https://support.adopt.com/hc/fr/requests/new"> via our contact form</a></div></div> <div class="reassurance-item mx-auto flex flex-col gap-3.5 hidden lg:flex"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="earth-2" version="1.1" x="0px" y="0px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve" class="text-lavender shrink-0 w-8.75 h-auto mx-auto" width="20" height="22" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M23.5,12c0,2.3-0.7,4.5-1.9,6.4 c-1.3,1.9-3.1,3.4-5.2,4.2c-2.1,0.9-4.4,1.1-6.6,0.6c-2.2-0.4-4.3-1.5-5.9-3.2c-1.6-1.6-2.7-3.7-3.1-5.9C0.3,12,0.5,9.7,1.4,7.6 c0.9-2.1,2.3-3.9,4.2-5.2S9.7,0.5,12,0.5c1.5,0,3,0.3,4.4,0.9c1.4,0.6,2.7,1.4,3.7,2.5s1.9,2.3,2.5,3.7C23.2,9,23.5,10.5,23.5,12z"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M20.1,3.9l-1.2,3c-0.1,0.3-0.4,0.6-0.6,0.8 c-0.3,0.2-0.6,0.4-1,0.4l-2.1,0.3c-0.1,0-0.2,0-0.2,0.1c-0.1,0-0.1,0.1-0.2,0.2c0,0.1-0.1,0.1-0.1,0.2c0,0.1,0,0.2,0.1,0.2l0.5,1.1 c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.2,0.1,0.3,0.1c0.3,0,0.6,0,0.8,0.2c0,0.1,0.1,0.2,0.1,0.2s0,0.2-0.1,0.2c-1.7,3.4-1.6,3.2-1.6,3.4 v2.4c0,0.3-0.1,0.6-0.2,0.8c-0.1,0.3-0.3,0.5-0.5,0.7l-1.9,1.6c0,0-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.2,0s-0.1,0-0.2-0.1 c-0.1,0-0.1-0.1-0.2-0.1l-1.5-1.8c-0.2-0.2-0.3-0.5-0.4-0.8c-0.1-0.3-0.1-0.6,0-0.9l0.2-0.8c0-0.1,0-0.2,0-0.3l-0.8-1.6 c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2-0.1-0.3-0.1H7c-0.4,0-0.8-0.1-1.2-0.4c-0.3-0.3-0.6-0.6-0.7-1L4.4,9.9c0-0.1,0-0.2,0-0.2 c0-0.1,0.1-0.2,0.1-0.2l1.7-2c0.2-0.3,0.5-0.5,0.9-0.6c0.3-0.1,0.7-0.1,1-0.1L9.4,7C9.5,7,9.3,7,13,7c0.1,0,0.3-0.1,0.4-0.1 c0.1-0.1,0.1-0.2,0.1-0.4V5.4c0-0.4-0.1-0.8-0.3-1.1c-0.2-0.3-0.5-0.6-0.9-0.7C12,3.4,11.7,3.3,11.6,3c0-0.1,0-0.2,0.1-0.3 c0-0.1,0.1-0.2,0.2-0.2l2.8-1.6"/> <title/></svg> <div class="font-secondary font-bold text-anthracite-600 text-lg leading-[1.3] break-words"><p><a href="https://www.adopt.com/en/our-commitments">Committed perfumes</a></p></div><div class="font-medium text-sm text-anthracite-400">Perfumery expertise</div></div></div></div> <div class="footer bg-pink-100" x-data="initFooterSocialComponent()" > <div class="footer-socials pt-6 lg:pt-10 flex flex-row justify-center items-center"><a aria-label="instagram" @click.prevent="clickSocialLinkEvent('https://www.instagram.com/adoptparfums/', 'Instagram')" href="https://www.instagram.com/adoptparfums/" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-instagram" version="1.1" x="0px" y="0px" viewBox="0 0 19 19" enable-background="new 0 0 19 19" xml:space="preserve" class="w-auto h-7" width="24" height="24" role="img"> <path fill="currentColor" d="M19,5.6c0-1-0.2-1.7-0.4-2.3c-0.2-0.6-0.6-1.2-1.1-1.7c-0.5-0.5-1.1-0.9-1.7-1.1c-0.6-0.2-1.3-0.4-2.3-0.4 C12.4,0,12.1,0,9.5,0S6.6,0,5.6,0.1c-1,0-1.7,0.2-2.3,0.4C2.6,0.7,2.1,1.1,1.6,1.6C1.1,2.1,0.7,2.6,0.5,3.3C0.3,3.9,0.1,4.6,0.1,5.6 C0,6.6,0,6.9,0,9.5c0,2.6,0,2.9,0.1,3.9c0,1,0.2,1.7,0.4,2.3c0.2,0.6,0.6,1.2,1.1,1.7c0.5,0.5,1.1,0.9,1.7,1.1 c0.6,0.2,1.3,0.4,2.3,0.4c1,0,1.3,0.1,3.9,0.1c2.6,0,2.9,0,3.9-0.1c1,0,1.7-0.2,2.3-0.4C17,18,18,17,18.5,15.7 c0.2-0.6,0.4-1.3,0.4-2.3c0-1,0.1-1.3,0.1-3.9C19,6.9,19,6.6,19,5.6z M17.2,13.3c0,0.9-0.2,1.4-0.3,1.8c-0.3,0.8-1,1.5-1.8,1.8 c-0.3,0.1-0.8,0.3-1.8,0.3c-1,0-1.3,0.1-3.8,0.1c-2.5,0-2.8,0-3.8-0.1c-0.9,0-1.4-0.2-1.8-0.3c-0.4-0.2-0.8-0.4-1.1-0.7 c-0.3-0.3-0.6-0.7-0.7-1.1c-0.1-0.3-0.3-0.8-0.3-1.8c0-1-0.1-1.3-0.1-3.8c0-2.5,0-2.8,0.1-3.8c0-0.9,0.2-1.4,0.3-1.8 c0.2-0.4,0.4-0.8,0.7-1.1c0.3-0.3,0.7-0.6,1.1-0.7C4.2,2,4.7,1.8,5.7,1.8c1,0,1.3-0.1,3.8-0.1c2.5,0,2.8,0,3.8,0.1 c0.9,0,1.4,0.2,1.8,0.3c0.4,0.2,0.8,0.4,1.1,0.7c0.3,0.3,0.6,0.7,0.7,1.1c0.1,0.3,0.3,0.8,0.3,1.8c0,1,0.1,1.3,0.1,3.8 C17.3,12,17.3,12.3,17.2,13.3z"/> <path fill="currentColor" d="M9.5,4.6c-2.7,0-4.9,2.2-4.9,4.9c0,2.7,2.2,4.9,4.9,4.9c2.7,0,4.9-2.2,4.9-4.9C14.4,6.8,12.2,4.6,9.5,4.6z M9.5,12.7c-1.8,0-3.2-1.4-3.2-3.2c0-1.8,1.4-3.2,3.2-3.2c1.8,0,3.2,1.4,3.2,3.2C12.7,11.3,11.3,12.7,9.5,12.7z"/> <path fill="currentColor" d="M16,4.2c0,0.6-0.5,1.1-1.1,1.1s-1.1-0.5-1.1-1.1c0-0.6,0.5-1.1,1.1-1.1C15.4,3,16,3.6,16,4.2z"/> <title/></svg> </a> <a aria-label="tiktok" @click.prevent="clickSocialLinkEvent('https://www.tiktok.com/@adoptparfums', 'Tiktok')" href="https://www.tiktok.com/@adoptparfums" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-tik-tok" version="1.1" x="0px" y="0px" viewBox="0 0 17 19" enable-background="new 0 0 17 19" xml:space="preserve" class="w-auto h-7" width="24" height="24" role="img"> <path fill="currentColor" d="M9,0c-0.4,0-0.8,0.1-1,0.1C7.5,0.2,7.3,0.6,7.3,1L7,13.6v0c0,0.8-0.7,1.5-1.5,1.5c-0.8,0-1.5-0.7-1.5-1.5 c0-0.4,0.2-0.8,0.4-1c0.3-0.2,0.6-0.4,1-0.5c0.3,0,0.6-0.3,0.6-0.6L6.1,9c0-0.4-0.3-0.7-0.7-0.6C2.5,8.5,0,10.5,0,13.6 c0,3,2.4,5.4,5.5,5.4c3,0,5.5-2.4,5.5-5.4l-0.1-6.4c1.4,0.9,3.3,1.4,5.1,1.5c0.4,0,0.9-0.2,1-0.6C17,7.9,17,7.6,17,7.4 c0-0.3,0-0.5-0.1-0.7C16.8,6.2,16.3,6,16,6c-1.3-0.1-2.5-0.8-3.5-1.7c-1-0.9-1.6-2.1-1.8-3.3c-0.1-0.4-0.3-0.7-0.7-0.8 C9.7,0.1,9.4,0,9,0z"/> <title/></svg> </a> <a aria-label="facebook" @click.prevent="clickSocialLinkEvent('https://www.facebook.com/adoptparfumsdeFrance', 'Facebook')" href="https://www.facebook.com/adoptparfumsdeFrance" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-facebook" version="1.1" x="0px" y="0px" viewBox="0 0 10 20" enable-background="new 0 0 10 20" xml:space="preserve" class="w-auto h-7" width="24" height="24" role="img"> <path fill="currentColor" d="M2.2,11.1V20h4.2v-8.9h2.9L10,7.4H6.5V4.7c0-0.2,0-0.4,0.2-0.6C6.8,3.9,7,3.8,7.2,3.8h2.1V0H5.5 C3.7,0.3,2.4,1.7,2.2,3.5v3.8H0V11L2.2,11.1z"/> <title/></svg> </a> <a aria-label="youtube" @click.prevent="clickSocialLinkEvent('https://www.youtube.com/channel/UCCjIIgJBhO2I0OGh4soCFbw/featured', 'Youtube')" href="https://www.youtube.com/channel/UCCjIIgJBhO2I0OGh4soCFbw/featured" target="_blank" class="link flex justify-center items-center p-2.5 md:p-5 text-anthracite hover:text-pink" ><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="social-youtube" version="1.1" x="0px" y="0px" viewBox="0 0 23 16" enable-background="new 0 0 23 16" xml:space="preserve" class="w-auto h-5.5" width="24" height="24" role="img"> <path fill="currentColor" d="M15.9,0.1l0.5,0c1.7,0.1,3.4,0.2,4.1,0.4c1,0.3,1.8,1,2,2C23,4.1,23,7.1,23,7.9v0.2c0,0.4,0,3.8-0.5,5.5 c-0.3,1-1,1.8-2,2c-0.7,0.2-2.2,0.3-3.8,0.4l-0.5,0C14.3,16,12.6,16,11.8,16l-0.3,0c0,0,0,0,0,0h-0.1c0,0,0,0,0,0l-0.3,0 c-0.7,0-2.3,0-4-0.1l-0.5,0c-1.7-0.1-3.4-0.2-4.1-0.4c-1-0.3-1.8-1-2-2C0,11.9,0,8.7,0,8.1V7.9c0-0.4,0-1.7,0.1-3.1l0-0.5 C0.2,3.7,0.3,3,0.5,2.5c0.3-1,1.1-1.8,2-2c0.7-0.2,2.4-0.3,4.1-0.4l0.5,0C8.9,0,10.6,0,11.3,0l0.5,0C12.4,0,14.1,0,15.9,0.1z M9.2,4.6v6.9L15.3,8L9.2,4.6z"/> <title/></svg> </a></div> <div class="container px-7.5 lg:flex gap-10 xl:gap-20 pt-12 pb-13"><div class="flex flex-col h-full gap-6 lg:gap-12"> <div class="footer-newsletter bg-pink-150 p-6 pb-9" @click.away.outside="focusInput = false; errorMessage = ''" @click="focusInput = true" x-defer="intersect" x-data="initFooterNewsletterForm()"><form class="form subscribe xl:block" action="https://www.adopt.com/en/newsletter/subscriber/index" method="post" @submit.prevent="submitForm()" autocomplete="off" id="footer-newsletter-validate-detail"><div class="font-secondary font-bold text-4.5xl">20% offered</div><div class="uppercase font-medium text-sm leading-tightened tracking-spaced-lg">by subscribing to our newsletter</div><div class="mt-7.5 relative"><label for="newsletter-subscribe" class="sr-only">Email Address</label> <div class="field text required w-full no-label"><div class="control relative"><input type="hidden" name="is_subscribed" value="1" ><input name="email" type="email" required id="newsletter-subscribe" @input="hasChanges = true; isCapValid = false;" @input.debounce.50="callSuggestionWebService()" @keydown.down.prevent="handleKeydown" @keydown.tab="handleKeydown" @keydown.up.prevent="handleKeydown" @keydown.enter="handleKeydown" placeholder="My e-mail" @focusin="onInputFocus()" class="bg-white rounded-full border-white w-full py-3.75 pl-6 pr-16 leading-none font-medium placeholder:text-anthracite-400" :class="{ 'border-red': errorMessage.length > 0 }" readonly :autocomplete="/chrom(e|ium)/.test(navigator.userAgent.toLowerCase()) ? 'none' : 'off'"><div class="hidden flex flex-col w-full z-10 bg-white absolute color-red border-1 border-lavender-400 max-h-[250px] overflow-y-auto" :class="{ 'block': focusInput, 'hidden': !focusInput }" x-ref="propcontainer" x-show="propositions.length > 0"><div class="pl-2 pt-3 text-xs md:text-sm md:max-w-[22.5rem] block text-red" x-show="correctionMessage.length > 0" x-text="correctionMessage"></div><template x-for="(prop, index) in propositions" :key="index"><div class="p-2 w-full cursor-pointer hover:bg-lavender-300" :class="{ 'bg-lavender-300': selectedIndex === index }" :data-index="index" @click="setAutocompleteValue(prop.sMail)"><span x-text="prop.sMail"></span></div></template></div><div class="pl-2 pt-3 text-xs md:text-sm md:max-w-[22.5rem] block text-red" x-show="errorMessage.length > 0" x-html="errorMessage"></div><input name="form_key" type="hidden" value="XaQYATfBvC6qkA4c" /> <button aria-label="newsletter button" :disabled="isLoading" class="absolute top-0 right-0 bg-anthracite text-white py-4.5 px-4 rounded-full"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-4.5" width="18" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </button></div><div x-cloak class="pl-2 pt-3 text-xs md:text-sm md:max-w-[22.5rem]" :class="{ 'block': focusInput, 'hidden': !focusInput }"> <div id="cloudflare-turnstile-newsletter-subscribe-footer" class="cloudflare-turnstile h-0" x-data="initTurnstileForm_681e252117544()" x-defer="intersect" @turnstile-reset.window="reset()" @private-content-loaded.window="setCustomer($event.detail.data.customer)"><div class="cf-turnstile" data-appearance="interaction-only" data-size="normal" data-theme="light" data-retry-interval="2000" x-show="canShow()" data-sitekey="0x4AAAAAAAiLrmrQvhOQS6Th" x-init="load();"></div></div><script> function initTurnstileForm_681e252117544() { return { customer: null, configSource: 'turnstileConfig', scriptTagAdded: false, config: { 'enabled': false, 'sitekey': '0x4AAAAAAAiLrmrQvhOQS6Th', 'forms': [], 'size': 'normal', 'theme': 'light' }, action: "newsletter\u002Dsubscribe\u002Dfooter", size: "normal", theme: "light", widgetId: null, autoRendering: true, element: null, authentication: '.authentication-dropdown, .popup-authentication', setCustomer(customer) { this.customer = customer; }, canShow() { this.initialize(); if (this.customer && this.customer.hasOwnProperty('firstname') && this.customer.firstname) { return false; } return this.config.enabled && this.config.forms.indexOf(this.action) >= 0; }, beforeRender() { if (this.action === 'login-ajax') { this.loginAjax(); } }, afterRender() { if (this.action === 'login-ajax') { this.loginAjaxComplete(); } }, loginAjax() { document.querySelector(this.authentication)?.addEventListener('transitionend', function () { this.render(); }.bind(this)); }, loginAjaxComplete() { if (this.widgetId) { document.addEventListener('ajaxComplete', function (event) { const xhr = event.detail; const result = xhr.responseJSON; if (result.hasOwnProperty('errors') && result.errors) { this.reset(); } }.bind(this)); } }, initialize() { if (typeof window[this.configSource] !== 'undefined' && window[this.configSource].config) { this.config = window[this.configSource].config; } }, reset() { if (this.widgetId) { window.turnstile?.reset(this.widgetId); } }, load() { this.initialize(); if (this.config.forms.indexOf(this.action) < 0) { return; } this.element = this.$el; if (!this.config.sitekey) { this.element.innerText = "Unable to secure the form. The site key is missing."; } else { this.beforeRender(); if (this.autoRendering) { this.render(); } } }, render() { if (this.element) { let attempts = 0; const maxAttempts = 40; const self = this; const checkTurnstile = setInterval(() => { attempts++; if ((window.turnstile) || attempts >= maxAttempts) { clearInterval(checkTurnstile); if (window.turnstile) { const widgetId = window.turnstile?.render(self.element, { sitekey: self.config.sitekey, theme: self.theme || self.config.theme, size: self.size || self.config.size, action: self.action }); if (typeof widgetId === 'undefined') { self.element.innerText = "Unable to secure the form"; } else { self.widgetId = widgetId; } self.afterRender(); return; } } }, 200); } } }; }</script> <p>By providing your email address above, you certify that you are 16 years of age or older, agree to our data collection and <a title="privacy policy" href="https://www.adopt.com/en/privacy-policy">privacy policy</a> and consent to receive our commercial proposals electronically. You can unsubscribe or change your subscription choices at any time from the unsubscribe links available in all our communications or via our <a title="contact form" href="https://support.adopt.com/hc/fr/requests/new">contact form</a>.</p></div></div></div></form></div><script> function initFooterNewsletterForm() { return { focusInput: false, hasCaptchaToken: 0, hasChanges: false, errors: 0, isLoading: false, errorMessage: '', correctionMessage: '', propositions: {}, selectedIndex: -1, onInputFocus() { this.focusInput = true; if (this.$el.hasAttribute('readonly')) { this.$el.blur(); this.$el.removeAttribute('readonly'); this.$el.focus(); } }, callSuggestionWebService() { this.errorMessage = ''; this.isLoading = true; if (window.capEmailController) { window.capEmailController.abort() } window.capEmailController = new AbortController(); window.capEmailSignal = window.capEmailController.signal; const $form = document.querySelector('#footer-newsletter-validate-detail'); const formData = new FormData($form); formData.append('request', 'SEARCH'); formData.append('sInput', formData.get('email')); fetch('https://www.adopt.com/en/cap/email/suggest', { method: 'POST', body: formData, signal: AbortSignal.any([capEmailSignal, AbortSignal.timeout(5000)]), }).then(response => response.json() ).then(data=> { if (!data.errors) { this.isLoading = false; this.propositions = {}; if (data.Mail && data.Mail.length > 0) { this.propositions = data.Mail; } this.errorMessage = typeof data.sMessage === 'string' ? data.sMessage : ''; } else { this.propositions = {}; this.isLoading = false; this.hasCaptchaToken = 0; } }).catch(error => { this.isLoading = false; }); }, callValidationWebService() { this.errorMessage = ''; this.correctionMessage = ''; this.isLoading = true; const $form = document.querySelector('#footer-newsletter-validate-detail'); const formData = new FormData($form); formData.append('request', 'PROP'); formData.append('sMail', formData.get('email')); return fetch('https://www.adopt.com/en/cap/email/suggest', { method: 'POST', body: formData, signal: AbortSignal.timeout(5000), }).then(response => response.json() ).then(data=> { if (!data.errors) { this.isLoading = false; if (((data.iRet < 0) || ((data.iRet > 0) && (data.iRet != 2))) ||(data.iRet == 2 && (data.sCodeTraitement == '40001')) ) { if (data.sCodeTraitement.startsWith('3')) { this.errorMessage = typeof data.sMessage === 'string' ? data.sMessage + '<br>' + 'Please validate again to confirm.' : 'An error occurred while processing your form. Please try again later.'; this.propositions = {}; return 'needConfirmation'; } this.errorMessage = typeof data.sMessage === 'string' ? data.sMessage : 'An error occurred while processing your form. Please try again later.'; this.propositions = {}; return false; } if (data.iRet == 2 && data.Mail[0]) { if (data.sCodeTraitement.startsWith('2')) { this.correctionMessage = data.sMessage; this.propositions = data.Mail; $form.querySelector('#newsletter-subscribe').focus(); return false; } else { this.errorMessage = data.sMessage + '<br>' + 'Please validate again to confirm.'; $form.querySelector('#newsletter-subscribe').value = data.Mail[0].sMail; $form.querySelector('#newsletter-subscribe').focus(); return 'needConfirmation'; } } return true; } }).catch(error => { this.isLoading = false; return true; }); }, setAutocompleteValue(value) { this.hasChanges = true; const $input = document.querySelector('#newsletter-subscribe'); $input.value = value; $input.focus(); this.propositions = {}; this.selectedIndex = -1; }, handleKeydown(event) { if (!this.propositions.length) { return; } let propcontainer = this.$refs.propcontainer; if (event.key === 'ArrowDown' || event.key === 'Tab') { event.preventDefault(); if (this.selectedIndex < this.propositions.length - 1) { this.selectedIndex++; } } else if (event.key === 'ArrowUp') { event.preventDefault(); if (this.selectedIndex > 0) { this.selectedIndex--; } } else if (event.key === 'Enter' && this.selectedIndex >= 0) { event.preventDefault(); this.setAutocompleteValue(this.propositions[this.selectedIndex].sMail); } if (propcontainer) { propcontainer.scrollTop = propcontainer.querySelector(`[data-index="${this.selectedIndex}"]`).offsetTop - 100; } }, sendFooterNewsletterSubscribeEvent() { window.dataLayer?.push({ 'event': 'newsletterSoumission', 'category': 'Footer' }); }, submitForm() { const $form = document.querySelector('#footer-newsletter-validate-detail'); const self = this; if (!this.isCapValid && this.hasChanges) { this.callValidationWebService().then((validationResult) => { if ((validationResult == true) && (this.errors === 0)) { this.isCapValid = true; this.hasChanges = false; this.sendFooterNewsletterSubscribeEvent(); self.submit($form); } else if (validationResult == 'needConfirmation') { this.isCapValid = true; this.hasChanges = false; } else if (validationResult == false) { this.isCapValid = false; this.hasChanges = false; } }); } else if (this.isCapValid && !this.hasChanges && (this.errors === 0)) { if (this.errors === 0) { this.sendFooterNewsletterSubscribeEvent(); self.submit($form); } } }, submit($form) { const $cfTurnstileResponse = $form.querySelector('input[name="cf-turnstile-response"]'); if (!$cfTurnstileResponse) { $form.submit(); } if ($cfTurnstileResponse && $cfTurnstileResponse.value) { $form.submit(); } if (!$cfTurnstileResponse.value) { let attempts = 0; const maxAttempts = 100; const checkWidgetId = setInterval(() => { if ($cfTurnstileResponse.value || attempts >= maxAttempts) { clearInterval(checkWidgetId); if ($cfTurnstileResponse.value) { $form.submit(); } } attempts++; }, 100); } } } }</script> <div class="footer-reviews flex flex-col"><div class="flex gap-4.5"><img class="" height="66" width="66" loading="lazy" src="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/images/label-truystville.svg" alt="Logo Trustville"><div class="flex flex-col w-full"><div class="font-secondary font-bold text-3xl leading-none"><span>4.4</span> <span>/5</span></div><div class="flex gap-1 mt-2"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-alone" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" enable-background="new 0 0 15 14" xml:space="preserve" class="text-pink w-4" width="24" height="24" role="img"> <path d="M15,5.3l-4.6,3.3l1.8,5.3l-4.6-3.3L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0l1.8,5.3H15z" fill="currentColor" stroke="none"/> <title/></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="star-half" version="1.1" x="0px" y="0px" viewBox="0 0 15 14" style="enable-background:new 0 0 15 14;" xml:space="preserve" class="text-pink w-4 h-auto" width="24" height="24" role="img"> <path d="M7.6,10.6L2.9,14l1.8-5.3L0,5.3h5.7L7.5,0L7.6,10.6z" fill="currentColor"/> <g style="opacity:0.2988;"> <path d="M7.5,0l1.8,5.3H15l-4.6,3.3l1.8,5.3l-4.6-3.3L7.5,0z" fill="currentColor"/> </g> <title/></svg> </div><div class="mt-2 text-anthracite-400 font-medium text-sm leading-tightened"><span class="">12657</span> <span class="">customer reviews</span></div></div></div><div class="text-sm text-anthracite-400 mt-6">Our customers love and recommend adopt.</div><div><a href="https://trustville.fr/en/customer-reviews/pc/peruda/parfumerie/adopt_com" class="link link-simple" target="_blank" rel="noopener noreferrer">See their reviews</a></div></div></div> <div class="flex-1 flex flex-col md:items-end h-full gap-12 lg:gap-12"> <div class="footer-links w-full"><div class="pt-7.5 md:flex md:gap-5 md:justify-between xl:pt-0" > <div class="border-t border-pink-150 last-of-type:border-b md:border-none pt-5 md:w-1/3 xl:pt-0" x-data="footerComponent_681e2521186f4()" @resize.window.debounce.100="width = window.innerWidth;open = width > breakpoint" ><button class="pb-5 text-sm tracking-spaced-lg w-full font-medium uppercase flex justify-between items-center md:hidden" @click=" open ? open = false : open = true;" ><span>The Adopt company</span> <span class="rotate-90" :class="{ '-rotate-90': open, 'rotate-90': !open }"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-2.75 fat-icon md:hidden" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </span></button> <div class="pb-5 text-sm tracking-spaced-lg uppercase font-medium hidden md:block">The Adopt company</div><div x-show="open" class="footer-block-links transition-transform ease-out overflow-hidden origin-top transform pb-5"><ul> <li><a @click.prevent="clickMenuEntryEvent('https://franchise.adopt.com/en/', 'Become a franchisee')" title="Become a franchisee" href="https://franchise.adopt.com/en/">Become a franchisee</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gender-equality-index', 'Gender equality index')" title="Gender equality index" href="https://www.adopt.com/en/gender-equality-index">Gender equality index</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/privacy-policy', 'Privacy policy')" title="Privacy policy" href="https://www.adopt.com/en/privacy-policy">Privacy policy</a</li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/privacy-policy', 'Cookie policy')" title="Cookie policy" href="https://www.adopt.com/en/privacy-policy">Cookie policy</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/legal-information', 'Legal information')" title="Mentions légales" href="https://www.adopt.com/en/legal-information">Legal information</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/general-terms-and-conditions', 'Terms and conditions')" title="Terms and conditions" href="https://www.adopt.com/en/general-terms-and-conditions">Terms and conditions</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/learn-more', 'Learn more')" title="Learn more" href="https://www.adopt.com/en/learn-more">Learn more</a></li> </ul></div></div><script> function footerComponent_681e2521186f4() { return { width: window.innerWidth, breakpoint: 640, open: window.innerWidth > 640, clickMenuEntryEvent(url, label, blank = false) { window.dataLayer?.push({ 'event': 'clicMenuFooter', 'text': label }); if (blank) { window.open(url, '_blank'); } else { window.location.href = url } } } }</script> <div class="border-t border-pink-150 last-of-type:border-b md:border-none pt-5 md:w-1/3 xl:pt-0" x-data="footerComponent_681e2521187e3()" @resize.window.debounce.100="width = window.innerWidth;open = width > breakpoint" ><button class="pb-5 text-sm tracking-spaced-lg w-full font-medium uppercase flex justify-between items-center md:hidden" @click=" open ? open = false : open = true;" ><span>Practical information</span> <span class="rotate-90" :class="{ '-rotate-90': open, 'rotate-90': !open }"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-2.75 fat-icon md:hidden" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </span></button> <div class="pb-5 text-sm tracking-spaced-lg uppercase font-medium hidden md:block">Practical information</div><div x-show="open" class="footer-block-links transition-transform ease-out overflow-hidden origin-top transform pb-5"><ul> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/store-locator', 'Our stores')" title="Our stores" href="https://www.adopt.com/en/store-locator">Our stores</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/commercial-offers.html', 'Our offers')" title="Our offers" href="https://www.adopt.com/en/commercial-offers.html">Our offers</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://adopt.shipup.co/?language=en', 'Track my order')" title="Track my order" href="https://adopt.shipup.co/?language=en">Track my order</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://support.adopt.com/hc/en-gb', 'Help and contact')" title="Help and contact" href="https://support.adopt.com/hc/en-gb">Help and contact</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/delivery-returns', 'Delivery and returns')" title="Delivery and returns" href="https://www.adopt.com/en/delivery-returns">Delivery and returns</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/accessibility-statement', 'Accessibility : In Progress')" title="Accessibility : In Progress" href="https://www.adopt.com/en/accessibility-statement">Accessibility : In Progress</a></li> </ul></div></div><script> function footerComponent_681e2521187e3() { return { width: window.innerWidth, breakpoint: 640, open: window.innerWidth > 640, clickMenuEntryEvent(url, label, blank = false) { window.dataLayer?.push({ 'event': 'clicMenuFooter', 'text': label }); if (blank) { window.open(url, '_blank'); } else { window.location.href = url } } } }</script> <div class="border-t border-pink-150 last-of-type:border-b md:border-none pt-5 md:w-1/3 xl:pt-0" x-data="footerComponent_681e25211888e()" @resize.window.debounce.100="width = window.innerWidth;open = width > breakpoint" ><button class="pb-5 text-sm tracking-spaced-lg w-full font-medium uppercase flex justify-between items-center md:hidden" @click=" open ? open = false : open = true;" ><span>Our products</span> <span class="rotate-90" :class="{ '-rotate-90': open, 'rotate-90': !open }"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-icon="arrow-right" version="1.1" x="0px" y="0px" viewBox="0 0 17.1 14" enable-background="new 0 0 17.1 14" xml:space="preserve" class="w-2.75 fat-icon md:hidden" width="15" height="15" role="img"> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M0.5,7h16.1"/> <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M10.1,13.5L16.6,7l-6.5-6.5"/> <title/></svg> </span></button> <div class="pb-5 text-sm tracking-spaced-lg uppercase font-medium hidden md:block">Our products</div><div x-show="open" class="footer-block-links transition-transform ease-out overflow-hidden origin-top transform pb-5"><ul> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fragrance.html', 'Fragrance')" title="Fragrance" href="https://www.adopt.com/en/fragrance.html">Fragrance</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/body-care.html', 'Body care')" title="Body care" href="https://www.adopt.com/en/body-care.html">Body care</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/skincare.html', 'Skincare')" title="Skincare" href="https://www.adopt.com/en/skincare.html">Skincare</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/make-up.html', 'Make up')" title="Make-up" href="https://www.adopt.com/en/make-up.html">Make up</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/fashion.html', 'Fashion')" title="Fashion" href="https://www.adopt.com/en/fashion.html">Fashion</a></li> <li><a @click.prevent="clickMenuEntryEvent('https://www.adopt.com/en/gift.html', 'Gift')" title="Gift" href="https://www.adopt.com/en/gift.html">Gift</a></li> </ul></div></div><script> function footerComponent_681e25211888e() { return { width: window.innerWidth, breakpoint: 640, open: window.innerWidth > 640, clickMenuEntryEvent(url, label, blank = false) { window.dataLayer?.push({ 'event': 'clicMenuFooter', 'text': label }); if (blank) { window.open(url, '_blank'); } else { window.location.href = url } } } }</script></div></div> <div> <div x-data="initStoreSwitcherForm_681e252118b35()" @private-content-loaded.window.debounce="onPrivateContentLoaded($event.detail.data)"><div :class="!isFromMobileMenu ? 'relative inline-block text-left' : ''"><template x-if="currentStoreCountryName && currentStoreLanguageCode && currentStoreSvg"><div><button @click.prevent="storeMenuMobile();" @keydown.window.escape="storeMenuMobile('close');" type="button" :class="isFromMobileMenu ? 'py-4 text-xs-tiny gap-6' : 'justify-center w-full focus:outline-none border-none p-0 flex-row-reverse gap-2'" class="flex items-center" aria-haspopup="true" aria-expanded="true" x-html='isFromMobileMenu ? currentStoreSvg + "<span>" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span>" : "<span class=\"link link-simple \">" + currentStoreCountryName.toUpperCase() + " (" + currentStoreLanguageCode.toUpperCase() + ")</span> " + currentStoreSvg' ></button></div></template> <div class="stores-choice fixed inset-0 z-40 flex items-center justify-center overflow-auto bg-black bg-opacity-50" style="height: calc(100vh + 53px);display: none;"><div class="bg-white flex flex-col md:flex-row-reverse md:items-start md:max-w-product-container md:mx-auto relative md:h-[550px] mx-5 my-5 md:mx-20"><button type="button" class="z-50 absolute top-2 right-2 cursor-pointer hover:bg-anthracite hover:text-white rounded-full bg-white p-1.5" @click="storeMenuMobile('close');"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="white" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" d="M6 18L18 6M6 6l12 12"/></svg></button> <div class="max-w-[575px] md:w-[45%] h-[250px] md:h-full"><img class="z-41 h-full w-full object-cover" loading="lazy" src="https://adopt.twic.pics/media/adopt/modal/welcome/default/SM_PERF_BESTOF.jpg?twic=v1/output=preview" data-twic-src="image:media/adopt/modal/welcome/default/SM_PERF_BESTOF.jpg" data-twic-transform="cover-max=575" alt=""></div> <div class="flex-1 flex flex-col items-center pt-4 md:justify-center md:h-full"><div class="w-5/6 md:w-2/3 flex flex-col aspect-square items-center justify-center text-center"><div class="flex justify-center text-lg leading-tightened tracking-[1.5px] w-full uppercase z-10 font-semibold text-anthracite-600"><span x-html="translatedWordings.modalTitle[userLanguageCode] ?? translatedWordings.modalTitle['en']"></span></div><div class="flex px-3 py-4 z-10 w-full justify-center"><span x-html="translatedWordings.modalDescription[userLanguageCode] ?? translatedWordings.modalDescription['en']"></span></div><form class="items-center justify-between z-10 w-full" id="store-switcher-form" action="https://www.adopt.com/en/inter/store/switcher" @submit.prevent="submitForm()" ><div class="field w-full pb-4"><div x-data="{ open: false }" class="relative"><button x-on:click="open = true" class="flex items-center bg-white focus:bg-gray-400 text-gray-700 focus:text-gray-900 font-semibold rounded focus:outline-none focus:shadow-inner w-full form-select py-2 px-4" type="button"><span class="mr-1"><template x-if="selectedStore"><span class="flex"><span class="pt-1" x-html="svgTemplate.replace('%1', selectedStore.country_code.toLowerCase()).replace('%2', (selectedStore.country_label[userLanguageCode] ?? selectedStore.country_label['en']) + ' flag')"></span> <span class="pl-2" x-html="(selectedStore.country_label[userLanguageCode] ?? selectedStore.country_label['en']) + ' (' + selectedStore.locale_label + ')'"></span></span></template><span x-show="!selectedStore" x-html="translatedWordings.selectTitle[userLanguageCode] ?? translatedWordings.selectTitle['en']"></span></span></button> <ul x-show="open" x-on:click.away="open = false" class="bg-white text-gray-700 rounded shadow-lg absolute py-2 mt-1 max-h-60 overflow-y-auto z-50 w-full" style="min-width:15rem"><template x-for="(website, index) in websites" :key="index"><li :value="website.store_code" :data-country-code="website.country_code"><div @click.prevent="selectStore(website); open = false" class="flex cursor-pointer hover:bg-gray-200 whitespace-no-wrap py-2 px-4"><img :alt="website.country_label + ' flag'" :src="svgBaseUrl + '/' + website.country_code.toLowerCase() + '.svg'" loading="lazy" height="20" width="20"><span class="pl-2" x-html="(website.country_label[userLanguageCode] ?? website.country_label['en']) + ' (' + website.locale_label + ')'"></span></div></li></template></ul></div></div><template x-if="selectedStore"><div><input type="hidden" name="store_code" :value="selectedStore.store_code"><input type="hidden" name="country" :value="selectedStore.country_code"><input type="hidden" name="destination_url" :value="destinationUrl"></div></template><button class="btn btn-primary btn-size-sm w-full md:py-4 py-3 md:px-30 px-6 justify-center"><span x-html="translatedWordings.modalButton[userLanguageCode] ?? translatedWordings.modalButton['en']"></span></button></form></div></div></div></div></div></div><script> function initStoreSwitcherForm_681e252118b35() { return { currentCountrySvg: null, currentStoreCountryCode: 'FR', currentStoreCountryName: '', currentStoreLanguageCode: 'en', currentStoreSvg: null, destinationUrl: null, directoryData: null, geoIpCountryCode: hyva.getCookie('select-store-user-country-code'), isFromMobileMenu: 0, selectedStore: null, svgBaseUrl: 'https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/Hyva_Theme/svg/flag', svgTemplate: '<img loading="lazy" src="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/Hyva_Theme/svg/flag/%1.svg" alt="%2" height="20" width="20">', translatedWordings: {"modalTitle":{"fr":"Bienvenue sur Adopt.com","en":"Welcome on Adopt.com","es":"Bienvenido a Adopt.com"},"selectTitle":{"fr":"Pays de livraison","en":"Shipping country","es":"Pa\u00eds de entrega","nl":"Land van levering"},"modalDescription":{"fr":"Veuillez choisir votre <b>pays de livraison<\/b>","en":"Please choose your <b>delivery country<\/b>","es":"Elija su pa\u00eds de <b>entrega<\/b>"},"modalButton":{"fr":"Appliquer","en":"Apply","es":"Solicitar"}}, userLanguageCode: window.navigator.language.indexOf("-") > 0 ? window.navigator.language.substring(0, window.navigator.language.indexOf("-")) : window.navigator.language, websites: [{"country_code":"FR","country_label":{"fr":"France","es":"Francia","en":"France","nl":"Frankrijk"},"locale_code":"default","locale_label":"fr","store_code":"fr","destinationUrl":"https:\/\/www.adopt.com\/fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"FR","locale_label":"fr","store_code":"be-fr","destinationUrl":"https:\/\/www.adopt.com\/be-fr\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"NL","locale_label":"nl","store_code":"be-nl","destinationUrl":"https:\/\/www.adopt.com\/be-nl\/"},{"country_code":"BE","country_label":{"fr":"Belgique","es":"B\u00e9lgica","en":"Belgium","nl":"Belgi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CA","country_label":{"fr":"Canada","es":"Canad\u00e1","en":"Canada","nl":"Canada"},"locale_code":"default","locale_label":"fr","store_code":"ca-fr","destinationUrl":"https:\/\/www.adopt.com\/ca-fr\/"},{"country_code":"DE","country_label":{"fr":"Allemagne","es":"Alemania","en":"Germany","nl":"Duitsland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"AT","country_label":{"fr":"Autriche","es":"Austria","en":"Austria","nl":"Oostenrijk"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HR","country_label":{"fr":"Croatie","es":"Croacia","en":"Croatia","nl":"Kroati\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"DK","country_label":{"fr":"Danemark","es":"Dinamarca","en":"Denmark","nl":"Denemarken"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"ES","country_label":{"fr":"Espagne","es":"Espa\u00f1a","en":"Spain","nl":"Spanje"},"locale_code":"default","locale_label":"es","store_code":"es","destinationUrl":"https:\/\/www.adopt.com\/es\/"},{"country_code":"EE","country_label":{"fr":"Estonie","es":"Estonia","en":"Estonia","nl":"Estland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"FI","country_label":{"fr":"Finlande","es":"Finlandia","en":"Finland","nl":"Finland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"GR","country_label":{"fr":"Gr\u00e8ce","es":"Grecia","en":"Greece","nl":"Griekenland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"HU","country_label":{"fr":"Hongrie","es":"Hungr\u00eda","en":"Hungary","nl":"Hongarije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IE","country_label":{"fr":"Irlande","es":"Irlanda","en":"Ireland","nl":"Ierland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"IT","country_label":{"fr":"Italie","es":"Italia","en":"Italy","nl":"Itali\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LV","country_label":{"fr":"Lettonie","es":"Letonia","en":"Latvia","nl":"Letland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LT","country_label":{"fr":"Lituanie","es":"Lituania","en":"Lithuania","nl":"Litouwen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"LU","country_label":{"fr":"Luxembourg","es":"Luxemburgo","en":"Luxembourg","nl":"Luxemburg"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"NL","country_label":{"fr":"Pays-Bas","es":"Pa\u00edses Bajos","en":"Netherlands","nl":"Nederland"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PL","country_label":{"fr":"Pologne","es":"Polonia","en":"Poland","nl":"Polen"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"PT","country_label":{"fr":"Portugal","es":"Portugal","en":"Portugal","nl":"Portugal"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"RO","country_label":{"fr":"Roumanie","es":"Ruman\u00eda","en":"Romania","nl":"Roemeni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SK","country_label":{"fr":"Slovaquie","es":"Eslovaquia","en":"Slovakia","nl":"Slowakije"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SI","country_label":{"fr":"Slov\u00e9nie","es":"Eslovenia","en":"Slovenia","nl":"Sloveni\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"SE","country_label":{"fr":"Su\u00e8de","es":"Suecia","en":"Sweden","nl":"Zweden"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"},{"country_code":"CZ","country_label":{"fr":"Tch\u00e9quie","es":"Chequia","en":"Czechia","nl":"Tsjechi\u00eb"},"locale_code":"default","locale_label":"en","store_code":"en","destinationUrl":"https:\/\/www.adopt.com\/en\/"}], initComponent() { this.$watch('geoIpCountryCode', (value) => { this.openModaleIfNeeded(value); }); this.initDefaultValues(); if (!this.hasUserChoice() && !this.geoIpCountryCode) { this.getCountryFromHeader(); } this.openModaleIfNeeded(this.geoIpCountryCode); }, onPrivateContentLoaded(data) { if (data['directory-data']) { this.directoryData = data['directory-data']; this.initComponent() } }, openModaleIfNeeded(geoIpCountryCode) { if (!geoIpCountryCode) { return; } if (!this.hasUserChoice() && (geoIpCountryCode != this.currentStoreCountryCode)) { this.selectStoreBasedOnUser(geoIpCountryCode); if (this.selectedStore) { this.storeMenuMobile(); } } }, selectStoreBasedOnUser(geoIpCountryCode) { let defaultStoreForCountry = null; this.websites.forEach(element => { if (element.country_code.toLowerCase() == geoIpCountryCode.toLowerCase()) { if (element.locale_code.toLowerCase() == 'default') { defaultStoreForCountry = element; } if (element.locale_code.toLowerCase() == this.userLanguageCode.toLowerCase()) { this.selectedStore = element; } } }) if (!this.selectedStore) { this.selectedStore = defaultStoreForCountry; } if (this.selectedStore) { const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code); this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl; } }, selectStore(website) { this.selectedStore = website; const hrefElement = document.getElementById('alternate-url-' + this.selectedStore.store_code); this.destinationUrl = hrefElement ? hrefElement.getAttribute('href') : this.selectedStore.destinationUrl; }, initDefaultValues() { const selectedCountry = hyva.getCookie('selected_country'); if (selectedCountry) { this.currentStoreCountryCode = selectedCountry; } if (this.directoryData) { this.currentStoreCountryName = this.directoryData[this.currentStoreCountryCode].name; this.currentStoreSvg = this.svgTemplate .replace('%1', this.currentStoreCountryCode.toLowerCase()) .replace('%2', this.currentStoreCountryName + ' flag'); } }, remindUserChoice() { hyva.setCookie('select-store-user-choice', true, 365, true); }, hasUserChoice() { return hyva.getCookie('select-store-user-choice') !== null; }, getCountryFromHeader() { const client = new XMLHttpRequest(); client.open("HEAD", window.location, true); client.send(null); client.onreadystatechange = () => { if (client.readyState === client.HEADERS_RECEIVED) { const disCountry = client.getResponseHeader("X-Dis-Country"); if (disCountry) { hyva.setCookie('select-store-user-country-code', disCountry, 7, true); this.geoIpCountryCode = disCountry; } client.abort(); } }; }, submitForm() { const $form = document.querySelector('#store-switcher-form'); window.dataLayer?.push({ 'event': 'selectionPaysLivraison', 'pays': this.selectedStore.country_label['en'], 'langue': this.selectedStore.store_code.toUpperCase(), }); this.remindUserChoice(); $form.submit(); }, storeMenuMobile($close) { const storeSelectorModale = document.querySelector('.stores-choice'); if (storeSelectorModale) { if ($close) { this.remindUserChoice(); storeSelectorModale.style.display = 'none'; } else { storeSelectorModale.style.display = 'flex'; } } } } }</script></div></div></div> <div class="footer-seo bg-[#FFE0E6] px-7.5 py-12 text-sm"> Perfume creator for 40 years, adopt develops a range of quality fragrances, unique, addictive, accessible to all from 11.95€, exclusively created and manufactured in France. More than 150 joyful eaux de parfums, feminine, masculine or mixed, fruity, floral, woody or chypre, which respond to your mood, your desires, your style, and to all the moments of the day. With adopt, a whole universe of fragrances with noble and precious ingredients opens up to you! To extend the experience, adopt offers vegan skincare rituals, body care, face care, and hair care, with formulas bursting with natural ingredients. And why not opt for a scented box, combining perfumes and coordinated care? Gift ideas to please yourself or others, best sellers, iconic fragrances, new products, visit the adopt universe and join the French Fragrance Revolution!</div></div><script> 'use strict'; function initFooterSocialComponent() { return { clickSocialLinkEvent(url, label) { window.dataLayer?.push({ 'event': 'clicSociauxRéseaux', 'text': label }); window.open(url, '_blank').focus(); }, } }</script> </div></footer> <script type="text/x-magento-init"> { "body": { "awRbsliderAjax": {"url":"https:\/\/www.adopt.com\/en\/aw_rbslider\/statistic\/view"} } }</script> <script> window.turnstileConfig = {"config":{"enabled":true,"sitekey":"0x4AAAAAAAiLrmrQvhOQS6Th","theme":"light","size":"normal","forms":["newsletter-subscribe","newsletter-subscribe-widget","contact","login","login-ajax"]}};</script> <script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" async=""> window.turnstileConfig = {"config":{"enabled":true,"sitekey":"0x4AAAAAAAiLrmrQvhOQS6Th","theme":"light","size":"normal","forms":["newsletter-subscribe","newsletter-subscribe-widget","contact","login","login-ajax"]}};</script> <script> const storeApi = {}; storeApi.getProducts = (productIdentifier) => { return fetch('https://www.adopt.com/en/bambuser/products/load' + '/skus/' + productIdentifier, { method: 'GET', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } }).then( res => res.json() ).then(data => { return data; }); }; storeApi.addToCart = (data) => { let formData = new FormData(); let url; formData.append('uenc', hyva.getUenc()); formData.append('form_key', hyva.getFormKey()); formData.append('qty', 1); if (data.is_configurable) { url = 'https://www.adopt.com/en/checkout/cart/add' + '/uenc/' + hyva.getUenc() + '/product/' + data.parent_id formData.append('product', data.parent_id); formData.append('item', data.parent_id); formData.append('super_attribute[' + data.attribute_id + ']', data.option_id); } else { url = 'https://www.adopt.com/en/checkout/cart/add' + '/uenc/' + hyva.getUenc() + '/product/' + data.product_id formData.append('product', data.product_id); } formData = new URLSearchParams(formData); return fetch(url, { method: 'POST', body: formData, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' } }).then(res => { window.dispatchEvent(new CustomEvent('product-addtocart-success')); }).catch(err => { return Promise.resolve({ success: false, reason: 'out-of-stock', message: "Product that you are trying to add is not available." }); }).finally(() => { try { let messages = hyva.getCookie('mage-messages'); messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; setTimeout(() => { messages.forEach(message => { setMessage(message); }); }, 1000); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['cart', 'cart-tagging', 'messages'] } } ) ); } catch (error) { console.warn('Error parsing Cookie Messages:', error); } }); }; storeApi.updateItemInCart = (data) => { let formData = new FormData(); formData.append('uenc', hyva.getUenc()); formData.append('form_key', hyva.getFormKey()); formData = new URLSearchParams(formData); return fetch('https://www.adopt.com/en/bambuser/cart/update' + '/uenc/' + hyva.getUenc() + '/product/' + data.sku + '/qty/' + data.quantity, { method: 'POST', body: formData, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' } }).catch(err => { return Promise.resolve({ success: false, reason: 'error', message: "" }); }).finally(() => { try { let messages = hyva.getCookie('mage-messages'); messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; setTimeout(() => { messages.forEach(message => { setMessage(message); }); }, 1000); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['cart', 'cart-tagging', 'messages'] } } ) ); } catch (error) { console.warn('Error parsing Cookie Messages:', error); } }); }; storeApi.removeItemFromCart = (data) => { let formData = new FormData(); formData.append('uenc', hyva.getUenc()); formData.append('form_key', hyva.getFormKey()); formData = new URLSearchParams(formData); return fetch('https://www.adopt.com/en/bambuser/cart/delete' + '/uenc/' + hyva.getUenc() + '/product/' + data.sku, { method: 'POST', body: formData, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' } }).catch(err => { return Promise.resolve({ success: false, reason: 'erro', message: "" }); }).finally(() => { try { let messages = hyva.getCookie('mage-messages'); messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; setTimeout(() => { messages.forEach(message => { setMessage(message); }); }, 1000); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['cart', 'cart-tagging', 'messages'] } } ) ); } catch (error) { console.warn('Error parsing Cookie Messages:', error); } }); }; storeApi.getCartState = () => { return new Promise((resolve) => { const browserStorage = hyva.getBrowserStorage(); const sectionData = JSON.parse(browserStorage.getItem('mage-cache-storage')); resolve(sectionData?.cart?.summary_count); }); }; window.onBambuserLiveShoppingReady = (player) => { player.configure({ currency: 'EUR', locale: 'fr-FR', buttons: { dismiss: player.BUTTON.MINIMIZE, } }); player.on(player.EVENT.PROVIDE_PRODUCT_DATA, (event) => { if (!event.context || event.context !== 'pre-load') { return; } let productArray = []; let skuString = ''; event.products.forEach(({ ref: sku, url, id: bambuserId }) => { productArray[sku] = bambuserId; skuString += sku + ','; }); storeApi.getProducts(skuString).then((data) => { Object.entries(data).forEach((entry) => { const [sku, product] = entry; player.updateProduct(productArray[sku], (productFactory) => productFactory .inheritFromPlaceholder() .product((productDetailFactory) => productDetailFactory .name(product.title) .description(product.description) .sku(product.id) .brandName(product.vendor) .variations((variationFactory) => product.variants?.map((variation) => variationFactory() .attributes( (attributeFactory) => attributeFactory .colorName(variation.sizes.name) ) .imageUrls([ ...variation.images ]) .name(variation.name) .sku(variation.variationId) .sizes((sizeFactory) => [ sizeFactory() .name(variation.sizes.name) .sku(variation.variationId) .inStock(variation.sizes.quantityInStock > 0) .price(priceFactory => priceFactory .currency(variation.sizes.currency) .original(variation.sizes.original) .current(variation.sizes.current) ) ]) ) ) ) ); }) }); }); player.on(player.EVENT.ADD_TO_CART, (addedItem, callback) => { const data = JSON.parse(addedItem.sku); storeApi.addToCart(data) .then(() => callback(true)) .catch(error => { callback(false); }); }); player.on(player.EVENT.UPDATE_ITEM_IN_CART, (updatedItem, callback) => { if (updatedItem.quantity > 0) { storeApi.updateItemInCart({ sku: updatedItem.sku, quantity: updatedItem.quantity, }) .then(() => { callback(true); }) .catch(function(error) { callback(false); }); } if (updatedItem.quantity === 0) { storeApi.removeItemFromCart({sku: updatedItem.sku}) .then(() => { callback(true); }) .catch(() => { callback(false); }); } }) player.on(player.EVENT.CHECKOUT, () => { player.showCheckout(window.location.origin + "/checkout/cart"); }); player.on(player.EVENT.SYNC_CART_STATE, () => { storeApi.getCartState().then((response) => { if (response == 0) { player.updateCart({ items: [] }); } }); }); };</script> <script> (() => { function src_default(Alpine) { Alpine.directive("intersect", (el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { let evaluate = evaluateLater(expression); let options = { rootMargin: getRootMargin(modifiers), threshold: getThreshhold(modifiers) }; let observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting === (value === "leave")) return; evaluate(); modifiers.includes("once") && observer.disconnect(); }); }, options); observer.observe(el); cleanup(() => { observer.disconnect(); }); }); } function getThreshhold(modifiers) { if (modifiers.includes("full")) return 0.99; if (modifiers.includes("half")) return 0.5; if (!modifiers.includes("threshold")) return 0; let threshold = modifiers[modifiers.indexOf("threshold") + 1]; if (threshold === "100") return 1; if (threshold === "0") return 0; return Number(`.${threshold}`); } function getLengthValue(rawValue) { let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); return match ? match[1] + (match[2] || "px") : void 0; } function getRootMargin(modifiers) { const key = "margin"; const fallback = "0px 0px 0px 0px"; const index = modifiers.indexOf(key); if (index === -1) return fallback; let values = []; for (let i = 1; i < 5; i++) { values.push(getLengthValue(modifiers[index + i] || "")); } values = values.filter((v) => v !== void 0); return values.length ? values.join(" ").trim() : fallback; } document.addEventListener("alpine:init", () => { window.Alpine.plugin(src_default); }); })();</script> <script> for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","#notice-cookie-block":"intersect"})) { document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); }</script> <script> (function () { "use strict"; const hasAlpine = new Promise(resolve => { window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); }); const hasInteract = new Promise(resolve => { (events => { const onInteract = () => { resolve(); events.forEach(type => window.removeEventListener(type, onInteract)); } events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) }); const onIntersect = (el) => { return new Promise(resolve => { const observer = new IntersectionObserver(entries => { for (const entry of entries) { if (entry.isIntersecting) { observer.disconnect() resolve(); } } }, {}); observer.observe(el); }); } function runComponent(el) { hasAlpine.then(() => { el.removeAttribute('x-ignore'); queueMicrotask(() => Alpine.initTree(el)); }); } function initDeferredComponents() { document.querySelectorAll('[x-data][x-defer]').forEach(el => { el.setAttribute('x-ignore', ''); const deferUntil = (el.getAttribute('x-defer') || '').trim(); switch (deferUntil) { case 'interact': hasInteract.then(() => runComponent(el)); break; case 'intersect': onIntersect(el).then(() => runComponent(el)) break; case 'idle': window.requestIdleCallback ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) : setTimeout(() => runComponent(el), 4000); break; case 'eager': runComponent(el); break; default: if (deferUntil.startsWith('event:') && deferUntil.length > 6) { window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); } } }); } window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); })()</script> <script type="module" src="https://www.adopt.com/static/version1742480106/frontend/Adopt/hyva/en_GB/Hyva_Theme/js/alpine3.min.js" defer crossorigin ></script> <script> 'use strict'; function dispatchMessages(messages, hideAfter) { const messagesEvent = new CustomEvent("messages-loaded", { detail: { messages: messages, hideAfter: hideAfter } }); window.dispatchEvent(messagesEvent); } if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); } (function( hyva, undefined ) { hyva.initFormKey = () => { const inputSelector = 'input[name="form_key"]', formKey = hyva.getFormKey(); Array.from(document.querySelectorAll(inputSelector)).map(function (input) { input.value = formKey }); } hyva.initMessages = () => { try { const messages = hyva.getCookie('mage-messages'); window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; dispatchMessages(window.mageMessages); const skipSetDomain = true; hyva.setCookie('mage-messages','', -1, skipSetDomain); } catch (error) { console.warn('Error parsing Cookie Messages:', error); } } window.addEventListener('DOMContentLoaded', hyva.initFormKey); hyva.alpineInitialized(hyva.initMessages) }( window.hyva = window.hyva || {} ));</script> <script> 'use strict'; { const private_content_key = 'mage-cache-storage'; const private_content_expire_key = 'mage-cache-timeout'; const private_content_version_key = 'private_content_version'; const section_data_ids_key = 'section_data_ids'; const mage_cache_session_id_key = 'mage-cache-sessid'; const last_visited_store_key = 'last_visited_store'; const ttl = 3600; if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); } function loadSectionData (sections = []) { if (typeof sections == 'object' && typeof sections.target != 'undefined') { sections = []; } const browserStorage = hyva.getBrowserStorage(); if (!browserStorage) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Please enable LocalStorage in your browser." }] ); return; } try { let isInvalid = false; if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { isInvalid = true; } hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); if (!hyva.getCookie(mage_cache_session_id_key)) { isInvalid = true; browserStorage.removeItem(private_content_key); const skipSetDomain = true; const days = false; hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) } const cookieVersion = hyva.getCookie(private_content_version_key); const storageVersion = browserStorage.getItem(private_content_version_key); if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { isInvalid = true; } const privateContentExpires = browserStorage.getItem(private_content_expire_key); if (privateContentExpires && new Date(privateContentExpires) < new Date()) { browserStorage.removeItem(private_content_key); } if (isInvalid && cookieVersion) { fetchPrivateContent(sections); } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); if ( privateContent && privateContentExpires && privateContent.cart && privateContent.customer ) { dispatchPrivateContent(privateContent); } else { fetchPrivateContent(sections); } } else { if (document.getElementById('default-section-data')) { const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); dispatchPrivateContent(privateContent); } else { dispatchPrivateContent({}); } } } catch (error) { console.warn('Error retrieving Private Content:', error); } } hyva.alpineInitialized(loadSectionData) window.addEventListener('reload-customer-section-data', (event) => { loadSectionData(event?.detail?.sections || []) }); function dispatchPrivateContent(data) { const privateContentEvent = new CustomEvent("private-content-loaded", { detail: { data: data } }); window.dispatchEvent(privateContentEvent); } function fetchPrivateContent(sections) { fetch(`${BASE_URL}customer/section/load?sections=${encodeURIComponent(sections.join(','))}`, { method: 'GET', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then( data => { if (data) { try { const browserStorage = hyva.getBrowserStorage(); const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { delete oldSectionData['checkout-data']; } const newSectionData = Object.assign(oldSectionData, data); dispatchPrivateContent(newSectionData); if (newSectionData.messages && newSectionData.messages.messages ) { newSectionData.messages.messages = []; } browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); browserStorage.setItem(private_content_expire_key, expiresAt); const newCookieVersion = hyva.getCookie(private_content_version_key); browserStorage.setItem(private_content_version_key, newCookieVersion); hyva.setCookie( section_data_ids_key, JSON.stringify( Object.keys(data).reduce((sectionDataIds, sectionKey) => { sectionDataIds[sectionKey] = data[sectionKey]['data_id']; return sectionDataIds; }, {}) ), false, true ); } catch (error) { console.warn("Couldn't store privateContent", error); } } } ); } }</script><script> (() => { document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); })()</script> <script> (events => { const dispatchUserInteractionEvent = () => { events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) window.dispatchEvent(new Event('init-external-scripts')) }; events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])</script> <script async defer src="https://adopt.twic.pics/?v1"></script> <script> function initWishlist() { return { isInWishlist(productId) { productId = productId.toString(); let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage'); browserStorage = JSON.parse(browserStorage); if (browserStorage) { if ((typeof browserStorage.customer !== 'undefined') && typeof browserStorage.customer.fullname !== 'undefined'){ let wishlistItemIds = []; let wishlistItems = browserStorage.wishlist.items; wishlistItems.forEach(function(item){ wishlistItemIds.push(item.product_id); }); return wishlistItemIds.includes(productId); } } let cookieValue = hyva.getCookie('guest_wishlist'); if (cookieValue !== null) { cookieValue = decodeURIComponent(cookieValue); let cookieWishlistIds = cookieValue.split(','); if (cookieWishlistIds) { return cookieWishlistIds.includes(productId); } } return false }, toggleWishlist(productId, productData) { if (!this.isInWishlist(productId)) { this.addToWishlist(productId, productData); } else { this.removeFromWishlist(productId); } }, addToWishlist(productId, productData) { const self = this; let wishlistIcon = document.querySelectorAll('[data-wishlist="' + productId + '"]'); wishlistIcon.forEach((arrayElement, index) => { wishlistIcon[index].classList.add('in-favorite'); wishlistIcon[index].querySelector('svg').classList.add('in-favorite'); }) const formKey = hyva.getFormKey(); fetch(BASE_URL + "wishlist/index/add?ajax=1", { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": "form_key="+ formKey + "&product="+productId+"&uenc="+btoa(window.location.href), "method": "POST", "mode": "cors", "credentials": "include" }).then(function (response) { if (response.ok) { return response.json(); } else if (response.redirected) { window.location.href = response.url; } else { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Could not add item to wishlist." }], 5000 ); } }).then(function (response) { if (!response) { return } self.sendAddToWishlistEvent(productData); let cookieValue = hyva.getCookie('guest_wishlist'); if (cookieValue !== null) { if (typeof response.success !== "undefined") { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: (response.success) ? "success" : "error", text: (response.success) ? "The product has been added to your Wish List." : '' }], 5000 ); } } const reloadCustomerDataEvent = new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['wishlist', 'messages'] } } ); window.dispatchEvent(reloadCustomerDataEvent); }).catch(function (error) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); }, getItemId(productId) { productId = productId.toString(); let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage'); browserStorage = JSON.parse(browserStorage); if (browserStorage) { let wishlistItems = browserStorage.wishlist.items; let itemToDelete; wishlistItems.forEach(function (item) { if (item.product_id == productId) { itemToDelete = item.item_id; } }); return itemToDelete; } }, sendAddToWishlistEvent(productData) { window.dataLayer?.push({ 'event': 'productAddWishlist', 'productAddWishlist': [productData] }) }, removeFromWishlist(productId) { let wishlistIcon = document.querySelectorAll('[data-wishlist="' + productId + '"]'); wishlistIcon.forEach((arrayElement, index) => { wishlistIcon[index].classList.remove('in-favorite'); wishlistIcon[index].querySelector('svg').classList.remove('in-favorite'); }) let itemId = this.getItemId(productId); const formKey = hyva.getFormKey(); fetch(BASE_URL + "wishlist/index/remove?ajax=1", { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": "form_key=" + formKey + "&productId=" + productId + "&uenc=" + btoa(window.location.href) + '&item=' + itemId, "method": "POST", "mode": "cors", "credentials": "include" }).then(function (response) { if (response.ok) { return response.json(); } else if (response.redirected) { window.location.href = response.url; } }).then(function (response) { if (!response) { return } const reloadCustomerDataEvent = new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['wishlist', 'messages'] } } ); window.dispatchEvent(reloadCustomerDataEvent); }).catch(function (error) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); } } }</script> <script> function initConfigurableOptions(productId, optionConfig) { function findPathParam(key) { const baseUrl = (BASE_URL.substr(0, 2) === '//' ? 'http:' : '') + BASE_URL; const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); for (let i = 0; i < pathParts.length; i += 2) { if (pathParts[i] === key && pathParts.length > i) { return pathParts[i + 1]; } } } return { optionConfig, productId, itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), allowedAttributeOptions: [], selectedValues: [], attribueOptionsLength: 0, attributeMapping: {"contenance":{" ":"","180 g":"6756","200g":"6715","250ml":"6713","32 g":"6683","400ml":"6714","8 ml":"6755","8ml":"6678","9 g":"6761","5 ml":"6525","10 ml":"349","15 ml":"914","30 ml":"350","40 ml":"5382","50 ml":"913","60 ml":"5383","75 ml":"912","100 ml":"351","125 ml":"707","150 ml":"911","200 ml":"706","250 ml":"466","290 ml":"705","400 ml":"5384","9 ml":"6568","4,5 ml":"6569","12 ml":"6570","26,5 ml":"6571","5,5 ml":"6572","16 ml":"6595","8 g":"6614","3,5 g":"6746"}}, isProductPage: document.body.classList.contains('catalog-product-view'), isCategoryPage: document.body.classList.contains('catalog-category-view'), isCmsPage: document.body.classList.contains('cms-page-view'), init() { this.findAllowedAttributeOptions(); this.preselectQuerystringItems(); this.preselectLocationHashItems(); this.$nextTick(() => { if (typeof this.optionConfig.defaultValues === 'object') { for (const [optionId, value] of Object.entries(this.optionConfig.defaultValues)) { this.changeOption(optionId, value + ''); } } }); }, findSimpleIndex() { this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues); }, calculateSimpleIndexForPartialSelection(selectedValues) { if (selectedValues.length === 0) return 0; let productIndexIds = Object.keys(this.optionConfig.index); Object.keys(this.optionConfig.attributes).forEach((attribute) => { const productsWithAttributeMatch = selectedValues[attribute] ? productIndexIds.filter((productIndex) => { return this.optionConfig.index[productIndex][attribute] === this.selectedValues[attribute] }) : []; productIndexIds = productsWithAttributeMatch.length ? productsWithAttributeMatch : productIndexIds }) return productIndexIds[0]; }, calculateSimpleIndexForFullSelection(selectedValues) { const productIndexes = this.optionConfig.index; return Object.keys(productIndexes).find(productIndex => { const productCandidateOptions = productIndexes[productIndex]; for (const productOption in productCandidateOptions) { if ( !selectedValues[productOption] || selectedValues[productOption] !== productCandidateOptions[productOption] ) { return false; } } return productIndex; }); }, productIndex: 0, findAllowedAttributeOptions() { this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues); this.attribueOptionsLength = this.allowedAttributeOptions[Object.keys(this.allowedAttributeOptions)[0]]?.length }, calculateAllowedAttributeOptions(selectedValues) { const allAttributes = this.optionConfig.attributes; const allAttributesSorted = Object.values(allAttributes).sort((a, b) => { return a.position - b.position }); const productIndexes = this.optionConfig.index; let previousOption = false; let availableIndexes = Object.keys(productIndexes); const newAllowedAttributeOptions = []; allAttributesSorted.forEach(attribute => { if (previousOption && selectedValues[previousOption]) { availableIndexes = availableIndexes.filter(availableIndex => { return productIndexes[availableIndex][previousOption] === selectedValues[previousOption] }) } newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { return !!option.products.find(product => { return availableIndexes.includes(product); }) }); previousOption = attribute.id; }); return newAllowedAttributeOptions; }, findAttributeByOptionId(optionId) { for (const attributeId in this.optionConfig.attributes) { const attributeOptions = this.optionConfig.attributes[attributeId].options || []; if (attributeOptions.find(option => option.id === optionId)) { return attributeId; } } }, getAllowedAttributeOptions(attributeId) { return this.allowedAttributeOptions[attributeId] || [] }, getProductIdsForOption(option) { const attributeId = this.findAttributeByOptionId(option.id); const allOptions = this.optionConfig.attributes[attributeId]; const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id); return opt && opt.products ? opt.products : []; }, findProductIdsForPartialSelection(optionSelection) { const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => { const newCandidates = this.getProductIdsForOption({id: optionId}); return candidates === null ? newCandidates : candidates.filter(productId => newCandidates.includes(productId)); }, null); return candidateProducts || []; }, findCheapestProductForPartialSelection(optionSelection) { const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); return candidateProducts.reduce((cheapest, simpleIdx) => { if (!this.optionConfig.optionPrices[cheapest]) return simpleIdx; const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount; return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount ? simpleIdx : cheapest; }, 0) }, findProductIdToUseForOptionPrice(option) { const attributeId = this.findAttributeByOptionId(option.id); const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id}); const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection); return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); }, getAttributeOptionLabel(option) { const optionProduct = this.findProductIdToUseForOptionPrice(option); if ((!optionProduct) || (optionProduct === this.productIndex)) { return option.label; } const currentPrice = this.getOptionPriceAdjustmentBasePrice(); if (this.optionConfig.optionPrices[optionProduct]) { const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount; if (optionPrice !== currentPrice) { return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true); } } return option.label; }, getOptionPriceAdjustmentBasePrice() { if (this.optionConfig.optionPrices[this.productIndex]) { return this.optionConfig.optionPrices[this.productIndex].finalPrice.amount } const cheapestForSelection = this.findCheapestProductForPartialSelection(this.selectedValues); return this.optionConfig.optionPrices[cheapestForSelection] ? this.optionConfig.optionPrices[cheapestForSelection].finalPrice.amount : this.optionConfig.prices.finalPrice.amount; }, changeDisabledOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { if (value === '') { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); this.updateGallery(); if (updateUrl) { this.updateCurrentUrl(value, optionLabel); } this.$nextTick(() => { window.dispatchEvent( new CustomEvent( 'configurable-selection-changed', { detail: { productId: this.productId, sku: this.optionConfig.sku[this.productId], optionId: this.optionId, value: this.value, productIndex: this.productIndex, selectedValues: this.selectedValues, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, } } ) ); window.dispatchEvent(new CustomEvent('stock-alert-modal-open-' + parentId, {detail: {productId: this.productIndex}})); }); }, changeOption(optionId, value, skipUpdateGallery, attributeCode, optionLabel, updateUrl = true, parentId = 0) { if (value === '') { this.selectedValues = this.selectedValues.reduce((newSelection, val, opt) => { if (opt !== optionId) { newSelection[opt] = val; } return newSelection; }, []); } else { this.selectedValues[optionId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateShortDescription(); this.updateGallery(); if (updateUrl) { this.updateCurrentUrl(value, optionLabel); } this.$nextTick(() => { window.dispatchEvent( new CustomEvent( 'configurable-selection-changed', { detail: { productId: this.productId, sku: this.optionConfig.sku[Number(this.productIndex)], optionId: this.optionId, value: this.value, productIndex: this.productIndex, selectedValues: this.selectedValues, flagsData: this.optionConfig.flags_data ? this.optionConfig.flags_data[this.productIndex] : false, shortDescription: this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false, } } ) ); window.dispatchEvent(new CustomEvent('stock-alert-modal-close-' + parentId, {productId: this.productIndex})); }); }, calculateIsMinimalPrice() { return ( this.selectedValues.filter(value => !!value).length < Object.keys(this.optionConfig.attributes).length ); }, updateCurrentUrl(value, optionLabel) { let newParamValue = false; let currentAttributeCode = false; Object.values(this.optionConfig.attributes).map(attribute => { attribute.options.map(option => { if (option.id === value) { currentAttributeCode = attribute.code; newParamValue = option.label; } }); }); if (newParamValue && currentAttributeCode && typeof optionLabel !== 'undefined' && !optionLabel.includes('30 ')) { const url = new URL(window.location.href); const params = new URLSearchParams(url.search); params.set(currentAttributeCode, newParamValue); url.search = params.toString(); window.history.replaceState({}, '', url.toString()); } if (typeof optionLabel !== 'undefined' && optionLabel.includes('30 ')) { const url = new URL(window.location.href); const params = new URLSearchParams(url.search); params.delete(currentAttributeCode); url.search = params.toString(); window.history.replaceState({}, '', url.toString()); } }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; this.$nextTick(() => { window.dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, {isMinimalPrice: this.calculateIsMinimalPrice()} ) } ) ); }) }, updateShortDescription() { const value = this.optionConfig.short_description ? this.optionConfig.short_description[this.productIndex] : false; if (value) { this.$nextTick(() => { window.dispatchEvent( new CustomEvent( "update-short-description-" + this.productId, { detail: Object.assign( value ) } ) ); }); } }, updateGallery() { if (this.productIndex) { const images = this.optionConfig.images ? this.optionConfig.images[this.productIndex] : false; if (images) { window.dispatchEvent(new CustomEvent( "update-gallery", {detail: this.sortImagesByPosition(images)} )); return } } window.dispatchEvent(new Event("reset-gallery")); }, sortImagesByPosition(images) { return images.sort((x, y) => { return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) }); }, preselectQuerystringItems() { const urlQueryParams = new URLSearchParams(window.location.search.replace('?', '')); Object.values(this.optionConfig.attributes).map(attribute => { Object.values(attribute.options).map(option => { if (option.label === urlQueryParams.get(attribute.code)) { if (option.disabled === true) { this.changeDisabledOption(attribute.id, option.id, false, attribute.code, option.label, true, this.productId); } else { this.changeOption(attribute.id, option.id); } } }); }); }, preselectLocationHashItems() { const urlHashParams = new URLSearchParams(window.location.hash.replace('#', '')); Object.values(this.optionConfig.attributes).map(attribute => { urlHashParams.get(attribute.id) && this.changeOption(attribute.id, urlHashParams.get(attribute.id)); }); } } }</script> <script> function initSwatchOptions(swatchConfig) { return { swatchConfig, getAttributeSwatchData(attributeId) { const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]); swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); return swatchConfig; }, getAllAttributeOptions(attributeId) { return ( this.optionConfig.attributes[attributeId] && this.optionConfig.attributes[attributeId].options ) || [] }, optionIsActive(attributeId, optionId) { return !!this.getAllowedAttributeOptions(attributeId).find( option => option.id === optionId ) }, optionIsEnabled(attributeId, optionId) { for (const productId in this.optionConfig.index) { if (this.optionConfig.index[productId][attributeId] === optionId) { return true; } } return false; }, mapSwatchTypeNumberToTypeCode(typeNumber) { switch ("" + typeNumber) { case "1": return "color" case "2": return "image" case "3": return "empty" case "0": default: return "text" } }, getTypeOfFirstOption(attributeId) { for (const optionId in this.swatchConfig[attributeId]) { const option = this.swatchConfig[attributeId][optionId]; if (typeof option.type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(option.type); } } }, getVisualSwatchType(attributeId, targetOptionId) { const config = this.swatchConfig[attributeId]; if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); } return this.getTypeOfFirstOption(attributeId); }, getSwatchType(attributeId, optionId) { if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); } const type = this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details && this.swatchConfig[attributeId].details.swatch_input_type || "empty"; return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; }, isTextSwatch(attributeId, optionId) { return this.getSwatchType(attributeId, optionId) === 'text'; }, isVisualSwatch(attributeId, optionId) { const type = this.getSwatchType(attributeId, optionId); return ['image', 'color'].includes(type); }, getSwatchBackgroundStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value; } else if (type === "image") { return "background: #ffffff url('" + config.value + "') no-repeat center; background-size: cover;"; } else { return ''; } }, getSwatchText(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); }, getOptionLabelFromOptionConfig(attributeId, optionId) { const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId); return option && option[0] && option[0].label ||''; }, getSwatchConfig(attributeId, optionId) { return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId] ? this.swatchConfig[attributeId][optionId] : false; }, activeTooltipItem: false, tooltipPositionElement: false, isTooltipVisible() { return this.activeTooltipItem && this.getSwatchConfig( this.activeTooltipItem.attribute, this.activeTooltipItem.item ); }, getTooltipImageStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value + '; width: 104px; height: 62px;'; } else if (type === "image") { return "background: #ffffff url('" + config.thumb + "') center center no-repeat; width: 104px; height: 62px;"; } else { return 'display:none'; } }, getTooltipPosition() { return this.tooltipPositionElement ? `top: ${this.tooltipPositionElement.offsetTop}px;` + `left: ${ this.tooltipPositionElement.offsetLeft - ( this.tooltipPositionElement.closest('.snap') && this.tooltipPositionElement.closest('.snap').scrollLeft || 0 ) }px;` : '' }, getTooltipLabel() { return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label }, focusedLabel: false, focusLabel(optionId) { this.focusedLabel = optionId; }, blurLabel() { this.focusedLabel = false; }, showSwatches: false, initShowSwatchesIntersect() { if ('IntersectionObserver' in window && !window.scrollY) { const io = new IntersectionObserver( entries => { entries.map(entry => { if (entry.isIntersecting) { this.showSwatches = true; io.unobserve(this.$el); } }) } ); io.observe(this.$el); } else { this.showSwatches = true } } } }</script> <!-- Account type: 'Google Tag Manager' is not supported --> <script> 'use strict'; (function () { const modals = []; const excludedFromFocusTrapping = new Set(); function loadInertPolyfill(callback) { if (window.hyva.modal.disableInertPolyfill) { callback && callback(); } else { const polyfill = document.createElement('script'); polyfill.src = 'https\u003A\u002F\u002Fwww.adopt.com\u002Fstatic\u002Fversion1742480106\u002Ffrontend\u002FAdopt\u002Fhyva\u002Fen_GB\u002FHyva_Theme\u002Fjs\u002Fwicg\u002Dinert\u002D3.1.1\u002Finert.min.js'; callback && polyfill.addEventListener('load', callback); const firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(polyfill, firstScriptTag); } } let isInertPolyfillLoaded = 0; function setSiblingsInert(dialogElement, toState) { if (isInertPolyfillLoaded === 0) { isInertPolyfillLoaded = 1; loadInertPolyfill(() => { isInertPolyfillLoaded = 2; setSiblingsInert(dialogElement, toState) }) return; } if (isInertPolyfillLoaded === 1) { return; } let el = dialogElement; while (el && (el = el.parentElement)) { if (el === document.body || el.parentElement === null) continue; Array.from(el.parentElement.children).forEach(sibling => { if (sibling !== el) { sibling.inert = toState; } }) } (function setChildrenInert(el, toState) { if (el) { el.inert = toState; Array.from(el.children).forEach(child => setChildrenInert(child, toState)); } })(findParentWithOverlaySpread(dialogElement), ! toState) excludedFromFocusTrapping.forEach(selector => { Array.from(document.querySelectorAll(selector)).map(el => el.inert = false); }) } function findParentWithOverlaySpread(el) { while (el && (el = el.parentElement)) { if (el === document.body || el.parentElement === null) continue; if (el.hasAttribute('x-bind') && el.getAttribute('x-bind').indexOf('overlay(') !== -1) { return el; } } } function freeFocusFromModalTrap(modal) { const dialogElement = modal.viewModel.$refs[modal.name]; isOverlayDisabled(dialogElement) || modal.viewModel.$nextTick(() => setSiblingsInert(dialogElement, false)); } function trapFocusInNextModalWithOverlay() { for (let idx = modals.length -1; idx >= 0; idx--) { const nextOnStack = modals[idx]; const nextDialogElement = nextOnStack.viewModel.$refs[nextOnStack.name]; if (! isOverlayDisabled(nextDialogElement)) { nextOnStack.viewModel.$nextTick(() => setSiblingsInert(nextDialogElement, true)); break; } } } function focusables(dialogElement) { const selector = 'a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])'; return Array.from(dialogElement.querySelectorAll(selector)) .filter(el => !el.hasAttribute('disabled')); } function firstVisible(elements) { const a = Array.from(elements); for (let i = 0; i < a.length; i++) { if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i]; } return null; } function isInViewport(element) { const rect = element && element.getBoundingClientRect(); return rect && rect.top >= 0 && rect.left >= 0 && rect.right <= window.innerWidth && rect.bottom <= window.innerHeight; } function setFocusAfterTransition(dialogElement, duration) { window.setTimeout(() => { const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) || focusables(dialogElement)[0] || null; focusElement && isInViewport(focusElement) && focusElement.focus(); }, duration + 1); } function ucFirst(s) { return s.substr(0, 1).toUpperCase() + s.substr(1); } function isOpenProp(dialogName) { return 'is' + ucFirst(dialogName) + 'Open'; } function determineTrigger($refs, dialog, trigger) { if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target && dialog.target.focus) { return dialog.target; } if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target && trigger.target.focus) { return trigger.target; } if (typeof trigger === 'string' && $refs[trigger]) { return $refs[trigger]; } else { return null; } } function isOverlayDisabled(dialog) { return dialog && dialog.hasAttribute('x-no-overlay') } function areRemainingModalsWithoutOverlay(modals) { const overflowDisabled = modals.map(modal => modal.viewModel.$refs[modal.name]).filter(isOverlayDisabled); return overflowDisabled.length === modals.length; } window.hyva.modal = function(options) { const config = Object.assign({ dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300', transitionEnterStart: 'opacity-0', transitionEnterEnd: 'opacity-100', transitionLeave: 'transition ease-in duration-300', transitionLeaveStart: 'opacity-100', transitionLeaveEnd: 'opacity-0', }, options); let lastHide = 0; return { show(dialog, trigger) { const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger); const name = typeof dialog === 'string' ? dialog : config.dialog; const dialogElement = this.$refs[name]; const useOverlay = ! dialogElement.hasAttribute('x-no-overlay'); dialogElement.scrollTop = 0; if (this[isOpenProp(name)]) { return; } this[isOpenProp(name)] = true; useOverlay && this.$nextTick(() => setSiblingsInert(dialogElement, true)); setFocusAfterTransition(dialogElement, config.duration); modals.push({name, viewModel: this, focusTarget: focusTargetAfterHide, time: Date.now()}); if (useOverlay) { document.body.classList.add('overflow-hidden'); } }, hide() { if (Date.now() - lastHide < config.duration) { return; } lastHide = Date.now(); const modal = modals.pop() || {}; const name = modal.name; this[isOpenProp(name)] = false; freeFocusFromModalTrap(modal) trapFocusInNextModalWithOverlay(); const nextFocusAfterHide = modal.focusTarget; nextFocusAfterHide && this.$nextTick(() => nextFocusAfterHide.focus()); if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) { document.body.classList.remove('overflow-hidden'); } }, [isOpenProp(config.dialog)]: false, overlay(dialog) { const name = typeof dialog === 'string' ? dialog : config.dialog; return { ['x-show']() { return this[isOpenProp(name)]; }, ['x-transition:enter']: config.transitionEnter, ['x-transition:enter-start']: config.transitionEnterStart, ['x-transition:enter-end']: config.transitionEnterEnd, ['x-transition:leave']: config.transitionLeave, ['x-transition:leave-start']: config.transitionLeaveStart, ['x-transition:leave-end']: config.transitionLeaveEnd, }; } }; } window.hyva.modal.pop = function () { if (modals.length > 0) { const modal = modals[modals.length -1]; modal.viewModel.hide(); } } window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) { typeof selectors === 'string' || selectors instanceof String ? excludedFromFocusTrapping.add(selector) : selectors.map(selector => excludedFromFocusTrapping.add(selector)); } document.addEventListener('keydown', function (event) { if (event.key === 'Escape') { window.hyva.modal.pop(); } }); document.addEventListener('click', function(e) { let onetrustDarkFilter = document.querySelector('#onetrust-consent-sdk > div.onetrust-pc-dark-filter') if (modals.length > 0 && (!onetrustDarkFilter || onetrustDarkFilter.style.display === 'none')) { const modal = modals[modals.length -1]; const dialog = modal.viewModel.$refs[modal.name]; if (modal.time + 10 < Date.now() && ! isOverlayDisabled(dialog) && ! dialog.contains(e.target)) { modal.viewModel.hide(); } } }); })();</script><script> document.addEventListener('alpine:init', () => { Alpine.data("initIncentiveCart", () => ({ isLoading: true, cartDatas: '', amount: '', step1Reached: false, step2Reached: false, freeShippingValue: '', freeGift2Amount: '', freeGift3Amount: '', labelShippingStep: '', currentAmountCart: '', amountStep: '', amountStep1: '', amountStep2: '', amountStep3: '', cartDatasLocalStorage() { let browserStorage = hyva.getBrowserStorage().getItem('mage-cache-storage'); let cart = ""; browserStorage = JSON.parse(browserStorage); if (browserStorage) { cart = browserStorage.cart; } else { cart = undefined; } this.cartDatas = cart; }, calcFreeShipping(data) { let subtotalAmount; if (typeof data !== 'undefined') { subtotalAmount = data.subtotalAmount this.cartDatas = data } else { subtotalAmount = this.cartDatas.subtotalAmount } this.freeShippingValue = this.cartDatas.freeShippingAmount let amount = this.freeShippingValue - subtotalAmount; amount = amount.toFixed(2); if (amount > 0) { amount = amount.replace('.', ','); } else { amount = 0 } this.amount = amount; this.isLoading = false; return amount; }, calcBarSize(step) { this.cartDatasLocalStorage(); if (typeof this.cartDatas === 'undefined') { return; } this.calcFreeShipping(); this.freeShippingValue = this.cartDatas.freeShippingAmount; this.freeGift2Amount = this.cartDatas.freeGift2Amount; this.freeGift3Amount = this.cartDatas.freeGift3Amount; this.currentAmountCart = this.cartDatas.subtotalAmount; this.amountStep1 = this.freeShippingValue - this.currentAmountCart; this.amountStep2 = this.freeGift2Amount - this.currentAmountCart; this.amountStep3 = this.freeGift3Amount - this.currentAmountCart; let widthBar = 100; if (step === 'step1') { if (this.amountStep1 > 0) { widthBar = 100 - (this.amountStep1 * 100 / this.freeShippingValue); widthBar = this.getWidthBar(widthBar); this.step1Reached = false; } else { widthBar = 100; this.step1Reached = true; } this.amountStep = this.amountStep1.toFixed(2); this.labelShippingStep = "Free shipping" } if (step === 'step2' && this.freeGift2Amount) { if (this.amountStep2 > 0) { widthBar = 100 - (this.amountStep2 * 100 / (this.freeGift2Amount - this.freeShippingValue)); widthBar = this.getWidthBar(widthBar); this.step2Reached = false; } else { widthBar = 100; this.step2Reached = true; } if(this.amountStep1 < 0) { this.amountStep = this.amountStep2.toFixed(2); this.labelShippingStep = this.cartDatas.freeGift2Label; } if (!this.step1Reached) { widthBar = 0; } } if (step === 'step3' && this.freeGift3Amount) { if (this.amountStep3 > 0) { widthBar = 100 - (this.amountStep3 * 100 / (this.freeGift3Amount - this.freeGift2Amount)); widthBar = this.getWidthBar(widthBar); } else { widthBar = 100; } if(this.amountStep2 < 0) { this.amountStep = this.amountStep3.toFixed(2); this.labelShippingStep = this.cartDatas.freeGift3Label; } if (!this.step2Reached) { widthBar = 0; } } return 'width: ' + widthBar + '%'; }, getWidthBar(widthBar) { if (widthBar >= 0 && widthBar < 20) { widthBar = 20; } else if (widthBar >= 20 && widthBar < 40) { widthBar = 40; } else if (widthBar >= 40 && widthBar < 66) { widthBar = 66; } else if (widthBar >= 66 && widthBar < 100) { widthBar = 90; } return widthBar; } })); });</script> <style> .is-loading > :not(.loader) { visibility: hidden; }</style><script> window.setAjaxCart = ( selectors = '.product_addtocart_form, #product_addtocart_form, .item-widget-add-to-cart, .ritual-addtocart, .category-add-to-cart-form-product, .add-to-cart-form-product-wishlist', recursive = true ) => { const addToCartForms = document.querySelectorAll(selectors); const delay = parseInt('1500', 10); addToCartForms.forEach(form => { if (!form.hasEventListener) { form.hasEventListener = true; form.addEventListener('submit', e => { e.preventDefault(); const data = new URLSearchParams(new FormData(form)), buttons = form.querySelectorAll('.added-to-cart'); let cancelSubmit = false; buttons.forEach(button => { let backUrl = false; let swatchAttributeWrapper = form.querySelector('.swatch-attribute-wrapper'); let checkedInput = swatchAttributeWrapper ? swatchAttributeWrapper.querySelector('input:checked') : false; if (swatchAttributeWrapper && !checkedInput) { cancelSubmit = true; window.dispatchEvent(new CustomEvent('product-addtocart-error')); setMessage({ text: 'You need to choose options for your item.', type: 'error', class: 'fixed' }); } if (!button.classList.contains('force-show')) { button.classList.remove('hidden'); button.disabled = true; } if (!cancelSubmit) { cancelSubmit = true; fetch(e.currentTarget.action, { method: 'POST', body: data, headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' } }).then(res => { if (!res.ok) { form.submit(); } return res.json(); }).then(res => { if (res.backUrl) { backUrl = res.backUrl; } else { window.dispatchEvent(new CustomEvent('product-addtocart-success-' + data.get('product'))); window.dispatchEvent(new CustomEvent('product-addtocart-success')); window.dispatchEvent( new CustomEvent( 'reload-customer-section-data', { detail: { sections: ['cart', 'cart-tagging', 'messages'] } } ) ); } }).catch(err => { console.log(err); window.dispatchEvent(new CustomEvent('product-addtocart-error')); setMessage({ text: 'There was a problem adding your item to the cart.', type: 'error' }); }).finally(() => { try { var messages = hyva.getCookie('mage-messages'); messages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } catch (error) { console.warn('Error parsing Cookie Messages:', error); return; } setTimeout(() => { buttons.forEach(button => { if (!button.classList.contains('force-show')) { button.classList.add('hidden'); button.disabled = false; } }); messages.forEach(message => { setMessage(message); }); if (backUrl && (window.location.href !== backUrl)) { window.location.href = backUrl; } }, delay); }); } }) }); } }); } /** * Set Message */ function setMessage(message) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [message], 5000 ); } /** Init on pageload */ window.setAjaxCart();</script> <script type="application/json" id="default-section-data"> {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":{"summary_count":0,"subtotalAmount":0,"originalSubtotalAmount":0,"subtotal":"<span class=\"price\">\u20ac0.00<\/span>","possible_onepage_checkout":true,"items":[],"extra_actions":"","isGuestCheckoutAllowed":false,"website_id":"1","storeId":"2","freeShippingAmount":35,"freeGift2Amount":0,"freeGift2Label":null,"freeGift3Amount":0,"freeGift3Label":null,"minimumShippingAmount":"4.5","isKlarnaEnabled":"1","cartId":"","storeViewCode":"en","cart_empty_message":"","subtotal_incl_tax":"<span class=\"price\">\u20ac0.00<\/span>","subtotal_excl_tax":"<span class=\"price\">\u20ac0.00<\/span>","data_id":1746854121},"directory-data":{"AT":{"name":"Austria","regions":{"102":{"code":"BL","name":"Burgenland"},"99":{"code":"KN","name":"K\u00e4rnten"},"96":{"code":"NO","name":"Nieder\u00f6sterreich"},"97":{"code":"OO","name":"Ober\u00f6sterreich"},"98":{"code":"SB","name":"Salzburg"},"100":{"code":"ST","name":"Steiermark"},"101":{"code":"TI","name":"Tirol"},"103":{"code":"VB","name":"Vorarlberg"},"95":{"code":"WI","name":"Wien"}}},"BE":{"name":"Belgium","regions":{"493":{"code":"VAN","name":"Antwerpen"},"494":{"code":"WBR","name":"Brabant wallon"},"495":{"code":"BRU","name":"Brussels-Capital Region"},"496":{"code":"WHT","name":"Hainaut"},"498":{"code":"WLG","name":"Li\u00e8ge"},"497":{"code":"VLI","name":"Limburg"},"499":{"code":"WLX","name":"Luxembourg"},"500":{"code":"WNA","name":"Namur"},"501":{"code":"VOV","name":"Oost-Vlaanderen"},"502":{"code":"VBR","name":"Vlaams-Brabant"},"503":{"code":"VWV","name":"West-Vlaanderen"}}},"BG":{"name":"Bulgaria","regions":{"663":{"code":"BG-01","name":"Blagoevgrad"},"664":{"code":"BG-02","name":"Burgas"},"670":{"code":"BG-08","name":"Dobrich"},"669":{"code":"BG-07","name":"Gabrovo"},"688":{"code":"BG-26","name":"Haskovo"},"671":{"code":"BG-09","name":"Kardzhali"},"672":{"code":"BG-10","name":"Kyustendil"},"673":{"code":"BG-11","name":"Lovech"},"674":{"code":"BG-12","name":"Montana"},"675":{"code":"BG-13","name":"Pazardzhik"},"676":{"code":"BG-14","name":"Pernik"},"677":{"code":"BG-15","name":"Pleven"},"678":{"code":"BG-16","name":"Plovdiv"},"679":{"code":"BG-17","name":"Razgrad"},"680":{"code":"BG-18","name":"Ruse"},"689":{"code":"BG-27","name":"Shumen"},"681":{"code":"BG-19","name":"Silistra"},"682":{"code":"BG-20","name":"Sliven"},"683":{"code":"BG-21","name":"Smolyan"},"684":{"code":"BG-22","name":"Sofia City"},"685":{"code":"BG-23","name":"Sofia Province"},"686":{"code":"BG-24","name":"Stara Zagora"},"687":{"code":"BG-25","name":"Targovishte"},"665":{"code":"BG-03","name":"Varna"},"666":{"code":"BG-04","name":"Veliko Tarnovo"},"667":{"code":"BG-05","name":"Vidin"},"668":{"code":"BG-06","name":"Vratsa"},"690":{"code":"BG-28","name":"Yambol"}}},"CZ":{"name":"Czechia","regions":{"1028":{"code":"CZ-31","name":"Jiho\u010desk\u00fd kraj"},"1036":{"code":"CZ-64","name":"Jihomoravsk\u00fd kraj"},"1030":{"code":"CZ-41","name":"Karlovarsk\u00fd kraj"},"1035":{"code":"CZ-63","name":"Kraj Vyso\u010dina"},"1033":{"code":"CZ-52","name":"Kr\u00e1lov\u00e9hradeck\u00fd kraj"},"1032":{"code":"CZ-51","name":"Libereck\u00fd kraj"},"1039":{"code":"CZ-80","name":"Moravskoslezsk\u00fd kraj"},"1037":{"code":"CZ-71","name":"Olomouck\u00fd kraj"},"1034":{"code":"CZ-53","name":"Pardubick\u00fd kraj"},"1029":{"code":"CZ-32","name":"Plze\u0148sk\u00fd kraj"},"1026":{"code":"CZ-10","name":"Praha, Hlavn\u00ed m\u011bsto"},"1027":{"code":"CZ-20","name":"St\u0159edo\u010desk\u00fd kraj"},"1031":{"code":"CZ-42","name":"\u00dasteck\u00fd kraj"},"1038":{"code":"CZ-72","name":"Zl\u00ednsk\u00fd kraj"}}},"DE":{"name":"Germany","regions":{"80":{"code":"BAW","name":"Baden-W\u00fcrttemberg"},"81":{"code":"BAY","name":"Bayern"},"82":{"code":"BER","name":"Berlin"},"83":{"code":"BRG","name":"Brandenburg"},"84":{"code":"BRE","name":"Bremen"},"85":{"code":"HAM","name":"Hamburg"},"86":{"code":"HES","name":"Hessen"},"87":{"code":"MEC","name":"Mecklenburg-Vorpommern"},"79":{"code":"NDS","name":"Niedersachsen"},"88":{"code":"NRW","name":"Nordrhein-Westfalen"},"89":{"code":"RHE","name":"Rheinland-Pfalz"},"90":{"code":"SAR","name":"Saarland"},"91":{"code":"SAS","name":"Sachsen"},"92":{"code":"SAC","name":"Sachsen-Anhalt"},"93":{"code":"SCN","name":"Schleswig-Holstein"},"94":{"code":"THE","name":"Th\u00fcringen"}}},"DK":{"name":"Denmark","regions":{"707":{"code":"DK-84","name":"Hovedstaden"},"708":{"code":"DK-82","name":"Midtjylland"},"709":{"code":"DK-81","name":"Nordjylland"},"710":{"code":"DK-85","name":"Sj\u00e6lland"},"711":{"code":"DK-83","name":"Syddanmark"}}},"EE":{"name":"Estonia","regions":{"340":{"code":"EE-37","name":"Harjumaa"},"341":{"code":"EE-39","name":"Hiiumaa"},"342":{"code":"EE-44","name":"Ida-Virumaa"},"344":{"code":"EE-51","name":"J\u00e4rvamaa"},"343":{"code":"EE-49","name":"J\u00f5gevamaa"},"346":{"code":"EE-59","name":"L\u00e4\u00e4ne-Virumaa"},"345":{"code":"EE-57","name":"L\u00e4\u00e4nemaa"},"348":{"code":"EE-67","name":"P\u00e4rnumaa"},"347":{"code":"EE-65","name":"P\u00f5lvamaa"},"349":{"code":"EE-70","name":"Raplamaa"},"350":{"code":"EE-74","name":"Saaremaa"},"351":{"code":"EE-78","name":"Tartumaa"},"352":{"code":"EE-82","name":"Valgamaa"},"353":{"code":"EE-84","name":"Viljandimaa"},"354":{"code":"EE-86","name":"V\u00f5rumaa"}}},"ES":{"name":"Spain","regions":{"130":{"code":"A Coru\u0441a","name":"A Coru\u00f1a"},"131":{"code":"Alava","name":"Alava"},"132":{"code":"Albacete","name":"Albacete"},"133":{"code":"Alicante","name":"Alicante"},"134":{"code":"Almeria","name":"Almeria"},"135":{"code":"Asturias","name":"Asturias"},"136":{"code":"Avila","name":"Avila"},"137":{"code":"Badajoz","name":"Badajoz"},"138":{"code":"Baleares","name":"Baleares"},"139":{"code":"Barcelona","name":"Barcelona"},"140":{"code":"Burgos","name":"Burgos"},"141":{"code":"Caceres","name":"Caceres"},"142":{"code":"Cadiz","name":"Cadiz"},"143":{"code":"Cantabria","name":"Cantabria"},"144":{"code":"Castellon","name":"Castellon"},"145":{"code":"Ceuta","name":"Ceuta"},"146":{"code":"Ciudad Real","name":"Ciudad Real"},"147":{"code":"Cordoba","name":"Cordoba"},"148":{"code":"Cuenca","name":"Cuenca"},"149":{"code":"Girona","name":"Girona"},"150":{"code":"Granada","name":"Granada"},"151":{"code":"Guadalajara","name":"Guadalajara"},"152":{"code":"Guipuzcoa","name":"Guipuzcoa"},"153":{"code":"Huelva","name":"Huelva"},"154":{"code":"Huesca","name":"Huesca"},"155":{"code":"Jaen","name":"Jaen"},"156":{"code":"La Rioja","name":"La Rioja"},"157":{"code":"Las Palmas","name":"Las Palmas"},"158":{"code":"Leon","name":"Leon"},"159":{"code":"Lleida","name":"Lleida"},"160":{"code":"Lugo","name":"Lugo"},"161":{"code":"Madrid","name":"Madrid"},"162":{"code":"Malaga","name":"Malaga"},"163":{"code":"Melilla","name":"Melilla"},"164":{"code":"Murcia","name":"Murcia"},"165":{"code":"Navarra","name":"Navarra"},"166":{"code":"Ourense","name":"Ourense"},"167":{"code":"Palencia","name":"Palencia"},"168":{"code":"Pontevedra","name":"Pontevedra"},"169":{"code":"Salamanca","name":"Salamanca"},"170":{"code":"Santa Cruz de Tenerife","name":"Santa Cruz de Tenerife"},"171":{"code":"Segovia","name":"Segovia"},"172":{"code":"Sevilla","name":"Sevilla"},"173":{"code":"Soria","name":"Soria"},"174":{"code":"Tarragona","name":"Tarragona"},"175":{"code":"Teruel","name":"Teruel"},"176":{"code":"Toledo","name":"Toledo"},"177":{"code":"Valencia","name":"Valencia"},"178":{"code":"Valladolid","name":"Valladolid"},"179":{"code":"Vizcaya","name":"Vizcaya"},"180":{"code":"Zamora","name":"Zamora"},"181":{"code":"Zaragoza","name":"Zaragoza"}}},"FI":{"name":"Finland","regions":{"339":{"code":"Ahvenanmaa","name":"Ahvenanmaa"},"333":{"code":"Etel\u00e4-Karjala","name":"Etel\u00e4-Karjala"},"326":{"code":"Etel\u00e4-Pohjanmaa","name":"Etel\u00e4-Pohjanmaa"},"325":{"code":"Etel\u00e4-Savo","name":"Etel\u00e4-Savo"},"337":{"code":"It\u00e4-Uusimaa","name":"It\u00e4-Uusimaa"},"322":{"code":"Kainuu","name":"Kainuu"},"335":{"code":"Kanta-H\u00e4me","name":"Kanta-H\u00e4me"},"330":{"code":"Keski-Pohjanmaa","name":"Keski-Pohjanmaa"},"331":{"code":"Keski-Suomi","name":"Keski-Suomi"},"338":{"code":"Kymenlaakso","name":"Kymenlaakso"},"320":{"code":"Lappi","name":"Lappi"},"334":{"code":"P\u00e4ij\u00e4t-H\u00e4me","name":"P\u00e4ij\u00e4t-H\u00e4me"},"328":{"code":"Pirkanmaa","name":"Pirkanmaa"},"327":{"code":"Pohjanmaa","name":"Pohjanmaa"},"323":{"code":"Pohjois-Karjala","name":"Pohjois-Karjala"},"321":{"code":"Pohjois-Pohjanmaa","name":"Pohjois-Pohjanmaa"},"324":{"code":"Pohjois-Savo","name":"Pohjois-Savo"},"329":{"code":"Satakunta","name":"Satakunta"},"336":{"code":"Uusimaa","name":"Uusimaa"},"332":{"code":"Varsinais-Suomi","name":"Varsinais-Suomi"}}},"FR":{"name":"France","regions":{"182":{"code":"1","name":"Ain"},"183":{"code":"2","name":"Aisne"},"184":{"code":"3","name":"Allier"},"185":{"code":"4","name":"Alpes-de-Haute-Provence"},"187":{"code":"6","name":"Alpes-Maritimes"},"188":{"code":"7","name":"Ard\u00e8che"},"189":{"code":"8","name":"Ardennes"},"190":{"code":"9","name":"Ari\u00e8ge"},"191":{"code":"10","name":"Aube"},"192":{"code":"11","name":"Aude"},"193":{"code":"12","name":"Aveyron"},"249":{"code":"67","name":"Bas-Rhin"},"194":{"code":"13","name":"Bouches-du-Rh\u00f4ne"},"195":{"code":"14","name":"Calvados"},"196":{"code":"15","name":"Cantal"},"197":{"code":"16","name":"Charente"},"198":{"code":"17","name":"Charente-Maritime"},"199":{"code":"18","name":"Cher"},"200":{"code":"19","name":"Corr\u00e8ze"},"201":{"code":"2A","name":"Corse-du-Sud"},"203":{"code":"21","name":"C\u00f4te-d'Or"},"204":{"code":"22","name":"C\u00f4tes-d'Armor"},"205":{"code":"23","name":"Creuse"},"261":{"code":"79","name":"Deux-S\u00e8vres"},"206":{"code":"24","name":"Dordogne"},"207":{"code":"25","name":"Doubs"},"208":{"code":"26","name":"Dr\u00f4me"},"273":{"code":"91","name":"Essonne"},"209":{"code":"27","name":"Eure"},"210":{"code":"28","name":"Eure-et-Loir"},"211":{"code":"29","name":"Finist\u00e8re"},"212":{"code":"30","name":"Gard"},"214":{"code":"32","name":"Gers"},"215":{"code":"33","name":"Gironde"},"250":{"code":"68","name":"Haut-Rhin"},"202":{"code":"2B","name":"Haute-Corse"},"213":{"code":"31","name":"Haute-Garonne"},"225":{"code":"43","name":"Haute-Loire"},"234":{"code":"52","name":"Haute-Marne"},"252":{"code":"70","name":"Haute-Sa\u00f4ne"},"256":{"code":"74","name":"Haute-Savoie"},"269":{"code":"87","name":"Haute-Vienne"},"186":{"code":"5","name":"Hautes-Alpes"},"247":{"code":"65","name":"Hautes-Pyr\u00e9n\u00e9es"},"274":{"code":"92","name":"Hauts-de-Seine"},"216":{"code":"34","name":"H\u00e9rault"},"217":{"code":"35","name":"Ille-et-Vilaine"},"218":{"code":"36","name":"Indre"},"219":{"code":"37","name":"Indre-et-Loire"},"220":{"code":"38","name":"Is\u00e8re"},"221":{"code":"39","name":"Jura"},"222":{"code":"40","name":"Landes"},"223":{"code":"41","name":"Loir-et-Cher"},"224":{"code":"42","name":"Loire"},"226":{"code":"44","name":"Loire-Atlantique"},"227":{"code":"45","name":"Loiret"},"228":{"code":"46","name":"Lot"},"229":{"code":"47","name":"Lot-et-Garonne"},"230":{"code":"48","name":"Loz\u00e8re"},"231":{"code":"49","name":"Maine-et-Loire"},"232":{"code":"50","name":"Manche"},"233":{"code":"51","name":"Marne"},"235":{"code":"53","name":"Mayenne"},"236":{"code":"54","name":"Meurthe-et-Moselle"},"237":{"code":"55","name":"Meuse"},"1018":{"code":"98","name":"Monaco"},"238":{"code":"56","name":"Morbihan"},"239":{"code":"57","name":"Moselle"},"240":{"code":"58","name":"Ni\u00e8vre"},"241":{"code":"59","name":"Nord"},"242":{"code":"60","name":"Oise"},"243":{"code":"61","name":"Orne"},"1017":{"code":"OM","name":"Outre-Mer"},"257":{"code":"75","name":"Paris"},"244":{"code":"62","name":"Pas-de-Calais"},"245":{"code":"63","name":"Puy-de-D\u00f4me"},"246":{"code":"64","name":"Pyr\u00e9n\u00e9es-Atlantiques"},"248":{"code":"66","name":"Pyr\u00e9n\u00e9es-Orientales"},"251":{"code":"69","name":"Rh\u00f4ne"},"253":{"code":"71","name":"Sa\u00f4ne-et-Loire"},"254":{"code":"72","name":"Sarthe"},"255":{"code":"73","name":"Savoie"},"259":{"code":"77","name":"Seine-et-Marne"},"258":{"code":"76","name":"Seine-Maritime"},"275":{"code":"93","name":"Seine-Saint-Denis"},"262":{"code":"80","name":"Somme"},"263":{"code":"81","name":"Tarn"},"264":{"code":"82","name":"Tarn-et-Garonne"},"272":{"code":"90","name":"Territoire-de-Belfort"},"277":{"code":"95","name":"Val-d'Oise"},"276":{"code":"94","name":"Val-de-Marne"},"265":{"code":"83","name":"Var"},"266":{"code":"84","name":"Vaucluse"},"267":{"code":"85","name":"Vend\u00e9e"},"268":{"code":"86","name":"Vienne"},"270":{"code":"88","name":"Vosges"},"271":{"code":"89","name":"Yonne"},"260":{"code":"78","name":"Yvelines"}}},"GR":{"name":"Greece","regions":{"749":{"code":"GR-69","name":"\u00c1gion \u00d3ros"},"736":{"code":"GR-A","name":"Anatolik\u00ed Makedon\u00eda kai Thr\u00e1ki"},"737":{"code":"GR-I","name":"Attik\u00ed"},"738":{"code":"GR-G","name":"Dytik\u00ed Ell\u00e1da"},"739":{"code":"GR-C","name":"Dytik\u00ed Makedon\u00eda"},"740":{"code":"GR-F","name":"Ion\u00eda N\u00edsia"},"741":{"code":"GR-D","name":"\u00cdpeiros"},"742":{"code":"GR-B","name":"Kentrik\u00ed Makedon\u00eda"},"743":{"code":"GR-M","name":"Kr\u00edti"},"744":{"code":"GR-L","name":"N\u00f3tio Aiga\u00edo"},"745":{"code":"GR-J","name":"Pelop\u00f3nnisos"},"746":{"code":"GR-H","name":"Stere\u00e1 Ell\u00e1da"},"747":{"code":"GR-E","name":"Thessal\u00eda"},"748":{"code":"GR-K","name":"V\u00f3reio Aiga\u00edo"}}},"HR":{"name":"Croatia"},"HU":{"name":"Hungary"},"IE":{"name":"Ireland"},"IT":{"name":"Italy","regions":{"768":{"code":"AG","name":"Agrigento"},"769":{"code":"AL","name":"Alessandria"},"770":{"code":"AN","name":"Ancona"},"771":{"code":"AO","name":"Aosta"},"773":{"code":"AR","name":"Arezzo"},"774":{"code":"AP","name":"Ascoli-Piceno"},"775":{"code":"AT","name":"Asti"},"776":{"code":"AV","name":"Avellino"},"777":{"code":"BA","name":"Bari"},"778":{"code":"BT","name":"Barletta-Andria-Trani"},"779":{"code":"BL","name":"Belluno"},"780":{"code":"BN","name":"Benevento"},"781":{"code":"BG","name":"Bergamo"},"782":{"code":"BI","name":"Biella"},"783":{"code":"BO","name":"Bologna"},"784":{"code":"BZ","name":"Bolzano"},"785":{"code":"BS","name":"Brescia"},"786":{"code":"BR","name":"Brindisi"},"787":{"code":"CA","name":"Cagliari"},"788":{"code":"CL","name":"Caltanissetta"},"789":{"code":"CB","name":"Campobasso"},"790":{"code":"CI","name":"Carbonia Iglesias"},"791":{"code":"CE","name":"Caserta"},"792":{"code":"CT","name":"Catania"},"793":{"code":"CZ","name":"Catanzaro"},"794":{"code":"CH","name":"Chieti"},"795":{"code":"CO","name":"Como"},"796":{"code":"CS","name":"Cosenza"},"797":{"code":"CR","name":"Cremona"},"798":{"code":"KR","name":"Crotone"},"799":{"code":"CN","name":"Cuneo"},"800":{"code":"EN","name":"Enna"},"801":{"code":"FM","name":"Fermo"},"802":{"code":"FE","name":"Ferrara"},"803":{"code":"FI","name":"Firenze"},"804":{"code":"FG","name":"Foggia"},"805":{"code":"FC","name":"Forli-Cesena"},"806":{"code":"FR","name":"Frosinone"},"807":{"code":"GE","name":"Genova"},"808":{"code":"GO","name":"Gorizia"},"809":{"code":"GR","name":"Grosseto"},"810":{"code":"IM","name":"Imperia"},"811":{"code":"IS","name":"Isernia"},"772":{"code":"AQ","name":"L'Aquila"},"812":{"code":"SP","name":"La-Spezia"},"813":{"code":"LT","name":"Latina"},"814":{"code":"LE","name":"Lecce"},"815":{"code":"LC","name":"Lecco"},"816":{"code":"LI","name":"Livorno"},"817":{"code":"LO","name":"Lodi"},"818":{"code":"LU","name":"Lucca"},"819":{"code":"MC","name":"Macerata"},"820":{"code":"MN","name":"Mantova"},"821":{"code":"MS","name":"Massa-Carrara"},"822":{"code":"MT","name":"Matera"},"823":{"code":"VS","name":"Medio Campidano"},"824":{"code":"ME","name":"Messina"},"825":{"code":"MI","name":"Milano"},"826":{"code":"MO","name":"Modena"},"827":{"code":"MB","name":"Monza-Brianza"},"828":{"code":"NA","name":"Napoli"},"829":{"code":"NO","name":"Novara"},"830":{"code":"NU","name":"Nuoro"},"831":{"code":"OG","name":"Ogliastra"},"832":{"code":"OT","name":"Olbia Tempio"},"833":{"code":"OR","name":"Oristano"},"834":{"code":"PD","name":"Padova"},"835":{"code":"PA","name":"Palermo"},"836":{"code":"PR","name":"Parma"},"837":{"code":"PV","name":"Pavia"},"838":{"code":"PG","name":"Perugia"},"839":{"code":"PU","name":"Pesaro-Urbino"},"840":{"code":"PE","name":"Pescara"},"841":{"code":"PC","name":"Piacenza"},"842":{"code":"PI","name":"Pisa"},"843":{"code":"PT","name":"Pistoia"},"844":{"code":"PN","name":"Pordenone"},"845":{"code":"PZ","name":"Potenza"},"846":{"code":"PO","name":"Prato"},"847":{"code":"RG","name":"Ragusa"},"848":{"code":"RA","name":"Ravenna"},"849":{"code":"RC","name":"Reggio-Calabria"},"850":{"code":"RE","name":"Reggio-Emilia"},"851":{"code":"RI","name":"Rieti"},"852":{"code":"RN","name":"Rimini"},"853":{"code":"RM","name":"Roma"},"854":{"code":"RO","name":"Rovigo"},"855":{"code":"SA","name":"Salerno"},"856":{"code":"SS","name":"Sassari"},"857":{"code":"SV","name":"Savona"},"858":{"code":"SI","name":"Siena"},"859":{"code":"SR","name":"Siracusa"},"860":{"code":"SO","name":"Sondrio"},"861":{"code":"TA","name":"Taranto"},"862":{"code":"TE","name":"Teramo"},"863":{"code":"TR","name":"Terni"},"864":{"code":"TO","name":"Torino"},"865":{"code":"TP","name":"Trapani"},"866":{"code":"TN","name":"Trento"},"867":{"code":"TV","name":"Treviso"},"868":{"code":"TS","name":"Trieste"},"869":{"code":"UD","name":"Udine"},"870":{"code":"VA","name":"Varese"},"871":{"code":"VE","name":"Venezia"},"872":{"code":"VB","name":"Verbania"},"873":{"code":"VC","name":"Vercelli"},"874":{"code":"VR","name":"Verona"},"875":{"code":"VV","name":"Vibo-Valentia"},"876":{"code":"VI","name":"Vicenza"},"877":{"code":"VT","name":"Viterbo"}}},"LT":{"name":"Lithuania","regions":{"475":{"code":"LT-AL","name":"Alytaus Apskritis"},"476":{"code":"LT-KU","name":"Kauno Apskritis"},"477":{"code":"LT-KL","name":"Klaip\u0117dos Apskritis"},"478":{"code":"LT-MR","name":"Marijampol\u0117s Apskritis"},"479":{"code":"LT-PN","name":"Panev\u0117\u017eio Apskritis"},"480":{"code":"LT-SA","name":"\u0160iauli\u0173 Apskritis"},"481":{"code":"LT-TA","name":"Taurag\u0117s Apskritis"},"482":{"code":"LT-TE","name":"Tel\u0161i\u0173 Apskritis"},"483":{"code":"LT-UT","name":"Utenos Apskritis"},"484":{"code":"LT-VL","name":"Vilniaus Apskritis"}}},"LU":{"name":"Luxembourg"},"LV":{"name":"Latvia","regions":{"471":{"code":"\u0100da\u017eu novads","name":"\u0100da\u017eu novads"},"366":{"code":"Aglonas novads","name":"Aglonas novads"},"367":{"code":"LV-AI","name":"Aizkraukles novads"},"368":{"code":"Aizputes novads","name":"Aizputes novads"},"369":{"code":"Akn\u012bstes novads","name":"Akn\u012bstes novads"},"370":{"code":"Alojas novads","name":"Alojas novads"},"371":{"code":"Alsungas novads","name":"Alsungas novads"},"372":{"code":"LV-AL","name":"Al\u016bksnes novads"},"373":{"code":"Amatas novads","name":"Amatas novads"},"374":{"code":"Apes novads","name":"Apes novads"},"375":{"code":"Auces novads","name":"Auces novads"},"376":{"code":"Bab\u012btes novads","name":"Bab\u012btes novads"},"377":{"code":"Baldones novads","name":"Baldones novads"},"378":{"code":"Baltinavas novads","name":"Baltinavas novads"},"379":{"code":"LV-BL","name":"Balvu novads"},"380":{"code":"LV-BU","name":"Bauskas novads"},"381":{"code":"Bever\u012bnas novads","name":"Bever\u012bnas novads"},"382":{"code":"Broc\u0113nu novads","name":"Broc\u0113nu novads"},"383":{"code":"Burtnieku novads","name":"Burtnieku novads"},"384":{"code":"Carnikavas novads","name":"Carnikavas novads"},"387":{"code":"LV-CE","name":"C\u0113su novads"},"385":{"code":"Cesvaines novads","name":"Cesvaines novads"},"386":{"code":"Ciblas novads","name":"Ciblas novads"},"388":{"code":"Dagdas novads","name":"Dagdas novads"},"355":{"code":"LV-DGV","name":"Daugavpils"},"389":{"code":"LV-DA","name":"Daugavpils novads"},"390":{"code":"LV-DO","name":"Dobeles novads"},"391":{"code":"Dundagas novads","name":"Dundagas novads"},"392":{"code":"Durbes novads","name":"Durbes novads"},"393":{"code":"Engures novads","name":"Engures novads"},"472":{"code":"\u0112rg\u013cu novads","name":"\u0112rg\u013cu novads"},"394":{"code":"Garkalnes novads","name":"Garkalnes novads"},"395":{"code":"Grobi\u0146as novads","name":"Grobi\u0146as novads"},"396":{"code":"LV-GU","name":"Gulbenes novads"},"397":{"code":"Iecavas novads","name":"Iecavas novads"},"398":{"code":"Ik\u0161\u0137iles novads","name":"Ik\u0161\u0137iles novads"},"399":{"code":"Il\u016bkstes novads","name":"Il\u016bkstes novads"},"400":{"code":"In\u010dukalna novads","name":"In\u010dukalna novads"},"401":{"code":"Jaunjelgavas novads","name":"Jaunjelgavas novads"},"402":{"code":"Jaunpiebalgas novads","name":"Jaunpiebalgas novads"},"403":{"code":"Jaunpils novads","name":"Jaunpils novads"},"357":{"code":"J\u0113kabpils","name":"J\u0113kabpils"},"405":{"code":"LV-JK","name":"J\u0113kabpils novads"},"356":{"code":"LV-JEL","name":"Jelgava"},"404":{"code":"LV-JL","name":"Jelgavas novads"},"358":{"code":"LV-JUR","name":"J\u016brmala"},"406":{"code":"Kandavas novads","name":"Kandavas novads"},"412":{"code":"K\u0101rsavas novads","name":"K\u0101rsavas novads"},"473":{"code":"\u0136eguma novads","name":"\u0136eguma novads"},"474":{"code":"\u0136ekavas novads","name":"\u0136ekavas novads"},"407":{"code":"Kokneses novads","name":"Kokneses novads"},"410":{"code":"LV-KR","name":"Kr\u0101slavas novads"},"408":{"code":"Krimuldas novads","name":"Krimuldas novads"},"409":{"code":"Krustpils novads","name":"Krustpils novads"},"411":{"code":"LV-KU","name":"Kuld\u012bgas novads"},"413":{"code":"Lielv\u0101rdes novads","name":"Lielv\u0101rdes novads"},"359":{"code":"LV-LPX","name":"Liep\u0101ja"},"360":{"code":"LV-LE","name":"Liep\u0101jas novads"},"417":{"code":"L\u012bgatnes novads","name":"L\u012bgatnes novads"},"414":{"code":"LV-LM","name":"Limba\u017eu novads"},"418":{"code":"L\u012bv\u0101nu novads","name":"L\u012bv\u0101nu novads"},"415":{"code":"Lub\u0101nas novads","name":"Lub\u0101nas novads"},"416":{"code":"LV-LU","name":"Ludzas novads"},"419":{"code":"LV-MA","name":"Madonas novads"},"421":{"code":"M\u0101lpils novads","name":"M\u0101lpils novads"},"422":{"code":"M\u0101rupes novads","name":"M\u0101rupes novads"},"420":{"code":"Mazsalacas novads","name":"Mazsalacas novads"},"423":{"code":"Nauk\u0161\u0113nu novads","name":"Nauk\u0161\u0113nu novads"},"424":{"code":"Neretas novads","name":"Neretas novads"},"425":{"code":"N\u012bcas novads","name":"N\u012bcas novads"},"426":{"code":"LV-OG","name":"Ogres novads"},"427":{"code":"Olaines novads","name":"Olaines novads"},"428":{"code":"Ozolnieku novads","name":"Ozolnieku novads"},"432":{"code":"P\u0101rgaujas novads","name":"P\u0101rgaujas novads"},"433":{"code":"P\u0101vilostas novads","name":"P\u0101vilostas novads"},"434":{"code":"P\u013cavi\u0146u novads","name":"P\u013cavi\u0146u novads"},"429":{"code":"LV-PR","name":"Prei\u013cu novads"},"430":{"code":"Priekules novads","name":"Priekules novads"},"431":{"code":"Prieku\u013cu novads","name":"Prieku\u013cu novads"},"435":{"code":"Raunas novads","name":"Raunas novads"},"361":{"code":"LV-REZ","name":"R\u0113zekne"},"442":{"code":"LV-RE","name":"R\u0113zeknes novads"},"436":{"code":"Riebi\u0146u novads","name":"Riebi\u0146u novads"},"362":{"code":"LV-RIX","name":"R\u012bga"},"363":{"code":"LV-RI","name":"R\u012bgas novads"},"437":{"code":"Rojas novads","name":"Rojas novads"},"438":{"code":"Ropa\u017eu novads","name":"Ropa\u017eu novads"},"439":{"code":"Rucavas novads","name":"Rucavas novads"},"440":{"code":"Rug\u0101ju novads","name":"Rug\u0101ju novads"},"443":{"code":"R\u016bjienas novads","name":"R\u016bjienas novads"},"441":{"code":"Rund\u0101les novads","name":"Rund\u0101les novads"},"444":{"code":"Salacgr\u012bvas novads","name":"Salacgr\u012bvas novads"},"445":{"code":"Salas novads","name":"Salas novads"},"446":{"code":"Salaspils novads","name":"Salaspils novads"},"447":{"code":"LV-SA","name":"Saldus novads"},"448":{"code":"Saulkrastu novads","name":"Saulkrastu novads"},"455":{"code":"S\u0113jas novads","name":"S\u0113jas novads"},"449":{"code":"Siguldas novads","name":"Siguldas novads"},"451":{"code":"Skr\u012bveru novads","name":"Skr\u012bveru novads"},"450":{"code":"Skrundas novads","name":"Skrundas novads"},"452":{"code":"Smiltenes novads","name":"Smiltenes novads"},"453":{"code":"Stopi\u0146u novads","name":"Stopi\u0146u novads"},"454":{"code":"Stren\u010du novads","name":"Stren\u010du novads"},"456":{"code":"LV-TA","name":"Talsu novads"},"458":{"code":"T\u0113rvetes novads","name":"T\u0113rvetes novads"},"457":{"code":"LV-TU","name":"Tukuma novads"},"459":{"code":"Vai\u0146odes novads","name":"Vai\u0146odes novads"},"460":{"code":"LV-VK","name":"Valkas novads"},"364":{"code":"Valmiera","name":"Valmiera"},"461":{"code":"LV-VM","name":"Valmieras novads"},"462":{"code":"Varak\u013c\u0101nu novads","name":"Varak\u013c\u0101nu novads"},"469":{"code":"V\u0101rkavas novads","name":"V\u0101rkavas novads"},"463":{"code":"Vecpiebalgas novads","name":"Vecpiebalgas novads"},"464":{"code":"Vecumnieku novads","name":"Vecumnieku novads"},"365":{"code":"LV-VEN","name":"Ventspils"},"465":{"code":"LV-VE","name":"Ventspils novads"},"466":{"code":"Vies\u012btes novads","name":"Vies\u012btes novads"},"467":{"code":"Vi\u013cakas novads","name":"Vi\u013cakas novads"},"468":{"code":"Vi\u013c\u0101nu novads","name":"Vi\u013c\u0101nu novads"},"470":{"code":"Zilupes novads","name":"Zilupes novads"}}},"MC":{"name":"Monaco"},"NL":{"name":"Netherlands"},"PL":{"name":"Poland","regions":{"602":{"code":"PL-02","name":"dolno\u015bl\u0105skie"},"603":{"code":"PL-04","name":"kujawsko-pomorskie"},"604":{"code":"PL-06","name":"lubelskie"},"605":{"code":"PL-08","name":"lubuskie"},"608":{"code":"PL-14","name":"mazowieckie"},"607":{"code":"PL-12","name":"ma\u0142opolskie"},"609":{"code":"PL-16","name":"opolskie"},"610":{"code":"PL-18","name":"podkarpackie"},"611":{"code":"PL-20","name":"podlaskie"},"612":{"code":"PL-22","name":"pomorskie"},"613":{"code":"PL-24","name":"\u015bl\u0105skie"},"614":{"code":"PL-26","name":"\u015bwi\u0119tokrzyskie"},"615":{"code":"PL-28","name":"warmi\u0144sko-mazurskie"},"616":{"code":"PL-30","name":"wielkopolskie"},"617":{"code":"PL-32","name":"zachodniopomorskie"},"606":{"code":"PL-10","name":"\u0142\u00f3dzkie"}}},"PT":{"name":"Portugal","regions":{"922":{"code":"PT-01","name":"Aveiro"},"923":{"code":"PT-02","name":"Beja"},"924":{"code":"PT-03","name":"Braga"},"925":{"code":"PT-04","name":"Bragan\u00e7a"},"926":{"code":"PT-05","name":"Castelo Branco"},"927":{"code":"PT-06","name":"Coimbra"},"928":{"code":"PT-07","name":"\u00c9vora"},"929":{"code":"PT-08","name":"Faro"},"930":{"code":"PT-09","name":"Guarda"},"931":{"code":"PT-10","name":"Leiria"},"932":{"code":"PT-11","name":"Lisboa"},"933":{"code":"PT-12","name":"Portalegre"},"934":{"code":"PT-13","name":"Porto"},"941":{"code":"PT-30","name":"Regi\u00e3o Aut\u00f3noma da Madeira"},"940":{"code":"PT-20","name":"Regi\u00e3o Aut\u00f3noma dos A\u00e7ores"},"935":{"code":"PT-14","name":"Santar\u00e9m"},"936":{"code":"PT-15","name":"Set\u00fabal"},"937":{"code":"PT-16","name":"Viana do Castelo"},"938":{"code":"PT-17","name":"Vila Real"},"939":{"code":"PT-18","name":"Viseu"}}},"RO":{"name":"Romania","regions":{"278":{"code":"AB","name":"Alba"},"279":{"code":"AR","name":"Arad"},"280":{"code":"AG","name":"Arge\u015f"},"281":{"code":"BC","name":"Bac\u0103u"},"282":{"code":"BH","name":"Bihor"},"283":{"code":"BN","name":"Bistri\u0163a-N\u0103s\u0103ud"},"284":{"code":"BT","name":"Boto\u015fani"},"286":{"code":"BR","name":"Br\u0103ila"},"285":{"code":"BV","name":"Bra\u015fov"},"287":{"code":"B","name":"Bucure\u015fti"},"288":{"code":"BZ","name":"Buz\u0103u"},"290":{"code":"CL","name":"C\u0103l\u0103ra\u015fi"},"289":{"code":"CS","name":"Cara\u015f-Severin"},"291":{"code":"CJ","name":"Cluj"},"292":{"code":"CT","name":"Constan\u0163a"},"293":{"code":"CV","name":"Covasna"},"294":{"code":"DB","name":"D\u00e2mbovi\u0163a"},"295":{"code":"DJ","name":"Dolj"},"296":{"code":"GL","name":"Gala\u0163i"},"297":{"code":"GR","name":"Giurgiu"},"298":{"code":"GJ","name":"Gorj"},"299":{"code":"HR","name":"Harghita"},"300":{"code":"HD","name":"Hunedoara"},"301":{"code":"IL","name":"Ialomi\u0163a"},"302":{"code":"IS","name":"Ia\u015fi"},"303":{"code":"IF","name":"Ilfov"},"304":{"code":"MM","name":"Maramure\u015f"},"305":{"code":"MH","name":"Mehedin\u0163i"},"306":{"code":"MS","name":"Mure\u015f"},"307":{"code":"NT","name":"Neam\u0163"},"308":{"code":"OT","name":"Olt"},"309":{"code":"PH","name":"Prahova"},"311":{"code":"SJ","name":"S\u0103laj"},"310":{"code":"SM","name":"Satu-Mare"},"312":{"code":"SB","name":"Sibiu"},"313":{"code":"SV","name":"Suceava"},"314":{"code":"TR","name":"Teleorman"},"315":{"code":"TM","name":"Timi\u015f"},"316":{"code":"TL","name":"Tulcea"},"318":{"code":"VL","name":"V\u00e2lcea"},"317":{"code":"VS","name":"Vaslui"},"319":{"code":"VN","name":"Vrancea"}}},"SE":{"name":"Sweden","regions":{"952":{"code":"SE-K","name":"Blekinge l\u00e4n"},"953":{"code":"SE-W","name":"Dalarnas l\u00e4n"},"955":{"code":"SE-X","name":"G\u00e4vleborgs l\u00e4n"},"954":{"code":"SE-I","name":"Gotlands l\u00e4n"},"956":{"code":"SE-N","name":"Hallands l\u00e4n"},"957":{"code":"SE-Z","name":"J\u00e4mtlands l\u00e4n"},"958":{"code":"SE-F","name":"J\u00f6nk\u00f6pings l\u00e4n"},"959":{"code":"SE-H","name":"Kalmar l\u00e4n"},"960":{"code":"SE-G","name":"Kronobergs l\u00e4n"},"961":{"code":"SE-BD","name":"Norrbottens l\u00e4n"},"971":{"code":"SE-T","name":"\u00d6rebro l\u00e4n"},"972":{"code":"SE-E","name":"\u00d6sterg\u00f6tlands l\u00e4n"},"962":{"code":"SE-M","name":"Sk\u00e5ne l\u00e4n"},"964":{"code":"SE-D","name":"S\u00f6dermanlands l\u00e4n"},"963":{"code":"SE-AB","name":"Stockholms l\u00e4n"},"965":{"code":"SE-C","name":"Uppsala l\u00e4n"},"966":{"code":"SE-S","name":"V\u00e4rmlands l\u00e4n"},"967":{"code":"SE-AC","name":"V\u00e4sterbottens l\u00e4n"},"968":{"code":"SE-Y","name":"V\u00e4sternorrlands l\u00e4n"},"969":{"code":"SE-U","name":"V\u00e4stmanlands l\u00e4n"},"970":{"code":"SE-O","name":"V\u00e4stra G\u00f6talands l\u00e4n"}}},"SI":{"name":"Slovenia"},"SK":{"name":"Slovakia"},"data_id":1746854121},"captcha":[],"wishlist":{"items":[]},"instant-purchase":[],"loggedAsCustomer":[],"multiplewishlist":[],"persistent":[],"review":[],"browsing-data":{"env_work":"prod","locale":"en_GB","env_country":"FR","env_currency":"EUR","env_language":"en","user_logged":"not logged","user_identification_tool":"guest","data_id":1746854121},"ammessages":[],"customer-tagging":[],"cart-tagging":{"items":[],"restore_cart_url":""},"active-variation-tagging":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script></div></body></html>