<!doctype html>
<html lang="fr">
<head >
<meta charset="utf-8"/>
<meta name="title" content="Cosmétiques Plus Naturels Certifiés Bio | Avril"/>
<meta name="description" content="Entrez dans l'univers Avril et découvrez notre gamme de cosmétiques plus naturels : maquillage, produits de soin pour le visage, le corps et les cheveux certifiés bio majoritairement made in France à prix accessibles."/>
<meta name="robots" content="INDEX,FOLLOW"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Cosmétiques Plus Naturels Certifiés Bio | Avril</title>
<link rel="stylesheet" type="text/css" media="all" href="https://www.avril-beaute.fr/static/version1791884672/_cache/merged/059a3134b1ccb19bc8bd6fe849ae5459.min.css" />
<link rel="icon" type="image/x-icon" href="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Magento_Theme/favicon.ico" />
<link rel="shortcut icon" type="image/x-icon" href="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Magento_Theme/favicon.ico" />
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Sbsoftware_Sarbacane/js/sd_cart_update.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Smile_ElasticsuiteTracker/js/tracking.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/enable-animation.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/obfuscation.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/hp-saison.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/hp-experience.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/hp-project.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/cms-pages/accordion.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Hyva_SmileElasticsuite/js/fetch_products_view.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Hyva_MagedelightMegamenu/js/megamenu/megamenu.min.js"></script>
<script type="text/javascript" src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Hyva_MagedelightMegamenu/js/megamenu/burgermenu.min.js"></script>
<link rel="canonical" href="https://www.avril-beaute.fr/"/>
<script>
function launchGtm() {
(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://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-N95VVZ2');
}
launchGtm();
</script>
<meta property="og:type" content="og:product" />
<meta property="og:title" content="Cosmétiques Plus Naturels Certifiés Bio | Avril" />
<meta property="og:image" content="https://www.avril-beaute.fr/media/bss/logo/default/btoc-france-logo-1653042385.png" />
<meta property="og:description" content="Cosmétique bio" />
<meta property="og:url" content="https://www.avril-beaute.fr/?gad_source=1" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="" />
<meta name="twitter:title" content="Cosmétiques Plus Naturels Certifiés Bio | Avril" />
<meta name="twitter:description" content="Cosmétique bio" />
<meta name="twitter:image" content="https://www.avril-beaute.fr/media/bss/logo/default/btoc-france-logo-1653042385.png" />
<script type="application/ld+json"> {
"@context": "http://schema.org",
"@type": "WebSite",
"name": "Avril",
"url": "https://www.avril-beaute.fr/",
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.avril-beaute.fr/catalogsearch/result/?q={search_term_string}",
"query-input": "required name=search_term_string"
} }
</script>
<script type="application/ld+json"> {
"@context": "https://schema.org",
"@type": "WebPage",
"name": "Cosmétiques Plus Naturels Certifiés Bio | Avril",
"url": "https://www.avril-beaute.fr/?gad_source=1",
"inLanguage": "fr",
"description": "Entrez dans l'univers Avril et découvrez notre gamme de cosmétiques plus naturels : maquillage, produits de soin pour le visage, le corps et les cheveux certifiés bio majoritairement made in France à prix accessibles.",
"publisher": {
"@type": "Organization",
"name": "Avril",
"logo": {
"@type": "ImageObject",
"url": "https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/logo.svg"
}
},
"isPartOf": {
"@type": "WebSite",
"name": "Avril",
"url": "https://www.avril-beaute.fr/"
}
,
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.avril-beaute.fr/catalogsearch/result/?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
<script type="application/ld+json">
{"@context":"https:\/\/schema.org","@type":"Organization","url":"https:\/\/www.avril-beaute.fr\/","name":"Avril","logo":"https:\/\/www.avril-beaute.fr\/static\/version1791884672\/frontend\/Avril\/hyva\/fr_FR\/images\/logo.svg","image":"https:\/\/www.avril-beaute.fr\/static\/version1791884672\/frontend\/Avril\/hyva\/fr_FR\/images\/logo.svg","email":"serviceclientweb@avril-beaute.fr","address":{"@type":"PostalAddress","streetAddress":"25 avenue Jean Perrin","addressLocality":"Bondues","postalCode":"59910","addressCountry":"france"},"telephone":"03 20 70 81 78","sameAs":["https:\/\/www.instagram.com\/avrilcosmetiques\r","https:\/\/www.facebook.com\/avril.cosmetique\r","https:\/\/www.pinterest.fr\/avrilbeaute\/\r","https:\/\/www.linkedin.com\/company\/18163493\r","https:\/\/www.tiktok.com\/@avrilcosmetiquebio"],"vatID":"FR69 538 712 217","hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","returnPolicyCategory":"https:\/\/schema.org\/MerchantReturnFiniteReturnWindow","merchantReturnDays":60,"returnMethod":"https:\/\/schema.org\/ReturnByMail","returnFees":"https:\/\/schema.org\/FreeReturn"}} </script>
<!--Custom Style-->
<script defer charset="utf-8" src="https://widgets.rr.skeepers.io/product/d8dd2351-8915-8454-393d-a739ef959513/73bb10c1-72d7-4fab-afd7-18a82c8b17a2.js"></script><script>
var SD_CART_URL = 'https://www.avril-beaute.fr/sd_cart_update';
var SD_VALIDATE = false;
</script>
<script>
//<![CDATA[
function userConsentEsTraking(config)
{
return config.cookieRestrictionEnabled == false || hyva.getCookie(config.cookieRestrictionName) !== null;
}
try {
smileTracker.setConfig({
beaconUrl : 'https://www.avril-beaute.fr/elasticsuite/tracker/hit/image/h.png',
telemetryUrl : 'https://t.elasticsuite.io/track',
telemetryEnabled : '',
sessionConfig : {"visit_cookie_name":"STUID","visit_cookie_lifetime":"3600","visitor_cookie_lifetime":"365","visitor_cookie_name":"STVID","domain":"avril-beaute.fr","path":"\/"},
endpointUrl : 'https://www.avril-beaute.fr/rest/V1/elasticsuite-tracker/hit'
});
smileTracker.addPageVar('store_id', '6');
document.addEventListener('DOMContentLoaded', function () {
if (userConsentEsTraking({"cookieRestrictionEnabled":"0","cookieRestrictionName":"user_allowed_save_cookie"})) {
smileTracker.sendTag();
}
});
} catch (err) {
;
}
//]]>
</script>
<script>
var BASE_URL = 'https://www.avril-beaute.fr/';
var THEME_PATH = 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR';
var COOKIE_CONFIG = {
"expires": null,
"path": "\u002F",
"domain": ".avril\u002Dbeaute.fr",
"secure": true,
"lifetime": "34187400",
"cookie_restriction_enabled": false };
var CURRENT_STORE_CODE = 'b2c_fr';
var CURRENT_WEBSITE_ID = '3';
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'
]
);
//# sourceURL=hyva-variables.js
</script>
<script>
(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 groupSeparator = options.groupSeparator;
const decimalSeparator = options.decimalSeparator
delete options.groupSeparator;
delete options.decimalSeparator;
const formatter = new Intl.NumberFormat(
'fr\u002DFR',
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 '+ ';
case 'group':
return groupSeparator !== undefined ? groupSeparator : value;
case 'decimal':
return decimalSeparator !== undefined ? decimalSeparator : value;
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) => {
// Parse the content and extract the DOM node using the `targetSelector`
const parser = new DOMParser();
const doc = parser.parseFromString(content, 'text/html');
const contentNode = doc.querySelector(targetSelector);
// Bail if content or target can't be found
if (!contentNode || !document.querySelector(targetSelector)) {
return;
}
hyva.activateScripts(contentNode);
// Replace the old DOM node with the new content
document.querySelector(targetSelector).replaceWith(contentNode);
// Reload customerSectionData and display cookie-messages if present
window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
hyva.initMessages();
}
hyva.removeScripts = (contentNode) => {
const scripts = contentNode.getElementsByTagName('script');
for (let i = 0; i < scripts.length; i++) {
scripts[i].parentNode.removeChild(scripts[i]);
}
const templates = contentNode.getElementsByTagName('template');
for (let i = 0; i < templates.length; i++) {
const container = document.createElement('div');
container.innerHTML = templates[i].innerHTML;
hyva.removeScripts(container);
templates[i].innerHTML = container.innerHTML;
}
}
hyva.activateScripts = (contentNode) => {
// Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM.
const scripts = Array.from(contentNode.getElementsByTagName('script'));
// Iterate over all script tags to duplicate+inject each into the head
for (const original of scripts) {
const script = document.createElement('script');
original.type && (script.type = original.type);
script.innerHTML = original.innerHTML;
// Remove the original (non-executing) script from the contentNode
original.parentNode.removeChild(original)
// Add script to head
document.head.appendChild(script);
}
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.safeParseNumber = (rawValue) => {
const number = rawValue ? parseFloat(rawValue) : null;
return Array.isArray(number) || isNaN(number) ? rawValue : number;
}
const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
const camelCase = toCamelCase(name);
const key = '__hyva_bool_' + name
return new Proxy(Object.assign(
additionalMethods,
{
[key]: !!value,
[name]() {return !!this[key]},
['!' + name]() {return !this[key]}, // @deprecated This does not work with non-CSP Alpine
['not' + camelCase]() {return !this[key]},
['toggle' + camelCase]() {this[key] = !this[key]},
[`set${camelCase}True`]() {this[key] = true},
[`set${camelCase}False`]() {this[key] = false},
}
), {
set(target, prop, value) {
return prop === name
? (target[key] = !!value)
: Reflect.set(...arguments);
}
})
}
hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true});
window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
}( window.hyva = window.hyva || {} ));
//# sourceURL=hyva.js
</script>
<script type="speculationrules">
{
"tag": "Hyva Theme",
"prefetch": [{
"source": "document",
"where": {
"and": [
{ "href_matches": "/*" },
{ "not": {
"href_matches": ["/customer/*","/search/*","/sales/*","/wishlist/*","/checkout/*","/paypal/*","/newsletter/*","/stores/store/redirect/*"] }},
{ "not": {
"selector_matches": [".no-preload", ".do-not-prerender", "[download]", "[rel~=nofollow]", "[target]"]
}}
]
},
"eagerness": "moderate"
}]
}
</script>
<style>
:root {
--dynamic-bg-color: #bc6b5e;
}
</style>
<script
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/js/swiper/swiper-bundle.min.js"></script>
</head>
<body id="html-body" class="cms-home page-layout-1column cms-index-index page-layout-cms-full-width">
<noscript>
<iframe
src="https://www.googletagmanager.com/ns.html?id=GTM-N95VVZ2"
height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<style>
/*--add custom css for affiliate--*/
</style>
<script>
const crispPluginURL = "https://plugins.crisp.chat/urn:crisp.im:magento:0"
window.$crisp = [];
window.CRISP_WEBSITE_ID = "51ee87b2-9a09-4e4e-87a7-48756085e9ab";
(function () {
d = document;
s = d.createElement("script");
s.src = "https://client.crisp.chat/l.js";
s.async = 1;
d.getElementsByTagName("head")[0].appendChild(s);
})();
window.CRISP_READY_TRIGGER = __handleCrispTriggered;
function handleMagentoCustomerData(customerData) {
const _customer = customerData.get("customer")();
// No customer found, do not continue.
if (!_customer || Object.keys(_customer).length === 0) {
return;
}
// Set customers full name in Crisp
$crisp.push(['set', 'user:nickname', _customer.fullname]);
// Fetch customer data using Magento API
require(["jquery"], function ($) {
$.ajax({
url: "/rest/V1/customers/me",
type: "GET",
contentType: "application/json",
dataType: "json",
success: function (customer) {
// Set customer email in Crisp
if (customer.email) {
$crisp.push(['set', 'user:email', customer.email]);
}
// Post customer ID to Crisp
if (customer.id) {
__reportCrispData("customer", {id: parseInt(customer.id)})
}
},
error: function () {
// Ignore error
}
});
});
}
function handleMagentoCustomerCart(customerData) {
const _cartType = "cart";
const _cart = customerData.get("cart");
const _cartData = _cart();
const _currency = "EUR";
// Post cart immediately to Crisp
if (_cartData?.items?.length > 0) {
if (_currency !== null) {
_cartData.currency = _currency
}
__reportCrispData(_cartType, _cartData);
}
// Subscribe to cart changes and post to Crisp
_cart.subscribe((data) => {
if (_currency !== null) {
data.currency = _currency
}
if (data?.items?.length > 0) {
__reportCrispData(_cartType, data);
}
});
}
function __handleCrispTriggered() {
// Set 'magento' segment on session (only after first message is sent)
$crisp.push(["on", "message:sent", () => {
$crisp.push(["set", "session:segments", [["magento"]]]);
$crisp.push(["off", "message:sent"]);
}]);
// Only post data when chat is opened by the user for the first time.
$crisp.push(["on", "chat:opened", () => {
// Get and save Crisp session ID
window.CRISP_SESSION_ID = $crisp.get('session:identifier');
$crisp.push(["off", "chat:opened"]);
// Handle magento customer data and cart
require(["Magento_Customer/js/customer-data"], (customerData) => {
handleMagentoCustomerData(customerData);
handleMagentoCustomerCart(customerData);
});
}])
}
function __reportCrispData(type, body) {
fetch(
crispPluginURL +
"/visitors/website/" +
window.CRISP_WEBSITE_ID +
"/session/" +
window.CRISP_SESSION_ID +
"/" + type,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify(body),
}
);
}
</script>
<input name="form_key" type="hidden" value="6tSNyZIHOtonqYwu" />
<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"
aria-labelledby="messageGlobalNoScriptMessage"
>
<div class="container text-center">
<p id="messageGlobalNoScriptMessage">
<strong>Javascript est désactivé dans votre navigateur.</strong>
<span>
Pour une meilleure expérience sur notre site, assurez-vous d’activer JavaScript dans votre navigateur. </span>
</p>
</div>
</section>
</noscript>
<script>
'use strict';
(function () {
/**
* @typedef amPickupLocalStorage
* @property {Object} scheduleData
* @property {Object} store
* @property {boolean} isPickupSelected
* @property {boolean} isCurbsideChecked
* @property {string} curbsideComment
* @property {Object} dateValue
* @property {string} timeValue
*/
window.amPickupLocalStorage = window.amPickupLocalStorage || {
getObject: function () {
return hyva.getBrowserStorage().getItem('amPickupLocation')
? JSON.parse(hyva.getBrowserStorage().getItem('amPickupLocation'))
: {};
},
setObject: function (newObject) {
hyva.getBrowserStorage().setItem('amPickupLocation', JSON.stringify(newObject));
},
remove: function () {
hyva.getBrowserStorage().removeItem('amPickupLocation');
},
setIsPickupSelected: function (value) {
this.setObject({
...this.getObject(),
isPickupSelected: value
});
},
isPickupSelected: function () {
return (this.getObject().isPickupSelected && this.getObject().isPickupSelected !== undefined)
? Boolean(Number(this.getObject().isPickupSelected))
: null;
},
setScheduleData: function (value) {
this.setObject({
...this.getObject(),
scheduleData: value
});
},
getScheduleData: function () {
return (this.getObject().scheduleData && this.getObject().scheduleData !== undefined)
? this.getObject().scheduleData
: null;
},
setStore: function (value) {
this.setObject({
...this.getObject(),
store: value
});
},
getStore: function () {
return (this.getObject().store && this.getObject().store !== undefined)
? this.getObject().store
: null;
},
setCurbsideChecked: function (value) {
this.setObject({
...this.getObject(),
isCurbsideChecked: value
});
},
getCurbsideChecked: function () {
return (this.getObject().isCurbsideChecked && this.getObject().isCurbsideChecked !== undefined)
? this.getObject().isCurbsideChecked
: false;
},
setCurbsideComment: function (value) {
this.setObject({
...this.getObject(),
curbsideComment: value
});
},
getCurbsideComment: function () {
return (this.getObject().curbsideComment && this.getObject().curbsideComment !== undefined)
? this.getObject().curbsideComment
: null;
},
setDateValue: function (value) {
this.setObject({
...this.getObject(),
dateValue: value
});
},
getDateValue: function () {
return (this.getObject().dateValue && this.getObject().dateValue !== undefined)
? new Date(Number(this.getObject().dateValue))
: null;
},
setTimeValue: function (value) {
this.setObject({
...this.getObject(),
timeValue: value
});
},
getTimeValue: function () {
return (this.getObject().timeValue && this.getObject().timeValue !== undefined)
? this.getObject().timeValue
: null;
}
};
})();
</script>
<script src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Connectif_Integration/js/ajaxConnectifTagsCore.min.js"></script>
<script src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Connectif_Integration/js/ajaxConnectifTagsHyva.min.js"></script>
<script>
window.connectifAjaxTags({
url: 'https\u003A\u002F\u002Fwww.avril\u002Dbeaute.fr\u002Fconnectif\u002Ftags\u002Fajaxconnectiftags'
});
</script>
<script>
'use strict';
(function(hyva) {
const formValidationRules = {
required(value, options, field, context) {
const el = field.element.type === 'hidden' ? createTextInputFrom(field.element) : field.element,
msg = 'Ce\u0020champ\u0020est\u0020obligatoire.';
if (el.type === 'radio' || el.type === 'checkbox') {
return (value === undefined || value.length === 0) ? msg : true;
}
el.setAttribute('required', '');
el.checkValidity();
return el.validity.valueMissing ? msg : true;
},
maxlength(value, options, field, context) {
const n = Number(options)
if (value.length > n) {
return n === 1
? hyva.strf('Veuillez\u0020entrer\u0020au\u0020maximum\u00201\u0020caract\u00E8re.')
: hyva.strf('Veuillez\u0020entrer\u0020au\u0020maximum\u0020\u00250\u0020caract\u00E8res.', options)
}
return true;
},
minlength(value, options, field, context) {
const n = Number(options)
if (value.length > 0 && value.length < n) {
return n === 1
? hyva.strf('Veuillez\u0020entrer\u0020au\u0020moins\u00201\u0020caract\u00E8re.')
: hyva.strf('Veuillez\u0020entrer\u0020au\u0020moins\u0020\u00250\u0020caract\u00E8res.', options)
}
return true;
},
max(value, options, field, context) {
field.element.setAttribute('max', options);
field.element.checkValidity();
if (field.element.validity.rangeOverflow) {
return hyva.strf('Veuillez\u0020entrer\u0020une\u0020valeur\u0020inf\u00E9rieure\u0020ou\u0020\u00E9gale\u0020\u00E0\u0020\u0022\u00250\u0022.', options);
}
return true;
},
min(value, options, field, context) {
field.element.setAttribute('min', options);
field.element.checkValidity();
if (field.element.validity.rangeUnderflow) {
return hyva.strf('Veuillez\u0020entrer\u0020une\u0020valeur\u0020sup\u00E9rieure\u0020ou\u0020\u00E9gale\u0020\u00E0\u0020\u0022\u00250\u0022.', options);
}
return true;
},
step(value, options, field, context) {
field.element.setAttribute('step', options);
field.element.checkValidity();
if (field.element.validity.stepMismatch) {
const val = Number(value);
const step = Number(options);
const msg = 'Veuillez\u0020entrer\u0020une\u0020valeur\u0020valide.\u0020L\u002Bes\u0020deux\u0020valeurs\u0020valides\u0020les\u0020plus\u0020proches\u0020sont\u0020\u0022\u00250\u0022\u0020et\u0020\u0022\u00251\u0022.';
return hyva.strf(msg, Math.floor(val / step) * step, Math.ceil(val / step) * step);
}
return true;
},
pattern(value, options, field, context) {
field.element.setAttribute('pattern', options);
field.element.checkValidity();
if (field.element.validity.patternMismatch) {
return field.element.title
? hyva.strf('Please\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00250.', field.element.title)
: 'Veuillez\u0020respecter\u0020le\u0020format\u0020demand\u00E9.'
}
return true;
},
email(value, options, field, context) {
const rule = /^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i;
if (value.length > 0 && !rule.test(value)) {
return 'Saisissez\u0020un\u0020email\u0020valide.';
}
return true;
},
password(value, options, field, context) {
const rule = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;
if (value.length > 0 && !rule.test(value)) {
return 'Please\u0020provide\u0020at\u0020least\u0020one\u0020upper\u0020case,\u0020one\u0020lower\u0020case,\u0020one\u0020digit\u0020and\u0020one\u0020special\u0020character\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026\u002A\u002D\u0029';
}
return true;
},
equalTo(value, options, field, context) {
const dependencyField = context.fields[options].element;
if (value !== dependencyField.value) {
const dependencyFieldName =
dependencyField.label ||
dependencyField.title ||
(dependencyField.labels && dependencyField.labels[0] && dependencyField.labels[0].innerText) ||
dependencyField.name;
return hyva.strf('Cette\u0020valeur\u0020doit\u0020\u00EAtre\u0020identique\u0020au\u0020champ\u0020\u0022\u00250\u0022.', dependencyFieldName);
}
return true;
}
};
function raceSome(promises, pred) {
return new Promise((resolve, reject) => {
if (promises.length === 0) {
return resolve();
}
let settled = false, nDone = 0;
const resolveIf = v => {
if (!settled && (pred(v) || ++nDone === promises.length)) {
settled = true;
resolve(v);
}
return v;
}
promises.map(promise => {
promise.then(resolveIf).catch(reason => {
settled = true;
reject(reason)
});
return promise;
});
});
}
const INPUT_ATTRIBUTE_RULES = {min: 'min', max: 'max', required: 'required', minlength: 'minlength', maxlength: 'maxlength', step: 'step', pattern: 'pattern'}
const INPUT_TYPE_RULES = {email: 'email'}
function getRules(element) {
let rules = {};
Object.keys(INPUT_ATTRIBUTE_RULES).forEach(attrName => {
if (element.hasAttribute(attrName)) {
rules[INPUT_ATTRIBUTE_RULES[attrName]] = element.getAttribute(attrName);
}
})
if (INPUT_TYPE_RULES[element.type]) {
rules[INPUT_TYPE_RULES[element.type]] = true;
}
if (element.dataset.validate) {
try {
Object.assign(rules, JSON.parse(element.dataset.validate));
} catch (error) {
console.error('Validator error. Cannot parse data-validate attribute of element:\n', element);
}
}
return rules;
}
function isInvalidRuleResult(ruleState) {
return typeof ruleState === 'string' || !ruleState || (ruleState.type && ruleState.content);
}
async function runValidateFn(rule, options, value, field) {
return formValidationRules[rule](value, options, field, this);
}
function generateId() {
let id;
do {
id = `${this.idPrefix}-${++this.idSeq}`;
} while (document.getElementById(id));
return id;
}
function isVisible(element) {
const el = element.type !== 'hidden' ? element : (element.parentElement || {});
return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length)
}
function elementWillValidate(element) {
return (element.willValidate || element.type === 'hidden')
&& element.tagName !== 'BUTTON'
&& element.disabled === false
&& !(element.tagName === 'INPUT' && element.type === 'submit')
&& (element.hasAttribute('data-validate-hidden') || isVisible(element))
}
function createMessageContainer(el, fieldWrapperClassName) {
if (! el.parentElement) {
return;
}
const refocus = document.activeElement === el;
const wrapper = document.createElement('div');
wrapper.classList.add.apply(wrapper.classList, fieldWrapperClassName.split(' '));
el.parentElement.insertBefore(wrapper, el);
wrapper.appendChild(el);
refocus && document.activeElement !== el && el.focus();
return wrapper;
}
function containerNotFound(selector, el) {
const msg = `Cannot find message container element ${selector} of ${el.name}`;
console.error(msg, el);
throw msg;
}
function createTextInputFrom(el) {
const text = document.createElement('INPUT');
text.type = 'text';
text.value = el.value;
return text;
}
function classNamesToSelector(classNames) {
return classNames.split(' ')
.filter(className => className.length > 0)
.map(className => `.${className}`)
.join('')
}
function hasMessagesWrapper(field, messagesWrapperClassName) {
return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName));
}
function getMessagesWrapper(field, messagesWrapperClassName) {
if (hasMessagesWrapper.call(this, field, messagesWrapperClassName)) {
return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName));
}
const msgWrapper = document.createElement('ul');
const msgId = generateId.call(this);
msgWrapper.id = msgId;
field.element.setAttribute('aria-errormessage', msgId);
field.element.setAttribute('aria-describedby', msgId);
msgWrapper.classList.add.apply(msgWrapper.classList, messagesWrapperClassName.split(' '));
if (field.validateOnChange) {
msgWrapper.setAttribute('aria-live', 'polite');
}
this.getMessageContainer(field).appendChild(msgWrapper);
return msgWrapper;
}
function getCheckedValues(field) {
const name = field.element.name.replace(/([\\"])/g, '\\$1');
const elements = field.element.form.querySelectorAll('input[name="' + name + '"]:checked');
return Array.from(elements).map(el => el.value);
}
function escapeHtml(s) {
const div = document.createElement('div')
div.innerText = s;
return div.innerHTML;
}
function formValidationAjax(form, options = {}) {
const instance = hyva.formValidation(form, options);
// Override pour ne jamais créer de container autour de l'input
instance.getMessagesWrapper = function(field, messagesClassName) {
const container = field.element.parentElement; // on prend juste le parent
let msgWrapper = container.querySelector(`.${messagesClassName}`);
if (!msgWrapper) {
msgWrapper = document.createElement('ul');
msgWrapper.classList.add(messagesClassName);
container.appendChild(msgWrapper);
}
return msgWrapper;
}
return instance;
}
function formValidation(form, options = {}) {
const formElement = form || this.$el;
if (formElement.dataset && formElement.dataset.options) {
try {
options = Object.assign(options, JSON.parse(formElement.dataset.options || '{}'));
} catch (e) {
throw new Error('Cannot read the form options from the data-options attribute: not valid JSON');
}
}
// Disable browser default validation
if (formElement.tagName === 'FORM') {
formElement.setAttribute('novalidate', '');
} else {
console.error('formValidation can be initialized only on FORM element', formElement);
return;
}
options = Object.assign({
fieldWrapperClassName: 'field field-reserved',
messagesWrapperClassName: 'messages',
validClassName: 'field-success',
invalidClassName: 'field-error',
pageMessagesWrapperSelector: null,
scrollToFirstError: true,
}, options || {});
return {
state: {
valid: false,
},
fields: {},
idSeq: 0,
idPrefix: formElement.id || 'vld-msg',
setupFields(elements) {
this.fields = {};
Array.from(elements).forEach(element => {
if (elementWillValidate(element)) {
this.setupField(element);
}
});
},
setupField(element) {
if (! element) return;
const onChange = !!element.dataset.onChange;
if (elementWillValidate(element)) {
const rules = getRules(element);
if (Object.keys(rules).length > 0) {
if (this.fields[element.name]) {
Object.assign(this.fields[element.name].rules, rules);
} else {
this.fields[element.name] = {
element,
rules: rules,
validateOnChange: onChange,
state: {
valid: null,
rules: {}
}
}
}
}
} else {
console.error('Element will not validate', element);
}
},
onSubmit(event) {
if (event.target.tagName === 'FORM') {
event.preventDefault();
this.validate()
.then(() => event.target.submit())
.catch(invalidElements => {});
}
},
onChange(event) {
event.target.dataset.onChange = 'true';
if (!Object.keys(this.fields).length) {
this.setupFields(formElement.elements);
}
if (!Object.keys(this.fields).includes(event.target.name)) {
this.setupField(event.target);
}
const field = this.fields[event.target.name];
this.validateField(field);
field && field.element.removeAttribute('data-on-change')
},
validateSafe() {
return new Promise(resolve => this.validate().then(() => resolve(true)).catch(() => {}))
},
validate() {
if (!Object.keys(this.fields).length || !Object.keys(this.fields).length !== formElement.elements.length) {
this.setupFields(formElement.elements);
}
return new Promise(async (resolve, reject) => {
if (formElement.elements) {
await raceSome(this.validateFields(), result => result !== true)
const invalidFields = Object.values(this.fields).filter(field => !field.state.valid);
this.state.valid = invalidFields.length === 0;
if (this.state.valid) {
resolve();
} else {
if (options.scrollToFirstError && invalidFields.length > 0) {
invalidFields[0].element.focus()
invalidFields[0].element.select && invalidFields[0].element.select();
}
reject(invalidFields.map(field => field.element));
}
}
});
},
validateFields() {
const fields = Object.values(this.fields);
fields.forEach(field => {
this.getMessageContainer(field).classList.remove(options.validClassName, options.invalidClassName)
});
return fields.map(field => this.validateField(field))
},
validateField(field) {
if (! field || ! elementWillValidate(field.element)) {
return new Promise(resolve => resolve(true))
}
let value;
if (field.element.type === 'checkbox') {
value = getCheckedValues(field);
} else if (field.element.type === 'radio') {
value = getCheckedValues(field)[0] || undefined;
} else if (field.element.tagName === 'SELECT' && field.element.multiple) {
value = Array.from(field.element.selectedOptions).map(opt => opt.value);
} else {
value = field.element.value;
}
const rules = field.rules || {};
field.state.valid = true;
this.showFieldState(field);
const fieldValidations = Object.keys(rules).filter(rule => formValidationRules[rule]).map(async rule => {
return runValidateFn.call(this, rule, rules[rule], value, field).then(result => {
field.state.rules[rule] = result;
return result;
})
});
return new Promise(resolve => {
Promise.all(fieldValidations).then(results => {
field.state.valid = !elementWillValidate(field.element) || rules.length === 0 || !results.some(isInvalidRuleResult)
this.showFieldState(field);
resolve(field.state.valid);
})
});
},
getMessagesByField(field) {
const messages = [];
const invalidRules = Object.keys(field.state.rules).filter(rule => isInvalidRuleResult(field.state.rules[rule]));
field.rules && Object.keys(field.rules).forEach((rule) => {
if (invalidRules.includes(rule)) {
const customMessage = field.element.getAttribute('data-msg-' + rule);
const message = customMessage ? customMessage : field.state.rules[rule];
const ruleOptions = JSON.parse(JSON.stringify(field.rules[rule]));
if (typeof message === 'undefined' || message === null || (typeof message !== 'string' && ! message.type)) {
messages.push(hyva.strf('Validation rule "%0" failed.', rule));
} else if (Array.isArray(ruleOptions)) {
ruleOptions.unshift(message.type ? message.content : message);
const content = hyva.strf.apply(null, ruleOptions);
messages.push(message.type ? {type: message.type, content} : content);
} else {
const content = hyva.strf(message.type ? message.content : message, ruleOptions)
messages.push(message.type ? {type: message.type, content} : content);
}
}
});
return messages;
},
/** @deprecated */
getFieldWrapper(field) {
return this.getMessageContainer(field)
},
getMessageContainer(field) {
let container;
const pageSelector = field.element.getAttribute('data-validation-container') || options.pageMessagesContainerSelector;
if (pageSelector) {
container = document.querySelector(pageSelector)
|| containerNotFound(pageSelector, field.element)
} else {
const containerSelector = classNamesToSelector(options.fieldWrapperClassName);
container = field.element.closest(containerSelector)
|| createMessageContainer(field.element, options.fieldWrapperClassName)
|| containerNotFound(containerSelector, field.element);
}
return container;
},
showFieldState(field) {
const container = this.getMessageContainer(field),
hasErrorMessages = hasMessagesWrapper.call(this, field, options.messagesWrapperClassName),
messages = this.getMessagesByField(field).map(m => {
return m.type !== 'html' ? escapeHtml(m.type ? m.content : m) : m.content;
});
container.classList.toggle(options.validClassName, field.state.valid && ! hasErrorMessages);
container.classList.toggle(options.invalidClassName, !field.state.valid || hasErrorMessages);
this.createHtmlErrorMessage(field, messages);
if (field.state.valid) {
field.element.removeAttribute('aria-invalid');
} else {
field.element.setAttribute('aria-invalid', 'true');
if (! document.activeElement) {
field.element.focus();
}
}
},
removeMessages(field, messagesClass) {
if (! hasMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName)) {
return;
}
const msgWrapper = getMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName);
const messages = msgWrapper.querySelectorAll(`[data-msg-field='${field.element.name}']`);
Array.from(messages).forEach(msg => msg.remove());
if (msgWrapper && msgWrapper.childElementCount === 0) {
field.element.removeAttribute('aria-errormessage');
field.element.removeAttribute('aria-describedby');
msgWrapper.remove();
}
},
createErrorMessage(field, messages) {
const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml)
this.createHtmlErrorMessage(field, htmlMessages);
},
createHtmlErrorMessage(field, messages) {
this.removeMessages(field, options.messagesWrapperClassName);
field.element.removeAttribute('aria-errormessage');
field.element.removeAttribute('aria-describedby');
if (!field.state.valid) {
const msgWrapper = this.addHtmlMessages(field, options.messagesWrapperClassName, messages);
field.element.setAttribute('aria-errormessage', msgWrapper.id);
field.element.setAttribute('aria-describedby', msgWrapper.id);
}
},
/** @deprecated */
createMessage(field, message) {
return this.addMessages(field, options.messagesWrapperClassName, message);
},
addMessages(field, messagesClass, messages) {
const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml)
return this.addHtmlMessages(field, messagesClass, htmlMessages);
},
addHtmlMessages(field, messagesClass, htmlMessages) {
const msgWrapper = getMessagesWrapper.call(this, field, messagesClass);
(Array.isArray(htmlMessages) ? htmlMessages : [htmlMessages]).forEach((htmlMessage) => {
const li = document.createElement('li');
li.innerHTML = htmlMessage;
li.setAttribute('data-msg-field', field.element.name);
msgWrapper.appendChild(li);
});
return msgWrapper;
},
setField(name, value) {
this.fields[name].element.value = value;
this.fields[name].element.dispatchEvent((new Event('input')));
this.validateField(this.fields[name]);
}
}
}
hyva.formValidation = formValidation;
hyva.formValidationAjax = formValidationAjax;
hyva.formValidation.rules = formValidationRules;
hyva.formValidation.setInputAttributeRuleName = (attrName, ruleName) => INPUT_ATTRIBUTE_RULES[attrName] = ruleName || attrName;
hyva.formValidation.setInputTypeRuleName = (typeName, ruleName) => INPUT_TYPE_RULES[typeName] = ruleName || typeName;
hyva.formValidation.addRule = (name, validator) => formValidationRules[name] = validator;
hyva.formValidation.addRule(
'validate-custom-nif',
(v) => {
if (!v || v.length === 0) {
return true;
}
let msg = 'Veuillez\u0020saisir\u0020jusqu\u2019\u00E0\u00209\u0020caract\u00E8res\u0020alphanum\u00E9riques.';
return /^[a-zA-Z0-9]{1,9}$/.test(v) ? true : msg;
}
);
}(window.hyva = window.hyva || {}));
window.addEventListener('alpine:init', () => {
Alpine.data('hyva.formValidation', hyva.formValidation);
Alpine.data('hyva.formValidation($el)', hyva.formValidation);
}, {once: true});
</script>
<div class="page-wrapper"><header class="page-header"><div class="header-message dynamic-bg-color py-2 px-5 text-white text-13"><style>#html-body [data-pb-style=BHYHUC6]{text-align:center;border-style:none}</style><div class="text-white" data-content-type="html" data-appearance="default" data-element="main" data-pb-style="BHYHUC6" data-decoded="true">Découvrez notre <a href="https://www.avril-beaute.fr/calendrier-de-l-avent-2026-24-jours-pour-bien-etre-soi-2325.html" style="text-decoration: underline; color: inherit;">calendrier de l'Avent</a> dans son coffret réutilisable</div></div><a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white contentarea"
href="#contentarea">
<span>
Allez au contenu </span>
</a>
<script>
function initHeader() {
return {
searchOpen: false,
cart: {},
isCartOpen: false,
header: document.querySelector('header'),
headerMessage: document.querySelector('.header-message'),
logoFix: document.querySelectorAll('.fixed-logo'),
logoSticky: document.querySelectorAll('.sticky-logo'),
bindDropdownHover() {
document.querySelectorAll('li.dropdown > ul').forEach(ul => {
const li = ul.closest('li.dropdown');
li.addEventListener('mouseenter', () => {
this.header.classList.add('dropdown-hover')
});
li.addEventListener('mouseleave', () => {
this.header.classList.remove('dropdown-hover')
});
})
},
getData(data) {
if (data.cart) {
this.cart = data.cart
}
},
isCartEmpty() {
return !this.cart.summary_count
},
toggleHeaderFixed() {
const isScrolled = window.scrollY > 0;
this.header.classList.toggle("fixed-header", isScrolled);
this.logoFix.forEach(el => {
el.classList.toggle("hidden", isScrolled);
});
this.logoSticky.forEach(el => {
el.classList.toggle("hidden", !isScrolled);
});
if (this.headerMessage) {
this.headerMessage.classList.toggle("hidden", isScrolled);
}
},
toggleCart(event) {
if (event.detail && event.detail.isOpen !== undefined) {
this.isCartOpen = event.detail.isOpen
if (!this.isCartOpen && this.$refs && this.$refs.cartButton) {
this.$refs.cartButton.focus()
}
} else {
this.isCartOpen = true
}
}
}
}
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 id="header"
class="z-30 w-full bg-transparent relative"
x-data="initHeader()"
x-init="toggleHeaderFixed(); bindDropdownHover()"
@scroll.window="toggleHeaderFixed()"
@private-content-loaded.window="getData(event.detail.data)"
@search-close.window=" searchOpen = false; $refs.searchButton && $refs.searchButton.focus(); "
>
<div class="container flex items-center justify-between w-full p-3 md:px-6 mx-auto mt-0">
<!--Logo (we define z-20 here to let it go on top of our megamenu) -->
<div class="z-20 hidden lg:block">
<div class="fixed-logo order-2 lg:order-1 w-auto">
<a
class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title w-[60px] h-[52px] md:w-[78px] md:h-[68px] mx-auto"
href="https://www.avril-beaute.fr/"
aria-label="Go to Home page"
>
<img
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/logo.svg"
alt="Avril"
width="78" height="68" loading="eager"
/>
</a>
</div>
<div class="sticky-logo hidden order-2 lg:order-1 w-auto">
<a
class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title w-[30px] h-[30px] mx-auto"
href="https://www.avril-beaute.fr/"
aria-label="Go to Home page"
>
<img
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/logo-floral.svg"
alt="Avril"
width="30"
height="30"
loading="eager"
/>
</a>
</div>
</div>
<!--Main Navigation-->
<div class="block order-3 lg:hidden lg:order-0">
<div class="fixed-logo order-2 lg:order-1 w-auto">
<a
class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title w-[60px] h-[52px] md:w-[78px] md:h-[68px] mx-auto"
href="https://www.avril-beaute.fr/"
aria-label="Go to Home page"
>
<img
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/logo.svg"
alt="Avril"
width="78" height="68" loading="eager"
/>
</a>
</div>
<div class="sticky-logo hidden order-2 lg:order-1 w-auto">
<a
class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title w-[30px] h-[30px] mx-auto"
href="https://www.avril-beaute.fr/"
aria-label="Go to Home page"
>
<img
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/logo-floral.svg"
alt="Avril"
width="30"
height="30"
loading="eager"
/>
</a>
</div>
</div>
<div class="flex items-center gap-2">
<div class="section-item-content nav-sections-item-content w-full lg:block !mb-0 mt-0 hidden order-2" x-cloak>
<div class="menu-container horizontal-menu">
<div data-action="navigation" class="bg-inherit menu avril left" x-cloak>
<div x-data="primaryMenu()" x-init="init()" class="w-full" x-cloak>
<ul class="!static md-top-menu-items flex items-center justify-center"><li class="product-menu dropdown menu-dropdown-icon category-item nav-1019"> <a class="relative" href="https://www.avril-beaute.fr/soin.html" > <span class="megaitemicons"></span> Soin <span class="block w-8 h-8 absolute top-1/2 right-2 -translate-y-1/2 md:hidden"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg> </span> </a> <ul class="w-full bg-white shadow-lg justify-center transition-all duration-300 ease-in-out"> <li> <ul class="column2 container flex"> <li class="mega-static-block menu-content col-menu-9"> <ul class="column4 child-level-1"><li class=category-item nav-1019-20 "><a href="https://www.avril-beaute.fr/soin/visage.html" >Visage</a><ul class="child-level-2"><li class=category-item nav-1019-22 "><a href="https://www.avril-beaute.fr/soin/visage/soin-visage.html" >Crème</a></li><li class=category-item nav-1019-98 "><a href="https://www.avril-beaute.fr/soin/visage/serum-visage.html" >Sérum</a></li><li class=category-item nav-1019-23 "><a href="https://www.avril-beaute.fr/soin/visage/masque-visage.html" >Masque & gommage</a></li><li class=category-item nav-1019-21 "><a href="https://www.avril-beaute.fr/soin/visage/nettoyant.html" >Nettoyant</a></li><li class=category-item nav-1019-433 "><a href="https://www.avril-beaute.fr/soin/visage/demaquillant.html" >Démaquillant</a></li><li class=category-item nav-1019-440 "><a href="https://www.avril-beaute.fr/soin/visage/soin-des-levres.html" >Soin des lèvres</a></li><li class=category-item nav-1019-441 "><a href="https://www.avril-beaute.fr/soin/visage/huiles-eaux-florales.html" >Huile & eau florale</a></li></ul></li><li class=category-item nav-1019-24 "><a href="https://www.avril-beaute.fr/soin/corps-et-douche.html" >Corps & douche</a><ul class="child-level-2"><li class=category-item nav-1019-25 "><a href="https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps.html" >Soin corps</a></li><li class=category-item nav-1019-26 "><a href="https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche.html" >Savon & gel douche</a></li><li class=category-item nav-1019-27 "><a href="https://www.avril-beaute.fr/soin/corps-et-douche/deodorant.html" >Déodorant</a></li><li class=category-item nav-1019-28 "><a href="https://www.avril-beaute.fr/soin/corps-et-douche/dentifrices.html" >Dentifrice</a></li><li class=category-item nav-1019-29 "><a href="https://www.avril-beaute.fr/soin/corps-et-douche/accessoires.html" >Accessoires</a></li></ul></li><li class=category-item nav-1019-30 "><a href="https://www.avril-beaute.fr/soin/cheveux.html" >Cheveux</a><ul class="child-level-2"><li class=category-item nav-1019-31 "><a href="https://www.avril-beaute.fr/soin/cheveux/shampooings-apres-shampooing.html" >Shampooing</a></li><li class=category-item nav-1019-445 "><a href="https://www.avril-beaute.fr/soin/cheveux/apres-shampooing.html" >Après-shampooing</a></li><li class=category-item nav-1019-446 "><a href="https://www.avril-beaute.fr/soin/cheveux/soin-coiffant.html" >Soin & coiffant</a></li><li class=category-item nav-1019-410 "><a href="https://www.avril-beaute.fr/soin/cheveux/cheveux.html" >Par préoccupation</a></li></ul></li><li class=category-item nav-1019-309 "><a href="https://www.avril-beaute.fr/soin/accessoires.html" >Accessoires</a><ul class="child-level-2"><li class=category-item nav-1019-442 "><a href="https://www.avril-beaute.fr/soin/accessoires/gants-eponges.html" >Gants & éponges</a></li><li class=category-item nav-1019-443 "><a href="https://www.avril-beaute.fr/soin/accessoires/trousses-contenants.html" >Trousses & contenants</a></li><li class=category-item nav-1019-444 "><a href="https://www.avril-beaute.fr/soin/accessoires/autres-contenants.html" >Autres accessoires</a></li></ul></li></ul> </li> <li class="mega-static-block menu-sidebar-right"><ul><li><style>#html-body [data-pb-style=C5A1YVN]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=PR6VNIN]{display:flex;width:100%}#html-body [data-pb-style=FY3H93H],#html-body [data-pb-style=HWU0KLB]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:50%;align-self:stretch}#html-body [data-pb-style=FY3H93H]{text-align:left}#html-body [data-pb-style=BGQSIBW]{border-style:none}#html-body [data-pb-style=J5OBEEG],#html-body [data-pb-style=MC7KHKN]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=BGQSIBW]{border-style:none} }</style><div class="pagebuilder-column-group border-r border-l-2 border-gray-300" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="C5A1YVN"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="PR6VNIN"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="HWU0KLB"><div class="category-item-link" data-content-type="text" data-appearance="default" data-element="main"><p>Sélection</p></div><div class="megamenu-cms-list-items-wrapper" data-content-type="text" data-appearance="default" data-element="main"><ul> <li> <p><a tabindex="0" href="/nouveau/nouveautes-soin.html">Nouveautés</a></p> </li> <li> <p><a tabindex="0" href="/selections-avril/best-sellers-soin-bio-avril-hiver-2024-2025.html">Meilleures ventes</a></p> </li> <li> <p><a tabindex="0" href="/selections-avril/produits-a-reconstituer.html">Soin rechargeable</a></p> </li> <li> <p><a tabindex="0" href="/selections-avril/vegan/soin-vegan.html">Végan</a></p> </li> <li> <p><a tabindex="0" href="/zero-gaspi/soin-zero-gaspi.html">Zéro gaspi</a></p> </li> </ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="FY3H93H"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="BGQSIBW"><a href="https://www.avril-beaute.fr/soin/visage/soin-visage/anti-age.html" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/wysiwyg/encart_cest_nouveau_copie______1.jpg" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="desktop_image" data-pb-style="J5OBEEG"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/wysiwyg/encart_cest_nouveau_copie______1.jpg" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="mobile_image" data-pb-style="MC7KHKN"></a></figure><div class="megamenu-cms-box-content" data-content-type="text" data-appearance="default" data-element="main"><p class="mt-4"><a tabindex="0" href="https://www.avril-beaute.fr/soin/visage/soin-visage/anti-age.html">Gamme PRO AGE +</a></p> <p class="mb-4">Notre réponse aux peaux matures</p> <p id="J5XF472"><a tabindex="0" href="https://www.avril-beaute.fr/soin/visage/soin-visage/anti-age.html"><span class="underline">Découvrir</span> -></a></p></div></div></div></div></li></ul></li> </ul> </li> </ul> </li><li class="product-menu dropdown menu-dropdown-icon category-item nav-1020"> <a class="relative" href="https://www.avril-beaute.fr/maquillage.html" > <span class="megaitemicons"></span> Maquillage <span class="block w-8 h-8 absolute top-1/2 right-2 -translate-y-1/2 md:hidden"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg> </span> </a> <ul class="w-full bg-white shadow-lg justify-center transition-all duration-300 ease-in-out"> <li> <ul class="column2 container flex"> <li class="mega-static-block menu-content col-menu-9"> <ul class="column4 child-level-1"><li class=category-item nav-1020-14 "><a href="https://www.avril-beaute.fr/maquillage/maquillage.html" >Maquillage </a><ul class="child-level-2"><li class=category-item nav-1020-6 "><a href="https://www.avril-beaute.fr/maquillage/maquillage/teint.html" >Teint</a></li><li class=category-item nav-1020-4 "><a href="https://www.avril-beaute.fr/maquillage/maquillage/yeux.html" >Yeux</a></li><li class=category-item nav-1020-7 "><a href="https://www.avril-beaute.fr/maquillage/maquillage/levres.html" >Lèvres</a></li><li class=category-item nav-1020-8 "><a href="https://www.avril-beaute.fr/maquillage/maquillage/ongles.html" >Ongles</a></li><li class=category-item nav-1020-9 "><a href="https://www.avril-beaute.fr/maquillage/maquillage/palettes-de-maquillage.html" >Palettes de maquillage</a></li></ul></li><li class=category-item nav-1020-15 "><a href="https://www.avril-beaute.fr/maquillage/demaquillant.html" >Préparation & démaquillage</a><ul class="child-level-2"><li class=category-item nav-1020-424 "><a href="https://www.avril-beaute.fr/maquillage/demaquillant/base-fixateur.html" >Base & fixateur</a></li><li class=category-item nav-1020-425 "><a href="https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant.html" >Nettoyant</a></li><li class=category-item nav-1020-16 "><a href="https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant.html" >Démaquillant</a></li></ul></li><li class=category-item nav-1020-10 "><a href="https://www.avril-beaute.fr/maquillage/pinceaux.html" >Accessoires</a><ul class="child-level-2"><li class=category-item nav-1020-422 "><a href="https://www.avril-beaute.fr/maquillage/pinceaux/pinceaux.html" >Pinceaux</a></li><li class=category-item nav-1020-419 "><a href="https://www.avril-beaute.fr/maquillage/pinceaux/houppettes-blender.html" >Houppettes & blenders</a></li><li class=category-item nav-1020-420 "><a href="https://www.avril-beaute.fr/maquillage/pinceaux/gants-eponges.html" >Gants & éponges </a></li><li class=category-item nav-1020-421 "><a href="https://www.avril-beaute.fr/maquillage/pinceaux/accessoires-pour-les-ongles.html" >Accessoires pour les ongles </a></li><li class=category-item nav-1020-423 "><a href="https://www.avril-beaute.fr/maquillage/pinceaux/trousses-contenants.html" >Trousses & contenants </a></li></ul></li></ul> </li> <li class="mega-static-block menu-sidebar-right"><ul><li><style>#html-body [data-pb-style=PS6P00M]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=JAO6M6D]{display:flex;width:100%}#html-body [data-pb-style=J0EA5HO],#html-body [data-pb-style=VXEB4OS]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:50%;align-self:stretch}#html-body [data-pb-style=J0EA5HO]{text-align:left}#html-body [data-pb-style=STOP6LD]{border-style:none}#html-body [data-pb-style=LQLYW6J],#html-body [data-pb-style=RE3XLSL]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=STOP6LD]{border-style:none} }</style><div class="pagebuilder-column-group border-r border-l-2 border-gray-300" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="PS6P00M"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="JAO6M6D"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="VXEB4OS"><div class="category-item-link" data-content-type="text" data-appearance="default" data-element="main"><p>Sélection</p></div><div class="megamenu-cms-list-items-wrapper" data-content-type="text" data-appearance="default" data-element="main"><ul> <li> <p><a tabindex="0" href="/nouveau/nouveautes-maquillage.html">Nouveautés</a></p> </li> <li> <p><a tabindex="0" href="/selections-avril/best-sellers-maquillage-bio-avril-hiver-2024-2025.html">Meilleures ventes</a></p> </li> <li> <p><a href="https://www.avril-beaute.fr/selections-avril/vegan/maquillage-vegan.html">Végan</a></p> </li> <li> <p><a tabindex="0" href="/zero-gaspi/maquillage-zero-gaspi.html">Zéro gaspi</a></p> </li> </ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="J0EA5HO"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="STOP6LD"><a href="/rdv-make-up-soft-glam" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/wysiwyg/092a76f2-c6ad-407f-89d0-aba010a1a938.jpg" alt="" title="" width="200" height="200" loading="lazy" data-use-native-image-dimensions="false" data-element="desktop_image" data-pb-style="LQLYW6J"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/wysiwyg/092a76f2-c6ad-407f-89d0-aba010a1a938.jpg" alt="" title="" width="200" height="200" loading="lazy" data-use-native-image-dimensions="false" data-element="mobile_image" data-pb-style="RE3XLSL"></a></figure><div class="megamenu-cms-box-content" data-content-type="text" data-appearance="default" data-element="main"><p class="mt-4"><a href="/rdv-make-up-soft-glam">RDV make-up soft glam</a></p> <p id="L9YTDQR" class="mb-4">Naturel & sophistiqué</p> <p id="J5XF472"><a href="/rdv-make-up-soft-glam"><span class="underline">Découvrir</span> →</a></p></div></div></div></div></li></ul></li> </ul> </li> </ul> </li><li class="product-menu dropdown menu-dropdown-icon category-item nav-1021"> <a class="relative" href="https://www.avril-beaute.fr/homme.html" > <span class="megaitemicons"></span> Homme <span class="block w-8 h-8 absolute top-1/2 right-2 -translate-y-1/2 md:hidden"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg> </span> </a> <ul class="w-full bg-white shadow-lg justify-center transition-all duration-300 ease-in-out"> <li> <ul class="column2 container flex"> <li class="mega-static-block menu-content col-menu-9"> <ul class="column4 child-level-1"><li class=category-item nav-1021-151 "><a href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage.html" >Soin visage et rasage</a><ul class="child-level-2"><li class=category-item nav-1021-157 "><a href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage.html" >Soin visage</a></li><li class=category-item nav-1021-152 "><a href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage/rasage.html" >Rasage</a></li><li class=category-item nav-1021-161 "><a href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage.html" >Nettoyant visage</a></li><li class=category-item nav-1021-312 "><a href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage/accessoires.html" >Accessoires</a></li></ul></li><li class=category-item nav-1021-166 "><a href="https://www.avril-beaute.fr/homme/corps-et-douche.html" >Corps et douche</a><ul class="child-level-2"><li class=category-item nav-1021-167 "><a href="https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps.html" >Soin & gommage</a></li><li class=category-item nav-1021-231 "><a href="https://www.avril-beaute.fr/homme/corps-et-douche/savon-gel-douche.html" >Savon & gel douche</a></li><li class=category-item nav-1021-232 "><a href="https://www.avril-beaute.fr/homme/corps-et-douche/deodorant.html" >Déodorant</a></li><li class=category-item nav-1021-233 "><a href="https://www.avril-beaute.fr/homme/corps-et-douche/dentifrice.html" >Dentifrice</a></li><li class=category-item nav-1021-173 "><a href="https://www.avril-beaute.fr/homme/corps-et-douche/accessoires.html" >Accessoires</a></li></ul></li><li class=category-item nav-1021-180 "><a href="https://www.avril-beaute.fr/homme/cheveux.html" >Cheveux</a><ul class="child-level-2"><li class=category-item nav-1021-234 "><a href="https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing.html" >Shampooing et après shampooing</a></li><li class=category-item nav-1021-181 "><a href="https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants.html" >Soin et produit coiffant</a></li><li class=category-item nav-1021-188 "><a href="https://www.avril-beaute.fr/homme/cheveux/accessoires.html" >Accessoires</a></li></ul></li></ul> </li> <li class="mega-static-block menu-sidebar-right"><ul><li><style>#html-body [data-pb-style=OEID26D]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=A0SN62B]{display:flex;width:100%}#html-body [data-pb-style=JN2Q2UV],#html-body [data-pb-style=TS6JT8B]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:50%;align-self:stretch}#html-body [data-pb-style=JN2Q2UV]{text-align:left}#html-body [data-pb-style=TRD9G6M]{border-style:none}#html-body [data-pb-style=A34N2SU],#html-body [data-pb-style=AVL4N4U]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=TRD9G6M]{border-style:none} }</style><div class="pagebuilder-column-group border-r border-l-2 border-gray-300" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="OEID26D"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="A0SN62B"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="TS6JT8B"><div class="category-item-link" data-content-type="text" data-appearance="default" data-element="main"><p>Sélection</p></div><div class="megamenu-cms-list-items-wrapper" data-content-type="text" data-appearance="default" data-element="main"><ul> <li> <p><a tabindex="0" href="https://www.avril-beaute.fr/selections-avril/vegan/soin-vegan-pour-homme.html">Vegan</a></p> </li> </ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="JN2Q2UV"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="TRD9G6M"><a href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage.html" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/wysiwyg/rasage.jpg" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="desktop_image" data-pb-style="A34N2SU"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/wysiwyg/rasage.jpg" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="mobile_image" data-pb-style="AVL4N4U"></a></figure><div class="megamenu-cms-box-content" data-content-type="text" data-appearance="default" data-element="main"><p class="mt-4"><a tabindex="0" href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage.html">Gamme rasage</a></p> <p class="mb-4">Un rasage efficace en douceur</p> <p id="J5XF472"><a tabindex="0" href="https://www.avril-beaute.fr/homme/soin-visage-et-rasage.html"><span class="underline">Découvrir</span> -></a></p></div></div></div></div></li></ul></li> </ul> </li> </ul> </li><li class="product-menu dropdown menu-dropdown-icon category-item nav-1022"> <a class="relative" href="https://www.avril-beaute.fr/bebe.html" > <span class="megaitemicons"></span> Famille <span class="block w-8 h-8 absolute top-1/2 right-2 -translate-y-1/2 md:hidden"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg> </span> </a> <ul class="w-full bg-white shadow-lg justify-center transition-all duration-300 ease-in-out"> <li> <ul class="column2 container flex"> <li class="mega-static-block menu-content col-menu-9"> <ul class="column4 child-level-1"><li class=category-item nav-1022-387 "><a href="https://www.avril-beaute.fr/bebe/nettoyant.html" >Soin & nettoyant haute tolérance</a></li><li class=category-item nav-1022-397 "><a href="https://www.avril-beaute.fr/bebe/accessoires.html" >Accessoires</a></li></ul> </li> <li class="mega-static-block menu-sidebar-right"><ul><li><style>#html-body [data-pb-style=S8Y2Q88]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=JXMBX4M]{display:flex;width:100%}#html-body [data-pb-style=B4KLX6L],#html-body [data-pb-style=YEFQVI9]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:41.6667%;align-self:stretch}#html-body [data-pb-style=YEFQVI9]{text-align:left;width:58.3333%}#html-body [data-pb-style=L92NUNO]{border-style:none}#html-body [data-pb-style=MP5YSUO],#html-body [data-pb-style=TBK37WJ]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=L92NUNO]{border-style:none} }</style><div class="pagebuilder-column-group border-r border-l-2 border-gray-300" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="S8Y2Q88"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="JXMBX4M"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="B4KLX6L"><div class="category-item-link" data-content-type="text" data-appearance="default" data-element="main"><p><a tabindex="0" href="https://www.avril-beaute.fr/bebe/tout-le-soin-bebe.html">Sélection</a></p></div><div class="megamenu-cms-list-items-wrapper" data-content-type="text" data-appearance="default" data-element="main"><ul> <li> <p><a tabindex="0" href="https://www.avril-beaute.fr/bebe/tout-le-soin-bebe.html">Soin bébé</a></p> </li> </ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="YEFQVI9"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="L92NUNO"><a href="https://www.avril-beaute.fr/bebe.html" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/wysiwyg/gamme_famille_vignette_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="desktop_image" data-pb-style="TBK37WJ"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/wysiwyg/gamme_famille_vignette_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="mobile_image" data-pb-style="MP5YSUO"></a></figure><div class="megamenu-cms-box-content" data-content-type="text" data-appearance="default" data-element="main"><p class="mt-4"><a tabindex="0" href="https://www.avril-beaute.fr/bebe.html">Gamme Famille</a></p> <p class="mb-4">Des produits hypoallergéniques pour toute la famille </p> <p id="J5XF472"><a tabindex="0" href="https://www.avril-beaute.fr/bebe.html"><span class="underline">Découvrir</span> -></a></p></div></div></div></div></li></ul></li> </ul> </li> </ul> </li><li class="product-menu dropdown menu-dropdown-icon category-item nav-1023"> <a class="relative" href="https://www.avril-beaute.fr/cadeaux/cadeaux.html" > <span class="megaitemicons"></span> Cadeaux <span class="block w-8 h-8 absolute top-1/2 right-2 -translate-y-1/2 md:hidden"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg> </span> </a> <ul class="w-full bg-white shadow-lg justify-center transition-all duration-300 ease-in-out"> <li> <ul class="column2 container flex"> <li class="mega-static-block menu-content col-menu-9"> <ul class="column4 child-level-1"><li class=category-item nav-1023-217 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux.html" >Coffrets cadeaux</a><ul class="child-level-2"><li class=category-item nav-1023-374 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/20.html" >Moins de 20€</a></li><li class=category-item nav-1023-375 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/30.html" >Moins de 30€</a></li><li class=category-item nav-1023-376 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/40.html" >Moins de 40€</a></li><li class=category-item nav-1023-381 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/60.html" >Moins de 60€</a></li></ul></li><li class=category-item nav-1023-218 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/emballage-cadeau.html" >Emballage cadeau</a></li><li class=category-item nav-1023-219 "><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/carte-cadeau.html" >Carte cadeau</a></li></ul> </li> <li class="mega-static-block menu-sidebar-right"><ul><li><style>#html-body [data-pb-style=EO7TGFQ]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=RBT47X0]{display:flex;width:100%}#html-body [data-pb-style=UKV8I82]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:50%;align-self:stretch}#html-body [data-pb-style=D3EUVQA],#html-body [data-pb-style=KDG9PPK]{display:none}#html-body [data-pb-style=ROC76GT]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:left;width:50%;align-self:stretch}#html-body [data-pb-style=O3UAX2Q]{border-style:none}#html-body [data-pb-style=V3MOPFY],#html-body [data-pb-style=VQ3BS0L]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=O3UAX2Q]{border-style:none} }</style><div class="pagebuilder-column-group border-r border-l-2 border-gray-300" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="EO7TGFQ"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="RBT47X0"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="UKV8I82"><div class="category-item-link" data-content-type="text" data-appearance="default" data-element="main" data-pb-style="D3EUVQA"><p>Sélection</p></div><div class="megamenu-cms-list-items-wrapper" data-content-type="text" data-appearance="default" data-element="main" data-pb-style="KDG9PPK"><ul> <li> <p><a tabindex="0" href="/nouveau/nouveautes-maquillage.html">Nouveautés</a></p> </li> <li> <p><a tabindex="0" href="/selections-avril/best-sellers-maquillage-bio-avril-hiver-2024-2025.html">Meilleures ventes</a></p> </li> <li> <p><a tabindex="0" href="/zero-gaspi/maquillage-zero-gaspi.html">Zéro gaspi</a></p> </li> </ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="ROC76GT"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="O3UAX2Q"><a href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux.html" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/.renditions/wysiwyg/homepage/calendrier_de_l_avent.png" alt="" title="" width="200" height="200" loading="lazy" data-use-native-image-dimensions="false" data-element="desktop_image" data-pb-style="V3MOPFY"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/.renditions/wysiwyg/homepage/calendrier_de_l_avent.png" alt="" title="" width="200" height="200" loading="lazy" data-use-native-image-dimensions="false" data-element="mobile_image" data-pb-style="VQ3BS0L"></a></figure><div class="megamenu-cms-box-content" data-content-type="text" data-appearance="default" data-element="main"><p class="mt-4"><a tabindex="0" href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux.html">Calendrier de l'Avent</a></p> <p class="mb-4">24 jours pour bien être soi</p> <p id="J5XF472"><a tabindex="0" href="https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux.html"><span class="underline">Découvrir</span> -></a></p></div></div></div></div></li></ul></li> </ul> </li> </ul> </li><li class="product-menu dropdown menu-dropdown-icon category-item nav-1024"> <a class="relative" href="https://www.avril-beaute.fr/nouveau.html" > <span class="megaitemicons"></span> Nouveau <span class="block w-8 h-8 absolute top-1/2 right-2 -translate-y-1/2 md:hidden"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg> </span> </a> <ul class="w-full bg-white shadow-lg justify-center transition-all duration-300 ease-in-out"> <li> <ul class="column2 container flex"> <li class="mega-static-block menu-content col-menu-9"> <ul class="column4 child-level-1"><li class=category-item nav-1024-224 "><a href="https://www.avril-beaute.fr/nouveau/nouveautes-maquillage.html" >Nouveautés maquillage</a></li><li class=category-item nav-1024-225 "><a href="https://www.avril-beaute.fr/nouveau/nouveautes-soin.html" >Nouveautés soin</a></li></ul> </li> <li class="mega-static-block menu-sidebar-right"><ul><li><style>#html-body [data-pb-style=F9YOTQN]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=EJGNPK6]{display:flex;width:100%}#html-body [data-pb-style=TXFTKG4],#html-body [data-pb-style=V3FM3JM]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:50%;align-self:stretch}#html-body [data-pb-style=V3FM3JM]{text-align:left}#html-body [data-pb-style=PFLD5TA],#html-body [data-pb-style=UOUPH2O]{display:none}#html-body [data-pb-style=D7A85GG]{border-style:none}#html-body [data-pb-style=HG3NT7T],#html-body [data-pb-style=T0PUP97]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=D7A85GG]{border-style:none} }</style><div class="pagebuilder-column-group border-r border-l-2 border-gray-300" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="F9YOTQN"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="EJGNPK6"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="TXFTKG4"><div class="category-item-link" data-content-type="text" data-appearance="default" data-element="main" data-pb-style="PFLD5TA"><p>C'est nouveau !</p></div><div class="megamenu-cms-list-items-wrapper" data-content-type="text" data-appearance="default" data-element="main" data-pb-style="UOUPH2O"><ul> <li style="text-align: left;"><a tabindex="0" href="https://www.avril-beaute.fr/maquillage/maquillage/yeux/mascara.html">Mascara volume </a>& allongeant</li> <li style="text-align: left;"><a tabindex="0" href="https://www.avril-beaute.fr/lait-solaire-spf30-2273.html">Lait solaire spf 30</a></li> <li style="text-align: left;"><a tabindex="0" href="https://www.avril-beaute.fr/selections-avril/produits-eco-conscients/maquillage-rechargeable.html">Maquillage rechargeable : nouveau packaging</a></li> </ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="V3FM3JM"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="D7A85GG"><a href="https://www.avril-beaute.fr/soin/cheveux/cheveux.html" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/wysiwyg/vignette_capillaire.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="desktop_image" data-pb-style="HG3NT7T"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/wysiwyg/vignette_capillaire.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="200" height="200" data-element="mobile_image" data-pb-style="T0PUP97"></a></figure><div class="megamenu-cms-box-content" data-content-type="text" data-appearance="default" data-element="main"><p class="mt-4"><a tabindex="0" href="https://www.avril-beaute.fr/soin/cheveux/cheveux.html">Gamme capillaire</a></p> <p class="mb-4">6 nouvelles routines sur-mesure</p> <p id="J5XF472"><a tabindex="0" href="https://www.avril-beaute.fr/soin/cheveux/cheveux.html"><span class="underline">Découvrir</span> -></a></p></div></div></div></div></li></ul></li> </ul> </li> </ul> </li><li class=""> <a href="https://www.avril-beaute.fr/animation/noel/c-est-noel.html" > <span class="megaitemicons"> </span>Déjà Noël</a> </li></ul>
</div>
</div>
</div>
</div>
<div x-data="initMegaMenuMobile()" class="megamenu-burger-mobile z-10 order-0 navigation min-w-12 lg:hidden">
<div :class="{'overflow-x-hidden overflow-y-auto fixed top-0 left-0 w-full h-full bg-background flex flex-col' : open}"
@toggle-mobile-megamenu.window="open = !open"
@keydown.window.escape="open=false"
x-cloak>
<div class="flex items-baseline justify-between menu-icon bg-cover"
:class="{'min-h-32' : open}"
:style="open ? 'background-image: url(https://avril.twic.pics/media/hyva_homepage_slider/1000013120_1.png);' : ''"
x-cloak>
<div class="flex justify-start w-full relative">
<a @click="$dispatch('toggle-mobile-megamenu')"
class="flex items-center justify-center cursor-pointer bg-inherit relative"
:class="{ 'ml-auto': open }"
x-cloak>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden p-4" width="60" height="60" :class="{ 'hidden' : !open, 'block': open }" role="img">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
<title>x</title></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="p-2" width="48" height="48" :class="{ 'hidden' : open, 'block': !open }" role="img">
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12H3M17 18H3M21 6H3"/>
<title>align-left</title></svg>
</a>
</div>
</div>
<div class="flex flex-col items-center gap-3 sm:gap-4 flex-wrap sm:flex-nowrap px-4 pt-4 pb-2"
:class="{ 'hidden' : !open }"
x-cloak>
<button class="relative w-full min-w-0"
@click.prevent="searchOpen = !searchOpen; $dispatch('search-open');"
aria-haspopup="true"
:aria-expanded="searchOpen"
x-cloak>
<label class="sr-only" for="search-menu">Recherchez ici</label>
<input id="search-menu" type="search"
class="no-search-cancel w-full pointer-events-none py-6 border-0 rounded-md placeholder:text-sm"
placeholder="Recherchez ici"
readonly tabindex="-1"
x-cloak />
<div class="p-1 pointer-events-none absolute top-1/2 right-3 -translate-y-1/2 sm:right-4"
aria-label="Search" tabindex="-1" x-cloak>
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewbox="0 0 28 28" fill="none" aria-hidden="true">
<path d="M21.0003 21.0003L17.625 17.625" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2218 19.4437C16.6581 19.4437 19.4437 16.6581 19.4437 13.2218C19.4437 9.78561 16.6581 7 13.2218 7C9.78561 7 7 9.78561 7 13.2218C7 16.6581 9.78561 19.4437 13.2218 19.4437Z" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
</button>
<div class="burger-categories-wrapper order-2 w-full" x-cloak>
<div
class="megamenu-burger-avril relative z-10"
x-data='{ stack: ["root"], panels: {"root-0-0-0":{"title":"Crème","image":"https://www.avril-beaute.fr/media/catalog/category/2-_Cat_gorie_Soin_Visage_1_.jpg","see_all":"https://www.avril-beaute.fr/soin/visage/soin-visage.html","items":[{"t":"Crème visage","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/creme-visage.html","has":false,"pid":null,"underline":false},{"t":"Anti-âge","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/anti-age.html","has":false,"pid":null,"underline":false},{"t":"Fluide matifiant","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/fluide-matifiant.html","has":false,"pid":null,"underline":false},{"t":"Baume à lèvres","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/baume-a-levres.html","has":false,"pid":null,"underline":false},{"t":"Lotion visage","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/lotion-visage.html","has":false,"pid":null,"underline":false},{"t":"Eau florale","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/eau-florale.html","has":false,"pid":null,"underline":false},{"t":"Huile végétale","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/huile-vegetale.html","has":false,"pid":null,"underline":false},{"t":"Macérat","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/macerat.html","has":false,"pid":null,"underline":false},{"t":"Soin solaire","u":"https://www.avril-beaute.fr/soin/visage/soin-visage/creme-solaire.html","has":false,"pid":null,"underline":false}],"id":"root-0-0-0"},"root-0-0-2":{"title":"Masque & gommage","image":"https://www.avril-beaute.fr/media/catalog/category/2-_Cat_gorie_Soin_Visage_1__1.jpg","see_all":"https://www.avril-beaute.fr/soin/visage/masque-visage.html","items":[{"t":"Masque","u":"https://www.avril-beaute.fr/soin/visage/masque-visage/masque-visage.html","has":false,"pid":null,"underline":false},{"t":"Gommage","u":"https://www.avril-beaute.fr/soin/visage/masque-visage/gommage-visage.html","has":false,"pid":null,"underline":false}],"id":"root-0-0-2"},"root-0-0-3":{"title":"Nettoyant","image":"https://www.avril-beaute.fr/media/catalog/category/9-_Cat_gorie_NOUVEAU_copie_8.jpg","see_all":"https://www.avril-beaute.fr/soin/visage/nettoyant.html","items":[{"t":"Gel nettoyant","u":"https://www.avril-beaute.fr/soin/visage/nettoyant/gel-visage.html","has":false,"pid":null,"underline":false},{"t":"Mousse nettoyante","u":"https://www.avril-beaute.fr/soin/visage/nettoyant/mousse-nettoyante.html","has":false,"pid":null,"underline":false},{"t":"Gommage","u":"https://www.avril-beaute.fr/soin/visage/nettoyant/gommage-visage.html","has":false,"pid":null,"underline":false},{"t":"Savon visage","u":"https://www.avril-beaute.fr/soin/visage/nettoyant/savon-visage.html","has":false,"pid":null,"underline":false},{"t":"Eau nettoyante","u":"https://www.avril-beaute.fr/soin/visage/nettoyant/eau-nettoyante.html","has":false,"pid":null,"underline":false}],"id":"root-0-0-3"},"root-0-0-4":{"title":"Démaquillant","image":"https://www.avril-beaute.fr/media/catalog/category/14a-_Cat_gorie_DEMAQUILLAGEv1_copie.jpg","see_all":"https://www.avril-beaute.fr/soin/visage/demaquillant.html","items":[{"t":"Baume démaquillant","u":"https://www.avril-beaute.fr/soin/visage/demaquillant/baume-demaquillant.html","has":false,"pid":null,"underline":false},{"t":"Lait démaquillant","u":"https://www.avril-beaute.fr/soin/visage/demaquillant/lait-demaquillant.html","has":false,"pid":null,"underline":false},{"t":"Huile démaquillante","u":"https://www.avril-beaute.fr/soin/visage/demaquillant/huile-demaquillante.html","has":false,"pid":null,"underline":false},{"t":"Eau micellaire","u":"https://www.avril-beaute.fr/soin/visage/demaquillant/eau-micellaire.html","has":false,"pid":null,"underline":false},{"t":"Démaquillant yeux","u":"https://www.avril-beaute.fr/soin/visage/demaquillant/demaquillant-yeux.html","has":false,"pid":null,"underline":false},{"t":"Dissolvant","u":"https://www.avril-beaute.fr/soin/visage/demaquillant/dissolvant.html","has":false,"pid":null,"underline":false}],"id":"root-0-0-4"},"root-0-0":{"title":"Visage","image":"https://www.avril-beaute.fr/media/catalog/category/2-_Cat_gorie_Soin_Visage_copie_2_retouch_.jpg","see_all":"https://www.avril-beaute.fr/soin/visage.html","items":[{"t":"Crème","u":"https://www.avril-beaute.fr/soin/visage/soin-visage.html","has":true,"pid":"root-0-0-0","underline":false},{"t":"Sérum","u":"https://www.avril-beaute.fr/soin/visage/serum-visage.html","has":false,"pid":null,"underline":false},{"t":"Masque & gommage","u":"https://www.avril-beaute.fr/soin/visage/masque-visage.html","has":true,"pid":"root-0-0-2","underline":false},{"t":"Nettoyant","u":"https://www.avril-beaute.fr/soin/visage/nettoyant.html","has":true,"pid":"root-0-0-3","underline":false},{"t":"Démaquillant","u":"https://www.avril-beaute.fr/soin/visage/demaquillant.html","has":true,"pid":"root-0-0-4","underline":false},{"t":"Soin des lèvres","u":"https://www.avril-beaute.fr/soin/visage/soin-des-levres.html","has":false,"pid":null,"underline":false},{"t":"Huile & eau florale","u":"https://www.avril-beaute.fr/soin/visage/huiles-eaux-florales.html","has":false,"pid":null,"underline":false}],"id":"root-0-0"},"root-0-1-0":{"title":"Soin corps","image":"https://www.avril-beaute.fr/media/catalog/category/6b-_Cat_gorie_CORPS_DOUCHE_v2_copie_all_g__4.jpg","see_all":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps.html","items":[{"t":"Crème corps","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps/creme-corps.html","has":false,"pid":null,"underline":false},{"t":"Baume corps","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps/baume-corps.html","has":false,"pid":null,"underline":false},{"t":"Huile corps","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps/huile-corps.html","has":false,"pid":null,"underline":false},{"t":"Huile végétale","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps/huile-vegetale.html","has":false,"pid":null,"underline":false},{"t":"Gommage corps","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps/gommage-corps.html","has":false,"pid":null,"underline":false},{"t":"Soin solaire","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps/creme-solaire.html","has":false,"pid":null,"underline":false}],"id":"root-0-1-0"},"root-0-1-1":{"title":"Savon & gel douche","image":"https://www.avril-beaute.fr/media/catalog/category/6b-_Cat_gorie_CORPS_DOUCHE_v2_copie_all_g__1_6.jpg","see_all":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche.html","items":[{"t":"Savon corps","u":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche/savon-corps.html","has":false,"pid":null,"underline":false},{"t":"Savon à froid","u":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche/savon-a-froid.html","has":false,"pid":null,"underline":false},{"t":"Gel douche & gel mains","u":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche/gel-douche.html","has":false,"pid":null,"underline":false},{"t":"Gel et pain intime","u":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche/gel-et-pain-intime.html","has":false,"pid":null,"underline":false},{"t":"Base neutre","u":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche/base-neutre.html","has":false,"pid":null,"underline":false}],"id":"root-0-1-1"},"root-0-1-3":{"title":"Dentifrice","image":"https://www.avril-beaute.fr/media/catalog/category/6b-_Cat_gorie_CORPS_DOUCHE_v2_copie_all_g__2_7.jpg","see_all":"https://www.avril-beaute.fr/soin/corps-et-douche/dentifrices.html","items":[{"t":"Dentifrice","u":"https://www.avril-beaute.fr/soin/corps-et-douche/dentifrices/dentifrice.html","has":false,"pid":null,"underline":false},{"t":"Brosse à dents","u":"https://www.avril-beaute.fr/soin/corps-et-douche/dentifrices/brosse-a-dent.html","has":false,"pid":null,"underline":false}],"id":"root-0-1-3"},"root-0-1-4":{"title":"Accessoires","image":"https://www.avril-beaute.fr/media/catalog/category/6b-_Cat_gorie_CORPS_DOUCHE_v2_copie_all_g__2_10.jpg","see_all":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires.html","items":[{"t":"Gants","u":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires/gants.html","has":false,"pid":null,"underline":false},{"t":"Brosse à dents","u":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires/brosse-a-dent.html","has":false,"pid":null,"underline":false},{"t":"Cure-oreilles","u":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires/cure-oreilles.html","has":false,"pid":null,"underline":false},{"t":"Porte-savon","u":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires/porte-savon.html","has":false,"pid":null,"underline":false},{"t":"Flacon vide","u":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires/flacon-vide.html","has":false,"pid":null,"underline":false}],"id":"root-0-1-4"},"root-0-1":{"title":"Corps & douche","image":"https://www.avril-beaute.fr/media/catalog/category/5b-_Cat_gorie_CORPS_DOUCHE_copie_retouch_2.jpg","see_all":"https://www.avril-beaute.fr/soin/corps-et-douche.html","items":[{"t":"Soin corps","u":"https://www.avril-beaute.fr/soin/corps-et-douche/soin-corps.html","has":true,"pid":"root-0-1-0","underline":false},{"t":"Savon & gel douche","u":"https://www.avril-beaute.fr/soin/corps-et-douche/savons-gel-douche.html","has":true,"pid":"root-0-1-1","underline":false},{"t":"Déodorant","u":"https://www.avril-beaute.fr/soin/corps-et-douche/deodorant.html","has":false,"pid":null,"underline":false},{"t":"Dentifrice","u":"https://www.avril-beaute.fr/soin/corps-et-douche/dentifrices.html","has":true,"pid":"root-0-1-3","underline":false},{"t":"Accessoires","u":"https://www.avril-beaute.fr/soin/corps-et-douche/accessoires.html","has":true,"pid":"root-0-1-4","underline":false}],"id":"root-0-1"},"root-0-2-0":{"title":"Shampooing","image":"https://www.avril-beaute.fr/media/catalog/category/12-_Cat_gorie_CHEVEUX_1_.jpg","see_all":"https://www.avril-beaute.fr/soin/cheveux/shampooings-apres-shampooing.html","items":[{"t":"Shampooing solide","u":"https://www.avril-beaute.fr/soin/cheveux/shampooings-apres-shampooing/shampooing-solide.html","has":false,"pid":null,"underline":false},{"t":"Shampooing liquide","u":"https://www.avril-beaute.fr/soin/cheveux/shampooings-apres-shampooing/shampooing.html","has":false,"pid":null,"underline":false},{"t":"Après-shampooing","u":"https://www.avril-beaute.fr/soin/cheveux/shampooings-apres-shampooing/apres-shampooing-solide.html","has":false,"pid":null,"underline":false}],"id":"root-0-2-0"},"root-0-2-3":{"title":"Par préoccupation","image":"https://www.avril-beaute.fr/media/catalog/category/12-_Cat_gorie_CHEVEUX_1__6.jpg","see_all":"https://www.avril-beaute.fr/soin/cheveux/cheveux.html","items":[{"t":"J'ai les cheveux bouclés","u":"https://www.avril-beaute.fr/soin/cheveux/cheveux/j-ai-les-cheveux-boucles.html","has":false,"pid":null,"underline":false},{"t":"J'ai les cheveux gras","u":"https://www.avril-beaute.fr/soin/cheveux/cheveux/j-ai-les-cheveux-gras.html","has":false,"pid":null,"underline":false},{"t":"J'ai les cheveux secs & abîmés","u":"https://www.avril-beaute.fr/soin/cheveux/cheveux/j-ai-les-cheveux-secs-abimes.html","has":false,"pid":null,"underline":false},{"t":"J'ai les cheveux normaux","u":"https://www.avril-beaute.fr/soin/cheveux/cheveux/jai-les-cheveux-normaux.html","has":false,"pid":null,"underline":false},{"t":"J'ai les cheveux colorés","u":"https://www.avril-beaute.fr/soin/cheveux/preoccupations-cheveux/j-ai-les-cheveux-colores.html","has":false,"pid":null,"underline":false},{"t":"J'ai le cuir chevelu sensible","u":"https://www.avril-beaute.fr/soin/cheveux/cheveux/j-ai-des-pellicules.html","has":false,"pid":null,"underline":false},{"t":"J'ai les cheveux fins","u":"https://www.avril-beaute.fr/soin/cheveux/preoccupations-cheveux/mes-cheveux-manquent-de-volume.html","has":false,"pid":null,"underline":false}],"id":"root-0-2-3"},"root-0-2":{"title":"Cheveux","image":"https://www.avril-beaute.fr/media/catalog/category/12-_Cat_gorie_CHEVEUX_copie_2_retouch_.jpg","see_all":"https://www.avril-beaute.fr/soin/cheveux.html","items":[{"t":"Shampooing","u":"https://www.avril-beaute.fr/soin/cheveux/shampooings-apres-shampooing.html","has":true,"pid":"root-0-2-0","underline":false},{"t":"Après-shampooing","u":"https://www.avril-beaute.fr/soin/cheveux/apres-shampooing.html","has":false,"pid":null,"underline":false},{"t":"Soin & coiffant","u":"https://www.avril-beaute.fr/soin/cheveux/soin-coiffant.html","has":false,"pid":null,"underline":false},{"t":"Par préoccupation","u":"https://www.avril-beaute.fr/soin/cheveux/cheveux.html","has":true,"pid":"root-0-2-3","underline":false}],"id":"root-0-2"},"root-0-3":{"title":"Accessoires","image":"https://www.avril-beaute.fr/media/catalog/category/9-_Cat_gorie_NOUVEAU_copie_10.jpg","see_all":"https://www.avril-beaute.fr/soin/accessoires.html","items":[{"t":"Gants & éponges","u":"https://www.avril-beaute.fr/soin/accessoires/gants-eponges.html","has":false,"pid":null,"underline":false},{"t":"Trousses & contenants","u":"https://www.avril-beaute.fr/soin/accessoires/trousses-contenants.html","has":false,"pid":null,"underline":false},{"t":"Autres accessoires","u":"https://www.avril-beaute.fr/soin/accessoires/autres-contenants.html","has":false,"pid":null,"underline":false}],"id":"root-0-3"},"root-0":{"title":"Soin","image":"https://www.avril-beaute.fr/media/catalog/category/5b-_Cat_gorie_CORPS_DOUCHE_copie_retouch_2_2.jpg","see_all":"https://www.avril-beaute.fr/soin.html","items":[{"t":"Visage","u":"https://www.avril-beaute.fr/soin/visage.html","has":true,"pid":"root-0-0","underline":false},{"t":"Corps & douche","u":"https://www.avril-beaute.fr/soin/corps-et-douche.html","has":true,"pid":"root-0-1","underline":false},{"t":"Cheveux","u":"https://www.avril-beaute.fr/soin/cheveux.html","has":true,"pid":"root-0-2","underline":false},{"t":"Accessoires","u":"https://www.avril-beaute.fr/soin/accessoires.html","has":true,"pid":"root-0-3","underline":false}],"id":"root-0"},"root-1-0":{"title":"Accessoires","image":"https://www.avril-beaute.fr/media/catalog/category/13_b_-Cat_gorie_MAQUILLAGE_niveau2_v1_copie_2_retouch__40.jpg","see_all":"https://www.avril-beaute.fr/maquillage/pinceaux.html","items":[{"t":"Pinceaux","u":"https://www.avril-beaute.fr/maquillage/pinceaux/pinceaux.html","has":false,"pid":null,"underline":false},{"t":"Houppettes & blenders","u":"https://www.avril-beaute.fr/maquillage/pinceaux/houppettes-blender.html","has":false,"pid":null,"underline":false},{"t":"Gants & éponges","u":"https://www.avril-beaute.fr/maquillage/pinceaux/gants-eponges.html","has":false,"pid":null,"underline":false},{"t":"Accessoires pour les ongles","u":"https://www.avril-beaute.fr/maquillage/pinceaux/accessoires-pour-les-ongles.html","has":false,"pid":null,"underline":false},{"t":"Trousses & contenants","u":"https://www.avril-beaute.fr/maquillage/pinceaux/trousses-contenants.html","has":false,"pid":null,"underline":false}],"id":"root-1-0"},"root-1-1-0":{"title":"Teint","image":"https://www.avril-beaute.fr/media/.renditions/wysiwyg/8-_Cat_gorie_MAQUILLAGE_niveau1_copie.jpg","see_all":"https://www.avril-beaute.fr/maquillage/maquillage/teint.html","items":[{"t":"Fond de teint & BB Cream","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/bb-cream-fond-de-teint.html","has":false,"pid":null,"underline":false},{"t":"Correcteur & anti-cernes","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/correcteurs-et-anticernes.html","has":false,"pid":null,"underline":false},{"t":"Base de teint & fixateur","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/base-de-teint.html","has":false,"pid":null,"underline":false},{"t":"Poudre compacte","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/poudre-compacte.html","has":false,"pid":null,"underline":false},{"t":"Poudre bonne mine","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/poudre-bonne-mine.html","has":false,"pid":null,"underline":false},{"t":"Blush","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/blush.html","has":false,"pid":null,"underline":false},{"t":"Highlighter","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/highlighter.html","has":false,"pid":null,"underline":false},{"t":"Poudre libre","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/poudre-libre.html","has":false,"pid":null,"underline":false},{"t":"Houpette","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/houppette.html","has":false,"pid":null,"underline":false},{"t":"Éponge","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint/eponge.html","has":false,"pid":null,"underline":false}],"id":"root-1-1-0"},"root-1-1-1":{"title":"Yeux","image":"https://www.avril-beaute.fr/media/.renditions/wysiwyg/8-_Cat_gorie_MAQUILLAGE_niveau1_copie.jpg","see_all":"https://www.avril-beaute.fr/maquillage/maquillage/yeux.html","items":[{"t":"Mascara","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/mascara.html","has":false,"pid":null,"underline":false},{"t":"Eyeliner","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/eyeliner.html","has":false,"pid":null,"underline":false},{"t":"Crayon yeux","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/crayon-yeux.html","has":false,"pid":null,"underline":false},{"t":"Crayon sourcils","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/crayon-sourcils.html","has":false,"pid":null,"underline":false},{"t":"Crayon fard à paupières","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/crayon-fard.html","has":false,"pid":null,"underline":false},{"t":"Fard à paupières","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/fard-a-paupieres.html","has":false,"pid":null,"underline":false},{"t":"Taille-crayon","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/taille-crayon.html","has":false,"pid":null,"underline":false},{"t":"Recourbe-cils","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/recourbe-cils.html","has":false,"pid":null,"underline":false},{"t":"Pince à épiler","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux/pince-a-epiler.html","has":false,"pid":null,"underline":false}],"id":"root-1-1-1"},"root-1-1-2":{"title":"Lèvres","image":"https://www.avril-beaute.fr/media/catalog/category/8-_Cat_gorie_MAQUILLAGE_niveau1_copie_1_3.jpg","see_all":"https://www.avril-beaute.fr/maquillage/maquillage/levres.html","items":[{"t":"Rouge à lèvres","u":"https://www.avril-beaute.fr/maquillage/maquillage/levres/rouge-a-levres.html","has":false,"pid":null,"underline":false},{"t":"Crayon rouge à lèvres","u":"https://www.avril-beaute.fr/maquillage/maquillage/levres/crayon-levres.html","has":false,"pid":null,"underline":false},{"t":"Huile lèvres","u":"https://www.avril-beaute.fr/maquillage/maquillage/levres/huile-levres.html","has":false,"pid":null,"underline":false},{"t":"Crayon contour lèvres","u":"https://www.avril-beaute.fr/maquillage/maquillage/levres/crayon-contour-levres.html","has":false,"pid":null,"underline":false},{"t":"Baume à lèvres teinté","u":"https://www.avril-beaute.fr/maquillage/maquillage/levres/baume-a-levres-teinte.html","has":false,"pid":null,"underline":false}],"id":"root-1-1-2"},"root-1-1-3":{"title":"Ongles","image":"https://www.avril-beaute.fr/media/catalog/category/13_b_-Cat_gorie_MAQUILLAGE_niveau2_v1_copie_2_retouch__35.jpg","see_all":"https://www.avril-beaute.fr/maquillage/maquillage/ongles.html","items":[{"t":"Vernis","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles/vernis.html","has":false,"pid":null,"underline":false},{"t":"Dissolvant","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles/dissolvant.html","has":false,"pid":null,"underline":false},{"t":"Coupe-ongles","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles/coupe-ongles.html","has":false,"pid":null,"underline":false},{"t":"Lime à ongles","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles/lime-a-ongles.html","has":false,"pid":null,"underline":false},{"t":"Repousse-cuticules","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles/repousse-cuticules.html","has":false,"pid":null,"underline":false},{"t":"Pierre ponce","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles/pierre-ponce.html","has":false,"pid":null,"underline":false}],"id":"root-1-1-3"},"root-1-1":{"title":"Maquillage","image":"https://www.avril-beaute.fr/media/catalog/category/13_b_-Cat_gorie_MAQUILLAGE_niveau2_v1_copie_2_retouch_.jpg","see_all":"https://www.avril-beaute.fr/maquillage/maquillage.html","items":[{"t":"Teint","u":"https://www.avril-beaute.fr/maquillage/maquillage/teint.html","has":true,"pid":"root-1-1-0","underline":false},{"t":"Yeux","u":"https://www.avril-beaute.fr/maquillage/maquillage/yeux.html","has":true,"pid":"root-1-1-1","underline":false},{"t":"Lèvres","u":"https://www.avril-beaute.fr/maquillage/maquillage/levres.html","has":true,"pid":"root-1-1-2","underline":false},{"t":"Ongles","u":"https://www.avril-beaute.fr/maquillage/maquillage/ongles.html","has":true,"pid":"root-1-1-3","underline":false},{"t":"Palettes de maquillage","u":"https://www.avril-beaute.fr/maquillage/maquillage/palettes-de-maquillage.html","has":false,"pid":null,"underline":false}],"id":"root-1-1"},"root-1-2-0":{"title":"Base & fixateur","image":"https://www.avril-beaute.fr/media/catalog/category/14a-_Cat_gorie_DEMAQUILLAGEv1_copie_2_retouhc__19.jpg","see_all":"https://www.avril-beaute.fr/maquillage/demaquillant/base-fixateur.html","items":[{"t":"Base de teint","u":"https://www.avril-beaute.fr/maquillage/demaquillant/base-fixateur/base-de-teint.html","has":false,"pid":null,"underline":false},{"t":"Fixateur de maquillage","u":"https://www.avril-beaute.fr/maquillage/demaquillant/base-fixateur/fixateur-de-maquillage.html","has":false,"pid":null,"underline":false}],"id":"root-1-2-0"},"root-1-2-1":{"title":"Nettoyant","image":"https://www.avril-beaute.fr/media/catalog/category/14a-_Cat_gorie_DEMAQUILLAGEv1_copie_2_retouhc__22.jpg","see_all":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant.html","items":[{"t":"Mousse nettoyante","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/mousse-nettoyante.html","has":false,"pid":null,"underline":false},{"t":"Gel nettoyant","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/gel-nettoyant.html","has":false,"pid":null,"underline":false},{"t":"Eau nettoyante","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/eau-nettoyante.html","has":false,"pid":null,"underline":false},{"t":"Savon & pain dermatologique","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/savon-visage-pain-dermatologique.html","has":false,"pid":null,"underline":false},{"t":"Gommage","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/gommage-visage.html","has":false,"pid":null,"underline":false},{"t":"Lotion tonique","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/lotion-visage.html","has":false,"pid":null,"underline":false},{"t":"Eau florale","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant/eau-florale.html","has":false,"pid":null,"underline":false}],"id":"root-1-2-1"},"root-1-2-2":{"title":"Démaquillant","image":"https://www.avril-beaute.fr/media/catalog/category/14a-_Cat_gorie_DEMAQUILLAGEv1_copie_2_retouhc__27.jpg","see_all":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant.html","items":[{"t":"Eau micellaire","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant/eau-micellaire.html","has":false,"pid":null,"underline":false},{"t":"Baume démaquillant","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant/baume-demaquillant.html","has":false,"pid":null,"underline":false},{"t":"Lait démaquillant","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant/lait-demaquillant.html","has":false,"pid":null,"underline":false},{"t":"Huile démaquillante","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant/huile-demaquillante.html","has":false,"pid":null,"underline":false},{"t":"Démaquillant yeux","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant/demaquillant-yeux.html","has":false,"pid":null,"underline":false},{"t":"Dissolvant","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant/dissolvant.html","has":false,"pid":null,"underline":false}],"id":"root-1-2-2"},"root-1-2":{"title":"Préparation & démaquillage","image":"https://www.avril-beaute.fr/media/catalog/category/14a-_Cat_gorie_DEMAQUILLAGEv1_copie_2_retouhc_.jpg","see_all":"https://www.avril-beaute.fr/maquillage/demaquillant.html","items":[{"t":"Base & fixateur","u":"https://www.avril-beaute.fr/maquillage/demaquillant/base-fixateur.html","has":true,"pid":"root-1-2-0","underline":false},{"t":"Nettoyant","u":"https://www.avril-beaute.fr/maquillage/demaquillant/nettoyant.html","has":true,"pid":"root-1-2-1","underline":false},{"t":"Démaquillant","u":"https://www.avril-beaute.fr/maquillage/demaquillant/demaquillant.html","has":true,"pid":"root-1-2-2","underline":false}],"id":"root-1-2"},"root-1":{"title":"Maquillage","image":"https://www.avril-beaute.fr/media/catalog/category/8-_Cat_gorie_MAQUILLAGE_niveau1_copie_1.jpg","see_all":"https://www.avril-beaute.fr/maquillage.html","items":[{"t":"Accessoires","u":"https://www.avril-beaute.fr/maquillage/pinceaux.html","has":true,"pid":"root-1-0","underline":false},{"t":"Maquillage","u":"https://www.avril-beaute.fr/maquillage/maquillage.html","has":true,"pid":"root-1-1","underline":false},{"t":"Préparation & démaquillage","u":"https://www.avril-beaute.fr/maquillage/demaquillant.html","has":true,"pid":"root-1-2","underline":false}],"id":"root-1"},"root-2-0-0":{"title":"Soin visage","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_1__3.jpg","see_all":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage.html","items":[{"t":"Crème visage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage/creme-visage.html","has":false,"pid":null,"underline":false},{"t":"Crème anti-âge","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage/creme-anti-age.html","has":false,"pid":null,"underline":false},{"t":"Baume à lèvres","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage/baume-a-levres.html","has":false,"pid":null,"underline":false},{"t":"Huile à barbe","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage/huile-a-barbe.html","has":false,"pid":null,"underline":false}],"id":"root-2-0-0"},"root-2-0-1":{"title":"Rasage","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_1__8.jpg","see_all":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/rasage.html","items":[{"t":"Savon à raser","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/rasage/savon-a-raser.html","has":false,"pid":null,"underline":false},{"t":"Crème de rasage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/rasage/creme-de-rasage.html","has":false,"pid":null,"underline":false},{"t":"Baume après-rasage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/rasage/baume-apres-rasage.html","has":false,"pid":null,"underline":false}],"id":"root-2-0-1"},"root-2-0-2":{"title":"Nettoyant visage","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_1__1.jpg","see_all":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage.html","items":[{"t":"Gel visage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage/gel-visage.html","has":false,"pid":null,"underline":false},{"t":"Mousse nettoyante","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage/mousse-nettoyante.html","has":false,"pid":null,"underline":false},{"t":"Savon visage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage/savon-visage.html","has":false,"pid":null,"underline":false},{"t":"Gommage visage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage/gommage-visage.html","has":false,"pid":null,"underline":false},{"t":"Eau nettoyante","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage/eau-nettoyante.html","has":false,"pid":null,"underline":false}],"id":"root-2-0-2"},"root-2-0":{"title":"Soin visage et rasage","image":"https://www.avril-beaute.fr/media/catalog/category/3-_Cat_gorie_SOIN_VISAGE_et_RASAGE_HOMME_copie_2_1.jpg","see_all":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage.html","items":[{"t":"Soin visage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/soin-visage.html","has":true,"pid":"root-2-0-0","underline":false},{"t":"Rasage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/rasage.html","has":true,"pid":"root-2-0-1","underline":false},{"t":"Nettoyant visage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/nettoyant-visage.html","has":true,"pid":"root-2-0-2","underline":false},{"t":"Accessoires","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage/accessoires.html","has":false,"pid":null,"underline":false}],"id":"root-2-0"},"root-2-1-0":{"title":"Soin & gommage","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_1__19.jpg","see_all":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps.html","items":[{"t":"Crème corps","u":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps/creme-corps.html","has":false,"pid":null,"underline":false},{"t":"Baume corps","u":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps/baume-corps.html","has":false,"pid":null,"underline":false},{"t":"Huile corps","u":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps/huile-corps.html","has":false,"pid":null,"underline":false},{"t":"Huile végétale","u":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps/huile-vegetale.html","has":false,"pid":null,"underline":false},{"t":"Gommage corps","u":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps/gommage-corps.html","has":false,"pid":null,"underline":false}],"id":"root-2-1-0"},"root-2-1-1":{"title":"Savon & gel douche","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_1__25.jpg","see_all":"https://www.avril-beaute.fr/homme/corps-et-douche/savon-gel-douche.html","items":[{"t":"Gel douche","u":"https://www.avril-beaute.fr/homme/corps-et-douche/savon-gel-douche/gel-douche.html","has":false,"pid":null,"underline":false},{"t":"Savon corps","u":"https://www.avril-beaute.fr/homme/corps-et-douche/savon-gel-douche/savon-corps.html","has":false,"pid":null,"underline":false},{"t":"Savon à froid","u":"https://www.avril-beaute.fr/homme/corps-et-douche/savon-gel-douche/savon-a-froid.html","has":false,"pid":null,"underline":false},{"t":"Base neutre","u":"https://www.avril-beaute.fr/homme/corps-et-douche/savon-et-gel-douche/base-neutre.html","has":false,"pid":null,"underline":false}],"id":"root-2-1-1"},"root-2-1-3":{"title":"Dentifrice","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_1__31.jpg","see_all":"https://www.avril-beaute.fr/homme/corps-et-douche/dentifrice.html","items":[{"t":"Dentifrice","u":"https://www.avril-beaute.fr/homme/corps-et-douche/dentifrice/dentifrice.html","has":false,"pid":null,"underline":false},{"t":"Brosse à dents","u":"https://www.avril-beaute.fr/homme/corps-et-douche/dentifrice/brosse-a-dent.html","has":false,"pid":null,"underline":false}],"id":"root-2-1-3"},"root-2-1":{"title":"Corps et douche","image":"https://www.avril-beaute.fr/media/catalog/category/5b-_Cat_gorie_CORPS_DOUCHE_copie_retouch_2_1.jpg","see_all":"https://www.avril-beaute.fr/homme/corps-et-douche.html","items":[{"t":"Soin & gommage","u":"https://www.avril-beaute.fr/homme/corps-et-douche/soin-corps.html","has":true,"pid":"root-2-1-0","underline":false},{"t":"Savon & gel douche","u":"https://www.avril-beaute.fr/homme/corps-et-douche/savon-gel-douche.html","has":true,"pid":"root-2-1-1","underline":false},{"t":"Déodorant","u":"https://www.avril-beaute.fr/homme/corps-et-douche/deodorant.html","has":false,"pid":null,"underline":false},{"t":"Dentifrice","u":"https://www.avril-beaute.fr/homme/corps-et-douche/dentifrice.html","has":true,"pid":"root-2-1-3","underline":false},{"t":"Accessoires","u":"https://www.avril-beaute.fr/homme/corps-et-douche/accessoires.html","has":false,"pid":null,"underline":false}],"id":"root-2-1"},"root-2-2-0":{"title":"Shampooing et après shampooing","image":"https://www.avril-beaute.fr/media/catalog/category/12-_Cat_gorie_CHEVEUX_1__1_1.jpg","see_all":"https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing.html","items":[{"t":"Shampooing solide","u":"https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing/shampooing-solide.html","has":false,"pid":null,"underline":false},{"t":"Shampooing","u":"https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing/shampooing.html","has":false,"pid":null,"underline":false},{"t":"Après-shampooing solide","u":"https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing/apres-shampooing-solide.html","has":false,"pid":null,"underline":false},{"t":"Après-shampooing","u":"https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing/apres-shampooing.html","has":false,"pid":null,"underline":false}],"id":"root-2-2-0"},"root-2-2-1":{"title":"Soin et produit coiffant","image":"https://www.avril-beaute.fr/media/catalog/category/12-_Cat_gorie_CHEVEUX_1__1_6.jpg","see_all":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants.html","items":[{"t":"Gel cheveux","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants/gel-cheveux.html","has":false,"pid":null,"underline":false},{"t":"Mousse capillaire","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants/mousse-capillaire.html","has":false,"pid":null,"underline":false},{"t":"Huile capillaire","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants/huile-capillaire.html","has":false,"pid":null,"underline":false},{"t":"Spray démêlant & thermoprotecteur","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants/spray-demelant.html","has":false,"pid":null,"underline":false},{"t":"Masque capillaire","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants/masque-capillaire.html","has":false,"pid":null,"underline":false},{"t":"Huile végétale","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants/huile-vegetale.html","has":false,"pid":null,"underline":false}],"id":"root-2-2-1"},"root-2-2":{"title":"Cheveux","image":"https://www.avril-beaute.fr/media/catalog/category/12-_Cat_gorie_CHEVEUX_copie_2_retouch__1.jpg","see_all":"https://www.avril-beaute.fr/homme/cheveux.html","items":[{"t":"Shampooing et après shampooing","u":"https://www.avril-beaute.fr/homme/cheveux/shampooing-et-apres-shampooing.html","has":true,"pid":"root-2-2-0","underline":false},{"t":"Soin et produit coiffant","u":"https://www.avril-beaute.fr/homme/cheveux/soins-et-produits-coiffants.html","has":true,"pid":"root-2-2-1","underline":false},{"t":"Accessoires","u":"https://www.avril-beaute.fr/homme/cheveux/accessoires.html","has":false,"pid":null,"underline":false}],"id":"root-2-2"},"root-2":{"title":"Homme","image":"https://www.avril-beaute.fr/media/catalog/category/4-_Cat_gorie_HOMME_copie.jpg","see_all":"https://www.avril-beaute.fr/homme.html","items":[{"t":"Soin visage et rasage","u":"https://www.avril-beaute.fr/homme/soin-visage-et-rasage.html","has":true,"pid":"root-2-0","underline":false},{"t":"Corps et douche","u":"https://www.avril-beaute.fr/homme/corps-et-douche.html","has":true,"pid":"root-2-1","underline":false},{"t":"Cheveux","u":"https://www.avril-beaute.fr/homme/cheveux.html","has":true,"pid":"root-2-2","underline":false}],"id":"root-2"},"root-3-0":{"title":"Soin & nettoyant haute tolérance","image":"https://www.avril-beaute.fr/media/catalog/category/11-_Cat_gorie_FAMILLE_1__1.jpg","see_all":"https://www.avril-beaute.fr/bebe/nettoyant.html","items":[{"t":"Baume réparateur","u":"https://www.avril-beaute.fr/catalog/category/view/s/baume-reparateur-haute-tolerance/id/394/","has":false,"pid":null,"underline":false},{"t":"Crème neutre","u":"https://www.avril-beaute.fr/catalog/category/view/s/creme-neutre-haute-tolerance/id/396/","has":false,"pid":null,"underline":false},{"t":"Huile de massage","u":"https://www.avril-beaute.fr/catalog/category/view/s/huile-de-massage-haute-tolerance/id/395/","has":false,"pid":null,"underline":false},{"t":"Pain dermatologique","u":"https://www.avril-beaute.fr/bebe/nettoyant/pain-dermatologique-haute-tolerance.html","has":false,"pid":null,"underline":false},{"t":"Gel lavant neutre","u":"https://www.avril-beaute.fr/bebe/nettoyant/gel-lavant-neutre-haute-tolerance.html","has":false,"pid":null,"underline":false},{"t":"Gel lavant 2 en 1","u":"https://www.avril-beaute.fr/bebe/nettoyant/gel-lavant-2-en-1-en-poudre-a-reconstituer.html","has":false,"pid":null,"underline":false},{"t":"Eau nettoyante","u":"https://www.avril-beaute.fr/bebe/nettoyant/eau-nettoyante-haute-tolerance.html","has":false,"pid":null,"underline":false},{"t":"Dentifrice goût fraise","u":"https://www.avril-beaute.fr/bebe/nettoyant/dentifrice-gout-fraise.html","has":false,"pid":null,"underline":false}],"id":"root-3-0"},"root-3-1":{"title":"Accessoires","image":"https://www.avril-beaute.fr/media/catalog/category/9-_Cat_gorie_NOUVEAU_copie_15.jpg","see_all":"https://www.avril-beaute.fr/bebe/accessoires.html","items":[{"t":"Brosse à dents rechargeable","u":"https://www.avril-beaute.fr/bebe/accessoires/brosse-a-dents-rechargeable.html","has":false,"pid":null,"underline":false},{"t":"Gant & éponge visage","u":"https://www.avril-beaute.fr/bebe/accessoires/gant-eponges-visage.html","has":false,"pid":null,"underline":false},{"t":"Porte-savon & pochette","u":"https://www.avril-beaute.fr/bebe/accessoires/porte-savon-pochette.html","has":false,"pid":null,"underline":false},{"t":"Cure-oreilles","u":"https://www.avril-beaute.fr/bebe/accessoires/cure-oreilles.html","has":false,"pid":null,"underline":false},{"t":"Coupe-ongles","u":"https://www.avril-beaute.fr/bebe/accessoires/coupe-ongles.html","has":false,"pid":null,"underline":false},{"t":"Pince à épiler","u":"https://www.avril-beaute.fr/bebe/accessoires/pince-a-epiler.html","has":false,"pid":null,"underline":false},{"t":"Brosse & peigne","u":"https://www.avril-beaute.fr/bebe/accessoires/brosse-peigne.html","has":false,"pid":null,"underline":false}],"id":"root-3-1"},"root-3":{"title":"Famille","image":"https://www.avril-beaute.fr/media/catalog/category/11-_Cat_gorie_FAMILLE_copie_2_retouch_2_18.jpg","see_all":"https://www.avril-beaute.fr/bebe.html","items":[{"t":"Soin & nettoyant haute tolérance","u":"https://www.avril-beaute.fr/bebe/nettoyant.html","has":true,"pid":"root-3-0","underline":false},{"t":"Accessoires","u":"https://www.avril-beaute.fr/bebe/accessoires.html","has":true,"pid":"root-3-1","underline":false}],"id":"root-3"},"root-4-0":{"title":"Coffrets cadeaux","image":"https://www.avril-beaute.fr/media/catalog/category/7-_Cat_gorie_CADEAUX_copie_2_retouch__2.jpg","see_all":"https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux.html","items":[{"t":"Moins de 20€","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/20.html","has":false,"pid":null,"underline":false},{"t":"Moins de 30€","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/30.html","has":false,"pid":null,"underline":false},{"t":"Moins de 40€","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/40.html","has":false,"pid":null,"underline":false},{"t":"Moins de 60€","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux/60.html","has":false,"pid":null,"underline":false}],"id":"root-4-0"},"root-4":{"title":"Cadeaux","image":"https://www.avril-beaute.fr/media/catalog/category/7-_Cat_gorie_CADEAUX_copie_2_retouch_.jpg","see_all":"https://www.avril-beaute.fr/cadeaux/cadeaux.html","items":[{"t":"Coffrets cadeaux","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/coffrets-cadeaux.html","has":true,"pid":"root-4-0","underline":false},{"t":"Emballage cadeau","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/emballage-cadeau.html","has":false,"pid":null,"underline":false},{"t":"Carte cadeau","u":"https://www.avril-beaute.fr/cadeaux/cadeaux/carte-cadeau.html","has":false,"pid":null,"underline":false}],"id":"root-4"},"root-5":{"title":"Nouveau","image":"https://www.avril-beaute.fr/media/catalog/category/9-_Cat_gorie_NOUVEAU_copie.jpg","see_all":"https://www.avril-beaute.fr/nouveau.html","items":[{"t":"Nouveautés maquillage","u":"https://www.avril-beaute.fr/nouveau/nouveautes-maquillage.html","has":false,"pid":null,"underline":false},{"t":"Nouveautés soin","u":"https://www.avril-beaute.fr/nouveau/nouveautes-soin.html","has":false,"pid":null,"underline":false}],"id":"root-5"},"root":{"title":"","image":null,"see_all":null,"items":[{"t":"Soin","u":"https://www.avril-beaute.fr/soin.html","has":true,"pid":"root-0","underline":false},{"t":"Maquillage","u":"https://www.avril-beaute.fr/maquillage.html","has":true,"pid":"root-1","underline":false},{"t":"Homme","u":"https://www.avril-beaute.fr/homme.html","has":true,"pid":"root-2","underline":false},{"t":"Famille","u":"https://www.avril-beaute.fr/bebe.html","has":true,"pid":"root-3","underline":false},{"t":"Cadeaux","u":"https://www.avril-beaute.fr/cadeaux/cadeaux.html","has":true,"pid":"root-4","underline":false},{"t":"Nouveau","u":"https://www.avril-beaute.fr/nouveau.html","has":true,"pid":"root-5","underline":true},{"t":"Déjà Noël","u":"https://www.avril-beaute.fr/animation/noel/c-est-noel.html","has":false,"pid":null,"underline":false}],"id":"root"}}, openPanel(id){ if(id && this.panels[id]) { this.stack.push(id); } }, back(){ if(this.stack.length>1) { const path = this.getMenuPath(); window.dataLayer = window.dataLayer || []; window.dataLayer.push({ "event": "nav_menu_return", "event_parameter": path, "event_value": "" }); this.stack.pop(); } }, current(){ return this.stack[this.stack.length-1] }, closeAll(){ this.stack = ["root"] }, getMenuPath() { return this.stack .filter(id => id !== "root") .map(id => this.panels[id].title) .join(" > "); }, pushMenuClick(itemTitle, url) { const path = this.getMenuPath(); window.dataLayer = window.dataLayer || []; window.dataLayer.push({ "event": "nav_menu_click", "event_parameter": path !== "" ? path : "root", "event_value": url }); } }'
x-id="['panel']"
>
<!-- LEVEL 1 (root) -->
<section
class="panel level-1"
role="region"
:aria-labelledby="$id('panel')"
x-show="current()==='root'"
>
<ul>
<template x-for="item in panels.root.items" :key="item.t + (item.pid || '')">
<li class="flex items-center justify-between py-4 px-2">
<template x-if="item.u && !item.has">
<a class="font-abhayalibre text-left flex-1 text-22 font-extrabold" :href="item.u"
@click="pushMenuClick(item.t, item.u)">
<span :class="{ 'underline-effect underline-effect-bg_secondary': item.underline }" x-text="item.t"></span>
</a>
</template>
<template x-if="!item.u || item.has">
<button
type="button"
class="font-abhayalibre text-left flex-1 text-22 font-extrabold"
@click="openPanel(item.pid)"
aria-haspopup="true"
:aria-expanded="current()===item.pid"
>
<span :class="{ 'underline-effect underline-effect-bg_secondary': item.underline }" x-text="item.t"></span>
</button>
</template>
<template x-if="item.has">
<button
type="button"
class="ml-3 shrink-0"
@click="openPanel(item.pid)"
:aria-label="'Open\u0020' + item.t"
>
<div class="w-8 h-8">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg>
</div>
</button>
</template>
</li>
</template>
</ul>
</section>
<!-- LEVELS 2+ : full-screen overlay panels, teleported -->
<template x-for="(panel, pid) in panels" :key="pid">
<template x-if="pid !== 'root'">
<template x-teleport=".megamenu-burger-mobile">
<section
class="panel fixed inset-0 bg-background z-20 flex flex-col"
role="region"
aria-live="polite"
x-show="current()===pid"
x-transition.opacity
>
<header class="flex flex-col items-center px-4 pt-3 pb-12 border-b"
:style="panel.image ? { backgroundImage: 'url(' + panel.image + ')', backgroundSize: 'cover', backgroundPosition: 'center' } : {}"
>
<div class="flex justify-between items-center w-full">
<div class="flex items-center gap-1"
@click="back()"
aria-label="Retour"
role="button" tabindex="0">
<div class="w-8 h-8 rotate-180">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg>
</div>
<span>Retour</span>
</div>
<a
@click="closeAll(); $dispatch('toggle-mobile-megamenu');"
class="flex items-center justify-center cursor-pointer ml-auto"
aria-label="Fermer"
>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="p-4" width="60" height="60" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
</svg>
</a>
</div>
<div class="w-full text-center">
<a class="font-abhayalibre text-4xl font-extrabold underline"
:href="panel.see_all"
@click="pushMenuClick(panel.title, panel.see_all)"
x-text="panel.title">
</a>
</div>
</header>
<button class="relative w-full min-w-0 p-4" @click.prevent=" searchOpen = !searchOpen; $dispatch('search-open', { menu_path: getMenuPath() }); "
aria-haspopup="true"
:aria-expanded="searchOpen">
<label class="sr-only" :for="'search-' + panel.id">
Recherchez ici </label>
<input type="search" :id="'search-' + panel.id"
class="no-search-cancel w-full pointer-events-none py-6 border-0 rounded-md placeholder:text-sm"
placeholder="Recherchez ici"
readonly
tabindex="-1"
/>
<div class="p-1 pointer-events-none absolute top-1/2 -translate-y-1/2 right-6"
aria-label="Search"
tabindex="-1"
>
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewbox="0 0 28 28" fill="none" aria-hidden="true">
<path d="M21.0003 21.0003L17.625 17.625" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2218 19.4437C16.6581 19.4437 19.4437 16.6581 19.4437 13.2218C19.4437 9.78561 16.6581 7 13.2218 7C9.78561 7 7 9.78561 7 13.2218C7 16.6581 9.78561 19.4437 13.2218 19.4437Z" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
</button>
<ul class="flex-1">
<template x-for="item in panel.items" :key="item.t + (item.pid || '')">
<li class="flex items-center justify-between py-4 px-4">
<template x-if="item.u && !item.has">
<a class="block font-abhayalibre flex-1 text-22 font-extrabold" :href="item.u"
@click="pushMenuClick(item.t, item.u)"
x-text="item.t"></a>
</template>
<template x-if="!item.u || item.has">
<button
type="button"
class="font-abhayalibre text-left flex-1 text-22 font-extrabold"
@click="openPanel(item.pid)"
aria-haspopup="true"
:aria-expanded="current()===item.pid"
x-text="item.t"
></button>
</template>
<template x-if="item.has">
<button
type="button"
class="ml-3 shrink-0"
@click="openPanel(item.pid)"
:aria-label="'Open\u0020' + item.t"
>
<div class="w-8 h-8">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg>
</div>
</button>
</template>
</li>
</template>
</ul>
<template x-if="panel.see_all">
<div class="px-4 py-3 mb-6">
<a class="inline-flex underline items-center gap-2" :href="panel.see_all" rel="nofollow"
@click="pushMenuClick(panel.title, panel.see_all)">
Voir tout <span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="16" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
</svg>
</span>
</a>
</div>
</template>
</section>
</template>
</template>
</template>
</div>
</div>
</div>
<div :class="{ 'hidden' : !open }" class="flex flex-col bg-white flex-1" x-cloak>
<div class="block lg:hidden flex flex-col py-4 flex-1">
<ul>
<li x-data="{ open: false }" class="relative w-full px-6">
<button
@click="open = !open"
class="flex items-center justify-between w-full mr-8">
<span>Le projet Avril</span>
<div class="w-8 h-8 transition-transform duration-300" :class="open ? 'rotate-90' : ''">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
</svg>
</div>
</button>
<div
x-show="open"
@click.away="open = false"
x-transition>
<style>#html-body [data-pb-style=Y9H1S33]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="Y9H1S33"><div data-content-type="text" data-appearance="default" data-element="main"><p id="Q24S9MD" style="line-height: 2;"><a tabindex="0" title="Nos produits" href="/le-projet-avril-nos-produits">Nos produits</a></p>
<p style="line-height: 2;"><a tabindex="0" title="Nos engagements" href="/le-projet-avril-environnement">Nos engagements</a></p>
<p style="line-height: 2;"><a tabindex="0" title="Le collectif Avril" href="/le-projet-avril-collectif">Le collectif Avril</a></p></div></div></div> </div>
</li>
<li class="w-full px-6 py-4">
<a href="https://www.avril-beaute.fr/qui-est-avril-marque-cosmetique-bio" class="flex items-center"
title="Notre histoire">
<span>Notre histoire</span>
</a>
</li>
<hr class="h-px mb-6 mt-4 bg-gray-200 border-0 dark:bg-gray-700 w-11/12 mx-auto">
<li class="w-full px-4 pb-4">
<a href="https://www.avril-beaute.fr/customer/account/" class="flex items-center gap-2"
title="Mon compte">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 13 14" fill="none" class="w-4 h-4 stroke-[1.5]" aria-hidden="true">
<path d="M6.08333 7.41667C7.92428 7.41667 9.41667 5.92428 9.41667 4.08333C9.41667 2.24238 7.92428 0.75 6.08333 0.75C4.24238 0.75 2.75 2.24238 2.75 4.08333C2.75 5.92428 4.24238 7.41667 6.08333 7.41667Z" stroke="#1D1D1B" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11.4167 12.7493C11.4167 11.3349 10.8548 9.97831 9.85457 8.97811C8.85438 7.97792 7.49782 7.41602 6.08333 7.41602C4.66885 7.41602 3.31229 7.97792 2.3121 8.97811C1.3119 9.97831 0.75 11.3349 0.75 12.7493" stroke="#1D1D1B" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<span>Mon compte</span>
</a>
</li>
<li class="w-full px-4 pb-4">
<a href="https://www.avril-beaute.fr/wishlist/" class="flex items-center gap-2"
title="Vos favoris">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 16 14" fill="" class="w-4 h-4 fill-transparent stroke-[1.1]" aria-hidden="true">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<span>Vos favoris</span>
</a>
</li>
<li class="w-full px-4 pb-4">
<a href="https://www.avril-beaute.fr/contact/" class="flex items-center gap-2"
title="Nous contacter">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" class="w-4 h-4 stroke-[1.4]" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"/>
</svg>
<span>Nous contacter</span>
</a>
</li>
<li class="w-full px-4 pb-4">
<a href="https://www.avril-beaute.fr/points-de-vente" class="flex items-center gap-2"
title="Nos boutiques">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 18 18" fill="none" class="w-4 h-4 stroke-[1.3]" aria-hidden="true">
<path d="M11.2485 15.7469V11.9977C11.2485 11.7988 11.1695 11.6081 11.0289 11.4675C10.8883 11.3268 10.6975 11.2478 10.4987 11.2478H7.49935C7.30048 11.2478 7.10976 11.3268 6.96914 11.4675C6.82852 11.6081 6.74952 11.7988 6.74952 11.9977V15.7469M13.3285 7.73113C13.1722 7.58149 12.9642 7.49796 12.7478 7.49796C12.5314 7.49796 12.3234 7.58149 12.1671 7.73113C11.8184 8.06369 11.3551 8.24923 10.8732 8.24923C10.3914 8.24923 9.92805 8.06369 9.57939 7.73113C9.42311 7.58171 9.21523 7.49832 8.99902 7.49832C8.7828 7.49832 8.57492 7.58171 8.41865 7.73113C8.06994 8.06391 7.60645 8.24958 7.12444 8.24958C6.64242 8.24958 6.17893 8.06391 5.83023 7.73113C5.67391 7.58149 5.46587 7.49796 5.24948 7.49796C5.03309 7.49796 4.82505 7.58149 4.66874 7.73113C4.33194 8.05251 3.88762 8.23709 3.42224 8.24892C2.95685 8.26076 2.50372 8.099 2.15103 7.79514C1.79834 7.49129 1.57133 7.06707 1.51418 6.60506C1.45704 6.14304 1.57384 5.6763 1.84187 5.29566L4.00813 2.15835C4.14558 1.95553 4.33063 1.78948 4.5471 1.67471C4.76356 1.55994 5.00485 1.49995 5.24986 1.5H12.7482C12.9925 1.49991 13.2331 1.55949 13.4491 1.67358C13.6651 1.78766 13.85 1.95279 13.9876 2.15461L16.1584 5.29791C16.4265 5.67885 16.5432 6.14595 16.4857 6.6082C16.4282 7.07045 16.2006 7.49474 15.8474 7.79838C15.4941 8.10202 15.0405 8.26326 14.5748 8.25069C14.1092 8.23812 13.6649 8.05263 13.3285 7.73038" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3 8.21094V14.2471C3 14.6448 3.158 15.0263 3.43924 15.3075C3.72048 15.5888 4.10193 15.7468 4.49966 15.7468H13.4976C13.8954 15.7468 14.2768 15.5888 14.5581 15.3075C14.8393 15.0263 14.9973 14.6448 14.9973 14.2471V8.21094" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<span>Nos boutiques</span>
</a>
</li>
<li class="w-full px-4 pb-4">
<a href="https://www.avril-pro.fr/" class="flex items-center gap-2"
title="Espace Pro">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke="currentColor" class="w-4 h-4 stroke-[1.5]" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/>
</svg>
<span>Espace Pro</span>
</a>
</li>
</ul>
<div class="px-6 pt-4 pb-6">
<div x-data="{ open: false }" class="w-full pr-4">
<div class="relative text-right">
<div class="flex justify-start">
<button
@click="open = !open"
@click.outside="open = false"
@keydown.window.escape="open = false"
type="button"
class="w-full border-none p-0 text-sm shadow-none leading-[140%] font-light font-sans min-h-fit flex items-center pr-5 gap-2"
:aria-expanded="open.toString()"
aria-haspopup="true"
>
Français
<img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/FR.svg"
alt=""
width="17"
height="17"
aria-hidden="true"
loading="lazy" />
<span
:class="open ? 'inline-block rotate-90 transition-transform duration-300' : 'inline-block -rotate-90 transition-transform duration-300'"
>
<svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true" class="block">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
</button>
</div>
<nav
x-cloak
x-show="open"
x-transition.origin.top.left
class="absolute mdonly:left-0 md:right-0 top-full z-20 w-auto py-2 mt-1 overflow-auto origin-top-left rounded-sm shadow-lg lg:mt-3 bg-container-lighter"
>
<div class="my-1" role="menu" aria-orientation="vertical" aria-labelledby="options-menu">
<a
x-data
@click.prevent="$el.setAttribute('href', atob($el.dataset.enc)); window.location.href = atob($el.dataset.enc)"
href="#"
role="link"
data-enc="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL3N0b3Jlcy9zdG9yZS9yZWRpcmVjdC9fX19zdG9yZS9iMmNfZW4vX19fZnJvbV9zdG9yZS9iMmNfZnIvdWVuYy9hSFIwY0hNNkx5OTNkM2N1WVhaeWFXd3RiM0puWVc1cFl5NWpiMjB2WVhCd2JHVXRkRzkxWTJndGFXTnZiaTV3Ym1jX1gxOWZjM1J2Y21VOVlqSmpYMlZ1Lw=="
class="px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100 leading-[140%] font-light font-sans text-sm flex items-center gap-4 md:justify-end"
>
Anglais <img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/EN.svg"
alt=""
width="17"
height="17"
aria-hidden="true"
loading="lazy" />
</a>
<a
x-data
@click.prevent="$el.setAttribute('href', atob($el.dataset.enc)); window.location.href = atob($el.dataset.enc)"
href="#"
role="link"
data-enc="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL3N0b3Jlcy9zdG9yZS9yZWRpcmVjdC9fX19zdG9yZS9iMmNfZXMvX19fZnJvbV9zdG9yZS9iMmNfZnIvdWVuYy9hSFIwY0hNNkx5OTNkM2N1WVhaeWFXd3RZbWx2TG1WekwyRndjR3hsTFhSdmRXTm9MV2xqYjI0dWNHNW5QMTlmWDNOMGIzSmxQV0l5WTE5bGN3fn4v"
class="px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100 leading-[140%] font-light font-sans text-sm flex items-center gap-4 md:justify-end"
>
Espagnol <img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/ES.svg"
alt=""
width="17"
height="17"
aria-hidden="true"
loading="lazy" />
</a>
</div>
</nav>
</div>
</div>
</div><div class="flex justify-center items-center flex-1 mb-6"><div class="fixed-logo order-2 lg:order-1 w-auto">
<a
class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title w-[60px] h-[52px] md:w-[78px] md:h-[68px] mx-auto"
href="https://www.avril-beaute.fr/"
aria-label="Go to Home page"
>
<img
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/logo.svg"
alt="Avril"
width="71" height="62" loading="eager"
/>
</a>
</div>
<div class="sticky-logo hidden order-2 lg:order-1 w-auto">
<a
class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title w-[30px] h-[30px] mx-auto"
href="https://www.avril-beaute.fr/"
aria-label="Go to Home page"
>
<img
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/logo-floral.svg"
alt="Avril"
width="30"
height="30"
loading="eager"
/>
</a>
</div>
</div></div> </div>
</div>
</div>
<script>
'use strict';
const initMegaMenuMobile = () => ({ open: false });
</script>
<button
id="menu-search-icon"
class="block lg:hidden p-1 order-2 lg:order-0"
@click.prevent=" searchOpen = !searchOpen; $dispatch('search-open'); "
aria-label="Toggle search form"
aria-haspopup="true"
:aria-expanded="searchOpen"
x-ref="searchButton"
>
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewbox="0 0 28 28" fill="none" class="w-full h-full" aria-hidden="true">
<path d="M21.0003 21.0003L17.625 17.625" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2218 19.4437C16.6581 19.4437 19.4437 16.6581 19.4437 13.2218C19.4437 9.78561 16.6581 7 13.2218 7C9.78561 7 7 9.78561 7 13.2218C7 16.6581 9.78561 19.4437 13.2218 19.4437Z" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
<div class="header-links flex items-center gap-2 lg:gap-1 order-3 lg:-mr-1">
<!--Search Icon-->
<button
id="menu-search-icon"
class="hidden lg:block"
@click.prevent=" searchOpen = !searchOpen; $dispatch('search-open'); "
aria-label="Toggle search form"
aria-haspopup="true"
:aria-expanded="searchOpen"
x-ref="searchButton"
>
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewbox="0 0 28 28" fill="none" class="w-full h-full" aria-hidden="true">
<path d="M21.0003 21.0003L17.625 17.625" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2218 19.4437C16.6581 19.4437 19.4437 16.6581 19.4437 13.2218C19.4437 9.78561 16.6581 7 13.2218 7C9.78561 7 7 9.78561 7 13.2218C7 16.6581 9.78561 19.4437 13.2218 19.4437Z" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<!-- Additional Header Elements -->
<a href="https://www.avril-beaute.fr/points-de-vente" title="Trouver un magasin"
class="hidden md:flex justify-center items-center flex-col">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 18 18" fill="none" class="w-6 h-6 max-w-full" aria-hidden="true">
<path d="M11.2485 15.7469V11.9977C11.2485 11.7988 11.1695 11.6081 11.0289 11.4675C10.8883 11.3268 10.6975 11.2478 10.4987 11.2478H7.49935C7.30048 11.2478 7.10976 11.3268 6.96914 11.4675C6.82852 11.6081 6.74952 11.7988 6.74952 11.9977V15.7469M13.3285 7.73113C13.1722 7.58149 12.9642 7.49796 12.7478 7.49796C12.5314 7.49796 12.3234 7.58149 12.1671 7.73113C11.8184 8.06369 11.3551 8.24923 10.8732 8.24923C10.3914 8.24923 9.92805 8.06369 9.57939 7.73113C9.42311 7.58171 9.21523 7.49832 8.99902 7.49832C8.7828 7.49832 8.57492 7.58171 8.41865 7.73113C8.06994 8.06391 7.60645 8.24958 7.12444 8.24958C6.64242 8.24958 6.17893 8.06391 5.83023 7.73113C5.67391 7.58149 5.46587 7.49796 5.24948 7.49796C5.03309 7.49796 4.82505 7.58149 4.66874 7.73113C4.33194 8.05251 3.88762 8.23709 3.42224 8.24892C2.95685 8.26076 2.50372 8.099 2.15103 7.79514C1.79834 7.49129 1.57133 7.06707 1.51418 6.60506C1.45704 6.14304 1.57384 5.6763 1.84187 5.29566L4.00813 2.15835C4.14558 1.95553 4.33063 1.78948 4.5471 1.67471C4.76356 1.55994 5.00485 1.49995 5.24986 1.5H12.7482C12.9925 1.49991 13.2331 1.55949 13.4491 1.67358C13.6651 1.78766 13.85 1.95279 13.9876 2.15461L16.1584 5.29791C16.4265 5.67885 16.5432 6.14595 16.4857 6.6082C16.4282 7.07045 16.2006 7.49474 15.8474 7.79838C15.4941 8.10202 15.0405 8.26326 14.5748 8.25069C14.1092 8.23812 13.6649 8.05263 13.3285 7.73038" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3 8.21094V14.2471C3 14.6448 3.158 15.0263 3.43924 15.3075C3.72048 15.5888 4.10193 15.7468 4.49966 15.7468H13.4976C13.8954 15.7468 14.2768 15.5888 14.5581 15.3075C14.8393 15.0263 14.9973 14.6448 14.9973 14.2471V8.21094" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<!--Customer Icon & Dropdown-->
<!-- BLOCK header.customer -->
<div
x-cloak
id="customer-menu-drawer"
x-data="initCustomerMenuDrawer()"
@toggle-register-form.window="showRegisterForm = $event.detail"
@keydown.escape="closeCustomerMenuDrawer"
class="relative inline-block"
>
<button
type="button"
id="customer-menu"
class="block w-full h-full"
@click="open = !open"
:aria-expanded="open ? 'true' : 'false'"
aria-label="Mon compte"
aria-haspopup="true">
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewbox="0 0 28 28" fill="none" class="w-full h-full stroke-[1.1]" aria-hidden="true">
<path d="M14 14.7503C16.4162 14.7503 18.375 12.7915 18.375 10.3751C18.375 7.95881 16.4162 6 14 6C11.5838 6 9.625 7.95881 9.625 10.3751C9.625 12.7915 11.5838 14.7503 14 14.7503Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M21 21.7502C21 19.8936 20.2625 18.1131 18.9497 16.8003C17.637 15.4875 15.8565 14.75 14 14.75C12.1435 14.75 10.363 15.4875 9.05025 16.8003C7.7375 18.1131 7 19.8936 7 21.7502" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<div role="dialog"
aria-labelledby="customer-drawer-title"
aria-modal="true"
:aria-hidden="!open"
:class="open ? 'fixed bottom-0 top-24 md:top-0 right-0 z-50 w-full md:w-[515px] max-w-full' : 'hidden'"
class="flex">
<div class="backdrop"
x-show="open"
x-transition:enter="ease-in-out duration-500"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="ease-in-out duration-500"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
role="button"
@click="closeCustomerMenuDrawer"
aria-label="Fermer"></div>
<div class="relative bg-background shadow-2xl rounded-xl md:rounded-none w-full max-w-full z-20"
x-show="open"
x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
x-transition:enter-start="translate-x-full"
x-transition:enter-end="translate-x-0"
x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
x-transition:leave-start="translate-x-0"
x-transition:leave-end="translate-x-full"
role="region"
:tabindex="open ? 0 : -1"
aria-label="Customer Menu"
>
<div class="flex flex-col text-center h-full max-h-screen shadow-xl overflow-y-auto pb-20">
<div x-show="!showRegisterForm" x-transition>
<div class="pt-20 pb-8 bg-white rounded-xl px-6 flex flex-col">
<div class="mb-3">
<p class="text-28 font-abhayalibre font-bold">Nouveau client ?</p>
</div>
<a href="#" class="btn btn-primary mx-auto text-sm !px-16 !py-3"
@click.prevent="$dispatch('toggle-register-form', true)">
Créer mon compte </a>
</div>
</div>
<div x-show="showRegisterForm" x-transition>
<div class="pt-10 pb-8 px-6 flex flex-col">
<a href="#" class="text-sm text-left mb-4"
@click.prevent="$dispatch('toggle-register-form', false)">
< Retour </a>
<div class="mb-3">
<p class="text-28 font-abhayalibre font-bold">Créer mon compte</p>
</div>
<form class="form create account form-create-account"
action="https://www.avril-beaute.fr/customer/ajax/createpost/"
x-data="Object.assign(hyva.formValidationAjax($el), initForm_6acf38b277b03($el))"
@submit.prevent="submitForm()"
id="header-customer-form-register"
method="post" enctype="multipart/form-data" autocomplete="off"
>
<input name="form_key" type="hidden" value="6tSNyZIHOtonqYwu" /> <div class="control">
<input type="hidden"
value=""
name="g-recaptcha-response"
>
</div>
<fieldset class="w-full mx-auto">
<div class="legend text-sm text-center w-full mb-4 font-light">
<span>Informations personnelles</span>
</div>
<input type="hidden" name="success_url" value="">
<input type="hidden" name="error_url" value="">
<div class="field field-reserved gender required">
<div class="control">
<select id="header_gender"
name="gender"
title="Genre"
class="form-select"
required>
<option value="1"
>
M </option>
<option value="2"
>
Mme </option>
</select>
</div>
</div>
<div class="field field-reserved w-full field-name-firstname required">
<div class="control">
<input type="text" id="header_firstname"
name="firstname"
value=""
required
placeholder="Prénom*"
title="Prénom"
class="form-input w-full required-entry"
@input.debounce="onChange"
required>
</div>
</div>
<div class="field field-reserved w-full field-name-lastname required">
<div class="control">
<input type="text" id="header_lastname"
name="lastname"
required
value=""
placeholder="Nom*"
title="Nom"
class="form-input w-full required-entry"
@input.debounce="onChange"
required>
</div>
</div>
<div class="legend text-sm text-center w-full my-4 font-light">
<span>Informations de connexion</span>
</div>
<div class="field field-reserved required">
<div class="control">
<input
type="email"
name="email"
autocomplete="email"
id="header_email_address"
required
value=""
placeholder="E-mail*"
class="form-input w-full"
@input.debounce="onChange"
/>
</div>
</div>
<!-- Password fields remain unchanged -->
<div class="field field-reserved required">
<div class="flex flex-wrap gap-4 mb-2.5">
<div class="control relative w-full">
<div class="sr-only" aria-live="polite">
<template x-if="!showPassword">
<span>Password hidden</span>
</template>
<template x-if="showPassword">
<span>Password shown</span>
</template>
</div>
<input
:type="showPassword ? 'text' : 'password'"
type="password"
id="header_password"
name="password"
placeholder="Mot de passe*"
title="Mot de passe"
minlength="8"
class="form-input"
required
data-validate='{"password-strength": {"minCharacterSets": 3, "minimumPasswordLength": 8}}'
@input.debounce="onChange"
autocomplete="off"
>
<button
type="button"
:aria-pressed="showPassword ? true : false"
x-on:click="showPassword = !showPassword"
class="absolute top-1/2 right-0 -translate-y-1/2 px-4 py-3"
:aria-label="showPassword ? 'Hide\u0020Password' : 'Show\u0020Password'"
>
<template x-if="!showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
<template x-if="showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
</button>
</div>
<ul class="password-criteria text-left !pb-0 !mb-0 -mt-2.5">
<li data-criterion="length" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
8 caractères minimum </li>
<li data-criterion="uppercase" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
1 lettre majuscule </li>
<li data-criterion="lowercase" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
1 lettre minuscule </li>
<li data-criterion="number" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
1 chiffre </li>
</ul>
</div>
</div>
<!-- Password confirm -->
<div class="field field-reserved required">
<div class="control relative w-full">
<div class="sr-only" aria-live="polite">
<template x-if="!showPasswordConfirm">
<span>Confirm password hidden</span>
</template>
<template x-if="showPasswordConfirm">
<span>confirm password shown</span>
</template>
</div>
<input
:type="showPasswordConfirm ? 'text' : 'password'"
type="password"
name="password_confirmation"
placeholder="Confirmer le mot de passe*"
title="Confirmer le mot de passe"
id="header_password-confirmation"
data-validate='{"equalTo": "password"}'
@input.debounce="onChange"
required
class="form-input"
autocomplete="off"
>
<button
type="button"
x-on:click="showPasswordConfirm = !showPasswordConfirm"
:aria-pressed="showPasswordConfirm ? true : false"
class="absolute top-1/2 right-0 -translate-y-1/2 px-4 py-3"
:aria-label=" showPasswordConfirm ? 'Hide\u0020Password' : 'Show\u0020Password' "
>
<template x-if="!showPasswordConfirm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
<template x-if="showPasswordConfirm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
</button>
</div>
</div>
<div class="field sponsorship text-left">
<div class="legend text-sm text-center w-full my-4 font-light">
<span>Programme de parrainage</span>
</div>
<p class="subtitle text-xs md:text-sm font-light text-left mb-2.5">
Vous avez découvert Avril grâce à un.e proche ? Indiquez ici son adresse e-mail </p>
<div class="field !mt-2.5">
<label for="header_sponsor_email_address" class="label hidden">
<span>Adresse e-mail de votre parrain</span>
</label>
<div class="control">
<input type="email"
name="sponsor_email_address"
autocomplete="email"
id="header_sponsor_email_address"
value=""
title="Adresse e-mail de votre parrain"
placeholder="Adresse e-mail de votre parrain"
class="input-text">
</div>
</div>
</div>
<div class="field choice newsletter !items-start">
<input type="checkbox" name="is_subscribed" class="mt-1"
title="Abonnez-vous à la lettre d’information" value="1"
id="header_is_subscribed">
<label
for="header_is_subscribed"
class="label text-sm font-light text-left">
<span>
Je souhaite recevoir les newsletters d'Avril (nouveautés produits, conseils bien-être, inspiration make-up et bien sûr nos avancées en faveur de l'environnement), personnalisées et suivies (ouverture, clics) </span>
</label>
</div>
<div class="actions-toolbar !border-0">
<div class="primary w-full">
<button type="submit"
:disabled="isLoading || disabledByRecaptcha"
x-bind:aria-busy="isLoading ? 'true' : 'false'"
class="mx-auto action submit primary btn btn-primary disabled:opacity-75"
title="Créer mon compte"
>
<span
x-text="isLoading ? 'Chargement\u0020en\u0020cours...' : 'Cr\u00E9er\u0020mon\u0020compte'"></span>
</button>
</div>
</div>
<div x-show="globalError" class="mt-4 text-red-600 text-sm" x-text="globalError"></div>
</fieldset>
</form>
<p class="font-light text-sm leading-[140%] text-gray_avril-100 text-left mt-6">
<span>
Les données personnelles recueillies sur ce formulaire font l'objet d'un traitement informatique opéré sous la responsabilité d'Avril. Pour plus d'informations sur les traitements de données personnelles, veuillez consulter notre </span>
<a href="https://www.avril-beaute.fr/politique-de-confidentialite/" class="underline">
Politique de confidentialité. </a>
</p>
</div>
<script>
function formValidationAjax(form, options = {}) {
const instance = hyva.formValidation(form, options);
// Never wrap the input; use existing parent as container
instance.getMessagesWrapper = function (field, messagesClassName) {
const container = field.element.parentElement;
let msgWrapper = container.querySelector(`.${messagesClassName}`);
if (!msgWrapper) {
msgWrapper = document.createElement('ul');
msgWrapper.classList.add(messagesClassName);
container.appendChild(msgWrapper);
}
return msgWrapper;
}
return instance;
}
hyva.formValidationAjax = formValidationAjax;
</script>
<script>
function initForm_6acf38b277b03($el) {
return {
errors: 0,
hasCaptchaToken: 0,
globalError: '',
showPassword: false,
showPasswordConfirm: false,
disabledByRecaptcha: false,
isLoading: false,
clearErrors() {
this.globalError = '';
this.errors = 0;
$el.querySelectorAll('.field-error ul.messages li').forEach(el => el.remove());
},
submitForm() {
this.isLoading = true;
this.clearErrors();
this.validate().then(() => {
const $form = document.querySelector('#header\u002Dcustomer\u002Dform\u002Dregister');
if (!this.hasCaptchaToken) {
this.errors = 1;
const lockSubmitButton = () => {
$form.querySelector('[type="submit"]')?.setAttribute('disabled', true);
};
const failCaptcha = (errorMessage, exception = null) => {
this.errors = 1;
lockSubmitButton();
if (this.setErrorMessages) {
this.setErrorMessages([errorMessage]);
this.displayErrorMessage = true;
} else {
window.dispatchMessages && window.dispatchMessages([{ type: "error", text: errorMessage }], 5000);
}
if (exception) {
console.error(
exception ||
'An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?'
);
}
};
const executeGreCaptcha = () => {
grecaptcha.ready(() => {
grecaptcha.execute(
'6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q',
{action: 'submit'}
).then((token) => {
const tokenElement = $form['g\u002Drecaptcha\u002Dresponse'];
if (tokenElement && token && token.length > 0) {
$form['g\u002Drecaptcha\u002Dresponse'].value = token;
this.errors = 0;
this.hasCaptchaToken = 1;
(this.submitForm || $form.submit).call(this);
} else {
failCaptcha(
tokenElement
? 'ReCaptcha\u0020validation\u0020failed.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
: 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
);
}
}).catch((exception) => {
failCaptcha(
'ReCaptcha\u0020validation\u0020failed\u0020due\u0020to\u0020a\u0020technical\u0020error.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.',
exception
);
});
});
};
if (window.grecaptcha) {
executeGreCaptcha();
} else {
const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q";
const script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', recaptchaUrl);
document.head.appendChild(script);
script.addEventListener("load", executeGreCaptcha, false);
}
}
if (!this.hasCaptchaToken) {
this.isLoading = false;
return;
}
if (this.errors > 0) {
this.isLoading = false;
this.setErrorMessages('La\u0020validation\u0020ReCaptcha\u0020a\u0020\u00E9chou\u00E9,\u0020veuillez\u0020r\u00E9essayer');
return;
}
return this.doSubmit($form);
}).catch(() => {
this.isLoading = false;
});
},
async doSubmit($form) {
const formData = new FormData($form);
fetch($form.action, {
method: 'POST',
body: formData,
headers: {'X-Requested-With': 'XMLHttpRequest'},
})
.then(response => response.json())
.then(data => {
if (data.success) {
const successMsg = document.createElement('div');
successMsg.className = 'mb-4 text-green text-sm';
successMsg.textContent = data.message;
$form.prepend(successMsg);
const currentPath = window.location.pathname;
if (currentPath.includes('checkout/cart')) {
window.location.href = 'https://www.avril-beaute.fr/checkout/';
} else {
window.location.reload();
}
} else {
this.globalError = data.message || 'Une\u0020erreur\u0020s\u0027est\u0020produite.\u0020Veuillez\u0020r\u00E9essayez\u0020s\u2019il\u0020vous\u0020pla\u00EEt.';
this.isLoading = false;
}
})
.catch((error) => {
this.globalError = 'Une\u0020erreur\u0020s\u0027est\u0020produite.\u0020Veuillez\u0020r\u00E9essayez\u0020s\u2019il\u0020vous\u0020pla\u00EEt.';
console.error(error);
this.isLoading = false;
});
}
}
}
</script>
</div>
<div x-show="!showRegisterForm" x-transition>
<div id="container-header-login" class="px-6 mt-8">
<div class="mb-3">
<p id="customer-menu-drawer-title" class="text-28 font-abhayalibre font-bold">
<span>Déjà client ?</span>
</p>
</div>
<form id="header-customer-form-login"
x-data="initCustomerHeaderLoginForm_6acf38b278832()"
@submit.prevent="submitForm()"
class="form header-form-login w-full">
<input name="form_key" type="hidden" value="6tSNyZIHOtonqYwu" />
<fieldset class="fieldset login">
<div class="field email required mb-4">
<input type="email" name="login[username]"
class="form-input w-full"
required
placeholder="E-mail*"
value=""
autocomplete="off"
/>
</div>
<div class="field password required">
<div class="relative w-full">
<input type="password" name="login[password]"
class="form-input w-full"
required
placeholder="Mot de passe*"
autocomplete="off"
:type="showPassword ? 'text' : 'password'"
/>
<button type="button" x-on:click="showPassword = !showPassword"
class="absolute top-1/2 right-0 -translate-y-1/2 px-4 py-3">
<template x-if="!showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
<template x-if="showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
</button>
</div>
</div>
<div class="flex flex-col mt-4 gap-4">
<a href="https://www.avril-beaute.fr/customer/account/forgotpassword/" class="text-sm underline">
Mot de passe oublié ? </a>
<button type="submit"
class="btn btn-primary mx-auto text-sm !px-16 !py-3"
:disabled="isLoading || disabledByRecaptcha"
x-bind:aria-busy="isLoading ? 'true' : 'false'">
<span
x-text="isLoading ? 'Chargement\u0020en\u0020cours...' : 'Me\u0020connecter'"></span>
</button>
<div class="control">
<input type="hidden"
value=""
name="g-recaptcha-response"
>
</div>
</div>
<div>
<template x-if="displayErrorMessage">
<p class="text-red flex items-center mt-4 gap-2.5">
<span class="inline-block">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
<title>exclamation-circle</title></svg>
</span>
<template x-for="(errorMessage, idx) in errorMessages" :key="idx">
<span x-html="errorMessage"></span>
</template>
</p>
</template>
</div>
</fieldset>
</form>
</div>
<script>
function initCustomerHeaderLoginForm_6acf38b278832() {
return {
errors: 0,
hasCaptchaToken: 0,
isLoading: false,
showPassword: false,
displayErrorMessage: false,
errorMessages: [],
disabledByRecaptcha: false,
setErrorMessages(messages) {
this.errorMessages = Array.isArray(messages) ? messages : [messages];
this.displayErrorMessage = this.errorMessages.length > 0;
},
async submitForm() {
this.isLoading = true;
this.displayErrorMessage = false;
this.errorMessages = [];
const $form = document.querySelector('#header-customer-form-login');
if (!this.hasCaptchaToken) {
this.errors = 1;
const lockSubmitButton = () => {
$form.querySelector('[type="submit"]')?.setAttribute('disabled', true);
};
const failCaptcha = (errorMessage, exception = null) => {
this.errors = 1;
lockSubmitButton();
if (this.setErrorMessages) {
this.setErrorMessages([errorMessage]);
this.displayErrorMessage = true;
} else {
window.dispatchMessages && window.dispatchMessages([{ type: "error", text: errorMessage }], 5000);
}
if (exception) {
console.error(
exception ||
'An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?'
);
}
};
const executeGreCaptcha = () => {
grecaptcha.ready(() => {
grecaptcha.execute(
'6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q',
{action: 'submit'}
).then((token) => {
const tokenElement = $form['g\u002Drecaptcha\u002Dresponse'];
if (tokenElement && token && token.length > 0) {
$form['g\u002Drecaptcha\u002Dresponse'].value = token;
this.errors = 0;
this.hasCaptchaToken = 1;
(this.submitForm || $form.submit).call(this);
} else {
failCaptcha(
tokenElement
? 'ReCaptcha\u0020validation\u0020failed.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
: 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
);
}
}).catch((exception) => {
failCaptcha(
'ReCaptcha\u0020validation\u0020failed\u0020due\u0020to\u0020a\u0020technical\u0020error.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.',
exception
);
});
});
};
if (window.grecaptcha) {
executeGreCaptcha();
} else {
const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q";
const script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', recaptchaUrl);
document.head.appendChild(script);
script.addEventListener("load", executeGreCaptcha, false);
}
}
if (!this.hasCaptchaToken) {
this.isLoading = false;
return;
}
if (this.errors > 0) {
this.isLoading = false;
this.setErrorMessages('La\u0020validation\u0020ReCaptcha\u0020a\u0020\u00E9chou\u00E9,\u0020veuillez\u0020r\u00E9essayer');
return;
}
return this.doSubmit($form);
},
async doSubmit($form) {
const formData = new FormData($form);
try {
const response = await fetch('https://www.avril-beaute.fr/customer/ajax/loginpost/', {
method: 'POST',
body: formData,
headers: {
'X-Requested-With': 'XMLHttpRequest'
},
credentials: 'same-origin'
});
if (!response.ok) throw new Error('HTTP ' + response.status);
const data = await response.json();
if (data.redirectUrl) {
window.location.href = data.redirectUrl;
return;
}
if (data.success) {
const currentPath = window.location.pathname;
if (currentPath.includes('checkout/cart')) {
window.location.href = 'https://www.avril-beaute.fr/checkout/';
} else {
window.location.reload();
}
} else {
this.setErrorMessages(data.message || 'Identifiant\u0020ou\u0020mot\u0020de\u0020passe\u0020invalide.');
this.isLoading = false;
}
} catch (err) {
this.setErrorMessages('Une\u0020erreur\u0020s\u0027est\u0020produite.\u0020Merci\u0020d\u0027essayer\u0020ult\u00E9rieurement.');
console.error(err);
this.isLoading = false;
}
}
}
}
</script>
</div>
<div x-show="!showRegisterForm" x-transition class="mt-auto">
<div class="pt-20 pb-8 rounded-xl px-6 flex flex-col">
<div class="mb-3">
<p class="text-28 font-abhayalibre font-bold">Vous êtes professionnel ?</p>
</div>
<a href="https://www.avril-pro.fr/customer/account/login/referer" class="text-sm underline">
Rendez-vous sur notre site Avril pro </a>
</div>
</div>
<button
type="button"
@click="closeCustomerMenuDrawer"
aria-label="Fermer"
class="absolute top-6 right-4 p-4"
>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 14 14" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M13 1L1 13M1 1L13 13" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
</div>
</div>
<script>
function initCustomerMenuDrawer() {
return {
open: false,
isLoading: false,
showRegisterForm: false,
closeCustomerMenuDrawer() {
this.open = false;
this.showRegisterForm = false;
},
}
}
</script>
<!-- /BLOCK header.customer -->
<!--Cart Icon-->
<a
id="menu-cart-icon"
class="relative inline-block"
x-ref="cartButton"
:aria-disabled="isCartEmpty()"
:aria-label="` Voir le panier, ${isCartEmpty() ? 'Cart is empty' : cart.summary_count > 1 ? hyva.str('%1 articles', cart.summary_count) : hyva.str('%1 item', cart.summary_count) }`"
href="javascript:void(0)"
onclick="location.href=atob('aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL2NoZWNrb3V0L2NhcnQvaW5kZXgv')"
title="Voir le panier"
>
<svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewbox="0 0 28 28" fill="none" class="w-full h-full" aria-hidden="true">
<path d="M17.1111 12.6004C17.1111 13.343 16.7833 14.0552 16.1999 14.5803C15.6164 15.1054 14.8251 15.4004 14 15.4004C13.1748 15.4004 12.3835 15.1054 11.8001 14.5803C11.2166 14.0552 10.8889 13.343 10.8889 12.6004M7.08008 9.82422H20.9199" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.31111 9.4269C7.10917 9.66923 7 9.96398 7 10.2669V19.6C7 19.9713 7.16389 20.3274 7.45561 20.5899C7.74733 20.8525 8.143 21 8.55556 21H19.4444C19.857 21 20.2527 20.8525 20.5444 20.5899C20.8361 20.3274 21 19.9713 21 19.6V10.2669C21 9.96398 20.8908 9.66923 20.6889 9.4269L19.1333 7.56C18.9884 7.38613 18.8006 7.245 18.5846 7.1478C18.3686 7.0506 18.1304 7 17.8889 7H10.1111C9.86962 7 9.63144 7.0506 9.41545 7.1478C9.19945 7.245 9.01156 7.38613 8.86667 7.56L7.31111 9.4269Z" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<span
x-text="cart.summary_count"
x-show="!isCartEmpty()"
x-cloak
class="absolute top-0 -right-0 h-5 px-2 py-1 rounded-full bg-pink_avril-200 text-white text-xs font-semibold leading-none text-center uppercase tabular-nums"
aria-hidden="true"
></span>
</a>
</div>
</div>
<!--Search-->
<div id="search-content"
x-cloak
x-show="searchOpen"
class="fixed inset-0 z-50"
x-transition.opacity
@keydown.escape.prevent.stop=" searchOpen = false; $refs.searchButton && $refs.searchButton.focus(); "
x-effect=" // Scroll lock on html element when search is open document.documentElement.classList.toggle('overflow-hidden', searchOpen); document.documentElement.classList.toggle('no-scrollbar', searchOpen); "
>
<div class="absolute inset-0"
aria-hidden="true"
@click="searchOpen = false; $refs.searchButton && $refs.searchButton.focus();"
></div>
<div class="relative z-10 h-full w-full">
<div class="flex flex-col h-full w-full bg-container">
<div class="flex-1 overflow-auto">
<script>
const AUTOCOMPLETE_TYPES = Object.freeze({
PRODUCT: 'product',
CATEGORY: 'category',
CMS_PAGE: 'cms_page',
SEARCH_TERM: 'term',
PRODUCT_ATTRIBUTE: 'product_attribute'
});
const SLIDER_CONFIG = {
url: 'https://www.avril-beaute.fr/catalog/autocomplete_products/'
};
function initMiniSearchComponent() {
"use strict";
return {
show: false,
formSelector: "#search_mini_form",
url: "https://www.avril-beaute.fr/search/ajax/suggest/",
destinationSelector: "#search_autocomplete",
templates: {"term":{"title":"Suggestions","template":"Hyva_SmileElasticsuite::core\/autocomplete\/term.phtml"},"product":{"title":"Meilleurs r\u00e9sultats","template":"Magento_Catalog::product\/list\/item.phtml"},"category":{"title":"Categories","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/category.phtml"},"product_attribute":{"title":"Attributs","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":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":"\u202f","groupLength":3,"integerRequired":false},
minSearchLength: 2,
searchResultsByType: {},
currentRequest: null,
productsLoading: false,
otherTypesLoading: false,
async fillProductsRender() {
const signal = this.currentRequest?.signal;
if (!signal || signal.aborted) return;
const productIds = (this.searchResultsByType[AUTOCOMPLETE_TYPES.PRODUCT] || [])
.map(product => product.entity_id)
.filter(Boolean);
try {
const productsHtml = await fetchProductsHtml(
productIds,
SLIDER_CONFIG.url,
signal
);
window.dispatchEvent(new CustomEvent('update-products', {
detail: {data: productsHtml}
}));
this.productsLoading = false;
} catch (err) {
if (err?.name !== 'AbortError') {
console.error(err);
}
}
},
getSearchResults: function () {
const value = this.$refs.searchInput.value.trim();
if (value.length < parseInt(this.minSearchLength, 10)) {
this.show = false;
this.searchResultsByType = [];
return false;
}
let url = this.url + '?' + new URLSearchParams({
q: value,
_: Date.now()
}).toString();
if (this.currentRequest !== null) {
this.currentRequest.abort();
}
this.currentRequest = new AbortController();
this.productsLoading = true;
this.otherTypesLoading = true;
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);
return acc;
}, {});
this.fillProductsRender();
}).catch((err) => {
this.show = false;
this.searchResultsByType = {};
}).finally(() => {
this.otherTypesLoading = false;
});
},
encodeUrl: function (url) {
return btoa(url)
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=/g, '~');
}
}
}
</script>
<div id="elasticsuite-search-container" class="min-h-screen flex flex-col h-full" x-data="initMiniSearchComponent()">
<div class="container mx-auto text-primary flex flex-col p-4">
<form
class="form minisearch flex flex-col flex-1 min-h-0"
id="search_mini_form"
action="https://www.avril-beaute.fr/catalogsearch/result/"
method="get"
role="search"
>
<div class="flex items-center gap-3 sm:gap-4 flex-wrap sm:flex-nowrap">
<div class="relative flex-1 min-w-0">
<label class="sr-only" for="search">
Recherchez ici </label>
<input id="search"
x-on:input.debounce="getSearchResults()"
x-ref="searchInput"
type="search"
class="no-search-cancel w-full"
autocapitalize="off" autocomplete="off" autocorrect="off"
name="q"
value=""
placeholder="Recherchez ici"
maxlength="128"
@search-open.window.debounce.10="$el.focus(); $el.select();"
/>
<button class="p-1 pointer absolute top-1/2 right-3 -translate-y-1/2 sm:right-4" type="submit"
aria-label="Search">
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewbox="0 0 28 28" fill="none" aria-hidden="true">
<path d="M21.0003 21.0003L17.625 17.625" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.2218 19.4437C16.6581 19.4437 19.4437 16.6581 19.4437 13.2218C19.4437 9.78561 16.6581 7 13.2218 7C9.78561 7 7 9.78561 7 13.2218C7 16.6581 9.78561 19.4437 13.2218 19.4437Z" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
<button type="button"
class="p-1 pointer"
x-on:click="show = false; $dispatch('search-close');"
aria-label="Close search">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
</svg>
</button>
</div>
<div class="flex-1 min-h-0 flex flex-col mt-5">
<div class="relative w-full tracking-search-frequent" x-show="!show">
<div class="text-28 font-extrabold py-2 pl-2 font-abhayalibre">
Recherches fréquentes </div>
<ul class="search-terms">
<li id="term-861" class="item hover:bg-gray-100">
<a class="w-full block p-2 qcd"
href="javascript:;"
data-qcd="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL2NhdGFsb2dzZWFyY2gvcmVzdWx0Lz9xPUNyJUMzJUE4bWUrdmlzYWdl">
<span class="text-sm">Crème visage</span>
</a>
</li>
<li id="term-2106" class="item hover:bg-gray-100">
<a class="w-full block p-2 qcd"
href="javascript:;"
data-qcd="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL2NhdGFsb2dzZWFyY2gvcmVzdWx0Lz9xPWVhdStmbG9yYWxl">
<span class="text-sm">eau florale</span>
</a>
</li>
<li id="term-766" class="item hover:bg-gray-100">
<a class="w-full block p-2 qcd"
href="javascript:;"
data-qcd="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL2NhdGFsb2dzZWFyY2gvcmVzdWx0Lz9xPU1hc2NhcmE~">
<span class="text-sm">Mascara</span>
</a>
</li>
<li id="term-702" class="item hover:bg-gray-100">
<a class="w-full block p-2 qcd"
href="javascript:;"
data-qcd="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL2NhdGFsb2dzZWFyY2gvcmVzdWx0Lz9xPVNlcnVt">
<span class="text-sm">Serum</span>
</a>
</li>
<li id="term-152" class="item hover:bg-gray-100">
<a class="w-full block p-2 qcd"
href="javascript:;"
data-qcd="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL2NhdGFsb2dzZWFyY2gvcmVzdWx0Lz9xPXZlcm5pcw~~">
<span class="text-sm">vernis</span>
</a>
</li>
</ul>
</div>
<div id="search_autocomplete"
class="search-autocomplete relative w-full flex-1 min-h-0 overflow-auto tracking-search-suggestion"
x-show="show"
:class="otherTypesLoading ? 'blur-sm pointer-events-none' : ''"
style="display:none;">
<div class="w-full h-full">
<template x-for="searchResultByType in Object.values(searchResultsByType)">
<div>
<template
x-if="searchResultByType.hasOwnProperty(0) && searchResultByType[0].type !== AUTOCOMPLETE_TYPES.PRODUCT">
<div>
<template
x-if="templates[searchResultByType[0].type].title && templates[searchResultByType[0].type].titleRenderer === undefined">
<div class="text-xl sm:text-28 font-extrabold py-2 pl-2 font-abhayalibre"
x-text="templates[searchResultByType[0].type].title"></div>
</template>
<template
x-if="templates[searchResultByType[0].type].titleRenderer !== undefined">
<div class="text-xl sm:text-2xl font-bold py-2 pl-2"
x-text="window[templates[searchResultByType[0].type].titleRenderer](searchResultByType)"></div>
</template>
<template x-for="searchResult in searchResultByType">
<div>
<template x-if="searchResult.type == 'term'">
<a class="w-full block p-2 hover:bg-gray-100 qcd hover:cursor-pointer"
x-bind:data-qcd="encodeUrl('https://www.avril-beaute.fr/catalogsearch/result/?q=' + searchResult.title)"
javascript=":;"
: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 == 'category'">
<a class="w-full block p-2 qcd hover:cursor-pointer"
x-bind:data-qcd="encodeUrl(searchResult.url)"
javascript=":;"
:title="searchResult.title"
>
<span class="text-sm italic block text-gray-500" x-text="searchResult.breadcrumb.join(' > ').concat(' > ')"></span>
<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 qcd hover:cursor-pointer"
javascript=":;"
x-bind:data-qcd="encodeUrl(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 qcd hover:cursor-pointer"
javascript=":;"
x-bind:data-qcd="encodeUrl(searchResult.url)"
:title="searchResult.title"
>
<span class="text-sm" x-text="searchResult.title"></span>
</a>
</template>
</div>
</template>
</div>
</template>
</div>
</template>
</div>
</div>
</div>
</form>
</div>
<div id="search-autocomplete-external"
class="search-autocomplete w-full bg-white shadow-lg flex-1 py-6 tracking-search-product"
:class="productsLoading ? 'blur-sm pointer-events-none' : ''"
x-show="show && searchResultsByType[AUTOCOMPLETE_TYPES.PRODUCT]?.length"
style="display:none;">
<div class="container mx-auto px-4">
<template
x-if="templates[AUTOCOMPLETE_TYPES.PRODUCT]?.title && templates[AUTOCOMPLETE_TYPES.PRODUCT].titleRenderer === undefined">
<div class="text-xl sm:text-2xl font-bold p-4"
x-text="templates[AUTOCOMPLETE_TYPES.PRODUCT].title"></div>
</template>
<template x-if="templates[AUTOCOMPLETE_TYPES.PRODUCT]?.titleRenderer !== undefined">
<div class="text-xl sm:text-2xl font-bold p-4"
x-text="window[templates[AUTOCOMPLETE_TYPES.PRODUCT].titleRenderer](searchResultsByType[AUTOCOMPLETE_TYPES.PRODUCT])"></div>
</template>
<div id="products-slider-_6acf38b279a43"
x-data="productsSliderSL_6acf38b279a43()"
x-init="getQuoteItems(); $nextTick(() => { setActiveTab(1); })"
x-ref="containerSlider"
x-bind="eventListeners"
class="products-slider container mx-auto"
>
<ul class="product-items mt-[30px] pl-4" :style="{ width: width + 'px' }">
<li class="swiper w-full">
<ul class="product-items swiper-wrapper h-auto !mb-6" :class="{ 'hidden': !initialized }">
<template x-for="product in products" :key="product.id">
<li class="swiper-slide h-full" x-show="product.renderHtml" x-html="product.renderHtml"></li>
</template>
</ul>
<div class="flex justify-between pr-10 container mx-0 gap-2">
<div class="custom-pagination flex gap-2"></div>
<div class="gap-2 w-[80px] shrink-0 hidden md:flex">
<button class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<button class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" class="rotate-180" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
<button type="submit" form="search_mini_form" class="btn-arrow w-full justify-end flex md:hidden">
<span>Voir tout</span>
</button>
</div>
</li>
</ul>
</div>
<script>
function productsSliderSL_6acf38b279a43() {
return {
activeTab: 0,
initialized: false,
swiper: null,
width: '100%',
products: [],
quoteItems: [],
eventListeners: {
['@update-products.window'](e) {
this.products = e.detail.data;
this.reinitOnDataChange();
}
},
init() {
this.watchMageCache();
window.addEventListener('get-last-item-success', () => {
this.waitForUpdatedCart();
});
},
setActiveTab: function (tab) {
this.initialized = false;
this.activeTab = tab;
this.$nextTick(() => this.initSlider());
},
reinitOnDataChange: function () {
this.initialized = false;
this.$nextTick(() => this.initSlider());
},
initSlider: function () {
const root = this.$root;
const el = root.querySelector('.swiper');
if (!el) {
return;
}
if (this.swiper) {
this.swiper.destroy(true, true);
this.swiper = null;
}
const paginationEl = root.querySelector('.custom-pagination');
if (paginationEl) {
paginationEl.innerHTML = '';
}
const slidesCount = root.querySelectorAll('.swiper-wrapper > .swiper-slide').length;
const vw = document.documentElement.clientWidth || window.innerWidth;
const effectiveSpv = vw >= 1180 ? 4.5 : vw >= 967 ? 3.5 : vw >= 560 ? 2.5 : 1.5;
const baseOptions = {
centeredSlides: false,
slidesPerView: 1.5,
slidesPerGroup: 1,
spaceBetween: 20,
keyboard: {enabled: true},
autoplay: {delay: 5000},
speed: 500,
watchOverflow: true,
observeParents: true,
observer: true,
grabCursor: true,
navigation: {
nextEl: root.querySelector('.swiper-button-next'),
prevEl: root.querySelector('.swiper-button-prev'),
},
pagination: {
el: paginationEl,
clickable: true,
renderBullet: (i, cls) => `<button type="button" class="${cls}" aria-label="Go to slide ${i + 1}"></button>`
},
breakpoints: {
1180: {slidesPerView: 4.5},
967: {slidesPerView: 3.5},
560: {slidesPerView: 2.5}
}
};
const notEnoughToLoop = slidesCount <= Math.ceil(effectiveSpv);
baseOptions.loop = !notEnoughToLoop;
this.swiper = new Swiper(el, baseOptions);
this.initialized = true;
},
waitForUpdatedCart: function () {
const previous = JSON.stringify(this.quoteItems);
const check = () => {
const cache = localStorage.getItem('mage-cache-storage');
if (!cache) return setTimeout(check, 50);
const mageCache = JSON.parse(cache);
const cart = mageCache.cart || mageCache['cart-data'];
if (!cart) return setTimeout(check, 50);
const items = cart.items || cart['items'];
if (!items) return setTimeout(check, 50);
const newItems = items.map(i => i.original_product_sku);
if (JSON.stringify(newItems) === previous) {
return setTimeout(check, 50);
}
this.quoteItems = newItems;
};
check();
},
isInCart: function (sku) {
return this.quoteItems.includes(sku);
},
watchMageCache: function () {
let self = this;
(function(originalSetItem) {
localStorage.setItem = function(key, value) {
originalSetItem.apply(this, arguments);
if (key === 'mage-cache-storage') {
setTimeout(function () {
self.getQuoteItems();
}, 0);
}
};
})(localStorage.setItem);
},
getQuoteItems: function () {
let self = this;
if (!localStorage.getItem('mage-cache-storage')) {
return;
}
let mageCache = JSON.parse(localStorage.getItem('mage-cache-storage'));
let cart = mageCache.cart || mageCache['cart-data'];
if (!cart) return;
let items = cart.items || cart['items'];
if (!items) return;
self.quoteItems = [];
items.forEach(item => {
if (item.original_product_sku) {
self.quoteItems.push(item.original_product_sku);
}
});
}
}
}
</script>
</div>
</div>
<div id="search-layer-footer" class="mt-auto w-full" x-show="!show">
<!-- modifié le 2025-10-01 16:03:37 -->
<style>#html-body [data-pb-style=IH2HCM7] {
justify-content: center;
display: flex;
flex-direction: column;
background-color: #fff;
background-position: left top;
background-size: cover;
background-repeat: no-repeat;
background-attachment: scroll;
min-height: 200px
}</style>
<div data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5"
data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true"
data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="main"
data-pb-style="IH2HCM7">
<div class="row-full-width-inner" data-element="inner">
<div class="block-title" data-content-type="text" data-appearance="default" data-element="main">
<p>besoin d'aide ?</p>
</div>
<div data-content-type="text" data-appearance="default" data-element="main">
<p id="EC4V0LR">
<a tabindex="0" href="/livraison-paiement">Livraison et retours</a>
</p>
<p>
<a tabindex="0" href="/contact">Contactez-nous</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--Cart Drawer-->
<!--Authentication Pop-Up-->
<!-- BLOCK authentication-popup --><script>
function initAuthentication() {
return {
open: false,
forceAuthentication: false,
checkoutUrl: 'https://www.avril-beaute.fr/checkout/index/',
errors: 0,
hasCaptchaToken: 0,
displayErrorMessage: false,
errorMessages: [],
showRegisterForm: false,
closeCustomerMenuDrawer() {
this.open = false;
this.showRegisterForm = false;
},
setErrorMessages: function setErrorMessages(messages) {
this.errorMessages = [messages];
this.displayErrorMessage = this.errorMessages.length;
},
onPrivateContentLoaded: function (data) {
const isLoggedIn = data.customer && data.customer.firstname;
if (data.cart && !isLoggedIn) {
this.forceAuthentication = !data.cart.isGuestCheckoutAllowed;
}
},
redirectIfAuthenticated: function (event) {
if (event.detail && event.detail.url) {
this.checkoutUrl = event.detail.url;
}
if (!this.forceAuthentication) {
window.location.href = this.checkoutUrl;
}
}
}
}
</script>
<section id="authentication-popup"
x-data="initAuthentication()"
@toggle-register-form.window="showRegisterForm = $event.detail"
@toggle-login-form.window="showRegisterForm = $event.detail; open = true"
@private-content-loaded.window="onPrivateContentLoaded($event.detail.data)"
@toggle-authentication.window="open = forceAuthentication; redirectIfAuthenticated(event)"
@keydown.window.escape="open = false"
>
<div
class="backdrop"
aria-hidden="true"
x-cloak
x-show="open"
x-transition:enter="ease-in-out duration-500"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="ease-in-out duration-500"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0"
@click="open = false"
></div>
<div role="dialog"
aria-modal="true"
@click.outside="open = false"
:class="open ? 'fixed bottom-0 top-24 md:top-0 right-0 z-50 w-full md:w-[515px] max-w-full' : 'hidden'"
class="flex"
x-cloak
x-show="open"
>
<div class="relative bg-background shadow-2xl rounded-xl md:rounded-none w-full max-w-full z-20"
x-show="open"
x-cloak=""
x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
x-transition:enter-start="translate-x-full"
x-transition:enter-end="translate-x-0"
x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
x-transition:leave-start="translate-x-0"
x-transition:leave-end="translate-x-full"
>
<div class="flex flex-col text-center h-full max-h-screen shadow-xl overflow-y-auto pb-20">
<div x-show="!showRegisterForm" x-transition>
<div class="pt-20 pb-8 bg-white rounded-xl px-6 flex flex-col">
<div class="mb-3">
<p class="text-28 font-abhayalibre font-bold">Nouveau client ?</p>
</div>
<a href="#" class="btn btn-primary mx-auto text-sm !px-16 !py-3"
@click.prevent="$dispatch('toggle-register-form', true)">
Créer mon compte </a>
</div>
</div>
<div x-show="showRegisterForm" x-transition>
<div class="pt-10 pb-8 px-6 flex flex-col">
<a href="#" class="text-sm text-left mb-4"
@click.prevent="$dispatch('toggle-register-form', false)">
< Retour </a>
<div class="mb-3">
<p class="text-28 font-abhayalibre font-bold">Créer mon compte</p>
</div>
<form class="form create account form-create-account"
action="https://www.avril-beaute.fr/customer/ajax/createpost/"
x-data="Object.assign(hyva.formValidationAjax($el), initForm_6acf38b27a0d8($el))"
@submit.prevent="submitForm()"
id="customer-authentication-popup-customer-form-register"
method="post" enctype="multipart/form-data" autocomplete="off"
>
<input name="form_key" type="hidden" value="6tSNyZIHOtonqYwu" /> <div class="control">
<input type="hidden"
value=""
name="g-recaptcha-response"
>
</div>
<fieldset class="w-full mx-auto">
<div class="legend text-sm text-center w-full mb-4 font-light">
<span>Informations personnelles</span>
</div>
<input type="hidden" name="success_url" value="">
<input type="hidden" name="error_url" value="">
<div class="field field-reserved gender required">
<div class="control">
<select id="authentication_gender"
name="gender"
title="Genre"
class="form-select"
required>
<option value="1"
>
M </option>
<option value="2"
>
Mme </option>
</select>
</div>
</div>
<div class="field field-reserved w-full field-name-firstname required">
<div class="control">
<input type="text" id="authentication_firstname"
name="firstname"
value=""
required
placeholder="Prénom*"
title="Prénom"
class="form-input w-full required-entry"
@input.debounce="onChange"
required>
</div>
</div>
<div class="field field-reserved w-full field-name-lastname required">
<div class="control">
<input type="text" id="authentication_lastname"
name="lastname"
required
value=""
placeholder="Nom*"
title="Nom"
class="form-input w-full required-entry"
@input.debounce="onChange"
required>
</div>
</div>
<div class="legend text-sm text-center w-full my-4 font-light">
<span>Informations de connexion</span>
</div>
<div class="field field-reserved required">
<div class="control">
<input
type="email"
name="email"
autocomplete="email"
id="authentication_email_address"
required
value=""
placeholder="E-mail*"
class="form-input w-full"
@input.debounce="onChange"
/>
</div>
</div>
<!-- Password fields remain unchanged -->
<div class="field field-reserved required">
<div class="flex flex-wrap gap-4 mb-2.5">
<div class="control relative w-full">
<div class="sr-only" aria-live="polite">
<template x-if="!showPassword">
<span>Password hidden</span>
</template>
<template x-if="showPassword">
<span>Password shown</span>
</template>
</div>
<input
:type="showPassword ? 'text' : 'password'"
type="password"
id="authentication_password"
name="password"
placeholder="Mot de passe*"
title="Mot de passe"
minlength="8"
class="form-input"
required
data-validate='{"password-strength": {"minCharacterSets": 3, "minimumPasswordLength": 8}}'
@input.debounce="onChange"
autocomplete="off"
>
<button
type="button"
:aria-pressed="showPassword ? true : false"
x-on:click="showPassword = !showPassword"
class="absolute top-1/2 right-0 -translate-y-1/2 px-4 py-3"
:aria-label="showPassword ? 'Hide\u0020Password' : 'Show\u0020Password'"
>
<template x-if="!showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
<template x-if="showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
</button>
</div>
<ul class="password-criteria text-left !pb-0 !mb-0 -mt-2.5">
<li data-criterion="length" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
8 caractères minimum </li>
<li data-criterion="uppercase" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
1 lettre majuscule </li>
<li data-criterion="lowercase" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
1 lettre minuscule </li>
<li data-criterion="number" class="flex items-center gap-1.5">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewbox="0 0 16 15" fill="none" class="text-gray_avril-100" aria-hidden="true">
<path d="M8.00065 14.1673C11.6825 14.1673 14.6673 11.1825 14.6673 7.50065C14.6673 3.81875 11.6825 0.833984 8.00065 0.833984C4.31875 0.833984 1.33398 3.81875 1.33398 7.50065C1.33398 11.1825 4.31875 14.1673 8.00065 14.1673Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.5013L7.33333 8.83464L10 6.16797" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
1 chiffre </li>
</ul>
</div>
</div>
<!-- Password confirm -->
<div class="field field-reserved required">
<div class="control relative w-full">
<div class="sr-only" aria-live="polite">
<template x-if="!showPasswordConfirm">
<span>Confirm password hidden</span>
</template>
<template x-if="showPasswordConfirm">
<span>confirm password shown</span>
</template>
</div>
<input
:type="showPasswordConfirm ? 'text' : 'password'"
type="password"
name="password_confirmation"
placeholder="Confirmer le mot de passe*"
title="Confirmer le mot de passe"
id="authentication_password-confirmation"
data-validate='{"equalTo": "password"}'
@input.debounce="onChange"
required
class="form-input"
autocomplete="off"
>
<button
type="button"
x-on:click="showPasswordConfirm = !showPasswordConfirm"
:aria-pressed="showPasswordConfirm ? true : false"
class="absolute top-1/2 right-0 -translate-y-1/2 px-4 py-3"
:aria-label=" showPasswordConfirm ? 'Hide\u0020Password' : 'Show\u0020Password' "
>
<template x-if="!showPasswordConfirm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
<template x-if="showPasswordConfirm">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
</button>
</div>
</div>
<div class="field sponsorship text-left">
<div class="legend text-sm text-center w-full my-4 font-light">
<span>Programme de parrainage</span>
</div>
<p class="subtitle text-xs md:text-sm font-light text-left mb-2.5">
Vous avez découvert Avril grâce à un.e proche ? Indiquez ici son adresse e-mail </p>
<div class="field !mt-2.5">
<label for="authentication_sponsor_email_address" class="label hidden">
<span>Adresse e-mail de votre parrain</span>
</label>
<div class="control">
<input type="email"
name="sponsor_email_address"
autocomplete="email"
id="authentication_sponsor_email_address"
value=""
title="Adresse e-mail de votre parrain"
placeholder="Adresse e-mail de votre parrain"
class="input-text">
</div>
</div>
</div>
<div class="field choice newsletter !items-start">
<input type="checkbox" name="is_subscribed" class="mt-1"
title="Abonnez-vous à la lettre d’information" value="1"
id="authentication_is_subscribed">
<label
for="authentication_is_subscribed"
class="label text-sm font-light text-left">
<span>
Je souhaite recevoir les newsletters d'Avril (nouveautés produits, conseils bien-être, inspiration make-up et bien sûr nos avancées en faveur de l'environnement), personnalisées et suivies (ouverture, clics) </span>
</label>
</div>
<div class="actions-toolbar !border-0">
<div class="primary w-full">
<button type="submit"
:disabled="isLoading || disabledByRecaptcha"
x-bind:aria-busy="isLoading ? 'true' : 'false'"
class="mx-auto action submit primary btn btn-primary disabled:opacity-75"
title="Créer mon compte"
>
<span
x-text="isLoading ? 'Chargement\u0020en\u0020cours...' : 'Cr\u00E9er\u0020mon\u0020compte'"></span>
</button>
</div>
</div>
<div x-show="globalError" class="mt-4 text-red-600 text-sm" x-text="globalError"></div>
</fieldset>
</form>
<p class="font-light text-sm leading-[140%] text-gray_avril-100 text-left mt-6">
<span>
Les données personnelles recueillies sur ce formulaire font l'objet d'un traitement informatique opéré sous la responsabilité d'Avril. Pour plus d'informations sur les traitements de données personnelles, veuillez consulter notre </span>
<a href="https://www.avril-beaute.fr/politique-de-confidentialite/" class="underline">
Politique de confidentialité. </a>
</p>
</div>
<script>
function formValidationAjax(form, options = {}) {
const instance = hyva.formValidation(form, options);
// Never wrap the input; use existing parent as container
instance.getMessagesWrapper = function (field, messagesClassName) {
const container = field.element.parentElement;
let msgWrapper = container.querySelector(`.${messagesClassName}`);
if (!msgWrapper) {
msgWrapper = document.createElement('ul');
msgWrapper.classList.add(messagesClassName);
container.appendChild(msgWrapper);
}
return msgWrapper;
}
return instance;
}
hyva.formValidationAjax = formValidationAjax;
</script>
<script>
function initForm_6acf38b27a0d8($el) {
return {
errors: 0,
hasCaptchaToken: 0,
globalError: '',
showPassword: false,
showPasswordConfirm: false,
disabledByRecaptcha: false,
isLoading: false,
clearErrors() {
this.globalError = '';
this.errors = 0;
$el.querySelectorAll('.field-error ul.messages li').forEach(el => el.remove());
},
submitForm() {
this.isLoading = true;
this.clearErrors();
this.validate().then(() => {
const $form = document.querySelector('#customer\u002Dauthentication\u002Dpopup\u002Dcustomer\u002Dform\u002Dregister');
if (!this.hasCaptchaToken) {
this.errors = 1;
const lockSubmitButton = () => {
$form.querySelector('[type="submit"]')?.setAttribute('disabled', true);
};
const failCaptcha = (errorMessage, exception = null) => {
this.errors = 1;
lockSubmitButton();
if (this.setErrorMessages) {
this.setErrorMessages([errorMessage]);
this.displayErrorMessage = true;
} else {
window.dispatchMessages && window.dispatchMessages([{ type: "error", text: errorMessage }], 5000);
}
if (exception) {
console.error(
exception ||
'An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?'
);
}
};
const executeGreCaptcha = () => {
grecaptcha.ready(() => {
grecaptcha.execute(
'6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q',
{action: 'submit'}
).then((token) => {
const tokenElement = $form['g\u002Drecaptcha\u002Dresponse'];
if (tokenElement && token && token.length > 0) {
$form['g\u002Drecaptcha\u002Dresponse'].value = token;
this.errors = 0;
this.hasCaptchaToken = 1;
(this.submitForm || $form.submit).call(this);
} else {
failCaptcha(
tokenElement
? 'ReCaptcha\u0020validation\u0020failed.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
: 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
);
}
}).catch((exception) => {
failCaptcha(
'ReCaptcha\u0020validation\u0020failed\u0020due\u0020to\u0020a\u0020technical\u0020error.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.',
exception
);
});
});
};
if (window.grecaptcha) {
executeGreCaptcha();
} else {
const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q";
const script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', recaptchaUrl);
document.head.appendChild(script);
script.addEventListener("load", executeGreCaptcha, false);
}
}
if (!this.hasCaptchaToken) {
this.isLoading = false;
return;
}
if (this.errors > 0) {
this.isLoading = false;
this.setErrorMessages('La\u0020validation\u0020ReCaptcha\u0020a\u0020\u00E9chou\u00E9,\u0020veuillez\u0020r\u00E9essayer');
return;
}
return this.doSubmit($form);
}).catch(() => {
this.isLoading = false;
});
},
async doSubmit($form) {
const formData = new FormData($form);
fetch($form.action, {
method: 'POST',
body: formData,
headers: {'X-Requested-With': 'XMLHttpRequest'},
})
.then(response => response.json())
.then(data => {
if (data.success) {
const successMsg = document.createElement('div');
successMsg.className = 'mb-4 text-green text-sm';
successMsg.textContent = data.message;
$form.prepend(successMsg);
const currentPath = window.location.pathname;
if (currentPath.includes('checkout/cart')) {
window.location.href = 'https://www.avril-beaute.fr/checkout/';
} else {
window.location.reload();
}
} else {
this.globalError = data.message || 'Une\u0020erreur\u0020s\u0027est\u0020produite.\u0020Veuillez\u0020r\u00E9essayez\u0020s\u2019il\u0020vous\u0020pla\u00EEt.';
this.isLoading = false;
}
})
.catch((error) => {
this.globalError = 'Une\u0020erreur\u0020s\u0027est\u0020produite.\u0020Veuillez\u0020r\u00E9essayez\u0020s\u2019il\u0020vous\u0020pla\u00EEt.';
console.error(error);
this.isLoading = false;
});
}
}
}
</script>
</div>
<div x-show="!showRegisterForm" x-transition>
<div id="container-header-login" class="px-6 mt-8">
<div class="mb-3">
<p id="customer-menu-drawer-title" class="text-28 font-abhayalibre font-bold">
<span>Déjà client ?</span>
</p>
</div>
<form id="customer-authentication-popup-customer-form-login"
x-data="initCustomerHeaderLoginForm_6acf38b27a83b()"
@submit.prevent="submitForm()"
class="form header-form-login w-full">
<input name="form_key" type="hidden" value="6tSNyZIHOtonqYwu" />
<fieldset class="fieldset login">
<div class="field email required mb-4">
<input type="email" name="login[username]"
class="form-input w-full"
required
placeholder="E-mail*"
value=""
autocomplete="off"
/>
</div>
<div class="field password required">
<div class="relative w-full">
<input type="password" name="login[password]"
class="form-input w-full"
required
placeholder="Mot de passe*"
autocomplete="off"
:type="showPassword ? 'text' : 'password'"
/>
<button type="button" x-on:click="showPassword = !showPassword"
class="absolute top-1/2 right-0 -translate-y-1/2 px-4 py-3">
<template x-if="!showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
<template x-if="showPassword">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="14" viewbox="0 0 22 16" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M1.06251 8.34738C0.979165 8.12287 0.979165 7.8759 1.06251 7.65138C1.87421 5.68324 3.25202 4.00042 5.02128 2.81628C6.79053 1.63214 8.87155 1 11.0005 1C13.1295 1 15.2105 1.63214 16.9797 2.81628C18.749 4.00042 20.1268 5.68324 20.9385 7.65138C21.0218 7.8759 21.0218 8.12287 20.9385 8.34738C20.1268 10.3155 18.749 11.9983 16.9797 13.1825C15.2105 14.3666 13.1295 14.9988 11.0005 14.9988C8.87155 14.9988 6.79053 14.3666 5.02128 13.1825C3.25202 11.9983 1.87421 10.3155 1.06251 8.34738Z" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 11C12.6569 11 14 9.65685 14 8C14 6.34315 12.6569 5 11 5C9.34315 5 8 6.34315 8 8C8 9.65685 9.34315 11 11 11Z" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</template>
</button>
</div>
</div>
<div class="flex flex-col mt-4 gap-4">
<a href="https://www.avril-beaute.fr/customer/account/forgotpassword/" class="text-sm underline">
Mot de passe oublié ? </a>
<button type="submit"
class="btn btn-primary mx-auto text-sm !px-16 !py-3"
:disabled="isLoading || disabledByRecaptcha"
x-bind:aria-busy="isLoading ? 'true' : 'false'">
<span
x-text="isLoading ? 'Chargement\u0020en\u0020cours...' : 'Me\u0020connecter'"></span>
</button>
<div class="control">
<input type="hidden"
value=""
name="g-recaptcha-response"
>
</div>
</div>
<div>
<template x-if="displayErrorMessage">
<p class="text-red flex items-center mt-4 gap-2.5">
<span class="inline-block">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
<title>exclamation-circle</title></svg>
</span>
<template x-for="(errorMessage, idx) in errorMessages" :key="idx">
<span x-html="errorMessage"></span>
</template>
</p>
</template>
</div>
</fieldset>
</form>
</div>
<script>
function initCustomerHeaderLoginForm_6acf38b27a83b() {
return {
errors: 0,
hasCaptchaToken: 0,
isLoading: false,
showPassword: false,
displayErrorMessage: false,
errorMessages: [],
disabledByRecaptcha: false,
setErrorMessages(messages) {
this.errorMessages = Array.isArray(messages) ? messages : [messages];
this.displayErrorMessage = this.errorMessages.length > 0;
},
async submitForm() {
this.isLoading = true;
this.displayErrorMessage = false;
this.errorMessages = [];
const $form = document.querySelector('#customer-authentication-popup-customer-form-login');
if (!this.hasCaptchaToken) {
this.errors = 1;
const lockSubmitButton = () => {
$form.querySelector('[type="submit"]')?.setAttribute('disabled', true);
};
const failCaptcha = (errorMessage, exception = null) => {
this.errors = 1;
lockSubmitButton();
if (this.setErrorMessages) {
this.setErrorMessages([errorMessage]);
this.displayErrorMessage = true;
} else {
window.dispatchMessages && window.dispatchMessages([{ type: "error", text: errorMessage }], 5000);
}
if (exception) {
console.error(
exception ||
'An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?'
);
}
};
const executeGreCaptcha = () => {
grecaptcha.ready(() => {
grecaptcha.execute(
'6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q',
{action: 'submit'}
).then((token) => {
const tokenElement = $form['g\u002Drecaptcha\u002Dresponse'];
if (tokenElement && token && token.length > 0) {
$form['g\u002Drecaptcha\u002Dresponse'].value = token;
this.errors = 0;
this.hasCaptchaToken = 1;
(this.submitForm || $form.submit).call(this);
} else {
failCaptcha(
tokenElement
? 'ReCaptcha\u0020validation\u0020failed.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
: 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
);
}
}).catch((exception) => {
failCaptcha(
'ReCaptcha\u0020validation\u0020failed\u0020due\u0020to\u0020a\u0020technical\u0020error.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.',
exception
);
});
});
};
if (window.grecaptcha) {
executeGreCaptcha();
} else {
const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q";
const script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', recaptchaUrl);
document.head.appendChild(script);
script.addEventListener("load", executeGreCaptcha, false);
}
}
if (!this.hasCaptchaToken) {
this.isLoading = false;
return;
}
if (this.errors > 0) {
this.isLoading = false;
this.setErrorMessages('La\u0020validation\u0020ReCaptcha\u0020a\u0020\u00E9chou\u00E9,\u0020veuillez\u0020r\u00E9essayer');
return;
}
return this.doSubmit($form);
},
async doSubmit($form) {
const formData = new FormData($form);
try {
const response = await fetch('https://www.avril-beaute.fr/customer/ajax/loginpost/', {
method: 'POST',
body: formData,
headers: {
'X-Requested-With': 'XMLHttpRequest'
},
credentials: 'same-origin'
});
if (!response.ok) throw new Error('HTTP ' + response.status);
const data = await response.json();
if (data.redirectUrl) {
window.location.href = data.redirectUrl;
return;
}
if (data.success) {
const currentPath = window.location.pathname;
if (currentPath.includes('checkout/cart')) {
window.location.href = 'https://www.avril-beaute.fr/checkout/';
} else {
window.location.reload();
}
} else {
this.setErrorMessages(data.message || 'Identifiant\u0020ou\u0020mot\u0020de\u0020passe\u0020invalide.');
this.isLoading = false;
}
} catch (err) {
this.setErrorMessages('Une\u0020erreur\u0020s\u0027est\u0020produite.\u0020Merci\u0020d\u0027essayer\u0020ult\u00E9rieurement.');
console.error(err);
this.isLoading = false;
}
}
}
}
</script>
</div>
<div x-show="!showRegisterForm" x-transition class="mt-auto">
<div class="pt-20 pb-8 rounded-xl px-6 flex flex-col">
<div class="mb-3">
<p class="text-28 font-abhayalibre font-bold">Vous êtes professionnel ?</p>
</div>
<a href="https://www.avril-pro.fr/customer/account/login/referer" class="text-sm underline">
Rendez-vous sur notre site Avril pro </a>
</div>
</div>
<button
type="button"
@click="closeCustomerMenuDrawer"
aria-label="Fermer"
class="absolute top-6 right-4 p-4"
>
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 14 14" fill="none" class="stroke-primary" aria-hidden="true">
<path d="M13 1L1 13M1 1L13 13" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
</div>
</section>
<!-- /BLOCK authentication-popup --></div>
</header><main id="maincontent" class="page-main-full-width">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Cosmétiques Plus Naturels Certifiés Bio | Avril"
,"item": "https://www.avril-beaute.fr/" }
]
}
</script>
<div id="contentarea" tabindex="-1"></div>
<div class="page messages"><script>
window.defaultSuccessMessageTimeout = 5000;
function initMessages() {
"use strict";
return {
messages: window.mageMessages || [],
isEmpty() {
return this.messages.reduce(
function (isEmpty, message) {
return isEmpty && message === undefined
}, true
)
},
hasMessages() {
return !this.isEmpty();
},
hasMessage() {
return !!this.message;
},
removeMessage() {
this.messages[this.index] = undefined;
},
addMessages(messages, hideAfter) {
messages.map((message) => {
if (!message.text || !message.text.trim()) return;
this.messages = this.messages.concat(message);
if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) {
hideAfter = window.defaultSuccessMessageTimeout;
}
if (hideAfter) {
this.setHideTimeOut(this.messages.length -1, hideAfter);
}
});
},
setHideTimeOut(messageIndex, hideAfter) {
setTimeout((messageIndex) => {
this.messages[messageIndex] = undefined;
}, hideAfter, messageIndex);
},
eventListeners: {
['@messages-loaded.window'](event) {
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 = [];
},
['@pageshow.window'](event) {
if (event.persisted) {
this.messages = [];
};
}
},
getMessageUiId() {
return 'message-' + this.message.type;
}
}
}
window.addEventListener('alpine:init', () => Alpine.data('initMessages', initMessages), {once: true})
</script>
<section id="messages"
x-data="initMessages"
x-bind="eventListeners"
role="alert"
>
<template x-if="hasMessages">
<div class="w-full">
<div class="messages container mx-auto py-3">
<template x-for="(message, index) in messages" :key="index">
<div>
<template x-if="hasMessage">
<div class="message"
:class="message.type"
:ui-id="getMessageUiId"
>
<span x-html="message.text"></span>
<button
type="button"
class="text-gray-600 hover:text-black"
aria-label="Close message"
@click.prevent="removeMessage"
>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="18" height="18" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
</svg>
</button>
</div>
</template>
</div>
</template>
</div>
</div>
</template>
</section>
</div><div class="columns"><div class="column main"><style>
:root {
--cms-bg-desktop: url('');
--cms-bg-mobile: url('');
}
</style>
<script>window.puqConfig = {"fix_min_max_sale_qty_error_messages":true,"fix_validate_grouped_qty":true};</script>
<div x-data="addToCartSuccess_6acf38b27c513_cart_product_success()">
<div id="add-to-cart-success"
:class="{'active': open}"
class="overflow-x-hidden"
>
<div class="flex justify-between bg-container p-6 pb-3 items-center">
<a @click="open = false;" href="javascript:;" class="flex items-center gap-2 font-light text-sm text-primary">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 7 12" fill="none" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
Continuer mes achats </a>
<a @click="open = false;" href="javascript:;">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 14 14" fill="none" aria-hidden="true">
<path d="M13 1L1 13M1 1L13 13" stroke="#1D1D1B" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
<div class="bg-container p-6 pt-3 product-success">
<p class="mb-2">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 25 24" fill="none" aria-hidden="true">
<path d="M22.3006 9.9995C22.7573 12.2408 22.4318 14.5709 21.3785 16.6013C20.3251 18.6317 18.6075 20.2396 16.5121 21.1568C14.4167 22.0741 12.0702 22.2453 9.86391 21.6419C7.65758 21.0385 5.7248 19.6969 4.38789 17.8409C3.05097 15.9849 2.39073 13.7267 2.51728 11.4429C2.64382 9.15904 3.54949 6.98759 5.08326 5.29067C6.61703 3.59375 8.68619 2.47393 10.9457 2.11795C13.2052 1.76198 15.5184 2.19136 17.4996 3.3345" stroke="#9DBCA5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.5 11L12.5 14L22.5 4" stroke="#9DBCA5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
Produit ajouté ! </p>
<div class="addtocart-product-success"></div>
<p class="shipping text-center my-6">
Livraison gratuite en point relais dès <b>25€</b> d'achat ! </p>
<a class="m-auto flex w-fit btn btn-primary !py-4 !px-11 !rounded-full"
href="https://www.avril-beaute.fr/checkout/cart/">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
<span>Voir mon panier</span>
</a>
</div>
<div class="flex justify-center items-center save-planet">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 29 28" fill="none" class="rotate-180" aria-hidden="true">
<path d="M25.6309 17.4998H20.3342C19.7154 17.4998 19.1219 17.7457 18.6843 18.1832C18.2467 18.6208 18.0009 19.2143 18.0009 19.8332V25.1298M8.66758 3.89648V5.83315C8.66758 6.76141 9.03633 7.65165 9.6927 8.30803C10.3491 8.9644 11.2393 9.33315 12.1676 9.33315C12.7864 9.33315 13.3799 9.57898 13.8175 10.0166C14.2551 10.4542 14.5009 11.0476 14.5009 11.6665C14.5009 12.9498 15.5509 13.9998 16.8342 13.9998C17.4531 13.9998 18.0466 13.754 18.4842 13.3164C18.9217 12.8788 19.1676 12.2853 19.1676 11.6665C19.1676 10.3832 20.2176 9.33315 21.5009 9.33315H25.1992M13.3342 25.6082V20.9998C13.3342 20.381 13.0884 19.7875 12.6508 19.3499C12.2132 18.9123 11.6197 18.6665 11.0009 18.6665C10.3821 18.6665 9.78858 18.4207 9.351 17.9831C8.91341 17.5455 8.66758 16.952 8.66758 16.3332V15.1665C8.66758 14.5476 8.42175 13.9542 7.98416 13.5166C7.54658 13.079 6.95308 12.8332 6.33424 12.8332H2.89258" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.5007 25.6673C20.944 25.6673 26.1673 20.444 26.1673 14.0007C26.1673 7.55733 20.944 2.33398 14.5007 2.33398C8.05733 2.33398 2.83398 7.55733 2.83398 14.0007C2.83398 20.444 8.05733 25.6673 14.5007 25.6673Z" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<p>
Chaque achat, <b>c’est 1% du prix reversé pour la planète.</b> </p>
</div>
<hr>
<div class="addtocart-routine-success" x-show="count === 3">
<div class="products-slider routine max-w-[820px] w-full md:mx-auto mx-2.5">
<span class="block font-sans font-light text-xs tracking-normal text-primary text-center mt-3">
LA ROUTINE </span>
<span class="font-abhayalibre font-extrabold leading-none text-28 md:text-44 tracking-normal text-center text-primary mb-6 block"
x-text="routine.title">
</span>
<div class="swiper pl-5" id="slider-routines">
<ul class="product-items swiper-wrapper" :class="{ 'hidden': !initialized }">
<template x-for="(product, index) in routine.products">
<li class="swiper-slide h-auto flex flex-col">
<div class="w-full flex flex-col items-center justify-center mb-8">
<span
class="font-abhayalibre font-extrabold text-40 leading-[90%] tracking-normal text-primary"
x-text="index + 1"
></span>
<span
class="font-sans font-light text-xs leading-none text-primary tracking-normal mb-6"
x-text="routine.step_title[index + 1]">
</span>
<div class="w-full" x-html="product"></div>
</div>
</li>
</template>
</ul>
<div class="flex items-center justify-between mb-10 pr-6">
<div class="flex">
<div class="custom-pagination custom-pagination-routine flex gap-2"></div>
</div>
<div class="flex gap-2 w-20 shrink-0 justify-end">
<button class="swiper-button-prev">
<svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<button class="swiper-button-next">
<svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" class="rotate-180" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="overlay" :class="{'active': open}" @click="open = false;"></div>
</div>
<script>
function addToCartSuccess_6acf38b27c513_cart_product_success() {
return {
open: false,
initialized: false,
count: 0,
swiper: null,
routine: [],
quoteItems: [],
lastItemAjaxUrl: "https://www.avril-beaute.fr/checkout/ajax/getlastitemadded/",
init() {
this.execute();
window.addEventListener('ajax:addToCart', () => {
this.execute();
});
},
execute() {
const cookieName = 'COOKIE_INFO_ADD_TO_CART';
if (window.location.pathname.includes('/checkout/cart')) {
hyva.setCookie(cookieName, '', -1);
return;
}
if (hyva.getCookie(cookieName) && hyva.getCookie(cookieName) !== '') {
let cookieValue = hyva.getCookie(cookieName);
cookieValue = decodeURIComponent(cookieValue);
cookieValue = JSON.parse(cookieValue);
this.getLastItemAjaxUrl(cookieValue.product, cookieValue.giftcard_amount ?? 0);
hyva.setCookie(cookieName, '', -1);
}
},
getLastItemAjaxUrl: function (id, giftcardAmount) {
let self = this;
fetch(this.lastItemAjaxUrl + '?id=' + encodeURIComponent(id) + '&_=' + Date.now(), {
method: 'GET'
})
.then(async response => {
if (!response.ok) throw new Error("Erreur réseau");
return response.json();
})
.then(response => {
let newAddtocartProductSuccess = new DOMParser().parseFromString(response.html.product, 'text/html')
.querySelector('.addtocart-product-success');
if (giftcardAmount > 0) {
let priceEl = newAddtocartProductSuccess.querySelector('[data-price-amount]');
if (priceEl && parseFloat(priceEl.getAttribute('data-price-amount')) === 0) {
priceEl.setAttribute('data-price-amount', giftcardAmount);
let priceSpan = priceEl.querySelector('.price');
if (priceSpan) {
const amountNum = parseFloat(giftcardAmount);
const options = amountNum % 1 === 0
? { minimumFractionDigits: 0, maximumFractionDigits: 0 }
: {};
priceSpan.innerHTML = hyva.formatPrice(amountNum, false, options);
}
}
}
let addtocartProductSuccess = document.querySelector('.addtocart-product-success');
addtocartProductSuccess.replaceWith(newAddtocartProductSuccess);
if (response.html.routine) {
this.routine = response.html.routine;
this.count = response.html.routine.count;
for (const [key] of Object.entries(response.html.items)) self.quoteItems.push(key);
this.initSlider();
}
window.dispatchEvent(new CustomEvent('get-last-item-success', { detail: { productId: id } }));
self.open = true;
})
.catch(error => {
console.error("Erreur :", error);
});
},
initSlider() {
if (this.swiper) this.swiper.destroy(true, true);
let swiperContainer = document.querySelector('#slider-routines');
if (!swiperContainer) return;
const parent = swiperContainer.closest('.addtocart-routine-success');
const btnPrev = parent.querySelector('.swiper-button-prev');
const btnNext = parent.querySelector('.swiper-button-next');
this.swiper = new Swiper(swiperContainer, {
centeredSlides: false,
slidesPerView: 2.5,
slidesPerGroup: 1,
spaceBetween: 10,
keyboard: { enabled: true },
speed: 500,
loop: false,
navigation: {
nextEl: btnNext,
prevEl: btnPrev,
},
pagination: {
el: swiperContainer.querySelector('.custom-pagination-routine'),
clickable: true,
renderBullet: (index, className) => `<span class="${className}"></span>`
},
breakpoints: {
967: {slidesPerView: 2.5, slidesPerGroup: 1},
0: {slidesPerView: 2.2, slidesPerGroup: 1}
}
});
this.initialized = true;
},
isInCart(sku) {
return this.quoteItems.includes(sku);
}
}
}
</script>
</div></div><section>
<div x-data="homepageSliderHyva_6acf38b27cdab_main_slider()"
x-init="initSlider()"
class="relative w-full">
<div class="md:relative" data-hp-promo-anchor>
<div class="w-full overflow-hidden">
<a href="/routine-visage-rentree"> <picture>
<source srcset="https://avril.twic.pics/media/hyva_homepage_slider/1000013138_1_.jpeg"
type="image/jpg" media="(min-width: 1024px)">
<source srcset="https://avril.twic.pics/media/hyva_homepage_slider/1000013120_1.png"
type="image/jpg" media="(max-width: 1023px)">
<img class="w-full zoom-content"
src='https://avril.twic.pics/media/hyva_homepage_slider/1000013138_1_.jpeg'
alt="bio. juste. engagée.">
</picture>
</a> </div>
<div class="md:absolute bottom-10 w-full md:container left-1/2 md:-translate-x-1/2 mt-6 md:mt-0 px-4">
<h2 class="font-abhayalibre font-bold md:font-extrabold text-44 md:text-54 leading-[80%] tracking-normal text-primary mb-6 md:mb-8">
bio. juste. engagée. </h2>
<div class="hp-default-slider-cta-wrapper flex justify-between md:justify-start md:gap-8">
<a href="soin.html"
class="btn btn-quaternary underline font-gotham !font-[325] !text-lg !leading-8 text-primary transition-colors duration-500 ease-in-out">
Soin </a>
<a href="maquillage.html"
class="btn btn-quaternary underline font-sans !font-light !text-lg !leading-8 text-primary transition-colors duration-500 ease-in-out">
Maquillage </a>
</div>
</div>
</div>
<div class="w-full md:container mx-auto mt-6 mb-10 md:my-[50px] px-4">
<p class="mb-4 font-sans text-15 md:text-lg leading-normal md:leading-[130%] tracking-normal text-primary font-light">
<h2 class="hidden md:block font-semibold !font-sans text-15 md:text-lg leading-normal md:leading-[130%]">
AVRIL FAIT ÉCLORE UNE BEAUTÉ JOYEUSE, ACCESSIBLE ET CONSCIENTE. </h2>
<span class="md:hidden font-semibold block">
AVRIL FAIT ÉCLORE UNE BEAUTÉ JOYEUSE, ACCESSIBLE ET CONSCIENTE. </span>
POUR BIEN ÊTRE SOI, SIMPLEMENT. </p>
<a href="le-projet-avril"
class="homepage-rse-link btn-arrow">
<span>Comment on s’y prend</span>
</a>
</div>
</div>
<script>
function homepageSliderHyva_6acf38b27cdab_main_slider() {
return {
initialized: false,
swiper: null,
initSlider() {
if (this.swiper) {
this.swiper.destroy();
}
let swiperWheel = document.querySelectorAll('#slider-_6acf38b27cdab_main_slider');
if (swiperWheel.length > 0) {
this.swiper = new Swiper('#slider-_6acf38b27cdab_main_slider', {
centeredSlides: false,
slidesPerView: 1,
slidesPerGroup: 1,
spaceBetween: 0,
keyboard: {
enabled: true,
},
autoplay: {
delay: 5000,
},
speed: 500,
loop: true,
mousewheel: false,
});
this.initialized = true;
}
}
}
}
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"cta":"{{inner_text}}"};
const finalData = {
event: 'homepage'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.hp-default-slider-cta-wrapper a.btn');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.hp-default-slider-cta-wrapper a.btn');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"rse":"comment_on_sy_prend"};
const finalData = {
event: 'homepage'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('a.homepage-rse-link');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('a.homepage-rse-link');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</section><section class="hp-default-slider-products bg-white pt-10 pb-12"><style>#html-body [data-pb-style=KQBN2SD]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="KQBN2SD"><div data-content-type="slider_products_hyva" data-appearance="grid" data-element="main">
<div x-data="productsSliderWidget_6acf38b314f25_widget_sliderproductshyva_0()" x-init="setActiveTab(1); getQuoteItems();" x-ref="containerSlider" class="products-slider container mx-auto overflow-hidden">
<p class="font-abhayalibre font-extrabold text-38 md:text-44 leading-[90%] md:leading-[110%] tracking-normal text-primary pr-2">
on vous accompagne ? </p>
<h2 :class="{ 'hidden': activeTab !== 1 }" class="font-sans font-light text-sm md:text-base leading-[140%] tracking-normal text-primary pr-2">
Des essentiels pour débuter avec Avril sans se tromper </h2>
<h2 :class="{ 'hidden': activeTab !== 2 }" class="font-sans font-light text-sm md:text-base leading-[140%] tracking-normal text-primary pr-2">
Envie de nouveauté ? Découvrez nos derniers arrivés. </h2>
<h2 :class="{ 'hidden': activeTab !== 3 }" class="font-sans font-light text-sm md:text-base leading-[140%] tracking-normal text-primary pr-2">
Révélez votre éclat naturel en conscience </h2>
<h2 :class="{ 'hidden': activeTab !== 4 }" class="font-sans font-light text-sm md:text-base leading-[140%] tracking-normal text-primary pr-2">
Vos produits de soin pour débuter une routine bio adaptée à vos besoins </h2>
<div class="categories flex justify-between items-center mt-6 gap-4">
<div class="overflow-y-auto w-full">
<ul class="flex gap-4 category-list w-max">
<li @click="setActiveTab(1)" :class="{ 'active': activeTab === 1 }" class="btn btn-senary transition-colors duration-500 ease-in-out">
Nos essentiels </li>
<li @click="setActiveTab(2)" :class="{ 'active': activeTab === 2 }" class="btn btn-senary transition-colors duration-500 ease-in-out">
Nouveau </li>
<li @click="setActiveTab(3)" :class="{ 'active': activeTab === 3 }" class="btn btn-senary transition-colors duration-500 ease-in-out">
Maquillage </li>
<li @click="setActiveTab(4)" :class="{ 'active': activeTab === 4 }" class="btn btn-senary transition-colors duration-500 ease-in-out">
Soin </li>
</ul>
</div>
<div class="hidden md:flex gap-2 w-20 shrink-0 justify-end slider-buttons">
<button class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
<button class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" class="rotate-180" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<ul class="mt-8 pl-0" :style="`width:${width};`">
<li id="products-slider-_6acf38b314f25_widget_sliderproductshyva_0-1" class="swiper" style="display: none" :class="{ 'hidden': activeTab !== 1 }">
<ul class="product-items swiper-wrapper mb-6!" :class="{ 'hidden': !initialized }">
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/498/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1561">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="498">
<a href="https://www.avril-beaute.fr/creme-jour-et-nuit-1561.html" title="Crème jour et nuit" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-498.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/5/1561_1_1789426973_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème jour et nuit" title="Crème jour et nuit">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-498.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/5/1561_1_1789426973_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème jour et nuit" title="Crème jour et nuit">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1561","productId":498,"name":"Cr\u00e8me jour et nuit"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(498)" aria-label="Ajouter à ma liste d’envie Crème jour et nuit" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_498" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1561"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème jour et nuit</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-498.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="498" data-price-box="product-id-498">
<span class="price-container price-final_price tax weee">
<span id="product-price-498" data-price-amount="8" data-price-type="finalPrice" class="price-wrapper"><span class="price">8 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème jour et nuit" aria-label="Ajouter Crème jour et nuit" data-addto="cart" :class="{ 'is-in-cart': isInCart('1561') }">
<span :class="{ 'hidden': isInCart('1561'), 'flex items-center gap-1': !isInCart('1561') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1561'), 'hidden': !isInCart('1561') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/515/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="624">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="515">
<a href="https://www.avril-beaute.fr/mousse-nettoyante-visage-624.html" title="Mousse nettoyante visage" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-515.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/6/2/624_2_1790290950_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mousse nettoyante visage" title="Mousse nettoyante visage">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-515.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/6/2/624_1_1790290950_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mousse nettoyante visage" title="Mousse nettoyante visage">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"624","productId":515,"name":"Mousse nettoyante visage"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(515)" aria-label="Ajouter à ma liste d’envie Mousse nettoyante visage" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_515" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="624"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
150 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Mousse nettoyante visage</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-515.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="515" data-price-box="product-id-515">
<span class="price-container price-final_price tax weee">
<span id="product-price-515" data-price-amount="8" data-price-type="finalPrice" class="price-wrapper"><span class="price">8 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Mousse nettoyante visage" aria-label="Ajouter Mousse nettoyante visage" data-addto="cart" :class="{ 'is-in-cart': isInCart('624') }">
<span :class="{ 'hidden': isInCart('624'), 'flex items-center gap-1': !isInCart('624') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('624'), 'hidden': !isInCart('624') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1753/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2099">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1753">
<a href="https://www.avril-beaute.fr/mascara-soin-precision-2099.html" title="Mascara soin & précision" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1753.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/0/2099_2_1790809366_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mascara soin & précision" title="Mascara soin & précision">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1753.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/0/2099_1_1790809366_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mascara soin & précision" title="Mascara soin & précision">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2099","productId":1753,"name":"Mascara soin \u0026 pr\u00e9cision"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1753)" aria-label="Ajouter à ma liste d’envie Mascara soin & précision" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1753" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2099"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
10 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Mascara soin & précision</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #040300"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Noir </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1753.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1753" data-price-box="product-id-1753">
<span class="price-container price-final_price tax weee">
<span id="product-price-1753" data-price-amount="9" data-price-type="finalPrice" class="price-wrapper"><span class="price">9 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Mascara soin &amp; précision" aria-label="Ajouter Mascara soin &amp; précision" data-addto="cart" :class="{ 'is-in-cart': isInCart('2099') }">
<span :class="{ 'hidden': isInCart('2099'), 'flex items-center gap-1': !isInCart('2099') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2099'), 'hidden': !isInCart('2099') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/530/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1562">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="530">
<a href="https://www.avril-beaute.fr/gommage-visage-1562.html" title="Gommage visage" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-530.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/5/1562_2_1791414139_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gommage visage" title="Gommage visage">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-530.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/5/1562_1_1791414139_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gommage visage" title="Gommage visage">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1562","productId":530,"name":"Gommage visage"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(530)" aria-label="Ajouter à ma liste d’envie Gommage visage" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_530" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1562"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Gommage visage</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-530.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="530" data-price-box="product-id-530">
<span class="price-container price-final_price tax weee">
<span id="product-price-530" data-price-amount="8" data-price-type="finalPrice" class="price-wrapper"><span class="price">8 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Gommage visage" aria-label="Ajouter Gommage visage" data-addto="cart" :class="{ 'is-in-cart': isInCart('1562') }">
<span :class="{ 'hidden': isInCart('1562'), 'flex items-center gap-1': !isInCart('1562') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1562'), 'hidden': !isInCart('1562') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1808/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2180">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1808">
<a href="https://www.avril-beaute.fr/crayon-yeux-2180.html" title="Crayon yeux" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1808.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2180_2_1790895740_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crayon yeux" title="Crayon yeux">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1808.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2180_1_1790895740_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crayon yeux" title="Crayon yeux">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2180","productId":1808,"name":"Crayon yeux"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1808)" aria-label="Ajouter à ma liste d’envie Crayon yeux" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1808" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2180"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
1 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crayon yeux</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
15 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #19191b"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Charbon </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1808.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1808" data-price-box="product-id-1808">
<span class="price-container price-final_price tax weee">
<span id="product-price-1808" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crayon yeux" aria-label="Ajouter Crayon yeux" data-addto="cart" :class="{ 'is-in-cart': isInCart('2180') }">
<span :class="{ 'hidden': isInCart('2180'), 'flex items-center gap-1': !isInCart('2180') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2180'), 'hidden': !isInCart('2180') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1763/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2170">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1763">
<a href="https://www.avril-beaute.fr/baume-a-levres-rechargeable-2170.html" title="Baume à lèvres rechargeable" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1763.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2170_2_1789686174_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume à lèvres rechargeable" title="Baume à lèvres rechargeable">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1763.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2170_1_1789686174_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume à lèvres rechargeable" title="Baume à lèvres rechargeable">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2170","productId":1763,"name":"Baume \u00e0 l\u00e8vres rechargeable"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1763)" aria-label="Ajouter à ma liste d’envie Baume à lèvres rechargeable" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1763" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2170"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
4 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Baume à lèvres rechargeable</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
2 teintes </span>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1763.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1763" data-price-box="product-id-1763">
<span class="price-container price-final_price tax weee">
<span id="product-price-1763" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Baume à lèvres rechargeable" aria-label="Ajouter Baume à lèvres rechargeable" data-addto="cart" :class="{ 'is-in-cart': isInCart('2170') }">
<span :class="{ 'hidden': isInCart('2170'), 'flex items-center gap-1': !isInCart('2170') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2170'), 'hidden': !isInCart('2170') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/892/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="228">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="892">
<a href="https://www.avril-beaute.fr/eau-micellaire-228.html" title="Eau micellaire" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-892.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/228_1_1789686176_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Eau micellaire" title="Eau micellaire">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-892.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/228_1_1789686176_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Eau micellaire" title="Eau micellaire">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"228","productId":892,"name":"Eau micellaire"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(892)" aria-label="Ajouter à ma liste d’envie Eau micellaire" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_892" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="228"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
500 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Eau micellaire</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-892.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="892" data-price-box="product-id-892">
<span class="price-container price-final_price tax weee">
<span id="product-price-892" data-price-amount="7" data-price-type="finalPrice" class="price-wrapper"><span class="price">7 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Eau micellaire" aria-label="Ajouter Eau micellaire" data-addto="cart" :class="{ 'is-in-cart': isInCart('228') }">
<span :class="{ 'hidden': isInCart('228'), 'flex items-center gap-1': !isInCart('228') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('228'), 'hidden': !isInCart('228') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/500/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="706">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="500">
<a href="https://www.avril-beaute.fr/creme-anti-age-706.html" title="Crème anti-âge" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-500.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/7/0/706_2_1791327760_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème anti-âge" title="Crème anti-âge">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-500.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/7/0/706_1_1791327760_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème anti-âge" title="Crème anti-âge">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"706","productId":500,"name":"Cr\u00e8me anti-\u00e2ge"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(500)" aria-label="Ajouter à ma liste d’envie Crème anti-âge" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_500" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="706"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème anti-âge</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-500.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="500" data-price-box="product-id-500">
<span class="price-container price-final_price tax weee">
<span id="product-price-500" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème anti-âge" aria-label="Ajouter Crème anti-âge" data-addto="cart" :class="{ 'is-in-cart': isInCart('706') }">
<span :class="{ 'hidden': isInCart('706'), 'flex items-center gap-1': !isInCart('706') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('706'), 'hidden': !isInCart('706') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1607/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1816">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1607">
<a href="https://www.avril-beaute.fr/anti-cernes-liquide-1816.html" title="Anti-cernes liquide" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1607.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/8/1816_2_1790118144_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Anti-cernes liquide" title="Anti-cernes liquide">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1607.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/8/1816_1_1790118144_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Anti-cernes liquide" title="Anti-cernes liquide">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1816","productId":1607,"name":"Anti-cernes liquide"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1607)" aria-label="Ajouter à ma liste d’envie Anti-cernes liquide" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1607" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1816"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
4 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Anti-cernes liquide</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
9 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #ffe4d6"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Porcelaine </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1607.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1607" data-price-box="product-id-1607">
<span class="price-container price-final_price tax weee">
<span id="product-price-1607" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Anti-cernes liquide" aria-label="Ajouter Anti-cernes liquide" data-addto="cart" :class="{ 'is-in-cart': isInCart('1816') }">
<span :class="{ 'hidden': isInCart('1816'), 'flex items-center gap-1': !isInCart('1816') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1816'), 'hidden': !isInCart('1816') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1670/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1909">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1670">
<a href="https://www.avril-beaute.fr/baume-demaquillant-1909.html" title="Baume démaquillant" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1670.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/9/1909_2_1789427007_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume démaquillant" title="Baume démaquillant">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1670.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/9/1909_1_1789427007_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume démaquillant" title="Baume démaquillant">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1909","productId":1670,"name":"Baume d\u00e9maquillant"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1670)" aria-label="Ajouter à ma liste d’envie Baume démaquillant" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1670" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1909"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
100 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Baume démaquillant</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1670.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1670" data-price-box="product-id-1670">
<span class="price-container price-final_price tax weee">
<span id="product-price-1670" data-price-amount="12" data-price-type="finalPrice" class="price-wrapper"><span class="price">12 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Baume démaquillant" aria-label="Ajouter Baume démaquillant" data-addto="cart" :class="{ 'is-in-cart': isInCart('1909') }">
<span :class="{ 'hidden': isInCart('1909'), 'flex items-center gap-1': !isInCart('1909') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1909'), 'hidden': !isInCart('1909') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/470/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="230">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="470">
<a href="https://www.avril-beaute.fr/creme-pour-les-mains-230.html" title="Crème pour les mains" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-470.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/3/230_1_1789427050_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème pour les mains" title="Crème pour les mains">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-470.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/3/230_1_1789427050_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème pour les mains" title="Crème pour les mains">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"230","productId":470,"name":"Cr\u00e8me pour les mains"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(470)" aria-label="Ajouter à ma liste d’envie Crème pour les mains" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_470" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="230"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
100 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème pour les mains</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-470.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="470" data-price-box="product-id-470">
<span class="price-container price-final_price tax weee">
<span id="product-price-470" data-price-amount="6" data-price-type="finalPrice" class="price-wrapper"><span class="price">6 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème pour les mains" aria-label="Ajouter Crème pour les mains" data-addto="cart" :class="{ 'is-in-cart': isInCart('230') }">
<span :class="{ 'hidden': isInCart('230'), 'flex items-center gap-1': !isInCart('230') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('230'), 'hidden': !isInCart('230') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1099/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1741">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1099">
<a href="https://www.avril-beaute.fr/serum-eclat-1741.html" title="Sérum éclat" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1099.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/7/1741_1_1789686164_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Sérum éclat" title="Sérum éclat">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1099.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/7/1741_1_1789686164_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Sérum éclat" title="Sérum éclat">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1741","productId":1099,"name":"S\u00e9rum \u00e9clat"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1099)" aria-label="Ajouter à ma liste d’envie Sérum éclat" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1099" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1741"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
30 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Sérum éclat</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1099.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1099" data-price-box="product-id-1099">
<span class="price-container price-final_price tax weee">
<span id="product-price-1099" data-price-amount="9" data-price-type="finalPrice" class="price-wrapper"><span class="price">9 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Sérum éclat" aria-label="Ajouter Sérum éclat" data-addto="cart" :class="{ 'is-in-cart': isInCart('1741') }">
<span :class="{ 'hidden': isInCart('1741'), 'flex items-center gap-1': !isInCart('1741') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1741'), 'hidden': !isInCart('1741') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
</ul>
<div class="flex justify-between md:pr-10 container mx-0 mt-5">
<div class="custom-pagination flex gap-2" :class="{ 'active': activeTab === 1 }">
</div>
<a href="/selections-avril/nos-essentiels.html" class="btn-arrow ml-auto" rel="nofollow">
<span>Voir tout</span>
</a>
</div>
</li>
<li id="products-slider-_6acf38b314f25_widget_sliderproductshyva_0-2" class="swiper" style="display: none" :class="{ 'hidden': activeTab !== 2 }">
<ul class="product-items swiper-wrapper mb-6!" :class="{ 'hidden': !initialized }">
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1932/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2325">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1932">
<a href="https://www.avril-beaute.fr/calendrier-de-l-avent-2026-24-jours-pour-bien-etre-soi-2325.html" title="Calendrier de l'Avent 2026 - 24 jours pour bien être soi" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1932.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/3/2325_2_1791932557_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Calendrier de l'Avent 2026 - 24 jours pour bien être soi" title="Calendrier de l'Avent 2026 - 24 jours pour bien être soi">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1932.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/3/2325_1_1791932557_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Calendrier de l'Avent 2026 - 24 jours pour bien être soi" title="Calendrier de l'Avent 2026 - 24 jours pour bien être soi">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2325","productId":1932,"name":"Calendrier de l\u0027Avent 2026 - 24 jours pour bien \u00eatre soi"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1932)" aria-label="Ajouter à ma liste d’envie Calendrier de l'Avent 2026 - 24 jours pour bien être soi" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1932" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
</span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
</div>
</div>
<h3 class="mt-3 mb-1">
<span>Calendrier de l'Avent 2026 - 24 jours pour bien être soi</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1932.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1932" data-price-box="product-id-1932">
<span class="price-container price-final_price tax weee">
<span id="product-price-1932" data-price-amount="94.5" data-price-type="finalPrice" class="price-wrapper"><span class="price">94,50 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Calendrier de l&#039;Avent 2026 - 24 jours pour bien être soi" aria-label="Ajouter Calendrier de l&#039;Avent 2026 - 24 jours pour bien être soi" data-addto="cart" :class="{ 'is-in-cart': isInCart('2325') }">
<span :class="{ 'hidden': isInCart('2325'), 'flex items-center gap-1': !isInCart('2325') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2325'), 'hidden': !isInCart('2325') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1934/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2293">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1934">
<a href="https://www.avril-beaute.fr/coffret-cadeau-essentiels-soins-2293.html" title="Coffret cadeau Essentiels soins" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1934.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2293_2_1791932556_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Coffret cadeau Essentiels soins" title="Coffret cadeau Essentiels soins">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1934.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2293_1_1791932556_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Coffret cadeau Essentiels soins" title="Coffret cadeau Essentiels soins">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2293","productId":1934,"name":"Coffret cadeau Essentiels soins"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1934)" aria-label="Ajouter à ma liste d’envie Coffret cadeau Essentiels soins" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1934" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
</span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
</div>
</div>
<h3 class="mt-3 mb-1">
<span>Coffret cadeau Essentiels soins</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1934.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1934" data-price-box="product-id-1934">
<span class="price-container price-final_price tax weee">
<span id="product-price-1934" data-price-amount="22" data-price-type="finalPrice" class="price-wrapper"><span class="price">22 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Coffret cadeau Essentiels soins" aria-label="Ajouter Coffret cadeau Essentiels soins" data-addto="cart" :class="{ 'is-in-cart': isInCart('2293') }">
<span :class="{ 'hidden': isInCart('2293'), 'flex items-center gap-1': !isInCart('2293') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2293'), 'hidden': !isInCart('2293') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1931/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2295">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1931">
<a href="https://www.avril-beaute.fr/coffret-cadeau-cocooning-2295.html" title="Coffret cadeau Cocooning" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1931.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2295_2_1791932556_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Coffret cadeau Cocooning" title="Coffret cadeau Cocooning">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1931.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2295_1_1791932556_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Coffret cadeau Cocooning" title="Coffret cadeau Cocooning">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2295","productId":1931,"name":"Coffret cadeau Cocooning"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1931)" aria-label="Ajouter à ma liste d’envie Coffret cadeau Cocooning" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1931" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
</span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
</div>
</div>
<h3 class="mt-3 mb-1">
<span>Coffret cadeau Cocooning</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1931.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1931" data-price-box="product-id-1931">
<span class="price-container price-final_price tax weee">
<span id="product-price-1931" data-price-amount="30" data-price-type="finalPrice" class="price-wrapper"><span class="price">30 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Coffret cadeau Cocooning" aria-label="Ajouter Coffret cadeau Cocooning" data-addto="cart" :class="{ 'is-in-cart': isInCart('2295') }">
<span :class="{ 'hidden': isInCart('2295'), 'flex items-center gap-1': !isInCart('2295') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2295'), 'hidden': !isInCart('2295') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1896/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2235">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1896">
<a href="https://www.avril-beaute.fr/huile-levres-2235.html" title="Huile lèvres" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1896.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2235_2_1790118150_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Huile lèvres" title="Huile lèvres">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1896.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2235_1_1790118150_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Huile lèvres" title="Huile lèvres">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2235","productId":1896,"name":"Huile l\u00e8vres"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1896)" aria-label="Ajouter à ma liste d’envie Huile lèvres" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1896" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2235"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
10 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Huile lèvres</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
10 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #f08698"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Aurore </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1896.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1896" data-price-box="product-id-1896">
<span class="price-container price-final_price tax weee">
<span id="product-price-1896" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Huile lèvres" aria-label="Ajouter Huile lèvres" data-addto="cart" :class="{ 'is-in-cart': isInCart('2235') }">
<span :class="{ 'hidden': isInCart('2235'), 'flex items-center gap-1': !isInCart('2235') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2235'), 'hidden': !isInCart('2235') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1747/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2109">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1747">
<a href="https://www.avril-beaute.fr/creme-pour-les-mains-edition-limitee-2109.html" title="Crème pour les mains édition limitée" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1747.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2109_1_1789686172_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème pour les mains édition limitée" title="Crème pour les mains édition limitée">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1747.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2109_1_1789686172_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème pour les mains édition limitée" title="Crème pour les mains édition limitée">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2109","productId":1747,"name":"Cr\u00e8me pour les mains \u00e9dition limit\u00e9e"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1747)" aria-label="Ajouter à ma liste d’envie Crème pour les mains édition limitée" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1747" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2109"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème pour les mains édition limitée</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1747.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1747" data-price-box="product-id-1747">
<span class="price-container price-final_price tax weee">
<span id="product-price-1747" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème pour les mains édition limitée" aria-label="Ajouter Crème pour les mains édition limitée" data-addto="cart" :class="{ 'is-in-cart': isInCart('2109') }">
<span :class="{ 'hidden': isInCart('2109'), 'flex items-center gap-1': !isInCart('2109') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2109'), 'hidden': !isInCart('2109') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1899/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2138">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1899">
<a href="https://www.avril-beaute.fr/serum-visage-pro-age-2138.html" title="Sérum visage PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1899.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2138_2_1790636542_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Sérum visage PRO AGE +" title="Sérum visage PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1899.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2138_1_1790636542_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Sérum visage PRO AGE +" title="Sérum visage PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2138","productId":1899,"name":"S\u00e9rum visage PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1899)" aria-label="Ajouter à ma liste d’envie Sérum visage PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1899" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2138"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
30 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Sérum visage PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1899.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1899" data-price-box="product-id-1899">
<span class="price-container price-final_price tax weee">
<span id="product-price-1899" data-price-amount="13" data-price-type="finalPrice" class="price-wrapper"><span class="price">13 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Sérum visage PRO AGE +" aria-label="Ajouter Sérum visage PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2138') }">
<span :class="{ 'hidden': isInCart('2138'), 'flex items-center gap-1': !isInCart('2138') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2138'), 'hidden': !isInCart('2138') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1898/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2139">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1898">
<a href="https://www.avril-beaute.fr/soin-contour-des-yeux-et-levres-pro-age-2139.html" title="Soin contour des yeux et lèvres PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1898.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2139_2_1790636543_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Soin contour des yeux et lèvres PRO AGE +" title="Soin contour des yeux et lèvres PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1898.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2139_1_1790636543_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Soin contour des yeux et lèvres PRO AGE +" title="Soin contour des yeux et lèvres PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2139","productId":1898,"name":"Soin contour des yeux et l\u00e8vres PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1898)" aria-label="Ajouter à ma liste d’envie Soin contour des yeux et lèvres PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1898" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2139"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
30 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Soin contour des yeux et lèvres PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1898.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1898" data-price-box="product-id-1898">
<span class="price-container price-final_price tax weee">
<span id="product-price-1898" data-price-amount="12" data-price-type="finalPrice" class="price-wrapper"><span class="price">12 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Soin contour des yeux et lèvres PRO AGE +" aria-label="Ajouter Soin contour des yeux et lèvres PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2139') }">
<span :class="{ 'hidden': isInCart('2139'), 'flex items-center gap-1': !isInCart('2139') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2139'), 'hidden': !isInCart('2139') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1900/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2207">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1900">
<a href="https://www.avril-beaute.fr/creme-de-jour-legere-pro-age-2207.html" title="Crème de jour légère PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1900.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2207_2_1789427040_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour légère PRO AGE +" title="Crème de jour légère PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1900.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2207_1_1789427040_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour légère PRO AGE +" title="Crème de jour légère PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2207","productId":1900,"name":"Cr\u00e8me de jour l\u00e9g\u00e8re PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1900)" aria-label="Ajouter à ma liste d’envie Crème de jour légère PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1900" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2207"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème de jour légère PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1900.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1900" data-price-box="product-id-1900">
<span class="price-container price-final_price tax weee">
<span id="product-price-1900" data-price-amount="16" data-price-type="finalPrice" class="price-wrapper"><span class="price">16 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème de jour légère PRO AGE +" aria-label="Ajouter Crème de jour légère PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2207') }">
<span :class="{ 'hidden': isInCart('2207'), 'flex items-center gap-1': !isInCart('2207') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2207'), 'hidden': !isInCart('2207') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1902/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2208">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1902">
<a href="https://www.avril-beaute.fr/creme-de-jour-riche-pro-age-2208.html" title="Crème de jour riche PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1902.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2208_2_1789686175_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour riche PRO AGE +" title="Crème de jour riche PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1902.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2208_1_1789686174_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour riche PRO AGE +" title="Crème de jour riche PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2208","productId":1902,"name":"Cr\u00e8me de jour riche PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1902)" aria-label="Ajouter à ma liste d’envie Crème de jour riche PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1902" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2208"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème de jour riche PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1902.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1902" data-price-box="product-id-1902">
<span class="price-container price-final_price tax weee">
<span id="product-price-1902" data-price-amount="16" data-price-type="finalPrice" class="price-wrapper"><span class="price">16 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème de jour riche PRO AGE +" aria-label="Ajouter Crème de jour riche PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2208') }">
<span :class="{ 'hidden': isInCart('2208'), 'flex items-center gap-1': !isInCart('2208') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2208'), 'hidden': !isInCart('2208') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1905/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2209">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1905">
<a href="https://www.avril-beaute.fr/baume-de-nuit-pro-age-2209.html" title="Baume de nuit PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1905.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2209_2_1789427042_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume de nuit PRO AGE +" title="Baume de nuit PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1905.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2209_1_1789427042_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume de nuit PRO AGE +" title="Baume de nuit PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2209","productId":1905,"name":"Baume de nuit PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1905)" aria-label="Ajouter à ma liste d’envie Baume de nuit PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1905" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2209"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Baume de nuit PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1905.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1905" data-price-box="product-id-1905">
<span class="price-container price-final_price tax weee">
<span id="product-price-1905" data-price-amount="16" data-price-type="finalPrice" class="price-wrapper"><span class="price">16 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Baume de nuit PRO AGE +" aria-label="Ajouter Baume de nuit PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2209') }">
<span :class="{ 'hidden': isInCart('2209'), 'flex items-center gap-1': !isInCart('2209') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2209'), 'hidden': !isInCart('2209') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1901/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2210">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1901">
<a href="https://www.avril-beaute.fr/recharge-creme-de-jour-legere-pro-age-2210.html" title="Recharge crème de jour légère PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1901.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2210_2_1789686175_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Recharge crème de jour légère PRO AGE +" title="Recharge crème de jour légère PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1901.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2210_1_1789686175_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Recharge crème de jour légère PRO AGE +" title="Recharge crème de jour légère PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-blue_avril-200">Recharge</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2210","productId":1901,"name":"Recharge cr\u00e8me de jour l\u00e9g\u00e8re PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1901)" aria-label="Ajouter à ma liste d’envie Recharge crème de jour légère PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1901" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2210"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Recharge crème de jour légère PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1901.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1901" data-price-box="product-id-1901">
<span class="price-container price-final_price tax weee">
<span id="product-price-1901" data-price-amount="14" data-price-type="finalPrice" class="price-wrapper"><span class="price">14 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Recharge crème de jour légère PRO AGE +" aria-label="Ajouter Recharge crème de jour légère PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2210') }">
<span :class="{ 'hidden': isInCart('2210'), 'flex items-center gap-1': !isInCart('2210') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2210'), 'hidden': !isInCart('2210') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1903/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2211">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1903">
<a href="https://www.avril-beaute.fr/recharge-creme-de-jour-riche-pro-age-2211.html" title="Recharge crème de jour riche PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1903.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2211_2_1789686175_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Recharge crème de jour riche PRO AGE +" title="Recharge crème de jour riche PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1903.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2211_1_1789686175_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Recharge crème de jour riche PRO AGE +" title="Recharge crème de jour riche PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-blue_avril-200">Recharge</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2211","productId":1903,"name":"Recharge cr\u00e8me de jour riche PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1903)" aria-label="Ajouter à ma liste d’envie Recharge crème de jour riche PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1903" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
</span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Recharge crème de jour riche PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1903.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1903" data-price-box="product-id-1903">
<span class="price-container price-final_price tax weee">
<span id="product-price-1903" data-price-amount="14" data-price-type="finalPrice" class="price-wrapper"><span class="price">14 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Recharge crème de jour riche PRO AGE +" aria-label="Ajouter Recharge crème de jour riche PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2211') }">
<span :class="{ 'hidden': isInCart('2211'), 'flex items-center gap-1': !isInCart('2211') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2211'), 'hidden': !isInCart('2211') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
</ul>
<div class="flex justify-between md:pr-10 container mx-0 mt-5">
<div class="custom-pagination flex gap-2" :class="{ 'active': activeTab === 2 }">
</div>
<a href="/nouveau.html" class="btn-arrow ml-auto" rel="nofollow">
<span>Voir tout</span>
</a>
</div>
</li>
<li id="products-slider-_6acf38b314f25_widget_sliderproductshyva_0-3" class="swiper" style="display: none" :class="{ 'hidden': activeTab !== 3 }">
<ul class="product-items swiper-wrapper mb-6!" :class="{ 'hidden': !initialized }">
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1753/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2099">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1753">
<a href="https://www.avril-beaute.fr/mascara-soin-precision-2099.html" title="Mascara soin & précision" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1753.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/0/2099_2_1790809366_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mascara soin & précision" title="Mascara soin & précision">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1753.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/0/2099_1_1790809366_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mascara soin & précision" title="Mascara soin & précision">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2099","productId":1753,"name":"Mascara soin \u0026 pr\u00e9cision"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1753)" aria-label="Ajouter à ma liste d’envie Mascara soin & précision" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1753" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2099"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
10 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Mascara soin & précision</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #040300"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Noir </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1753.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1753" data-price-box="product-id-1753">
<span class="price-container price-final_price tax weee">
<span id="product-price-1753" data-price-amount="9" data-price-type="finalPrice" class="price-wrapper"><span class="price">9 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Mascara soin &amp; précision" aria-label="Ajouter Mascara soin &amp; précision" data-addto="cart" :class="{ 'is-in-cart': isInCart('2099') }">
<span :class="{ 'hidden': isInCart('2099'), 'flex items-center gap-1': !isInCart('2099') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2099'), 'hidden': !isInCart('2099') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1808/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2180">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1808">
<a href="https://www.avril-beaute.fr/crayon-yeux-2180.html" title="Crayon yeux" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1808.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2180_2_1790895740_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crayon yeux" title="Crayon yeux">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1808.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2180_1_1790895740_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crayon yeux" title="Crayon yeux">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2180","productId":1808,"name":"Crayon yeux"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1808)" aria-label="Ajouter à ma liste d’envie Crayon yeux" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1808" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2180"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
1 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crayon yeux</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
15 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #19191b"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Charbon </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1808.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1808" data-price-box="product-id-1808">
<span class="price-container price-final_price tax weee">
<span id="product-price-1808" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crayon yeux" aria-label="Ajouter Crayon yeux" data-addto="cart" :class="{ 'is-in-cart': isInCart('2180') }">
<span :class="{ 'hidden': isInCart('2180'), 'flex items-center gap-1': !isInCart('2180') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2180'), 'hidden': !isInCart('2180') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1607/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1816">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1607">
<a href="https://www.avril-beaute.fr/anti-cernes-liquide-1816.html" title="Anti-cernes liquide" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1607.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/8/1816_2_1790118144_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Anti-cernes liquide" title="Anti-cernes liquide">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1607.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/8/1816_1_1790118144_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Anti-cernes liquide" title="Anti-cernes liquide">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1816","productId":1607,"name":"Anti-cernes liquide"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1607)" aria-label="Ajouter à ma liste d’envie Anti-cernes liquide" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1607" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1816"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
4 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Anti-cernes liquide</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
9 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #ffe4d6"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Porcelaine </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1607.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1607" data-price-box="product-id-1607">
<span class="price-container price-final_price tax weee">
<span id="product-price-1607" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Anti-cernes liquide" aria-label="Ajouter Anti-cernes liquide" data-addto="cart" :class="{ 'is-in-cart': isInCart('1816') }">
<span :class="{ 'hidden': isInCart('1816'), 'flex items-center gap-1': !isInCart('1816') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1816'), 'hidden': !isInCart('1816') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1813/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2105">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1813">
<a href="https://www.avril-beaute.fr/poudre-libre-rechargeable-peaux-claires-a-medium-2105.html" title="Poudre libre rechargeable - peaux claires à médium" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1813.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2105_2_1790982143_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Poudre libre rechargeable - peaux claires à médium" title="Poudre libre rechargeable - peaux claires à médium">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1813.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2105_1_1790982143_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Poudre libre rechargeable - peaux claires à médium" title="Poudre libre rechargeable - peaux claires à médium">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-blue_avril-200">Recharge</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2105","productId":1813,"name":"Poudre libre rechargeable - peaux claires \u00e0 m\u00e9dium"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1813)" aria-label="Ajouter à ma liste d’envie Poudre libre rechargeable - peaux claires à médium" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1813" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2105"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
15 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Poudre libre rechargeable - peaux claires à médium</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
2 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full border border-gray-200" style="background-color: #ffffff"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Peau claire à médium </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1813.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1813" data-price-box="product-id-1813">
<span class="price-container price-final_price tax weee">
<span id="product-price-1813" data-price-amount="12" data-price-type="finalPrice" class="price-wrapper"><span class="price">12 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Poudre libre rechargeable - peaux claires à médium" aria-label="Ajouter Poudre libre rechargeable - peaux claires à médium" data-addto="cart" :class="{ 'is-in-cart': isInCart('2105') }">
<span :class="{ 'hidden': isInCart('2105'), 'flex items-center gap-1': !isInCart('2105') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2105'), 'hidden': !isInCart('2105') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1754/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2118">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1754">
<a href="https://www.avril-beaute.fr/blush-2118.html" title="Blush" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1754.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2118_2_1791500546_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Blush" title="Blush">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1754.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2118_1_1791500546_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Blush" title="Blush">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-blue_avril-200">Recharge</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2118","productId":1754,"name":"Blush"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1754)" aria-label="Ajouter à ma liste d’envie Blush" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1754" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2118"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
5 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Blush</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
8 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #c88e81"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Pêche rosé mat </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1754.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1754" data-price-box="product-id-1754">
<span class="price-container price-final_price tax weee">
<span id="product-price-1754" data-price-amount="6" data-price-type="finalPrice" class="price-wrapper"><span class="price">6 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Blush" aria-label="Ajouter Blush" data-addto="cart" :class="{ 'is-in-cart': isInCart('2118') }">
<span :class="{ 'hidden': isInCart('2118'), 'flex items-center gap-1': !isInCart('2118') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2118'), 'hidden': !isInCart('2118') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/968/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1596">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="968">
<a href="https://www.avril-beaute.fr/eyeliner-1596.html" title="Eyeliner" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-968.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/5/1596_2_1790982141_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Eyeliner" title="Eyeliner">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-968.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/5/1596_1_1790982141_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Eyeliner" title="Eyeliner">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1596","productId":968,"name":"Eyeliner"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(968)" aria-label="Ajouter à ma liste d’envie Eyeliner" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_968" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1596"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
5 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Eyeliner</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
2 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #040300"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Noir </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-968.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="968" data-price-box="product-id-968">
<span class="price-container price-final_price tax weee">
<span id="product-price-968" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Eyeliner" aria-label="Ajouter Eyeliner" data-addto="cart" :class="{ 'is-in-cart': isInCart('1596') }">
<span :class="{ 'hidden': isInCart('1596'), 'flex items-center gap-1': !isInCart('1596') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1596'), 'hidden': !isInCart('1596') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1822/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2133">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1822">
<a href="https://www.avril-beaute.fr/poudre-compacte-2133.html" title="Poudre compacte" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1822.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2133_2_1791500548_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Poudre compacte" title="Poudre compacte">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1822.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2133_1_1791500548_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Poudre compacte" title="Poudre compacte">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-blue_avril-200">Recharge</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2133","productId":1822,"name":"Poudre compacte"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1822)" aria-label="Ajouter à ma liste d’envie Poudre compacte" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1822" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2133"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
11 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Poudre compacte</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
8 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #ecbf9d"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Doré </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1822.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1822" data-price-box="product-id-1822">
<span class="price-container price-final_price tax weee">
<span id="product-price-1822" data-price-amount="7" data-price-type="finalPrice" class="price-wrapper"><span class="price">7 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Poudre compacte" aria-label="Ajouter Poudre compacte" data-addto="cart" :class="{ 'is-in-cart': isInCart('2133') }">
<span :class="{ 'hidden': isInCart('2133'), 'flex items-center gap-1': !isInCart('2133') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2133'), 'hidden': !isInCart('2133') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1456/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1587">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1456">
<a href="https://www.avril-beaute.fr/crayon-sourcils-1587.html" title="Crayon sourcils" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1456.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/5/1587_2_1790895738_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crayon sourcils" title="Crayon sourcils">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1456.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/5/1587_1_1790895738_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crayon sourcils" title="Crayon sourcils">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1587","productId":1456,"name":"Crayon sourcils"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1456)" aria-label="Ajouter à ma liste d’envie Crayon sourcils" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1456" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1587"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
1 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crayon sourcils</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
4 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #9e7a63"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Châtain Clair </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1456.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1456" data-price-box="product-id-1456">
<span class="price-container price-final_price tax weee">
<span id="product-price-1456" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crayon sourcils" aria-label="Ajouter Crayon sourcils" data-addto="cart" :class="{ 'is-in-cart': isInCart('1587') }">
<span :class="{ 'hidden': isInCart('1587'), 'flex items-center gap-1': !isInCart('1587') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1587'), 'hidden': !isInCart('1587') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1017/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1082">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1017">
<a href="https://www.avril-beaute.fr/vernis-soin-nourrissant-et-protecteur-1082.html" title="Vernis soin nourrissant & protecteur" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1017.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/0/1082_1_1791241350_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Vernis soin nourrissant & protecteur" title="Vernis soin nourrissant & protecteur">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1017.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/0/1082_1_1791241350_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Vernis soin nourrissant & protecteur" title="Vernis soin nourrissant & protecteur">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1082","productId":1017,"name":"Vernis soin nourrissant \u0026 protecteur"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1017)" aria-label="Ajouter à ma liste d’envie Vernis soin nourrissant & protecteur" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1017" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1082"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
7 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Vernis soin nourrissant & protecteur</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
4 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #e9d9d1"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Soin nourrissant et protecteur </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1017.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1017" data-price-box="product-id-1017">
<span class="price-container price-final_price tax weee">
<span id="product-price-1017" data-price-amount="5" data-price-type="finalPrice" class="price-wrapper"><span class="price">5 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Vernis soin nourrissant &amp; protecteur" aria-label="Ajouter Vernis soin nourrissant &amp; protecteur" data-addto="cart" :class="{ 'is-in-cart': isInCart('1082') }">
<span :class="{ 'hidden': isInCart('1082'), 'flex items-center gap-1': !isInCart('1082') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1082'), 'hidden': !isInCart('1082') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1637/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1825">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1637">
<a href="https://www.avril-beaute.fr/huile-levres-1825.html" title="Huile lèvres" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1637.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/8/1825_2_1790118146_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Huile lèvres" title="Huile lèvres">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1637.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/8/1825_1_1790118146_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Huile lèvres" title="Huile lèvres">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1825","productId":1637,"name":"Huile l\u00e8vres"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1637)" aria-label="Ajouter à ma liste d’envie Huile lèvres" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1637" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1825"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
4 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Huile lèvres</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
10 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #de8c87"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Nudissime </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1637.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1637" data-price-box="product-id-1637">
<span class="price-container price-final_price tax weee">
<span id="product-price-1637" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Huile lèvres" aria-label="Ajouter Huile lèvres" data-addto="cart" :class="{ 'is-in-cart': isInCart('1825') }">
<span :class="{ 'hidden': isInCart('1825'), 'flex items-center gap-1': !isInCart('1825') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1825'), 'hidden': !isInCart('1825') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/771/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1477">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="771">
<a href="https://www.avril-beaute.fr/fond-de-teint-1477.html" title="Fond de teint" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-771.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/4/1477_2_1790809346_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Fond de teint" title="Fond de teint">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-771.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/4/1477_1_1790809346_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Fond de teint" title="Fond de teint">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1477","productId":771,"name":"Fond de teint"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(771)" aria-label="Ajouter à ma liste d’envie Fond de teint" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_771" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1477"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
30 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Fond de teint</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
11 teintes </span>
</div>
<div class="flex gap-2 mt-1">
<span class="w-3.5 h-3.5 rounded-full" style="background-color: #eed6bd"></span>
<h3 class="font-sans font-light text-xs leading-[120%] tracking-normal text-primary">
Perle </h3>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-771.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="771" data-price-box="product-id-771">
<span class="price-container price-final_price tax weee">
<span id="product-price-771" data-price-amount="11" data-price-type="finalPrice" class="price-wrapper"><span class="price">11 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Fond de teint" aria-label="Ajouter Fond de teint" data-addto="cart" :class="{ 'is-in-cart': isInCart('1477') }">
<span :class="{ 'hidden': isInCart('1477'), 'flex items-center gap-1': !isInCart('1477') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1477'), 'hidden': !isInCart('1477') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
</ul>
<div class="flex justify-between md:pr-10 container mx-0 mt-5">
<div class="custom-pagination flex gap-2" :class="{ 'active': activeTab === 3 }">
</div>
<a href="/maquillage/maquillage.html" class="btn-arrow ml-auto" rel="nofollow">
<span>Voir tout</span>
</a>
</div>
</li>
<li id="products-slider-_6acf38b314f25_widget_sliderproductshyva_0-4" class="swiper" style="display: none" :class="{ 'hidden': activeTab !== 4 }">
<ul class="product-items swiper-wrapper mb-6!" :class="{ 'hidden': !initialized }">
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/515/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="624">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="515">
<a href="https://www.avril-beaute.fr/mousse-nettoyante-visage-624.html" title="Mousse nettoyante visage" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-515.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/6/2/624_2_1790290950_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mousse nettoyante visage" title="Mousse nettoyante visage">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-515.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/6/2/624_1_1790290950_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Mousse nettoyante visage" title="Mousse nettoyante visage">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"624","productId":515,"name":"Mousse nettoyante visage"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(515)" aria-label="Ajouter à ma liste d’envie Mousse nettoyante visage" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_515" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="624"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
150 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Mousse nettoyante visage</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-515.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="515" data-price-box="product-id-515">
<span class="price-container price-final_price tax weee">
<span id="product-price-515" data-price-amount="8" data-price-type="finalPrice" class="price-wrapper"><span class="price">8 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Mousse nettoyante visage" aria-label="Ajouter Mousse nettoyante visage" data-addto="cart" :class="{ 'is-in-cart': isInCart('624') }">
<span :class="{ 'hidden': isInCart('624'), 'flex items-center gap-1': !isInCart('624') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('624'), 'hidden': !isInCart('624') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1049/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="1812">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1049">
<a href="https://www.avril-beaute.fr/creme-de-jour-peaux-seches-et-sensibles-1812.html" title="Crème de jour peaux sèches et sensibles" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1049.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/8/1812_2_1789686165_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour peaux sèches et sensibles" title="Crème de jour peaux sèches et sensibles">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1049.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/8/1812_1_1789686165_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour peaux sèches et sensibles" title="Crème de jour peaux sèches et sensibles">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"1812","productId":1049,"name":"Cr\u00e8me de jour peaux s\u00e8ches et sensibles"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1049)" aria-label="Ajouter à ma liste d’envie Crème de jour peaux sèches et sensibles" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1049" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="1812"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème de jour peaux sèches et sensibles</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1049.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1049" data-price-box="product-id-1049">
<span class="price-container price-final_price tax weee">
<span id="product-price-1049" data-price-amount="8" data-price-type="finalPrice" class="price-wrapper"><span class="price">8 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème de jour peaux sèches et sensibles" aria-label="Ajouter Crème de jour peaux sèches et sensibles" data-addto="cart" :class="{ 'is-in-cart': isInCart('1812') }">
<span :class="{ 'hidden': isInCart('1812'), 'flex items-center gap-1': !isInCart('1812') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('1812'), 'hidden': !isInCart('1812') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/463/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="176">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="463">
<a href="https://www.avril-beaute.fr/gommage-corporel-176.html" title="Gommage corporel" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-463.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/1/7/176_2_1789686165_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gommage corporel" title="Gommage corporel">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-463.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/7/176_1_1789686165_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gommage corporel" title="Gommage corporel">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"176","productId":463,"name":"Gommage corporel"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(463)" aria-label="Ajouter à ma liste d’envie Gommage corporel" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_463" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="176"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
200 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Gommage corporel</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-463.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="463" data-price-box="product-id-463">
<span class="price-container price-final_price tax weee">
<span id="product-price-463" data-price-amount="9" data-price-type="finalPrice" class="price-wrapper"><span class="price">9 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Gommage corporel" aria-label="Ajouter Gommage corporel" data-addto="cart" :class="{ 'is-in-cart': isInCart('176') }">
<span :class="{ 'hidden': isInCart('176'), 'flex items-center gap-1': !isInCart('176') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('176'), 'hidden': !isInCart('176') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1900/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2207">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1900">
<a href="https://www.avril-beaute.fr/creme-de-jour-legere-pro-age-2207.html" title="Crème de jour légère PRO AGE +" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1900.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/2207_2_1789427040_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour légère PRO AGE +" title="Crème de jour légère PRO AGE +">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1900.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/2207_1_1789427040_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème de jour légère PRO AGE +" title="Crème de jour légère PRO AGE +">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-yellow_avril-100">Nouveauté</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2207","productId":1900,"name":"Cr\u00e8me de jour l\u00e9g\u00e8re PRO AGE +"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1900)" aria-label="Ajouter à ma liste d’envie Crème de jour légère PRO AGE +" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1900" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2207"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème de jour légère PRO AGE +</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1900.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1900" data-price-box="product-id-1900">
<span class="price-container price-final_price tax weee">
<span id="product-price-1900" data-price-amount="16" data-price-type="finalPrice" class="price-wrapper"><span class="price">16 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème de jour légère PRO AGE +" aria-label="Ajouter Crème de jour légère PRO AGE +" data-addto="cart" :class="{ 'is-in-cart': isInCart('2207') }">
<span :class="{ 'hidden': isInCart('2207'), 'flex items-center gap-1': !isInCart('2207') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2207'), 'hidden': !isInCart('2207') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1755/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2042">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1755">
<a href="https://www.avril-beaute.fr/baume-reparateur-haute-tolerance-2042.html" title="Baume réparateur haute tolérance" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1755.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/0/2042_2_1789686170_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume réparateur haute tolérance" title="Baume réparateur haute tolérance">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1755.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/0/2042_1_1789686170_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume réparateur haute tolérance" title="Baume réparateur haute tolérance">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2042","productId":1755,"name":"Baume r\u00e9parateur haute tol\u00e9rance"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1755)" aria-label="Ajouter à ma liste d’envie Baume réparateur haute tolérance" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1755" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2042"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
30 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Baume réparateur haute tolérance</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1755.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1755" data-price-box="product-id-1755">
<span class="price-container price-final_price tax weee">
<span id="product-price-1755" data-price-amount="7" data-price-type="finalPrice" class="price-wrapper"><span class="price">7 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Baume réparateur haute tolérance" aria-label="Ajouter Baume réparateur haute tolérance" data-addto="cart" :class="{ 'is-in-cart': isInCart('2042') }">
<span :class="{ 'hidden': isInCart('2042'), 'flex items-center gap-1': !isInCart('2042') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2042'), 'hidden': !isInCart('2042') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/527/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="625">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="527">
<a href="https://www.avril-beaute.fr/gel-nettoyant-visage-625.html" title="Gel nettoyant visage" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-527.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/6/2/625_2_1790290950_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gel nettoyant visage" title="Gel nettoyant visage">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-527.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/6/2/625_1_1790290950_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gel nettoyant visage" title="Gel nettoyant visage">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-pink_avril-100">Coup de Coeur</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"625","productId":527,"name":"Gel nettoyant visage"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(527)" aria-label="Ajouter à ma liste d’envie Gel nettoyant visage" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_527" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="625"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
100 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Gel nettoyant visage</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-527.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="527" data-price-box="product-id-527">
<span class="price-container price-final_price tax weee">
<span id="product-price-527" data-price-amount="5" data-price-type="finalPrice" class="price-wrapper"><span class="price">5 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Gel nettoyant visage" aria-label="Ajouter Gel nettoyant visage" data-addto="cart" :class="{ 'is-in-cart': isInCart('625') }">
<span :class="{ 'hidden': isInCart('625'), 'flex items-center gap-1': !isInCart('625') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('625'), 'hidden': !isInCart('625') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1799/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2175">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1799">
<a href="https://www.avril-beaute.fr/gel-douche-en-poudre-a-reconstituer-rosee-du-matin-2175.html" title="Gel douche en poudre à reconstituer Rosée du matin" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1799.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2175_1_1791586951_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gel douche en poudre à reconstituer Rosée du matin" title="Gel douche en poudre à reconstituer Rosée du matin">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1799.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2175_1_1791586951_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Gel douche en poudre à reconstituer Rosée du matin" title="Gel douche en poudre à reconstituer Rosée du matin">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row">
<div class="flex flex-wrap gap-1"><span class="self-start font-sans font-light text-10 tracking-normal text-center text-primary px-3 py-1 rounded-[3px] bg-blue_avril-200">Recharge</span></div>
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2175","productId":1799,"name":"Gel douche en poudre \u00e0 reconstituer Ros\u00e9e du matin"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1799)" aria-label="Ajouter à ma liste d’envie Gel douche en poudre à reconstituer Rosée du matin" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1799" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2175"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
290 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Gel douche en poudre à reconstituer Rosée du matin</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
4 parfums </span>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1799.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1799" data-price-box="product-id-1799">
<span class="price-container price-final_price tax weee">
<span id="product-price-1799" data-price-amount="3" data-price-type="finalPrice" class="price-wrapper"><span class="price">3 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Gel douche en poudre à reconstituer Rosée du matin" aria-label="Ajouter Gel douche en poudre à reconstituer Rosée du matin" data-addto="cart" :class="{ 'is-in-cart': isInCart('2175') }">
<span :class="{ 'hidden': isInCart('2175'), 'flex items-center gap-1': !isInCart('2175') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2175'), 'hidden': !isInCart('2175') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/1763/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="2170">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="1763">
<a href="https://www.avril-beaute.fr/baume-a-levres-rechargeable-2170.html" title="Baume à lèvres rechargeable" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-1763.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/1/2170_2_1789686174_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume à lèvres rechargeable" title="Baume à lèvres rechargeable">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-1763.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/1/2170_1_1789686174_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Baume à lèvres rechargeable" title="Baume à lèvres rechargeable">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"2170","productId":1763,"name":"Baume \u00e0 l\u00e8vres rechargeable"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(1763)" aria-label="Ajouter à ma liste d’envie Baume à lèvres rechargeable" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_1763" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="2170"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
4 gr </div>
</div>
<h3 class="mt-3 mb-1">
<span>Baume à lèvres rechargeable</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
<span class="font-sans font-light text-sm leading-[130%] tracking-normal text-gray_avril-100">
2 teintes </span>
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-1763.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="1763" data-price-box="product-id-1763">
<span class="price-container price-final_price tax weee">
<span id="product-price-1763" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Baume à lèvres rechargeable" aria-label="Ajouter Baume à lèvres rechargeable" data-addto="cart" :class="{ 'is-in-cart': isInCart('2170') }">
<span :class="{ 'hidden': isInCart('2170'), 'flex items-center gap-1': !isInCart('2170') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('2170'), 'hidden': !isInCart('2170') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/892/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="228">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="892">
<a href="https://www.avril-beaute.fr/eau-micellaire-228.html" title="Eau micellaire" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-892.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/228_1_1789686176_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Eau micellaire" title="Eau micellaire">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-892.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/228_1_1789686176_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Eau micellaire" title="Eau micellaire">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"228","productId":892,"name":"Eau micellaire"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(892)" aria-label="Ajouter à ma liste d’envie Eau micellaire" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_892" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="228"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
500 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Eau micellaire</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-892.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="892" data-price-box="product-id-892">
<span class="price-container price-final_price tax weee">
<span id="product-price-892" data-price-amount="7" data-price-type="finalPrice" class="price-wrapper"><span class="price">7 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Eau micellaire" aria-label="Ajouter Eau micellaire" data-addto="cart" :class="{ 'is-in-cart': isInCart('228') }">
<span :class="{ 'hidden': isInCart('228'), 'flex items-center gap-1': !isInCart('228') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('228'), 'hidden': !isInCart('228') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/490/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="225">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="490">
<a href="https://www.avril-beaute.fr/deodorant-bille-225.html" title="Déodorant bille" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-490.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/2/2/225_2_1789427047_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Déodorant bille" title="Déodorant bille">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-490.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/2/2/225_1_1789427047_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Déodorant bille" title="Déodorant bille">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"225","productId":490,"name":"D\u00e9odorant bille"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(490)" aria-label="Ajouter à ma liste d’envie Déodorant bille" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_490" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="225"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Déodorant bille</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-490.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="490" data-price-box="product-id-490">
<span class="price-container price-final_price tax weee">
<span id="product-price-490" data-price-amount="4" data-price-type="finalPrice" class="price-wrapper"><span class="price">4 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Déodorant bille" aria-label="Ajouter Déodorant bille" data-addto="cart" :class="{ 'is-in-cart': isInCart('225') }">
<span :class="{ 'hidden': isInCart('225'), 'flex items-center gap-1': !isInCart('225') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('225'), 'hidden': !isInCart('225') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/469/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="177">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="469">
<a href="https://www.avril-beaute.fr/lait-corporel-177.html" title="Lait corporel" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-469.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/7/177_1_1787785631_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Lait corporel" title="Lait corporel">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-469.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/1/7/177_1_1787785631_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Lait corporel" title="Lait corporel">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"177","productId":469,"name":"Lait corporel"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(469)" aria-label="Ajouter à ma liste d’envie Lait corporel" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_469" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="177"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
200 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Lait corporel</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-469.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="469" data-price-box="product-id-469">
<span class="price-container price-final_price tax weee">
<span id="product-price-469" data-price-amount="8" data-price-type="finalPrice" class="price-wrapper"><span class="price">8 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Lait corporel" aria-label="Ajouter Lait corporel" data-addto="cart" :class="{ 'is-in-cart': isInCart('177') }">
<span :class="{ 'hidden': isInCart('177'), 'flex items-center gap-1': !isInCart('177') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('177'), 'hidden': !isInCart('177') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
<li class="swiper-slide h-auto">
<form method="post" action="https://www.avril-beaute.fr/checkout/cart/add/uenc/%25uenc%25/product/500/" class="product_addtocart_form item product product-item card card-interactive grow flex flex-col w-full bg-container !p-0 !h-full shadow-transparent hover:bg-container relative" data-sku="706">
<input type="hidden" name="form_key" :value="hyva.getFormKey()">
<input type="hidden" name="product" value="500">
<a href="https://www.avril-beaute.fr/creme-anti-age-706.html" title="Crème anti-âge" class="product photo product-item-photo mx-auto mb-3 w-full flex-1 flex flex-col" tabindex="-1">
<div class="flex justify-center relative flex-grow">
<img class="object-cover w-full block m-auto image-2" x-data="" @update-gallery-500.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/7/0/706_2_1791327760_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème anti-âge" title="Crème anti-âge">
<img class="object-cover w-full block m-auto image-1 absolute max-w-[85%] left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2" x-data="" @update-gallery-500.window="$root.src = $event.detail" src="https://avril.twic.pics/media/catalog/product/cache/c5b0e6136a6dd7f7d91d8b889ed40f35/7/0/706_1_1791327760_1.png?twic=v1/cover=600x600" loading="lazy" width="300" height="" alt="Crème anti-âge" title="Crème anti-âge">
</div>
<div class="flex gap-2 absolute px-4 pt-4 justify-between w-full top-0 flex-row-reverse">
<div class="button-wishlist h-4">
<button x-data='initWishlist({"sku":"706","productId":500,"name":"Cr\u00e8me anti-\u00e2ge"})' x-init="getWishlistItems()" x-defer="intersect" @click.prevent="addToWishlist(500)" aria-label="Ajouter à ma liste d’envie Crème anti-âge" type="button" :disabled="isLoading" class="w-4 h-4 p-0 border-0 inline-flex shrink-0 items-center justify-center" data-addto="wishlist">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewbox="0 0 16 14" fill="" class="stroke-primary hover:fill-primary" aria-hidden="true" :class="inWishlist ? 'fill-primary' : 'fill-transparent'">
<path d="M12.6663 8.33333C13.6597 7.36 14.6663 6.19333 14.6663 4.66667C14.6663 3.69421 14.28 2.76158 13.5924 2.07394C12.9048 1.38631 11.9721 1 10.9997 1C9.82634 1 8.99967 1.33333 7.99967 2.33333C6.99967 1.33333 6.17301 1 4.99967 1C4.02721 1 3.09458 1.38631 2.40695 2.07394C1.71932 2.76158 1.33301 3.69421 1.33301 4.66667C1.33301 6.2 2.33301 7.36667 3.33301 8.33333L7.99967 13L12.6663 8.33333Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</button>
</div>
</div>
<div id="product-item-info_500" class="product-info flex flex-col justify-between px-2 md:px-4 pt-2 pb-4 min-h-[180px]">
<div class="flex justify-between items-center w-full min-h-3">
<div>
<div class="netreviews-stars">
<span>
<div class="skeepers_product__stars" data-product-id="706"></div> </span>
</div>
</div>
<div class="font-sans font-light text-xs leading-none normal-tracking text-primary">
50 ml </div>
</div>
<h3 class="mt-3 mb-1">
<span>Crème anti-âge</span>
<div class="flex flex-col justify-start">
<div class="min-h-[20px] flex items-center">
</div>
</div>
</h3>
<div class="flex justify-between gap-2.5 mt-3 items-end">
<div class="my-auto text-gray-900" x-data="initPriceBox()" x-defer="intersect" @update-prices-500.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="500" data-price-box="product-id-500">
<span class="price-container price-final_price tax weee">
<span id="product-price-500" data-price-amount="10" data-price-type="finalPrice" class="price-wrapper"><span class="price">10 €</span></span>
</span>
</div> </div>
<button class="w-auto btn btn-primary btn-add-to-cart flex gap-1 justify-center items-center relative !px-2 md:!px-5 !py-[3px]" title="Ajouter Crème anti-âge" aria-label="Ajouter Crème anti-âge" data-addto="cart" :class="{ 'is-in-cart': isInCart('706') }">
<span :class="{ 'hidden': isInCart('706'), 'flex items-center gap-1': !isInCart('706') }">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewbox="0 0 24 24" fill="none" class="border-current" aria-hidden="true">
<path d="M14.6664 10.3354C14.6664 11.0426 14.3854 11.7209 13.8853 12.221C13.3852 12.7211 12.7069 13.0021 11.9997 13.0021C11.2924 13.0021 10.6142 12.7211 10.1141 12.221C9.61398 11.7209 9.33303 11.0426 9.33303 10.3354M6.06836 7.69141H17.931" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.26667 7.31133C6.09357 7.54213 6 7.82284 6 8.11133V17C6 17.3536 6.14048 17.6928 6.39052 17.9428C6.64057 18.1929 6.97971 18.3333 7.33333 18.3333H16.6667C17.0203 18.3333 17.3594 18.1929 17.6095 17.9428C17.8595 17.6928 18 17.3536 18 17V8.11133C18 7.82284 17.9064 7.54213 17.7333 7.31133L16.4 5.53333C16.2758 5.36774 16.1148 5.23333 15.9296 5.14076C15.7445 5.04819 15.5403 5 15.3333 5H8.66667C8.45967 5 8.25552 5.04819 8.07038 5.14076C7.88524 5.23333 7.7242 5.36774 7.6 5.53333L6.26667 7.31133Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline">
Ajouter </span>
</span>
<span :class="{ 'flex items-center gap-1.5': isInCart('706'), 'hidden': !isInCart('706') }">
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewbox="0 0 10 7" fill="none" class="border-current" aria-hidden="true">
<path d="M9 1L3.5 6.5L1 4" stroke="#1D1D1B" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span class="font-light text-xs md:text-13 leading-8 tracking-normal text-white inline is-in-cart">
Ajouté </span>
</span>
</button>
</div>
</div>
</a>
</form>
</li>
</ul>
<div class="flex justify-between md:pr-10 container mx-0 mt-5">
<div class="custom-pagination flex gap-2" :class="{ 'active': activeTab === 4 }">
</div>
<a href="https://www.avril-beaute.fr/soin.html" class="btn-arrow ml-auto" rel="nofollow">
<span>Voir tout</span>
</a>
</div>
</li>
</ul>
</div>
<script>
function productsSliderWidget_6acf38b314f25_widget_sliderproductshyva_0() {
return {
activeTab: 0,
initialized: false,
swiper: null,
width: '100%',
quoteItems: [],
hasLoaded: false,
init(){
this.watchMageCache();
window.addEventListener('get-last-item-success', () => {
this.waitForUpdatedCart();
});
},
setActiveTab: function (tab) {
this.initialized = false;
this.activeTab = tab;
this.trackViewItemList(tab);
setTimeout(() => this.initSlider(tab), 0);
},
trackViewItemList(tab) {
if (!this.hasLoaded) {
this.hasLoaded = true;
return;
}
const rootEvent = window.dataLayer?.find(e => e.events_by_tabs);
if (!rootEvent) return;
const eventsByTabs = rootEvent.events_by_tabs || [];
const event = eventsByTabs[tab - 1];
if (!event) return;
const { events_by_tabs, ...cleanEvent } = event;
if (typeof window.clearCartListContext === 'function') {
const itemIds = (cleanEvent.ecommerce?.items || [])
.flat(Infinity)
.map(i => i.item_id)
.filter(Boolean);
// Pass the list context so it gets persisted in LIST_COOKIE_KEY immediately.
// On page reload after add_to_cart, initDataPersistence will snapshot this
// value and restore it after replay, preserving the correct tab context.
const listContext = {
item_list_id: cleanEvent.ecommerce.item_list_id,
item_list_name: cleanEvent.ecommerce.item_list_name,
shopping_tool: cleanEvent.ecommerce.items?.[0]?.shopping_tool
};
window.clearCartListContext(itemIds, listContext);
}
window.dataLayer.push(cleanEvent);
},
initSlider: function (tab) {
if (this.swiper) this.swiper.destroy(true, true);
let swiperContainer = document.querySelector('#products-slider-_6acf38b314f25_widget_sliderproductshyva_0-' + tab);
if (!swiperContainer) return;
const parent = swiperContainer.closest('.products-slider');
const btnPrev = parent.querySelector('.swiper-button-prev');
const btnNext = parent.querySelector('.swiper-button-next');
const handlePaginationVisibility = function() {
if (this.pagination.el) {
if (this.pagination.bullets.length > 1) {
this.pagination.el.style.display = 'flex';
} else {
this.pagination.el.style.display = 'none';
}
}
};
this.swiper = new Swiper(swiperContainer, {
centeredSlides: false,
slidesPerView: 1.5,
slidesPerGroup: 1,
spaceBetween: 20,
keyboard: { enabled: true },
speed: 500,
loop: false,
navigation: {
nextEl: btnNext,
prevEl: btnPrev,
},
pagination: {
el: swiperContainer.querySelector('.custom-pagination.active'),
clickable: true,
renderBullet: (index, className) => `<span class="${className}"></span>`
},
breakpoints: {
1180: {slidesPerView: 4.4, slidesPerGroup: 4, spaceBetween: 20},
967: {slidesPerView: 3.4, slidesPerGroup: 3, spaceBetween: 20},
0: {slidesPerView: 2.2, slidesPerGroup: 2, spaceBetween: 8}
},
on: {
init: handlePaginationVisibility,
resize: handlePaginationVisibility,
update: handlePaginationVisibility
}
});
this.initialized = true;
swiperContainer.style.display = '';
},
waitForUpdatedCart: function () {
const previous = JSON.stringify(this.quoteItems);
const check = () => {
const cache = localStorage.getItem('mage-cache-storage');
if (!cache) return setTimeout(check, 50);
const mageCache = JSON.parse(cache);
const cart = mageCache.cart || mageCache['cart-data'];
if (!cart) return setTimeout(check, 50);
const items = cart.items || cart['items'];
if (!items) return setTimeout(check, 50);
const newItems = items.map(i => i.original_product_sku);
if (JSON.stringify(newItems) === previous) {
return setTimeout(check, 50);
}
this.quoteItems = newItems;
};
check();
},
isInCart: function (sku) {
return this.quoteItems.includes(sku);
},
watchMageCache: function () {
let self = this;
(function(originalSetItem) {
localStorage.setItem = function(key, value) {
originalSetItem.apply(this, arguments);
if (key === 'mage-cache-storage') {
setTimeout(function () {
self.getQuoteItems();
}, 0);
}
};
})(localStorage.setItem);
},
getQuoteItems: function () {
let self = this;
if (!localStorage.getItem('mage-cache-storage')) {
return;
}
let mageCache = JSON.parse(localStorage.getItem('mage-cache-storage'));
let cart = mageCache.cart || mageCache['cart-data'];
if (!cart) return;
let items = cart.items || cart['items'];
if (!items) return;
self.quoteItems = [];
items.forEach(item => {
if (item.original_product_sku) {
self.quoteItems.push(item.original_product_sku);
}
});
}
}
}
</script>
</div></div></div><script>
(function () {
const pushEvent = (el) => {
const rawData = {"chips_reco_on_vous_accompagne":"{{inner_text}}"};
const finalData = {
event: 'homepage'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.hp-default-slider-products .categories li');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</section><section class="dynamic-bg-color"><style>#html-body [data-pb-style=A3Y4GC7]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div class="hp_saison" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="A3Y4GC7"><div class="hp_saison_content" data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div
class="saison_description">
<div class="desktop">
<h2>c'est nouveau</h2>
<p class="description-desktop">
Des années que vous nous le demandez... <br><br>
C'est une première dans l'histoire d'Avril : notre 1er calendrier de l'Avent est arrivé !<br><br>
Un coffret prestige, conçu pour être réutilisé, qui contient 24 produits de taille réelle, soigneusement sélectionnés parmi nos soins, nos produits d'hygiène, nos indispensables maquillage et nos accessoires coups de cœur.<br><br>
</p>
</div>
<div class="mobile">
<p>c'est nouveau</p>
<p class="description-mobile">
Le 1er calendrier de l'Avent Avril est arrivé !<br><br>
24 produits de taille réelle dans un coffret prestige, conçu pour être réutilisé.<br><br>
</p>
</div>
</div>
<div class="img-block">
<div class="img-zoom">
<a href="https://www.avril-beaute.fr/calendrier-de-l-avent-2026-24-jours-pour-bien-etre-soi-2325.html" rel="nofollow">
<img loading="lazy" src="https://avril.twic.pics/media/.renditions/wysiwyg/homepage/produits_calendrier_l_avent_.png" alt="Le calendrier de l'Avent Avril"/>
</a>
</div>
</div>
<div class="saison_link">
<a href="https://www.avril-beaute.fr/calendrier-de-l-avent-2026-24-jours-pour-bien-etre-soi-2325.html" rel="nofollow"><span>Découvrir</span></a>
</div></div></div></section><section class="segmentation-peau-wrapper">
<div x-data="genericSliderHyva_6acf38b320646_hp_slider_articles_block()"
x-init="initSlider()"
x-ref="containerSlider"
class="products-slider container mx-auto pl-4 py-10 overflow-hidden"
>
<h2 class="font-abhayalibre font-extrabold !text-38 leading-[90%] tracking-normal text-primary pr-2 w-[90%] md:w-full">
votre peau, vos besoins </h2>
<span class="font-sans block font-light text-sm !leading-[140%] tracking-normal text-primary pr-2 w-[68%] md:w-[65%]">
Nous vous conseillons les soins qui font du bien à votre peau, vous choisissez uniquement ce dont vous avez besoin. </span>
<ul class="mt-4 md:mt-[30px] pl-0" :style="`width:${width}px;`">
<li class="swiper" id="slider-_6acf38b320646_hp_slider_articles_block">
<ul class="swiper-wrapper !mb-6" :class="{ 'hidden': !initialized }">
<li class="swiper-slide h-auto flex flex-col">
<a href="/aide-au-choix-peau-mature-agir-sur-le-vieillissement-cutane"
title="Peau mature"
class="flex flex-col h-full">
<div class="mb-3 img-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/base_matifiante_2__2.png?twic=v1/cover=600x816"
title="Aide au choix soin - Card 1 - Peaux matures"
class="w-full h-[358px] md:h-[408px] rounded-xl object-cover"
width="300"
height="408"
alt="Aide au choix soin - Card 1 - Peaux matures"
loading="lazy"/>
</div>
<div class="flex flex-col flex-1">
<p class="mb-4 font-light text-sm leading-[140%] tracking-normal text-primary w-full">
Votre peau manque de fermeté, présente des rides ou des tâches. </p>
<h3 class="mt-auto block btn-arrow md:leading-6">
<span>Peau mature</span>
</h3>
</div>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col">
<a href="/aide-au-choix-peau-deshydratee"
title="Peau déshydratée"
class="flex flex-col h-full">
<div class="mb-3 img-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/AdobeStock_751188297_bis.jpeg?twic=v1/cover=600x816"
title="Aide au choix soin - Card 2 - Peaux déshydratées"
class="w-full h-[358px] md:h-[408px] rounded-xl object-cover"
width="300"
height="408"
alt="Aide au choix soin - Card 2 - Peaux déshydratées"
loading="lazy"/>
</div>
<div class="flex flex-col flex-1">
<p class="mb-4 font-light text-sm leading-[140%] tracking-normal text-primary w-full">
Votre peau tiraille et présente des ridules de déshydratation. </p>
<h3 class="mt-auto block btn-arrow md:leading-6">
<span>Peau déshydratée</span>
</h3>
</div>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col">
<a href="/aide-au-choix-peau-imperfections"
title="Peau à imperfections"
class="flex flex-col h-full">
<div class="mb-3 img-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/s_rum_purifiant_3.png?twic=v1/cover=600x816"
title="Aide au choix soin - Card 3 - Peaux à imperfections"
class="w-full h-[358px] md:h-[408px] rounded-xl object-cover"
width="300"
height="408"
alt="Aide au choix soin - Card 3 - Peaux à imperfections"
loading="lazy"/>
</div>
<div class="flex flex-col flex-1">
<p class="mb-4 font-light text-sm leading-[140%] tracking-normal text-primary w-full">
Votre peau présente des boutons ou de petites cicatrices. </p>
<h3 class="mt-auto block btn-arrow md:leading-6">
<span>Peau à imperfections</span>
</h3>
</div>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col">
<a href="/aide-au-choix-peau-seche-et-sensible"
title="Peau sèche ou sensible"
class="flex flex-col h-full">
<div class="mb-3 img-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/AdobeStock_333001522.jpeg?twic=v1/cover=600x816"
title="Aide au choix soin - Card 4 - Peaux sèches ou sensibles"
class="w-full h-[358px] md:h-[408px] rounded-xl object-cover"
width="300"
height="408"
alt="Aide au choix soin - Card 4 - Peaux sèches ou sensibles"
loading="lazy"/>
</div>
<div class="flex flex-col flex-1">
<p class="mb-4 font-light text-sm leading-[140%] tracking-normal text-primary w-full">
Votre peau tiraille, rougit ou présente des squames (petites peaux). </p>
<h3 class="mt-auto block btn-arrow md:leading-6">
<span>Peau sèche ou sensible</span>
</h3>
</div>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col">
<a href="/aide-au-choix-peau-terne-ou-fatiguee"
title="Peau terne ou fatiguée"
class="flex flex-col h-full">
<div class="mb-3 img-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/masque_purifiant_2__2.png?twic=v1/cover=600x816"
title="Aide au choix soin - Card 5 - Peaux ternes ou fatiguées"
class="w-full h-[358px] md:h-[408px] rounded-xl object-cover"
width="300"
height="408"
alt="Aide au choix soin - Card 5 - Peaux ternes ou fatiguées"
loading="lazy"/>
</div>
<div class="flex flex-col flex-1">
<p class="mb-4 font-light text-sm leading-[140%] tracking-normal text-primary w-full">
Votre peau manque d'éclat, vous avez des cernes ou des poches autour des yeux. </p>
<h3 class="mt-auto block btn-arrow md:leading-6">
<span>Peau terne ou fatiguée</span>
</h3>
</div>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col">
<a href="/aide-au-choix-peau-mixte-a-grasse"
title="Peau mixte à grasse"
class="flex flex-col h-full">
<div class="mb-3 img-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/Capture_d_cran_2025-10-31_182614_2.jpg?twic=v1/cover=600x816"
title="Aide au choix soin - Card 6 - Peaux mixtes à grasses"
class="w-full h-[358px] md:h-[408px] rounded-xl object-cover"
width="300"
height="408"
alt="Aide au choix soin - Card 6 - Peaux mixtes à grasses"
loading="lazy"/>
</div>
<div class="flex flex-col flex-1">
<p class="mb-4 font-light text-sm leading-[140%] tracking-normal text-primary w-full">
Votre peau brille sur la zone T ou sur tout le visage, elle présente un excès de sébum. </p>
<h3 class="mt-auto block btn-arrow md:leading-6">
<span>Peau mixte à grasse</span>
</h3>
</div>
</a>
</li>
</ul>
<div class="flex items-center">
<div class="flex justify-center md:justify-between pr-10 container mx-0 mb-11 md:mb-0">
<div class="custom-pagination flex gap-2 active"></div>
<div id="nav-_6acf38b320646_hp_slider_articles_block" class="hidden md:flex gap-2 w-[80px] shrink-0 slider-buttons">
<button class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<button class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" class="rotate-180" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
</div>
</li>
</ul>
</div>
<script>
function genericSliderHyva_6acf38b320646_hp_slider_articles_block() {
return {
initialized: false,
swiper: null,
width: '100%',
initSlider() {
if (this.swiper) {
this.swiper.destroy();
}
const container = this.$refs.containerSlider;
const btnPrev = container.querySelector('#nav-_6acf38b320646_hp_slider_articles_block .swiper-button-prev');
const btnNext = container.querySelector('#nav-_6acf38b320646_hp_slider_articles_block .swiper-button-next');
let swiperWheel = document.querySelectorAll('#slider-_6acf38b320646_hp_slider_articles_block');
if (swiperWheel.length > 0) {
this.swiper = new Swiper('#slider-_6acf38b320646_hp_slider_articles_block', {
centeredSlides: false,
slidesPerView: 1.5,
slidesPerGroup: 1,
spaceBetween: 20,
keyboard: {
enabled: true,
},
speed: 500,
loop: false,
mousewheel: false,
navigation: {
nextEl: btnNext,
prevEl: btnPrev
},
pagination: {
el: ".custom-pagination.active",
clickable: true,
renderBullet: (index, className) => `<span class="${className}"></span>`
},
breakpoints: {
1180: {
slidesPerView: 4.5,
slidesPerGroup: 4
},
967: {
slidesPerView: 3.5,
slidesPerGroup: 3
},
560: {
slidesPerView: 2.5,
slidesPerGroup: 2
}
}
});
this.initialized = true;
}
}
}
}
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"click":"{{title}}"};
const finalData = {
event: 'segmentation_peau'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.segmentation-peau-wrapper a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.segmentation-peau-wrapper a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</section><section class="extend_experience_wrapper bg-white pt-8 pb-6"><style>#html-body [data-pb-style=RRCO9I2]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="RRCO9I2"><div class="hp_extend_experience_content" data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="extend_experience_description">
<h2>prolongez l'expérience Avril en boutique</h2>
<p>
Prenez le temps de découvrir, toucher, sentir, tester... Besoin d'aide ? Nous sommes là pour vous
guider vers les produits qui vous conviennent vraiment.
</p>
</div>
<div class="img-block">
<div class="img-left experienceShow">
<img loading="lazy"
class="active"
src="https://avril.twic.pics/media/.renditions/wysiwyg/unnamed.jpg"
alt="prolongez l'expérience Avril en boutique"/>
<img loading="lazy"
src="https://avril.twic.pics/media/.renditions/wysiwyg/lille_europe_3.jpg"
alt="prolongez l'expérience Avril en boutique"/>
</div>
<div class="right-top experienceShow">
<img loading="lazy"
class="active"
src="https://avril.twic.pics/media/.renditions/wysiwyg/Limoges3.jpg"
alt="prolongez l'expérience Avril en boutique"/>
<img loading="lazy"
src="https://avril.twic.pics/media/.renditions/wysiwyg/Aix_1.jpg"
alt="prolongez l'expérience Avril en boutique"/>
</div>
<div class="right-bottom experienceShow">
<img loading="lazy"
class="active"
src="https://avril.twic.pics/media/.renditions/wysiwyg/unnamed_11_1__1.jpg"
alt="prolongez l'expérience Avril en boutique"/>
<img loading="lazy"
src="https://avril.twic.pics/media/.renditions/wysiwyg/boutique1.jpg"
alt="prolongez l'expérience Avril en boutique"/>
</div>
</div>
<div class="extend_experience_link">
<a href="points-de-vente/">
<span>Trouver ma boutique</span>
</a>
</div>
</div></div></div><script>
(function () {
const pushEvent = (el) => {
const rawData = {"trouver_ma_boutique":""};
const finalData = {
event: 'homepage'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.extend_experience_wrapper a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.extend_experience_wrapper a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</section><section class="bg-white overflow-hidden"><style>#html-body [data-pb-style=HK8NMFL]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=Q8N14SW]{border-style:none}#html-body [data-pb-style=UDYRCDK],#html-body [data-pb-style=UXFTC8O]{max-width:100%;height:auto}#html-body [data-pb-style=NM71CES]{display:inline-block}#html-body [data-pb-style=A9CASAE]{text-align:center;border-style:none}@media only screen and (max-width: 767px) { #html-body [data-pb-style=Q8N14SW]{border-style:none} }</style><div class="project-slider-hp" data-content-type="row" data-appearance="full-width" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="main" data-pb-style="HK8NMFL"><div class="row-full-width-inner" data-element="inner"><figure class="img-project-dezoom" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="Q8N14SW"><a href="/le-projet-avril" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://avril.twic.pics/media/wysiwyg/AdobeStock_1104413729.jpeg" alt="Le projet Avril" title="" width="" height="" loading="lazy" data-use-native-image-dimensions="true" data-element="desktop_image" data-pb-style="UXFTC8O"><img class="pagebuilder-mobile-only" src="https://avril.twic.pics/media/wysiwyg/AdobeStock_1104413729_1.jpeg" alt="Le projet Avril" title="" width="" height="" loading="lazy" data-use-native-image-dimensions="true" data-element="mobile_image" data-pb-style="UDYRCDK"></a></figure><div data-content-type="text" data-appearance="default" data-element="main"><h2><a tabindex="-1" title="le projet Avril" href="/le-projet-avril">le projet Avril</a></h2></div><div class="hp-project-description pl-2.5" data-content-type="text" data-appearance="default" data-element="main">
<p>Moins de transport, plus de local. Moins de déchets, plus de recharges. Et derrière chaque choix, des gens qui y croient.</p>
</div><div data-content-type="buttons" data-appearance="inline" data-same-width="false" data-element="main" class="hp-project-link pl-2.5"><div data-content-type="button-item" data-appearance="default" data-element="main" data-pb-style="NM71CES"><a class="pagebuilder-button-link" href="/le-projet-avril" target="" data-link-type="default" data-element="link" data-pb-style="A9CASAE"><span data-element="link_text">En savoir plus</span></a></div></div></div></div>
<div x-data="genericSliderHyva_6acf38b322ea3_hp_slider_project_block()"
x-init="initSlider()"
x-ref="containerSlider"
class="products-slider project-slider container mx-auto pl-4 overflow-hidden pb-12"
>
<ul class="mt-[30px] pl-0" :style="`width:${width}px;`">
<li class="swiper" id="slider-_6acf38b322ea3_hp_slider_project_block">
<ul class="swiper-wrapper !mb-7 md:!mb-6" :class="{ 'hidden': !initialized }">
<li class="swiper-slide h-auto flex flex-col relative">
<a class="mt-auto block relative" href="/le-projet-avril#projet">
<div class="img-project-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/image_11_.png?twic=v1/cover=784x1090"
title="du bio exigeant"
class="w-full h-[358px] md:h-[545px] object-cover rounded-xl"
width="392"
height="545"
alt="du bio exigeant"
loading="lazy"/>
</div>
<h3 class="mb-4 block absolute left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 font-abhayalibre font-extrabold text-44 md:text-5xl leading-[80%] md:leading-[90%] tracking-normal text-center text-white underline decoration-2 md:no-underline">
du bio exigeant </h3>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col relative">
<a class="mt-auto block relative" href="/le-projet-avril#projet">
<div class="img-project-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/image_7__1.png?twic=v1/cover=784x1090"
title="  1% pour la planète"
class="w-full h-[358px] md:h-[545px] object-cover rounded-xl"
width="392"
height="545"
alt="  1% pour la planète"
loading="lazy"/>
</div>
<h3 class="mb-4 block absolute left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 font-abhayalibre font-extrabold text-44 md:text-5xl leading-[80%] md:leading-[90%] tracking-normal text-center text-white underline decoration-2 md:no-underline">
1% pour la planète </h3>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col relative">
<a class="mt-auto block relative" href="/le-projet-avril#projet">
<div class="img-project-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/image_8_.png?twic=v1/cover=784x1090"
title="nos petits (et grands) pas"
class="w-full h-[358px] md:h-[545px] object-cover rounded-xl"
width="392"
height="545"
alt="nos petits (et grands) pas"
loading="lazy"/>
</div>
<h3 class="mb-4 block absolute left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 font-abhayalibre font-extrabold text-44 md:text-5xl leading-[80%] md:leading-[90%] tracking-normal text-center text-white underline decoration-2 md:no-underline">
nos petits (et grands) pas </h3>
</a>
</li>
<li class="swiper-slide h-auto flex flex-col relative">
<a class="mt-auto block relative" href="/le-projet-avril#projet">
<div class="img-project-zoom">
<img src="https://avril.twic.pics/media/hyva_generic_sliders/Image_20251113_113649_2.jpeg?twic=v1/cover=784x1090"
title="les valeurs qui nous guident"
class="w-full h-[358px] md:h-[545px] object-cover rounded-xl"
width="392"
height="545"
alt="les valeurs qui nous guident"
loading="lazy"/>
</div>
<h3 class="mb-4 block absolute left-1/2 top-1/2 -translate-y-1/2 -translate-x-1/2 font-abhayalibre font-extrabold text-44 md:text-5xl leading-[80%] md:leading-[90%] tracking-normal text-center text-white underline decoration-2 md:no-underline">
les valeurs qui nous guident </h3>
</a>
</li>
</ul>
<div class="flex items-center">
<div class="flex justify-center md:justify-between md:pr-10 container mx-0">
<div class="custom-pagination flex gap-2 active"></div>
<div id="nav-_6acf38b322ea3_hp_slider_project_block" class="hidden md:flex gap-2 w-[80px] shrink-0 slider-buttons">
<button class="swiper-button-prev"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
<button class="swiper-button-next"><svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" class="rotate-180" aria-hidden="true">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
</div>
</div>
</div>
</li>
</ul>
</div>
<script>
function genericSliderHyva_6acf38b322ea3_hp_slider_project_block() {
return {
initialized: false,
swiper: null,
width: '100%',
initSlider() {
if (this.swiper) {
this.swiper.destroy();
}
const container = this.$refs.containerSlider;
const btnPrev = container.querySelector('#nav-_6acf38b322ea3_hp_slider_project_block .swiper-button-prev');
const btnNext = container.querySelector('#nav-_6acf38b322ea3_hp_slider_project_block .swiper-button-next');
let swiperWheel = document.querySelectorAll('#slider-_6acf38b322ea3_hp_slider_project_block');
if (swiperWheel.length > 0) {
this.swiper = new Swiper('#slider-_6acf38b322ea3_hp_slider_project_block', {
centeredSlides: false,
slidesPerView: 1.5,
slidesPerGroup: 1,
spaceBetween: 20,
keyboard: {
enabled: true,
},
speed: 500,
loop: false,
mousewheel: false,
navigation: {
nextEl: btnNext,
prevEl: btnPrev,
},
pagination: {
el: ".custom-pagination.active",
clickable: true,
renderBullet: (index, className) => `<span class="${className}"></span>`
},
breakpoints: {
1180: {
slidesPerView: 3.5,
slidesPerGroup: 3
},
560: {
slidesPerView: 2.5,
slidesPerGroup: 2
}
}
});
this.initialized = true;
}
}
}
}
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"projet_avril":""};
const finalData = {
event: 'homepage'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.hp-project-link a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.hp-project-link a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</section>
<section class="bg-container-lighter py-10 px-10"
x-data="{ expanded: false, showButton: false, fullHeight: 0, collapsedHeight: 0, lineLimit: 3, init() { const contentEl = this.$refs.content; const style = window.getComputedStyle(contentEl); const lineHeight = parseFloat(style.lineHeight); this.fullHeight = contentEl.scrollHeight; this.collapsedHeight = this.lineLimit * lineHeight; this.showButton = contentEl.scrollHeight > this.collapsedHeight; } }">
<div class="container">
<div x-ref="content"
class="relative overflow-hidden transition-all duration-300"
:style="expanded ? `max-height:${fullHeight}px` : `max-height:${collapsedHeight}px`">
<style>#html-body [data-pb-style=ERLUB42]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div class="homepage-seo" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="ERLUB42"><h1 data-content-type="heading" data-appearance="default" data-element="main">La cosmétique bio chez Avril</h1><div data-content-type="text" data-appearance="default" data-element="main"><p>Bienvenue dans l’univers Avril, pour une cosmétique plus naturelle et engagée !</p>
<p>Avril est une marque de cosmétique bio, engagée et accessible. Nous proposons des produits de soin certifiés bio pour le visage, le corps et les cheveux dans une démarche de réduction des déchets et des émissions de CO₂. A chaque fois que nous le pouvons, nous réduisons notre impact sur l’environnement. Cela passe par le choix délibéré et engagé de réduire les emballages inutiles de nos cosmétiques (suremballages cartonnés, étiquettes superflues...), de limiter les déchets plastiques (remplacés par des emballages en cartons, aluminium, verre...), et de favoriser les matières recyclées. Cela passe aussi par une conception de produits, des formulations plus simples et surtout plus naturelles qui favorisent les galéniques solides, en poudre, en baume. Cela permet de réduire le volume et le poids des produits à transporter. D’ailleurs, la majorité de nos cosmétiques est fabriquée en France pour réduire l’impact environnemental du transport. La majeure partie de nos produits a été certifiée bio par un organisme indépendant, Ecocert. Ces produits cosmétiques, plus naturels, affichent des ingrédients d’origine naturelle et/ou issus de l’agriculture biologique. Nous sommes attentifs à la qualité de nos actifs pour proposer des produits efficaces aux nombreux bienfaits, tout en réduisant les ingrédients controversés. Pas de parabens chez Avril, pas de phénoxyéthanol, de colorant ou de parfum de synthèse. Nous préférons l’aloe vera, l’huile de coco, le beurre de cacao ou de karité, les huiles végétales…</p>
<p>Pour résumer, vous trouverez notamment ces produits :</p>
<p>- du <a tabindex="0" href="/maquillage/maquillage.html">maquillage certifié bio</a> (fonds de teint, fards à paupières, rouges à lèvres…)</p>
<p>- des soins pour le corps et des <a tabindex="0" href="/soin/visage.html">soins pour le visage majoritairement certifiés bio</a> (nettoyants visage, crèmes visage, huiles végétales pour le corps, produits solaires, produits pour la douche comme les gels douches et les savons, déodorants, dentifrices…)</p>
<p>- des soins pour les cheveux, liquides et solides (shampooings et après-shampooings disponibles dans des flacons en plastique recyclé par exemple) </p>
<p>- des accessoires pour la salle de bain, plus responsables car ils permettent de réduire la quantité de produit utilisée. Ils sont de plus réutilisables de nombreuses fois.</p>
<p>Le choix est large afin de couvrir tous les besoins de la beauté engagée et offrir la possibilité à chacun de bénéficier d’une routine beauté complète adaptée à son type de peau. Exprimez votre personnalité avec le maquillage (teintes variées, couleurs intenses, longue tenue…). A noter : nos produits s'adressent à toute la famille. Enfin, Avril est aussi et avant tout accessible, c'est-à-dire, proposée à petit prix. L’accessibilité est un impératif chez Avril, car notre objectif est de rendre la cosmétique bio accessible au plus grand nombre… pour que consommer de manière plus responsable soit véritablement un choix. De plus, nos prix sont ronds : plus clair et transparent.</p>
<p>Bonne visite sur notre e-shop où vous pourrez découvrir tous les produits de soin, le maquillage et la cosmétique plus naturelle que nous nous efforçons de proposer, toujours conscients du chemin qu'il nous reste à parcourir. </p>
<p> </p></div></div></div> </div>
<template x-if="showButton">
<button type="button"
class="underline mt-4 font-medium md:font-light"
@click="expanded = !expanded"
x-text="expanded ? 'Lire moins' : 'Lire plus'">
</button>
</template>
</div>
</section>
</main><footer class="page-footer"><div class="footer content"><div class="footer-reassurance px-6 mb-20 md:mb-12"><style>#html-body [data-pb-style=WELNJIA]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-attachment:scroll}#html-body [data-pb-style=O56UUWY]{align-self:stretch}#html-body [data-pb-style=HYT5PXU]{display:flex;width:100%}#html-body [data-pb-style=DIHY02H],#html-body [data-pb-style=EOMOYHO],#html-body [data-pb-style=T8OC2VC],#html-body [data-pb-style=VLG56UG]{display:flex;flex-direction:column;align-self:stretch}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div class="footer_reassurance" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="WELNJIA"><div class="pagebuilder-column-group reassurance-line" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="4" data-background-lazy-load="false" data-element="main" data-pb-style="O56UUWY"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="HYT5PXU"><div class="pagebuilder-column reassurance-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="DIHY02H"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewbox="0 0 48 48" fill="none" class="text-primary" role="img">
<path d="M1.5012 46.641C4.3137 44.4202 6.6087 42.1972 10.2762 41.691C13.4512 41.6902 16.5078 42.8967 18.8262 45.066C20.0294 45.9088 21.4206 46.4443 22.8783 46.6257C24.3361 46.8072 25.8161 46.629 27.1892 46.1068C28.5622 45.5846 29.7866 44.7343 30.7554 43.63C31.7242 42.5257 32.4079 41.2011 32.747 39.7717C34.2068 40.032 35.7104 39.8748 37.0849 39.3182C38.4593 38.7616 39.6487 37.8283 40.5161 36.6257C41.3835 35.423 41.8938 33.9999 41.9881 32.52C42.0825 31.0402 41.7571 29.5638 41.0495 28.2607C42.3393 27.844 43.4997 27.1014 44.4185 26.1048C45.3372 25.1083 45.9832 23.8914 46.2939 22.572C46.6045 21.2526 46.5694 19.8754 46.1918 18.5736C45.8143 17.2717 45.1071 16.0894 44.1387 15.141C44.87 14.4097 45.4501 13.5415 45.8459 12.586C46.2417 11.6305 46.4454 10.6064 46.4454 9.57221C46.4454 8.538 46.2417 7.51391 45.8459 6.55842C45.4501 5.60293 44.87 4.73476 44.1387 4.00346C43.4074 3.27216 42.5392 2.69206 41.5837 2.29629C40.6283 1.90051 39.6042 1.69681 38.57 1.69681C36.4813 1.69681 34.4781 2.52653 33.0012 4.00346C32.0528 3.03507 30.8704 2.32789 29.5686 1.95033C28.2668 1.57278 26.8895 1.53763 25.5702 1.84831C24.2508 2.15898 23.0339 2.80494 22.0373 3.72369C21.0407 4.64245 20.2982 5.80288 19.8815 7.09271C18.5784 6.38504 17.102 6.05966 15.6221 6.15402C14.1423 6.24837 12.7191 6.75863 11.5165 7.62606C10.3138 8.4935 9.38052 9.68287 8.82396 11.0573C8.2674 12.4317 8.1102 13.9354 8.37045 15.3952C6.95353 15.7403 5.64169 16.4245 4.54783 17.389C3.45397 18.3534 2.61087 19.5693 2.09108 20.9318C1.5713 22.2944 1.39041 23.7628 1.56397 25.2108C1.73754 26.6588 2.26036 28.0429 3.08745 29.244C4.87395 31.836 6.92145 34.743 6.4512 37.866C5.8347 41.5627 3.7827 43.788 1.5012 46.641ZM1.5012 46.641L35.2512 12.891" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<title>heroicons/outline/footer/produit-bio</title></svg>
</div><div data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">
<a tabindex="0" title="des produits certifiés bio" href="/le-projet-avril#projet">des produits certifiés bio</a>
</p>
</div><div class="reassurance-description" data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">
<span style="white-space: pre-wrap;">Nos produits sont audités chaque année par Ecocert et répondent au référentiel exigeant de la cosmétique bio COSMOS.</span>
</p>
</div></div><div class="pagebuilder-column reassurance-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="VLG56UG"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewbox="0 0 48 48" fill="none" class="text-primary" role="img">
<path d="M12.4182 24.1416H23.6682M5.33066 16.5366C5.00225 15.0573 5.05268 13.519 5.47726 12.0643C5.90185 10.6097 6.68684 9.28583 7.75946 8.21545C8.83208 7.14507 10.1576 6.36285 11.6131 5.94131C13.0686 5.51978 14.607 5.47257 16.0857 5.80408C16.8995 4.53125 18.0207 3.48378 19.3458 2.75822C20.6709 2.03265 22.1574 1.65234 23.6682 1.65234C25.1789 1.65234 26.6654 2.03265 27.9905 2.75822C29.3157 3.48378 30.4368 4.53125 31.2507 5.80408C32.7315 5.47113 34.2726 5.51812 35.7304 5.94068C37.1882 6.36324 38.5155 7.14764 39.5888 8.22092C40.6621 9.2942 41.4465 10.6215 41.8691 12.0793C42.2916 13.5372 42.3386 15.0782 42.0057 16.5591C43.2785 17.3729 44.3259 18.4941 45.0515 19.8192C45.7771 21.1443 46.1574 22.6308 46.1574 24.1416C46.1574 25.6523 45.7771 27.1388 45.0515 28.4639C44.3259 29.7891 43.2785 30.9102 42.0057 31.7241C42.3372 33.2027 42.29 34.7411 41.8684 36.1966C41.4469 37.6521 40.6647 38.9777 39.5943 40.0503C38.5239 41.1229 37.2 41.9079 35.7454 42.3325C34.2908 42.7571 32.7525 42.8075 31.2732 42.4791C30.4604 43.7568 29.3383 44.8087 28.0109 45.5375C26.6835 46.2664 25.1937 46.6484 23.6794 46.6484C22.1651 46.6484 20.6753 46.2664 19.3479 45.5375C18.0205 44.8087 16.8984 43.7568 16.0857 42.4791C14.607 42.8106 13.0686 42.7634 11.6131 42.3418C10.1576 41.9203 8.83208 41.1381 7.75946 40.0677C6.68684 38.9973 5.90185 37.6734 5.47726 36.2188C5.05268 34.7642 5.00225 33.2259 5.33066 31.7466C4.04806 30.9349 2.99159 29.812 2.25952 28.4823C1.52745 27.1527 1.14355 25.6594 1.14355 24.1416C1.14355 22.6237 1.52745 21.1305 2.25952 19.8008C2.99159 18.4712 4.04806 17.3483 5.33066 16.5366Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M30.4185 18.2906C29.2227 16.8926 27.6271 15.8945 25.8468 15.431C24.0664 14.9675 22.1868 15.0607 20.461 15.698C18.7352 16.3354 17.2462 17.4864 16.1946 18.9959C15.1429 20.5054 14.5791 22.3009 14.5791 24.1406C14.5791 25.9803 15.1429 27.7759 16.1946 29.2854C17.2462 30.7949 18.7352 31.9458 20.461 32.5832C22.1868 33.2206 24.0664 33.3138 25.8468 32.8503C27.6271 32.3867 29.2227 31.3887 30.4185 29.9906" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<title>heroicons/outline/footer/prix-moyen</title></svg>
</div><div data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">
<a title="7€, c'est notre prix moyen" href="/qui-est-avril-marque-cosmetique-bio">7€, c'est notre prix moyen</a>
</p>
</div><div class="reassurance-description" data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">
<span style="white-space: pre-wrap;">Notre secret ? Pas d'échantillon, pas d'égérie, (presque) pas de pub, pas de suremballage... Juste le produit !</span>
</p>
</div></div><div class="pagebuilder-column reassurance-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="EOMOYHO"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewbox="0 0 48 48" fill="none" class="text-primary" role="img">
<path d="M45.7988 30.8912H35.5838C34.3903 30.8912 33.2457 31.3654 32.4018 32.2093C31.5579 33.0532 31.0838 34.1978 31.0838 35.3912V45.6063M13.0838 4.65625V8.39125C13.0838 10.1815 13.7949 11.8984 15.0608 13.1642C16.3267 14.4301 18.0436 15.1412 19.8338 15.1412C21.0273 15.1412 22.1719 15.6154 23.0158 16.4593C23.8597 17.3032 24.3338 18.4478 24.3338 19.6412C24.3338 22.1162 26.3588 24.1412 28.8338 24.1412C30.0273 24.1412 31.1719 23.6671 32.0158 22.8232C32.8597 21.9793 33.3338 20.8347 33.3338 19.6412C33.3338 17.1662 35.3588 15.1412 37.8338 15.1412H44.9663M22.0838 46.5288V37.6412C22.0838 36.4478 21.6097 35.3032 20.7658 34.4593C19.9219 33.6154 18.7773 33.1412 17.5838 33.1412C16.3903 33.1412 15.2457 32.6671 14.4018 31.8232C13.5579 30.9793 13.0838 29.8347 13.0838 28.6412V26.3912C13.0838 25.1978 12.6097 24.0532 11.7658 23.2093C10.9219 22.3654 9.77726 21.8912 8.58379 21.8912H1.94629" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M24.333 46.6406C36.7594 46.6406 46.833 36.567 46.833 24.1406C46.833 11.7142 36.7594 1.64062 24.333 1.64062C11.9066 1.64062 1.83301 11.7142 1.83301 24.1406C1.83301 36.567 11.9066 46.6406 24.333 46.6406Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<title>heroicons/outline/footer/planete</title></svg>
</div><div data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">
<a title="1% de nos ventes pour la planète" href="/le-projet-avril-environnement">1% de nos ventes pour la planète</a>
</p>
</div><div class="reassurance-description" data-content-type="text" data-appearance="default" data-element="main"><p style="text-align: center;"><span style="white-space: pre-wrap;">En 2025, grâce à vous, nous avons reversé 384 000€ aux associations le Fonds pour l'arbre, Terre de liens et le Collectif les pieds dans le plat !</span></p></div></div><div class="pagebuilder-column reassurance-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="T8OC2VC"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewbox="0 0 54 55" fill="none" class="text-primary" role="img">
<path d="M29.8907 2.10547C29.5532 2.10547 26.6001 2.6423 26.6001 2.6423C26.463 7.03086 23.3939 10.9195 17.0763 11.5945L15.7263 9.16133L13.079 9.42289L14.2708 15.7605L2.26953 15.2437L3.55625 19.6207C16.4857 23.7867 15.895 35.7046 13.079 46.357C18.0361 51.9468 28.0345 51.3984 32.6962 50.9027C33.0232 44.3425 38.2228 44.1 47.0294 47.5066C48.2212 45.6504 49.0122 43.7097 51.7333 42.1593L46.8185 27.4464L43.9181 28.1004C45.0782 25.875 47.3142 22.8375 49.2337 21.4136L50.879 12.2484C41.5345 11.5839 35.4384 7.35887 29.8907 2.10547Z" stroke="black" stroke-width="2" stroke-linejoin="round"></path>
<title>heroicons/outline/footer/envoi-responsable</title></svg>
</div><div data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">
<a tabindex="-1" title="85% de nos cosmétiques sont fabriqués en France" href="/le-projet-avril-nos-produits#madeinfrance">85% de nos cosmétiques sont fabriqués en France</a>
</p>
</div><div class="reassurance-description" data-content-type="text" data-appearance="default" data-element="main">
<p style="text-align: center;">Et le reste ? Ils viennent d’Italie, tout près de chez nous.</p>
</div></div></div></div></div></div><script>
(function () {
const pushEvent = (el) => {
const rawData = {"reassurance":"{{inner_text}}"};
const finalData = {
event: 'footer'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.footer-reassurance a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.footer-reassurance a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</div><div class="footer-main gap-12 px-0 lg:px-6 flex flex-col lg:flex-row">
<div class="w-full text-background py-11 h-fit dynamic-bg-color">
<form
class="form subscribe"
action="https://www.avril-beaute.fr/newsletter/subscriber/new/"
method="post"
x-data="initNewsletterForm"
@submit.prevent="submitForm"
id="newsletter-validate-detail"
aria-label="S'abonner à la lettre d’information"
>
<p class="font-abhayalibre font-extrabold text-38 md:text-3xl !leading-[90%] tracking-normal !text-background mx-auto max-w-[268px] md:max-w-[362px] text-center mb-4">
Envie de nous suivre ? </p>
<div class="footer-socials-container">
<style>#html-body [data-pb-style=QQPGORI], #html-body [data-pb-style=U5A73MB] {
background-position: left top;
background-size: cover;
background-repeat: no-repeat;
background-attachment: scroll
}
#html-body [data-pb-style=U5A73MB] {
justify-content: flex-start;
display: flex;
flex-direction: column
}
#html-body [data-pb-style=QQPGORI] {
align-self: stretch
}
#html-body [data-pb-style=YI3CS5T] {
display: flex;
width: 100%
}
#html-body [data-pb-style=AO0EO7O], #html-body [data-pb-style=BM557W3], #html-body [data-pb-style=UMRVPJJ], #html-body [data-pb-style=UQAH4WF], #html-body [data-pb-style=YE2RRD3] {
justify-content: flex-start;
display: flex;
flex-direction: column;
background-position: left top;
background-size: cover;
background-repeat: no-repeat;
background-attachment: scroll;
width: 16.6667%;
align-self: stretch
}
#html-body [data-pb-style=AO0EO7O], #html-body [data-pb-style=UMRVPJJ] {
width: 25%
}</style>
<div data-content-type="row" data-appearance="contained" data-element="main">
<div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="U5A73MB">
<div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="10" data-background-lazy-load="false" data-element="main" data-pb-style="QQPGORI">
<div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="YI3CS5T">
<div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="YE2RRD3">
<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
<a href="https://www.instagram.com/avrilcosmetiques" title="instagram" target="_blank" rel="nofollow">
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewbox="0 0 28 27" fill="none" role="img">
<path d="M8.40033 0.181641H19.6003C23.867 0.181641 27.3337 3.64831 27.3337 7.91497V19.115C27.3337 21.166 26.5189 23.133 25.0686 24.5833C23.6183 26.0335 21.6513 26.8483 19.6003 26.8483H8.40033C4.13366 26.8483 0.666992 23.3816 0.666992 19.115V7.91497C0.666992 5.86397 1.48175 3.89696 2.93203 2.44668C4.38231 0.9964 6.34932 0.181641 8.40033 0.181641ZM8.13366 2.84831C6.86062 2.84831 5.63972 3.35402 4.73955 4.25419C3.83937 5.15437 3.33366 6.37527 3.33366 7.64831V19.3816C3.33366 22.035 5.48033 24.1816 8.13366 24.1816H19.867C21.14 24.1816 22.3609 23.6759 23.2611 22.7758C24.1613 21.8756 24.667 20.6547 24.667 19.3816V7.64831C24.667 4.99497 22.5203 2.84831 19.867 2.84831H8.13366ZM21.0003 4.84831C21.4424 4.84831 21.8663 5.0239 22.1788 5.33646C22.4914 5.64902 22.667 6.07295 22.667 6.51497C22.667 6.957 22.4914 7.38092 22.1788 7.69348C21.8663 8.00605 21.4424 8.18164 21.0003 8.18164C20.5583 8.18164 20.1344 8.00605 19.8218 7.69348C19.5093 7.38092 19.3337 6.957 19.3337 6.51497C19.3337 6.07295 19.5093 5.64902 19.8218 5.33646C20.1344 5.0239 20.5583 4.84831 21.0003 4.84831ZM14.0003 6.84831C15.7684 6.84831 17.4641 7.55069 18.7144 8.80093C19.9646 10.0512 20.667 11.7469 20.667 13.515C20.667 15.2831 19.9646 16.9788 18.7144 18.229C17.4641 19.4793 15.7684 20.1816 14.0003 20.1816C12.2322 20.1816 10.5365 19.4793 9.28628 18.229C8.03604 16.9788 7.33366 15.2831 7.33366 13.515C7.33366 11.7469 8.03604 10.0512 9.28628 8.80093C10.5365 7.55069 12.2322 6.84831 14.0003 6.84831ZM14.0003 9.51497C12.9395 9.51497 11.922 9.9364 11.1719 10.6865C10.4218 11.4367 10.0003 12.4541 10.0003 13.515C10.0003 14.5758 10.4218 15.5933 11.1719 16.3434C11.922 17.0935 12.9395 17.515 14.0003 17.515C15.0612 17.515 16.0786 17.0935 16.8288 16.3434C17.5789 15.5933 18.0003 14.5758 18.0003 13.515C18.0003 12.4541 17.5789 11.4367 16.8288 10.6865C16.0786 9.9364 15.0612 9.51497 14.0003 9.51497Z" fill="currentColor"></path>
<title>heroicons/outline/socials/instagram</title></svg>
</a>
</div>
</div>
<div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="UQAH4WF">
<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
<a href="https://www.facebook.com/avril.cosmetique" title="facebook" target="_blank" rel="nofollow">
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewbox="0 0 28 27" fill="none" role="img">
<path d="M27.3346 13.515C27.3346 6.15497 21.3613 0.181641 14.0013 0.181641C6.6413 0.181641 0.667969 6.15497 0.667969 13.515C0.667969 19.9683 5.25464 25.3416 11.3346 26.5816V17.515H8.66797V13.515H11.3346V10.1816C11.3346 7.60831 13.428 5.51497 16.0013 5.51497H19.3346V9.51497H16.668C15.9346 9.51497 15.3346 10.115 15.3346 10.8483V13.515H19.3346V17.515H15.3346V26.7816C22.068 26.115 27.3346 20.435 27.3346 13.515Z" fill="currentColor"></path>
<title>heroicons/outline/socials/facebook</title></svg>
</a>
</div>
</div>
<div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="BM557W3">
<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
<a href="https://www.pinterest.fr/avrilbeaute/" title="pinterest" target="_blank" rel="nofollow">
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewbox="0 0 28 27" fill="none" role="img">
<path d="M10.0546 26.235C11.3346 26.6216 12.628 26.8483 14.0013 26.8483C17.5375 26.8483 20.9289 25.4435 23.4294 22.9431C25.9299 20.4426 27.3346 17.0512 27.3346 13.515C27.3346 11.764 26.9898 10.0302 26.3197 8.41253C25.6496 6.79485 24.6675 5.325 23.4294 4.08688C22.1913 2.84877 20.7214 1.86664 19.1037 1.19658C17.4861 0.526518 15.7523 0.181641 14.0013 0.181641C12.2503 0.181641 10.5165 0.526518 8.89886 1.19658C7.28118 1.86664 5.81133 2.84877 4.57321 4.08688C2.07273 6.58737 0.667969 9.97875 0.667969 13.515C0.667969 19.1816 4.22797 24.0483 9.25463 25.9683C9.13463 24.9283 9.01463 23.2083 9.25463 22.0216L10.788 15.435C10.788 15.435 10.4013 14.6616 10.4013 13.435C10.4013 11.595 11.548 10.2216 12.8546 10.2216C14.0013 10.2216 14.5346 11.0616 14.5346 12.1416C14.5346 13.2883 13.7746 14.9283 13.388 16.5016C13.1613 17.8083 14.0813 18.955 15.4146 18.955C17.788 18.955 19.628 16.4216 19.628 12.8483C19.628 9.64831 17.3346 7.46164 14.0413 7.46164C10.2813 7.46164 8.06797 10.2616 8.06797 13.2083C8.06797 14.355 8.4413 15.515 9.05464 16.275C9.17463 16.355 9.17464 16.4616 9.13463 16.6616L8.74797 18.115C8.74797 18.3416 8.6013 18.4216 8.37464 18.2616C6.66797 17.515 5.6813 15.0883 5.6813 13.1283C5.6813 8.91497 8.66797 5.08831 14.428 5.08831C19.0146 5.08831 22.588 8.38164 22.588 12.755C22.588 17.3416 19.748 21.0216 15.6813 21.0216C14.388 21.0216 13.1213 20.3283 12.668 19.515L11.7746 22.675C11.468 23.8216 10.628 25.355 10.0546 26.275V26.235Z" fill="currentColor"></path>
<title>heroicons/outline/socials/pinterest</title></svg>
</a>
</div>
</div>
<div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="AO0EO7O">
<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
<a href="https://www.linkedin.com/company/18163493" title="linkedin" target="_blank" rel="nofollow">
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewbox="0 0 24 25" fill="none" role="img">
<path d="M21.3333 0.515625C22.0406 0.515625 22.7189 0.796576 23.219 1.29667C23.719 1.79677 24 2.47505 24 3.18229V21.849C24 22.5562 23.719 23.2345 23.219 23.7346C22.7189 24.2347 22.0406 24.5156 21.3333 24.5156H2.66667C1.95942 24.5156 1.28115 24.2347 0.781048 23.7346C0.280951 23.2345 0 22.5562 0 21.849V3.18229C0 2.47505 0.280951 1.79677 0.781048 1.29667C1.28115 0.796576 1.95942 0.515625 2.66667 0.515625H21.3333ZM20.6667 21.1823V14.1156C20.6667 12.9628 20.2087 11.8572 19.3936 11.0421C18.5784 10.2269 17.4728 9.76896 16.32 9.76896C15.1867 9.76896 13.8667 10.4623 13.2267 11.5023V10.0223H9.50667V21.1823H13.2267V14.609C13.2267 13.5823 14.0533 12.7423 15.08 12.7423C15.5751 12.7423 16.0499 12.939 16.3999 13.289C16.75 13.6391 16.9467 14.1139 16.9467 14.609V21.1823H20.6667ZM5.17333 7.92896C5.76742 7.92896 6.33717 7.69296 6.75725 7.27288C7.17733 6.8528 7.41333 6.28304 7.41333 5.68896C7.41333 4.44896 6.41333 3.43563 5.17333 3.43563C4.57571 3.43563 4.00257 3.67303 3.57999 4.09561C3.1574 4.51819 2.92 5.09134 2.92 5.68896C2.92 6.92896 3.93333 7.92896 5.17333 7.92896ZM7.02667 21.1823V10.0223H3.33333V21.1823H7.02667Z" fill="currentColor"></path>
<title>heroicons/outline/socials/linkedin</title></svg>
</a>
</div>
</div>
<div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="UMRVPJJ">
<div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
<a href="https://www.tiktok.com/@avrilcosmetiquebio" title="tiktok" target="_blank" rel="nofollow">
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewbox="0 0 22 25" fill="none" role="img">
<path d="M17.1335 4.27563C16.2223 3.23499 15.7201 1.89882 15.7202 0.515625H11.6002V17.049C11.5691 17.9439 11.1916 18.7917 10.5473 19.4136C9.903 20.0355 9.04234 20.3828 8.14687 20.3823C6.25354 20.3823 4.68021 18.8356 4.68021 16.9156C4.68021 14.6223 6.89354 12.9023 9.17354 13.609V9.39563C4.57354 8.78229 0.546875 12.3556 0.546875 16.9156C0.546875 21.3556 4.22688 24.5156 8.13354 24.5156C12.3202 24.5156 15.7202 21.1156 15.7202 16.9156V8.52896C17.3909 9.72876 19.3967 10.3725 21.4535 10.369V6.24896C21.4535 6.24896 18.9469 6.36896 17.1335 4.27563Z" fill="currentColor"></path>
<title>heroicons/outline/socials/tiktok</title></svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="max-w-[80%] w-full mx-auto text-center font-sans font-light text-sm leading-[140%] tracking-normal">
Que ce soit par mail ou sur nos réseaux, on partage l’essentiel : actus, inspirations beauté et nos engagements pour la planète. </div>
<div class="relative max-w-[358px] mx-auto my-4 px-4">
<label for="newsletter-subscribe" class="sr-only">
Adresse email </label>
<input
name="email"
type="email"
required
id="newsletter-subscribe"
class="form-input block py-6"
placeholder="Mon e-mail"
autocomplete="email"
aria-describedby="footer-newsletter-heading"
>
<input name="form_key" type="hidden" value="6tSNyZIHOtonqYwu" /> <button class="btn-newsletter absolute right-10 md:right-8 top-1/2 p-0 cursor-pointer border-none bg-transparent -translate-y-1/2 before:block before:w-6 before:h-6 before:bg-contain before:bg-center before:bg-no-repeat">
<span class="hidden">Inscription</span>
</button>
</div>
<div>
<template x-if="displayErrorMessage">
<p class="flex items-center text-red">
<span class="inline-block w-8 h-8 mr-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
</span>
<template x-for="errorMessage in errorMessages">
<span x-html="errorMessage"></span>
</template>
</p>
</template>
</div>
</form>
<div class="max-w-[358px] w-full mx-auto text-center font-sans font-light text-11 leading-[140%] tracking-normal">
En validant mon e-mail, j’accepte de recevoir des emails et newsletters personnalisés et suivis (ouverture, clics) de la part d'Avril, conformément à notre <a href="/politique-de-confidentialite" class="underline">
Politique de confidentialité. </a>
</div>
<script>
function initNewsletterForm() {
return {
errors: 0,
hasCaptchaToken: 0,
displayErrorMessage: false,
errorMessages: [],
setErrorMessages(messages) {
this.errorMessages = [messages]
this.displayErrorMessage = this.errorMessages.length
},
submitForm() {
// Do not rename $form, the variable is expected to be declared in the recaptcha output
const $form = document.querySelector('#newsletter-validate-detail');
if (this.errors === 0) {
$form.submit();
}
}
}
}
window.addEventListener('alpine:init', () => Alpine.data('initNewsletterForm', initNewsletterForm), {once: true})
</script>
</div>
<div class="footer-links flex flex-col px-6 md:px-0 gap-6 md:gap-7 w-full"><div class="footer-links-content"><style>#html-body [data-pb-style=O6WKSW1],#html-body [data-pb-style=SU3S600]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=O6WKSW1]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=SU3S600]{align-self:stretch}#html-body [data-pb-style=BLX9QCC]{display:flex;width:100%}#html-body [data-pb-style=FG91EK0],#html-body [data-pb-style=LKLUFLS],#html-body [data-pb-style=YTQ1T9X]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="O6WKSW1"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="3" data-background-lazy-load="false" data-element="main" data-pb-style="SU3S600"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="BLX9QCC"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="LKLUFLS"><div class="block-title" data-content-type="text" data-appearance="default" data-element="main">
<p>Besoin d'aide?</p>
</div><div data-content-type="text" data-appearance="default" data-element="main"><ul>
<li><a tabindex="0" title="Nos boutiques" href="/points-de-vente/">Venir en boutique</a></li>
<li><a tabindex="0" title="Paiement et livraison Avril" href="/livraison-paiement">Paiement & livraison</a></li>
<li><a tabindex="0" title="Foire aux questions" href="/foire-aux-questions">Foire aux questions</a></li>
<li><a tabindex="0" title="Contactez Avril" href="/contact">Nous contacter</a></li>
</ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="FG91EK0"><div class="block-title" data-content-type="text" data-appearance="default" data-element="main">
<p>L'envers du décor</p>
</div><div data-content-type="text" data-appearance="default" data-element="main"><ul>
<li><a tabindex="0" title="Le projet Avril" href="/le-projet-avril">Le projet Avril</a></li>
<li><a tabindex="0" href="/qui-est-avril-marque-cosmetique-bio">Notre histoire</a></li>
<li><a tabindex="0" title="Démarche architecturale Avril" href="/demarche-architecturale-boutiques-avril">Architecture</a></li>
<li><a tabindex="0" title="Travailler chez Avril" href="/travailler-chez-avril">Travailler chez Avril</a></li>
<li><a tabindex="0" title="La presse parle d'Avril" href="/ils-parlent-de-nous">Ils parlent de nous</a></li>
</ul></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="YTQ1T9X"><div class="block-title" data-content-type="text" data-appearance="default" data-element="main">
<p>Pour les pros</p>
</div><div data-content-type="text" data-appearance="default" data-element="main">
<ul>
<li><a tabindex="0" title="Devenir franchisé Avril" href="/devenir-franchise-boutique-avril-cosmetique-bio">Devenir franchisé</a></li>
<li><a tabindex="0" href="/grossiste-fournisseur-maquillage-bio-et-cosmetiques-bio">Devenir revendeur</a></li>
<li><a tabindex="0" title="Espace revendeurs" href="https://www.avril-pro.fr/" target="_blank" rel="noopener">Espace revendeurs</a></li>
</ul>
</div></div></div></div></div></div></div></div></div></div></footer>
<script>
function initBssSeoToolbar() {
function getUrlVars() {
let vars = [], hash;
let hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(let i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
function createCookie(name, value, days) {
let expires;
if (days) {
let date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
}
else {
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
function getCookie(cookie_name) {
let cookie_value = "";
if (document.cookie.length > 0) {
let c_start = document.cookie.indexOf(cookie_name + "=");
if (c_start !== -1) {
c_start = c_start + cookie_name.length + 1;
let c_end = document.cookie.indexOf(";", c_start);
if (c_end === -1) {
c_end = document.cookie.length;
}
cookie_value = unescape(document.cookie.substring(c_start, c_end));
}
}
return cookie_value;
}
function renderToolbar(DOMToolbar) {
document.querySelector('#bss_seo_toolbar').innerHTML = DOMToolbar;
document.querySelector('#bss_seo_toolbar').classList.remove('hidden');
}
return {
statusHide: false,
urlEdit: '',
dataToolbar: {
url: '',
canonicalTag: '',
title: '',
metaTitle: '',
metaDescription: '',
metaKeyword: '',
headings: {
h1Elements: '',
h2Elements: '',
h3Elements: '',
h4Elements: '',
h5Elements: ''
},
imageObject: [],
openGraph: {
ogTitle: '',
ogImage: '',
ogDescription: '',
ogUrl: '',
ogType: ''
},
twitterCard: {
twitterSite: '',
twitterTitle: '',
twitterDescription: '',
twitterImage: ''
}
},
translations: {
seo_toolbar: "SEO Toolbar",
url: "URL:",
canonical_tag: "Canonical Tag:",
title: "Titre :",
meta_description: "Meta Description:",
meta_keywords: "Meta Keywords:",
headings: "Headings",
all_images_have_alt_attribute: "All images have ALT attribute.",
image_without_alt: " image without ALT.",
images_without_alt: " images without ALT.",
we_have_found_several_open_graph_objects: "Great! We have found several Open Graph objects.",
your_page_does_not_have_any_open_graph_objects: "Your page does not have any Open Graph objects.",
open_graph: "Open Graph:",
we_have_found_twitter_cards_on_your_page: "Nice! We have found Twitter Cards on your page.",
your_page_does_not_have_any_twitter_cards: "Your page does not have any Twitter Cards.",
twitter_card: "Twitter Card:",
edit_in_backend: "Edit In Backend",
},
iconToolbar: {
success: '<svg viewBox="0 0 512 512" class="float-left"><path fill="#28a745" d="M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z"></path></svg>',
false: ' <svg viewBox="0 0 512 512" class="tooltip-toggle float-left"><path fill="#dc3545" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg>',
warming: ' <svg viewBox="0 0 512 512" class="tooltip-toggle float-left"><path fill="#aaa" d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></svg>'
},
toolTipObject: {
url: 'A SEO-friendly URL should be easy-to-read, definitive, and keyword-rich so that Google can easily index your website.',
headings: 'You only use one <H1> heading for each page to strengthen your SEO.<br/>This <H1> heading should contain your main keyword.',
images: 'You should add ALT text to your images to help search engines easily index them.<br/>The reason is search engines don\'t physically see images like the way people do. Hence, ALT text plays a role in describing the image so that they show up in Google™ and other search engine\'s image results.<br/>Make sure your website images have their own specific ALT text.',
openGraph: 'Open Graph is a technology introduced by Facebook that integrates between Facebook and its user data and a website. When integrating Open Graph meta tags into your page, you can identify which elements of your page you desire to display when your page is shared.',
twitterCard: 'By using Twitter Cards, you can easily attach photo, videos, and media experience to Tweets to increase traffic to your site.',
canonicalTag: 'A canonical tag is used to prevent issues caused by duplicated content appearing on multiple URLs. On the other hand, the canonical tag lets search engines which version of URL will be included in search results.',
title: 'A perfect length of a title should be about 50-70 characters, including spaces. You need to make your title concise and contain the main keyword.',
description: 'Meta description determines how your pages are displayed in the search results. Hence, you should keep it 200-255 characters long for the best effectiveness. Also, don\'t forget to include your main keyword in the meta description and make it attractive to encourage customers to click.',
metaKeyword: 'Meta keywords are words or phrases that pertain to your site\'s content. In the past, people have tried to take advantage of this tag so now it doesn\'t affect your search rankings the way that it used to.'
},
initToolbar() {
let urlVars = getUrlVars();
let cookieName = 'bss_seo_toolbar_token';
if (typeof urlVars.token !== "undefined") {
let token = urlVars.token;
//Set to Cookie
createCookie(cookieName, token, 30);
}
//get Token from Cookie
let cookieValue = getCookie(cookieName);
let hideCookieName = 'bss_seo_toolbar_hide';
let statusHideValue = getCookie(hideCookieName);
this.statusHide = statusHideValue !== '' && statusHideValue !== null && Number(statusHideValue) === 1;
this.handleToolbarStatus();
// this.handleClickToolbar();
if (cookieValue !== '' && cookieValue !== null) {
//Show Loading
this.setData();
this.handleAjaxCheckAdmin(cookieValue);
}
},
handleToolbarStatus: function() {
let bssSeoToolbarDOM = document.querySelector('#bss_seo_toolbar');
bssSeoToolbarDOM.classList.remove('toolbar_hide', 'p-0');
if (this.statusHide) {
bssSeoToolbarDOM.classList.add('toolbar_hide', 'p-0');
}
},
handleClickToolbar: function() {
let valueCookieHide = '0';
if (!this.statusHide) {
//Save a Cookie and Hide it
valueCookieHide = '1';
this.statusHide = true;
} else {
this.statusHide = false;
}
let hideCookieName = 'bss_seo_toolbar_hide';
createCookie(hideCookieName, valueCookieHide, 30);
this.handleToolbarStatus();
let DOMToolbar = this.getDOMToolbar();
renderToolbar(DOMToolbar);
},
getDOMToolbar: function() {
let headerToolbar = this.getHeaderToolbar(),
bodyToolbar = this.getBodyToolbar();
return headerToolbar + bodyToolbar;
},
getHeaderToolbar: function() {
return '<div class="bss_toolbar_header float-left w-full"><img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Bss_SeoToolbar/images/logo_bss.svg" alt="Logo" class="w-12 float-left" /><p class="float-left font-black text-base text-white text-center">' + this.translations.seo_toolbar + '</p><svg viewBox="0 0 448 512" @click="handleClickToolbar()" class="fill-white float-right cursor-pointer"><path d="M441.9 167.3l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L224 328.2 42.9 147.5c-4.7-4.7-12.3-4.7-17 0L6.1 167.3c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17z"></path></svg></div>';
},
getBodyToolbar: function() {
let firstBodyToolbar = '';
if (this.statusHide) {
firstBodyToolbar = '<div class="bss_toolbar_body hidden">';
} else {
firstBodyToolbar = '<div class="bss_toolbar_body block float-left w-full">';
}
let lastBodyToolbar = '</div>';
let urlDOM = this.getItemToolbar(
this.translations.url,
this.dataToolbar.url,
"success",
this.toolTipObject.url
);
//For Canonical Tag
let statusCanonicalTag = "success";
if (this.dataToolbar.canonicalTag === '' || this.dataToolbar.canonicalTag === null) {
statusCanonicalTag = "false";
}
let canonicalTagDOM = this.getItemToolbar(
this.translations.canonical_tag,
this.dataToolbar.canonicalTag,
statusCanonicalTag,
this.toolTipObject.canonicalTag
);
//For Meta Title
let statusMetaTitle = "false";
if (this.dataToolbar.title === '' || this.dataToolbar.title === null) {
statusMetaTitle = "false";
} else {
if (this.dataToolbar.title.length >= 50 && this.dataToolbar.title.length <= 70) {
statusMetaTitle = "success";
}
if (this.dataToolbar.title.length > 70) {
statusMetaTitle = "false"
}
if (this.dataToolbar.title.length < 50) {
statusMetaTitle = "warming";
}
}
let titleDOM = this.getItemToolbar(
this.translations.title,
this.dataToolbar.title,
statusMetaTitle,
this.toolTipObject.title
);
//For Meta Description
let statusMetaDescription = "false";
if (this.dataToolbar.metaDescription === '' || this.dataToolbar.metaDescription === null) {
statusMetaDescription = "false";
} else {
if (this.dataToolbar.metaDescription.length >= 200 && this.dataToolbar.metaDescription.length <= 255) {
statusMetaDescription = "success";
}
if (this.dataToolbar.metaDescription.length > 255) {
statusMetaDescription = "false"
}
if (this.dataToolbar.metaDescription.length >= 100 && this.dataToolbar.metaDescription.length < 200) {
statusMetaDescription = "warming";
}
}
let metaDescriptionDOM = this.getItemToolbar(
this.translations.meta_description,
this.dataToolbar.metaDescription,
statusMetaDescription,
this.toolTipObject.description
);
//For Meta Keyword
let statusMetaKeywords = "success";
if (this.dataToolbar.metaKeyword === '' || this.dataToolbar.metaKeyword === null) {
statusMetaKeywords = "warming";
}
let metaKeywordDOM = this.getItemToolbar(
this.translations.meta_keywords,
this.dataToolbar.metaKeyword,
statusMetaKeywords,
this.toolTipObject.metaKeyword
);
//For Headings Status
let headingText = 'H1 [' + this.dataToolbar.headings.h1Elements + '] - H2 [' + this.dataToolbar.headings.h2Elements + '] - H3 [' + this.dataToolbar.headings.h3Elements + '] - H4 [' + this.dataToolbar.headings.h4Elements + '] - H5 [' + this.dataToolbar.headings.h5Elements + ']';
let statusHeading = "false";
if (this.dataToolbar.headings.h1Elements === 1 && this.dataToolbar.headings.h2Elements > 0) {
statusHeading = "success";
}
if (this.dataToolbar.headings.h1Elements === 1 && this.dataToolbar.headings.h2Elements === 0) {
statusHeading = "warming";
}
let headingsDOM = this.getItemToolbar(
this.translations.headings,
headingText,
statusHeading,
this.toolTipObject.headings
);
//For Image status
let lostAltNumbmer = 0;
this.dataToolbar.imageObject.forEach(function(image) {
let alt = image.getAttribute("alt");
if (typeof alt === 'undefined' || alt === null || alt === '') {
lostAltNumbmer++;
}
});
let imageAltDOM = '';
let statusImages = "false";
if (lostAltNumbmer === 0) {
statusImages = "success";
imageAltDOM = this.getItemToolbar(
this.translations.all_images_have_alt_attribute,
'',
statusImages,
statusHeading,
this.toolTipObject.images
);
} else {
let textImageAltDOM = '';
if (lostAltNumbmer === 1) {
textImageAltDOM = lostAltNumbmer + this.translations.image_without_alt;
} else {
textImageAltDOM = lostAltNumbmer + this.translations.images_without_alt;
}
imageAltDOM = this.getItemToolbar(
textImageAltDOM,
'',
statusImages,
this.toolTipObject.images
);
}
//For Open Graph
let countOpenGraph = 0;
if (typeof this.dataToolbar.openGraph.ogTitle !== "undefined" && this.dataToolbar.openGraph.ogTitle !== '' && this.dataToolbar.openGraph.ogTitle !== null) {
countOpenGraph++;
}
if (typeof this.dataToolbar.openGraph.ogDescription !== "undefined" && this.dataToolbar.openGraph.ogDescription !== '' && this.dataToolbar.openGraph.ogDescription !== null) {
countOpenGraph++;
}
if (typeof this.dataToolbar.openGraph.ogImage !== "undefined" && this.dataToolbar.openGraph.ogImage !== '' && this.dataToolbar.openGraph.ogImage !== null) {
countOpenGraph++;
}
if (typeof this.dataToolbar.openGraph.ogUrl !== "undefined" && this.dataToolbar.openGraph.ogUrl !== '' && this.dataToolbar.openGraph.ogUrl !== null) {
countOpenGraph++;
}
if (typeof this.dataToolbar.openGraph.ogType !== "undefined" && this.dataToolbar.openGraph.ogType !== '' && this.dataToolbar.openGraph.ogType !== null) {
countOpenGraph++;
}
let textOpenGraph = '';
let statusOpenGraphRender = "false";
if (countOpenGraph > 0) {
textOpenGraph = this.translations.we_have_found_several_open_graph_objects;
statusOpenGraphRender = "success";
} else {
textOpenGraph = this.translations.your_page_does_not_have_any_open_graph_objects;
}
let openGraphDOM = this.getItemToolbar(
this.translations.open_graph,
textOpenGraph,
statusOpenGraphRender,
this.toolTipObject.openGraph
);
//For Twitter Card
let countTwitterCard = 0;
if (typeof this.dataToolbar.twitterCard.twitterSite !== "undefined" && this.dataToolbar.twitterCard.twitterSite !== '' && this.dataToolbar.twitterCard.twitterSite !== null) {
countTwitterCard++;
}
if (typeof this.dataToolbar.twitterCard.twitterTitle !== "undefined" && this.dataToolbar.twitterCard.twitterTitle !== '' && this.dataToolbar.twitterCard.twitterTitle !== null) {
countTwitterCard++;
}
if (typeof this.dataToolbar.twitterCard.twitterDescription !== "undefined" && this.dataToolbar.twitterCard.twitterDescription !== '' && this.dataToolbar.twitterCard.twitterDescription !== null) {
countTwitterCard++;
}
if (typeof this.dataToolbar.twitterCard.twitterImage !== "undefined" && this.dataToolbar.twitterCard.twitterImage !== '' && this.dataToolbar.twitterCard.twitterImage !== null) {
countTwitterCard++;
}
let textTwitterCard = '';
let statusTwitterCardRender = "false";
if (countTwitterCard > 0) {
textTwitterCard = this.translations.we_have_found_twitter_cards_on_your_page;
statusTwitterCardRender = "success";
} else {
textTwitterCard = this.translations.your_page_does_not_have_any_twitter_cards;
}
let twitterCardDOM = this.getItemToolbar(
this.translations.twitter_card,
textTwitterCard,
statusTwitterCardRender,
this.toolTipObject.twitterCard
);
let editLink = this.urlEdit;
let editBody = '';
if (editLink) {
editBody = '<div class="edit_body_toolbar float-left text-center"><a href="' + editLink + '" target="_blank">' + this.translations.edit_in_backend + '</a></div>';
}
return firstBodyToolbar + urlDOM + canonicalTagDOM + titleDOM + metaDescriptionDOM + metaKeywordDOM + headingsDOM + imageAltDOM + openGraphDOM + twitterCardDOM + editBody + lastBodyToolbar;
},
getItemToolbar: function(title, value, status, toolTip) {
let icon = '';
let self = this;
switch (status) {
case 'success':
icon = self.iconToolbar.success;
break;
case 'false':
icon = self.iconToolbar.false;
break;
case 'warming':
icon = self.iconToolbar.warming;
break;
}
return '<div class="bss_toolbar_item tooltip-toggle relative whitespace-pre-line border-b float-left">' + icon + '<div class="toolbar_content float-right"> <strong>' + title + '</strong> ' + value + ' </div><span class="tooltip-content invisible text-white text-left p-2.5 absolute z-10 mr-0 opacity-0">'+toolTip+'</span> </div>';
},
setData: function() {
this.dataToolbar.url = window.location.href;
let canonicalTag = document.querySelector('link[rel=canonical]') ?
document.querySelector('link[rel=canonical]').getAttribute("href") : undefined;
if (typeof canonicalTag !== "undefined") {
this.dataToolbar.canonicalTag = canonicalTag;
}
let title = document.title;
if (typeof title !== "undefined") {
this.dataToolbar.title = title;
}
let metaTitle = document.querySelector('meta[name=title]') ?
document.querySelector('meta[name=title]').getAttribute("content") : undefined;
if (typeof metaTitle !== "undefined") {
this.dataToolbar.metaTitle = metaTitle;
}
let metaDescription = document.querySelector('meta[name=description]') ?
document.querySelector('meta[name=description]').getAttribute("content") : undefined;
if (typeof metaDescription !== "undefined") {
this.dataToolbar.metaDescription = metaDescription;
}
let metaKeyword = document.querySelector('meta[name=keywords]') ?
document.querySelector('meta[name=keywords]').getAttribute("content") : undefined;
if (typeof metaKeyword !== "undefined") {
this.dataToolbar.metaKeyword = metaKeyword;
}
this.dataToolbar.headings.h1Elements = document.querySelectorAll('h1').length;
this.dataToolbar.headings.h2Elements = document.querySelectorAll('h2').length;
this.dataToolbar.headings.h3Elements = document.querySelectorAll('h3').length;
this.dataToolbar.headings.h4Elements = document.querySelectorAll('h4').length;
this.dataToolbar.headings.h5Elements = document.querySelectorAll('h5').length;
this.dataToolbar.imageObject = document.querySelectorAll('img');
this.dataToolbar.openGraph.ogTitle = document.querySelector('meta[property="og:title"]') ?
document.querySelector('meta[property="og:title"]').getAttribute("content") : '';
this.dataToolbar.openGraph.ogImage = document.querySelector('meta[property="og:image"]') ?
document.querySelector('meta[property="og:image"]').getAttribute("content") : '';
this.dataToolbar.openGraph.ogDescription = document.querySelector('meta[property="og:description"]') ?
document.querySelector('meta[property="og:description"]').getAttribute("content") : '';
this.dataToolbar.openGraph.ogUrl = document.querySelector('meta[property="og:url"]') ?
document.querySelector('meta[property="og:url"]').getAttribute("content") : '';
this.dataToolbar.openGraph.ogType = document.querySelector('meta[property="og:type"]') ?
document.querySelector('meta[property="og:type"]').getAttribute("content") : '';
this.dataToolbar.twitterCard.twitterSite = document.querySelector('meta[name="twitter:site"]') ?
document.querySelector('meta[name="twitter:site"]').getAttribute("content") : '';
this.dataToolbar.twitterCard.twitterTitle = document.querySelector('meta[name="twitter:title"]') ?
document.querySelector('meta[name="twitter:title"]').getAttribute("content") : '';
this.dataToolbar.twitterCard.twitterDescription = document.querySelector('meta[name="twitter:description"]') ?
document.querySelector('meta[name="twitter:description"]').getAttribute("content") : '';
this.dataToolbar.twitterCard.twitterImage = document.querySelector('meta[name="twitter:image"]') ?
document.querySelector('meta[name="twitter:image"]').getAttribute("content") : '';
},
handleAjaxCheckAdmin: function (token) {
let ajaxUrl = 'https://www.avril-beaute.fr/seo_toolbar/index/checktoken/';
let self = this;
fetch(ajaxUrl, {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": `form_key=${hyva.getFormKey()}&isAjax=true&token=${token}&entity_id=&entity_type=`,
"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\u0020get\u0020toolbar.'
}]);
}
}).then(result => {
if (!result.status) {
window.dispatchMessages && window.dispatchMessages([{
type: 'error',
text: result.message
}]);
} else {
self.urlEdit = result.data.backend_url;
let DOMToolbar = self.getDOMToolbar();
renderToolbar(DOMToolbar);
}
});
},
}
}
</script>
<div id="bss_seo_toolbar" x-data="initBssSeoToolbar()" x-init="initToolbar()" class="hidden h-auto fixed z-50 bg-white rounded-lg"></div>
<style>
#bss_seo_toolbar {
width: 500px;
bottom: 15px;
right: 15px;
-webkit-box-shadow: 0 7px 8px -4px rgba(0,0,0,.2), 0 13px 19px 2px rgba(0,0,0,.14), 0 5px 24px 4px rgba(0,0,0,.12);
box-shadow: 0 7px 8px -4px rgba(0,0,0,.2), 0 13px 19px 2px rgba(0,0,0,.14), 0 5px 24px 4px rgba(0,0,0,.12);
}
#bss_seo_toolbar.toolbar_hide .bss_toolbar_header {
height: 20px;
border-radius: 8px;
display: inline-table;
padding: 5px 10px;
}
#bss_seo_toolbar .bss_toolbar_header {
padding: 15px;
background: rgb(242 133 42);
border-radius: 8px 8px 0 0;
}
#bss_seo_toolbar .bss_toolbar_header img {
margin: 3px 0 0 0;
}
#bss_seo_toolbar .bss_toolbar_header p {
width: calc(100% - 100px);
margin: 7px 0 0 0;
font-weight: 700;
}
#bss_seo_toolbar .bss_toolbar_header svg {
width: 18px;
height: 18px;
margin: 10px 0 0 0;
fill: white;
float: right;
}
#bss_seo_toolbar .bss_toolbar_header svg path {
stroke: #ffffff;
stroke-width: 30px;
}
#bss_seo_toolbar .bss_toolbar_item {
width: calc(100% - 30px);
padding: 10px 0 10px 0;
margin: 0 15px 0 15px;
-ms-word-break: break-all;
word-break: break-word;
word-wrap: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
border-bottom: 1px rgb(240 240 240) solid;
hyphens: auto;
}
#bss_seo_toolbar .bss_toolbar_item svg {
width: 16px;
height: 16px;
margin: 4px 15px 0 0;
}
#bss_seo_toolbar.toolbar_hide .bss_toolbar_header svg {
transform: rotate(180deg);
margin: 10px 5px 0 0;
}
#bss_seo_toolbar .bss_toolbar_item .toolbar_content {
width: calc(100% - 35px);
}
#bss_seo_toolbar .bss_toolbar_item .tooltip-content {
width: 400px;
background-color: rgb(85 85 85);
border-radius: 6px;
bottom: calc(100% - 40px);
right: calc(100% + 15px);
transition: opacity .3s;
}
#bss_seo_toolbar .bss_toolbar_item .tooltip-content::after {
content: "";
position: absolute;
top: calc(100% - 30px);
left: calc(100% + 5px);
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent transparent #555;
}
#bss_seo_toolbar .edit_body_toolbar {
width: calc(100% - 30px);
padding: 10px 0 15px 0;
margin: 0 15px 0 15px;
}
#bss_seo_toolbar.toolbar_hide {
width: 260px;
opacity: 0.6;
}
@media only screen and (max-width: 768px) {
#bss_seo_toolbar {
width: calc(100% - 30px);
height: calc(100% - 30px);
}
#bss_seo_toolbar .bss_toolbar_body {
height: -webkit-fill-available;
overflow: scroll;
position: absolute;
margin-top: 65px;
}
}
</style>
<script>
function primaryMenu()
{
const animation_time = 0.7;
const display_overlay = 0;
const nav = document.querySelector('.horizontal-menu');
const stickyHeaderTop = nav.offsetTop;
const windowWidth = window.innerWidth;
const $stickyMenu = document.querySelector('.horizontal-menu .stickymenu');
const $horizontalMenu = document.querySelector('.section-item-content .menu-container.horizontal-menu');
const $stickyAlias = document.querySelector('.stickyalias');
const $dropdowns = document.querySelectorAll('.section-item-content .menu-container.horizontal-menu .menu div > ul li.dropdown');
const $subdropdowns = document.querySelectorAll('.section-item-content .menu-container.horizontal-menu .menu div > ul li.product-menu > ul li.category-item');
const displayOverlay = 0;
return {
init() {
window.addEventListener('scroll', () => {
if (windowWidth >= 768) {
if ($stickyMenu) {
if (window.pageYOffset > stickyHeaderTop) {
if ($stickyMenu.classList.contains('vertical-right')) {
const outerWidth = document.querySelector('.section-items.nav-sections-items').offsetWidth;
const innerWidth = $horizontalMenu.offsetWidth;
const rightMargin = ((outerWidth - innerWidth) / 2) + 'px';
$stickyMenu.style.position = 'fixed';
$stickyMenu.style.top = '0px';
$stickyMenu.style.right = rightMargin;
} else {
$stickyMenu.style.position = 'fixed';
$stickyMenu.style.top = '0px';
}
// $stickyAlias.style.display = 'block';
} else {
$stickyMenu.style.position = 'static';
$stickyMenu.style.top = '0px';
// $stickyAlias.style.display = 'none';
}
}
}
});
$dropdowns.forEach(dropdown => {
if (!dropdown.querySelector('.plus')) {
const plusSpan = document.createElement('span');
plusSpan.className = 'plus';
dropdown.querySelector('a').insertAdjacentElement('afterend', plusSpan);
plusSpan.addEventListener('click', function() {
dropdown.classList.toggle('active');
const ulSibling = dropdown.querySelector('ul');
if (ulSibling) {
ulSibling.style.display = (ulSibling.style.display === 'block' ? 'none' : 'block');
}
});
}
});
$subdropdowns.forEach(subdropdown => {
if (!subdropdown.querySelector('.plus')) {
const plusSpan = document.createElement('span');
plusSpan.className = 'plus';
subdropdown.querySelector('a').insertAdjacentElement('afterend', plusSpan);
plusSpan.addEventListener('click', function() {
subdropdown.classList.toggle('active');
const ulSibling = subdropdown.querySelector('ul');
if (ulSibling) {
ulSibling.style.display = (ulSibling.style.display === 'block' ? 'none' : 'block');
}
});
}
});
if (displayOverlay) {
const $menuItems = document.querySelectorAll('.horizontal-menu ul li');
$menuItems.forEach(menuItem => {
menuItem.addEventListener('mouseover', () => {
document.body.classList.add('md-overlay-bg');
});
menuItem.addEventListener('mouseout', () => {
document.body.classList.remove('md-overlay-bg');
});
});
}
},
}
}
function amazonMenu()
{
const $mdAmazonMenu = document.querySelector('.md-amazon-menu');
const $mdAmazonMenuUl = $mdAmazonMenu.querySelector('ul');
const $mdAmazonMenuFirstUl = $mdAmazonMenuUl.firstElementChild;
const $mdMenuBackBtn = document.querySelectorAll('.md-menu-back-btn');
const $mdMenuCloseBtn = document.querySelector('.md-menu-close-btn');
const $mdAmazonMenuCloseBtn = document.querySelector('.amazon-menu-close-btn');
return {
init() {
// Select elements
var mdAmazonMenu = document.querySelector('.md-amazon-menu');
var mdAmazonMenuUl = mdAmazonMenu.querySelectorAll('ul');
var mdAmazonMenuFirstUl = mdAmazonMenuUl[0];
var mdMenuCloseBtn = document.querySelector('.md-menu-close-btn');
// Helper function to add/remove classes
function addClass(el, className) {
el.classList.add(className);
}
function removeClass(el, className) {
el.classList.remove(className);
}
function hasClass(el, className) {
return el.classList.contains(className);
}
function toggleClass(el, className) {
el.classList.toggle(className);
}
// Handle parent click to show child menu
document.querySelectorAll('.md-amazon-parent > span').forEach(function (link) {
link.addEventListener('click', function (e) {
var currentItem = this.parentElement; // Current clicked parent <li>
var parentMenu = currentItem.closest('ul'); // Parent <ul>
var childMenu = currentItem.querySelector('ul'); // Child <ul>
if (childMenu) {
e.preventDefault(); // Prevent default link behavior
// Stop propagation to prevent conflicts
e.stopPropagation();
// Remove visibility and active classes from the parent menu
removeClass(parentMenu, 'hmenu-visible');
removeClass(parentMenu, 'md-translateX');
addClass(parentMenu, 'md-translateX-left');
addClass(parentMenu, 'active')
// Add visibility and active classes to the child menu
addClass(childMenu, 'hmenu-visible');
addClass(childMenu, 'md-translateX');
removeClass(childMenu, 'md-translateX-right');
}
});
});
// Prevent click propagation on child menus
document.querySelectorAll('.md-amazon-parent > ul').forEach(function (menu) {
menu.addEventListener('click', function (e) {
e.stopPropagation(); // Stop click propagation on child menus
});
});
// Close button functionality
if (mdMenuCloseBtn) {
mdMenuCloseBtn.addEventListener('click', function () {
document.documentElement.classList.remove('amz-nav-open');
mdAmazonMenuUl.forEach(function (menu) {
removeClass(menu, 'hmenu-visible');
removeClass(menu, 'md-translateX');
removeClass(menu, 'md-translateX-left');
removeClass(menu, 'md-translateX-right');
});
});
}
// Handle navigation reset
document.querySelectorAll('.amazon-menu-btn > a').forEach(function (button) {
button.addEventListener('click', function (e) {
e.preventDefault();
// removeClass(document.getElementsByClassName('.amazon-menu-btn'),'hidden')
// Reset all menus to initial state
document.documentElement.classList.add('amazon-nav-open', 'amz-nav-open');
mdAmazonMenuUl.forEach(function (menu) {
removeClass(menu, 'hmenu-visible');
removeClass(menu, 'md-translateX');
removeClass(menu, 'md-translateX-left');
removeClass(menu, 'md-translateX-right');
});
addClass(mdAmazonMenuFirstUl, 'hmenu-visible');
});
});
// Back button functionality
document.querySelectorAll('.md-menu-back-btn').forEach(function (button) {
button.addEventListener('click', function (e) {
var currentItem = this.parentElement; // Current clicked parent <li>
var parentMenu = currentItem.closest('ul'); // Parent <ul>
removeClass(parentMenu, 'hmenu-visible');
removeClass(parentMenu, 'md-translateX');
addClass(parentMenu, 'md-translateX-left');
var grandParentMenu = parentMenu.parentElement.closest('ul');
if (grandParentMenu) {
addClass(grandParentMenu, 'hmenu-visible');
addClass(grandParentMenu, 'md-translateX');
removeClass(grandParentMenu, 'md-translateX-left');
removeClass(grandParentMenu, 'active');
}
});
});
}
}
}
function burgerMenu()
{
const mdMegamenuBurger = document.querySelector('#md-megamenu-burger');
const html = document.querySelector('html');
const horizontalMenuUlLi = document.querySelectorAll('.horizontal-menu ul li');
const burger_status = "";
const display_overlay = 0;
return {
menu: {"responsive":true, "expanded":true, "position":{"my":"left top","at":"left bottom"}},
init() {
mdMegamenuBurger.style.display = 'block';
html.classList.toggle('md-burger-menu', burger_status);
if (display_overlay) {
horizontalMenuUlLi.forEach(item => {
item.addEventListener('mouseover', () => {
document.body.classList.add('md-overlay-bg');
});
item.addEventListener('mouseout', () => {
document.body.classList.remove('md-overlay-bg');
});
});
}
}
}
}
</script>
<script>
(function () {
'use strict';
window.AvrilWishlist = window.AvrilWishlist || {};
window.AvrilWishlist.urls = {"fetch":"https:\/\/www.avril-beaute.fr\/wishlist\/ajax\/getitems\/","add":"https:\/\/www.avril-beaute.fr\/wishlist\/index\/add\/","remove":"https:\/\/www.avril-beaute.fr\/wishlist\/index\/remove\/","login":"https:\/\/www.avril-beaute.fr\/customer\/account\/login\/"};
window.AvrilWishlist.messages = Object.assign(
{"added":"Le produit a \u00e9t\u00e9 ajout\u00e9 \u00e0 votre liste d'achats.","removed":"Le produit a bien \u00e9t\u00e9 retir\u00e9 de votre liste d'achats.","error":"Une erreur s'est produite. Veuillez r\u00e9essayez s\u2019il vous pla\u00eet.","login":"Vous devez vous connecter pour ajouter des produits \u00e0 votre liste d'achats."},
window.AvrilWishlist.messages || {}
);
if (window.AvrilWishlistClient) {
return;
}
function encodeUenc(url) {
try {
var bytes = new TextEncoder().encode(url);
var bin = '';
for (var i = 0; i < bytes.length; i++) { bin += String.fromCharCode(bytes[i]); }
return window.btoa(bin).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '~');
} catch (e) { return ''; }
}
function getFormKey() {
var input = document.querySelector('input[name="form_key"]');
if (input && input.value) { return input.value; }
var match = document.cookie.match(/(?:^|;\s*)form_key=([^;]+)/);
return match ? decodeURIComponent(match[1]) : '';
}
var state = {
byProduct: {}, // productId -> wishlistItemId
skus: {}, // wishlistItemId -> sku
requiresLogin: false,
loginUrl: '',
loaded: false,
inflight: null
};
function emit(name, detail) {
window.dispatchEvent(new CustomEvent('avril-wishlist:' + name, { detail: detail }));
}
function snapshot() {
return {
byProduct: Object.assign({}, state.byProduct),
skus: Object.assign({}, state.skus),
requiresLogin: state.requiresLogin,
loginUrl: state.loginUrl
};
}
function fetchItems(force) {
if (state.loaded && !force) {
return Promise.resolve(snapshot());
}
if (state.inflight) {
return state.inflight;
}
state.inflight = fetch(window.AvrilWishlist.urls.fetch, {
method: 'GET',
credentials: 'include',
headers: { 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'application/json' }
})
.then(function (r) { return r.json(); })
.then(function (response) {
state.byProduct = {};
state.skus = {};
if (response.byProduct) {
Object.keys(response.byProduct).forEach(function (pid) {
state.byProduct[String(pid)] = String(response.byProduct[pid]);
});
}
if (response.result) {
Object.keys(response.result).forEach(function (itemId) {
state.skus[String(itemId)] = String(response.result[itemId]);
});
}
state.requiresLogin = !!response.requiresLogin;
state.loginUrl = response.loginUrl || window.AvrilWishlist.urls.login;
state.loaded = true;
state.inflight = null;
emit('loaded', snapshot());
if (!state.requiresLogin) {
try {
var pendingAddRaw = window.sessionStorage.getItem('avril-wishlist:pending-add');
if (pendingAddRaw) {
window.sessionStorage.removeItem('avril-wishlist:pending-add');
var pa = JSON.parse(pendingAddRaw);
add(String(pa.productId), { sku: pa.sku }).then(function () {
var msgs = window.AvrilWishlist.messages;
if (typeof window.dispatchMessages === 'function') {
window.dispatchMessages([{ type: 'success', text: msgs.added }], 5000);
}
});
}
} catch (epa) { /* noop */ }
}
return snapshot();
})
.catch(function (err) {
state.inflight = null;
throw err;
});
return state.inflight;
}
function post(url, body) {
return fetch(url, {
method: 'POST',
credentials: 'include',
headers: {
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'
},
body: body
}).then(function (response) {
if (!response.ok && !response.redirected && response.status !== 0) {
throw new Error('HTTP ' + response.status);
}
return response;
});
}
function add(productId, opts) {
opts = opts || {};
productId = String(productId);
var sku = opts.sku || ('pid:' + productId);
if (state.requiresLogin) {
try {
window.sessionStorage.setItem('avril-wishlist:pending-add', JSON.stringify({ productId: productId, sku: sku }));
} catch (epa) { /* noop */ }
emit('requires-login', { loginUrl: state.loginUrl });
return Promise.reject(new Error('requires-login'));
}
var optimisticId = '__optimistic_' + productId;
state.byProduct[productId] = optimisticId;
state.skus[optimisticId] = sku;
emit('changed', snapshot());
var body = 'form_key=' + encodeURIComponent(getFormKey())
+ '&product=' + encodeURIComponent(productId)
+ '&uenc=' + encodeURIComponent(encodeUenc(window.location.href));
return post(window.AvrilWishlist.urls.add, body)
.then(function () {
window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
return fetchItems(true);
})
.catch(function (err) {
delete state.byProduct[productId];
delete state.skus[optimisticId];
emit('changed', snapshot());
throw err;
});
}
function remove(itemId, opts) {
opts = opts || {};
itemId = String(itemId);
var productId = null;
Object.keys(state.byProduct).forEach(function (pid) {
if (state.byProduct[pid] === itemId) { productId = pid; }
});
var prevSku = state.skus[itemId];
if (productId) { delete state.byProduct[productId]; }
delete state.skus[itemId];
emit('changed', snapshot());
var body = 'form_key=' + encodeURIComponent(getFormKey())
+ '&item=' + encodeURIComponent(itemId)
+ '&uenc=' + encodeURIComponent(encodeUenc(window.location.href));
return post(window.AvrilWishlist.urls.remove, body)
.then(function () {
window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
return fetchItems(true);
})
.catch(function (err) {
if (productId) { state.byProduct[productId] = itemId; }
if (prevSku) { state.skus[itemId] = prevSku; }
emit('changed', snapshot());
throw err;
});
}
try {
var pending = window.sessionStorage.getItem('avril-wishlist:pending-message');
if (pending) {
window.sessionStorage.removeItem('avril-wishlist:pending-message');
var parsed = JSON.parse(pending);
var show = function () {
if (typeof window.dispatchMessages === 'function') {
window.dispatchMessages([{ type: parsed.type || 'warning', text: parsed.text }], 5000);
} else {
window.dispatchEvent(new CustomEvent('avril-wishlist:flash', { detail: parsed }));
}
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', show);
} else {
show();
}
}
} catch (e) { /* noop */ }
window.AvrilWishlistClient = {
fetchItems: fetchItems,
add: add,
remove: remove,
getState: snapshot,
isLoaded: function () { return state.loaded; },
hasProduct: function (productId) {
return Object.prototype.hasOwnProperty.call(state.byProduct, String(productId));
},
getItemIdForProduct: function (productId) {
return state.byProduct[String(productId)] || null;
}
};
// --- Base/B2B theme: click handling + state sync (no-op on Hyva — buttons lack data-action) ---
var toastTimer = null;
function showToast(message, type) {
var existing = document.getElementById('avril-wishlist-toast');
if (existing) { existing.remove(); }
var toast = document.createElement('div');
toast.id = 'avril-wishlist-toast';
toast.className = 'avril-wishlist-toast avril-wishlist-toast--' + (type || 'success');
toast.textContent = message;
document.body.appendChild(toast);
requestAnimationFrame(function () { toast.classList.add('is-visible'); });
if (toastTimer) { clearTimeout(toastTimer); }
toastTimer = setTimeout(function () {
toast.classList.remove('is-visible');
setTimeout(function () { if (toast.parentNode) { toast.remove(); } }, 300);
}, 3000);
}
function applyState(s) {
var containers = document.querySelectorAll('[data-role="add-to-links"][class*="product-id-"]');
for (var i = 0; i < containers.length; i++) {
var container = containers[i];
var match = container.className.match(/product-id-(\d+)/);
if (!match) { continue; }
var productId = match[1];
var inWishlist = Object.prototype.hasOwnProperty.call(s.byProduct, productId);
container.classList.toggle('in_wishlist', inWishlist);
container.classList.toggle('not_wishlist', !inWishlist);
var link = container.querySelector('[data-action="add-to-wishlist"]');
if (!link) { continue; }
link.classList.toggle('in_wishlist', inWishlist);
if (inWishlist) {
link.setAttribute('data-wishlist-item-id', s.byProduct[productId]);
} else {
link.removeAttribute('data-wishlist-item-id');
}
}
}
var pendingProducts = {};
document.addEventListener('click', function (e) {
var el = e.target.closest && e.target.closest('[data-action="add-to-wishlist"]');
if (!el) { return; }
var container = el.closest('[data-role="add-to-links"]');
var productId = el.getAttribute('data-product-id')
|| (container && (container.className.match(/product-id-(\d+)/) || [])[1]);
if (!productId) { return; }
e.preventDefault();
e.stopImmediatePropagation();
if (pendingProducts[productId]) { return; }
var msgs = window.AvrilWishlist.messages;
var isAdd = window.AvrilWishlistClient.isLoaded()
? !window.AvrilWishlistClient.hasProduct(productId)
: (!el.classList.contains('in_wishlist') && !(container && container.classList.contains('in_wishlist')));
var itemId = window.AvrilWishlistClient.getItemIdForProduct(productId)
|| el.getAttribute('data-wishlist-item-id');
if (!isAdd && !itemId) { return; }
var clientState = window.AvrilWishlistClient.getState();
if (isAdd && clientState.requiresLogin) {
try {
window.sessionStorage.setItem('avril-wishlist:pending-add', JSON.stringify({ productId: productId }));
} catch (ex) { /* noop */ }
window.location.href = clientState.loginUrl;
return;
}
pendingProducts[productId] = true;
var promise = isAdd
? window.AvrilWishlistClient.add(productId)
: window.AvrilWishlistClient.remove(itemId);
showToast(isAdd ? msgs.added : msgs.removed, 'success');
promise.catch(function (err) {
if (err && err.message === 'requires-login') {
try {
window.sessionStorage.setItem(
'avril-wishlist:pending-message',
JSON.stringify({ type: 'warning', text: msgs.login })
);
} catch (ex) { /* noop */ }
window.location.href = window.AvrilWishlistClient.getState().loginUrl;
return;
}
showToast(msgs.error, 'error');
}).finally(function () {
delete pendingProducts[productId];
});
}, true);
window.addEventListener('avril-wishlist:loaded', function (e) { applyState(e.detail); });
window.addEventListener('avril-wishlist:changed', function (e) { applyState(e.detail); });
var initDone = false;
function initState() {
if (initDone) { return; }
initDone = true;
window.AvrilWishlistClient.fetchItems().then(applyState);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initState);
} else {
initState();
}
})();
</script>
<script>try {
smileTracker.addPageVar('type.identifier', 'cms_index_index');
smileTracker.addPageVar('type.label', 'Page d’accueil CMS');
smileTracker.addPageVar('locale', 'fr_FR');
} catch (err) { ; }</script>
<script>
let SnapSlider = class {
constructor(el, {
labelSepparator = 'sur',
autoPager,
groupPager,
loop,
forcePager
} = {}) {
this.el = el;
this.track = this.el.querySelector("[data-track]");
if (!this.track) {
console.warn(
"No Slider track defined, reverting back to CSS slider.\nPlease create a wrapper for your slides with the attribute data-track",
this.el
);
return;
}
this.initialLoad = true;
this.slides = [];
this.inViewObserver;
this.mutationObserver;
this.resizeObserver;
this.pager = this.el.querySelector("[data-pager]");
this.navBtns = Array.from(
this.el.querySelectorAll("[data-next], [data-prev]")
);
this.slideLabelSepparator = this.el.dataset.slideLabelSepparator || labelSepparator;
this.useAutoPager = autoPager || this.el.hasAttribute("data-auto-pager") || false;
this.useGroupPager = groupPager || this.el.hasAttribute("data-group-pager") || false;
this.useLoop = loop || this.el.hasAttribute("data-loop") || false;
this.forcePager = forcePager || this.el.hasAttribute("data-force-pager") || false;
this.sliderLabel = this.el.hasAttribute("aria-label") && this.el.getAttribute("aria-label").toLowerCase().trim().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
this.sliderId = this.el.id || this.sliderLabel || "slider";
this.markerIdName = "data-target-id";
this.pagerClasses = this.el.dataset.pagerClass || "snap-pager";
this.markerClasses = this.el.dataset.markerClass || "snap-marker";
this.init();
}
init() {
this.setupSlides();
this.setupNav();
if (this.useAutoPager) {
this.createPager();
} else {
this.setupPager();
}
this.setupObservers();
this.setupMutationObserver();
this.setupResizeObserver();
this.el.addEventListener("click", this.eventHandler.bind(this));
this.el.addEventListener("keydown", this.eventHandler.bind(this));
if ("onscrollend" in window) {
this.track.addEventListener("scrollend", () => {
this.isNavigating = false;
});
} else {
this.track.addEventListener("scroll", () => {
clearTimeout(this.scrollEndTimer);
this.scrollEndTimer = setTimeout(() => {
this.isNavigating = false;
}, 100);
});
}
}
destroy() {
this.inViewObserver?.disconnect();
this.mutationObserver?.disconnect();
this.resizeObserver?.disconnect();
this.el.removeEventListener("click", this.eventHandler.bind(this));
this.el.removeEventListener("keydown", this.eventHandler.bind(this));
}
roundUpIfGreaterThan(number, min = 8) {
const decimalPart = number - Math.floor(number);
return decimalPart >= min ? Math.ceil(number) : Math.floor(number);
}
getInViewItems() {
const inViewSlides = Array.from(this.track.querySelectorAll("[data-in-view]")).filter((el) => this.slides.includes(el));
const firstInViewSlide = inViewSlides[0] || null;
const lastInViewSlide = inViewSlides[inViewSlides.length - 1] || null;
const isAtStart = firstInViewSlide === this.slides[0];
const isAtEnd = lastInViewSlide === this.slides[this.slides.length - 1];
return {
inViewSlides,
totalInViewSlides: inViewSlides.length,
firstInViewSlide,
lastInViewSlide,
isAtStart,
isAtEnd,
hasNoOverflow: isAtStart && isAtEnd
};
}
groupPagerMarkers() {
if (this.slides.length === 0 || !this.pager || !this.useGroupPager) return;
const totalVisibleSlides = this.roundUpIfGreaterThan(
this.track.offsetWidth / this.slides[0].offsetWidth
);
const markers = Array.from(this.pager.querySelectorAll("a, button"));
markers.forEach((marker, index) => {
marker.style.display = index % totalVisibleSlides === 0 ? null : "none";
});
}
handleInView(entries) {
entries.forEach((entry) => {
const marker = this.pager && (this.pager.querySelector(`[href="#${entry.target.id}"]`) || this.pager.querySelector(
`[${this.markerIdName}="${entry.target.id}"]`
));
entry.target.toggleAttribute("data-in-view", entry.isIntersecting);
entry.target.toggleAttribute("inert", !entry.isIntersecting);
marker?.setAttribute("aria-current", entry.isIntersecting);
marker?.setAttribute("tabindex", entry.isIntersecting ? "0" : "-1");
});
const { isAtStart, isAtEnd, hasNoOverflow } = this.getInViewItems();
this.navBtns.forEach((btn) => {
if (btn.hasAttribute("data-next")) {
btn.style.visibility = hasNoOverflow ? "hidden" : null;
isAtEnd && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
}
if (btn.hasAttribute("data-prev")) {
btn.style.visibility = hasNoOverflow ? "hidden" : null;
isAtStart && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
}
});
if (this.pager) {
const hidePager = hasNoOverflow && !this.forcePager;
this.pager.style.visibility = hidePager ? "hidden" : null;
this.pager.toggleAttribute("inert", hidePager);
}
if (!this.initialLoad) {
this.el.dispatchEvent(
new CustomEvent("slideChange", {
detail: this.getInViewItems()
})
);
} else {
this.initialLoad = false;
}
if (document.activeElement.parentElement.hasAttribute("data-pager")) {
const activeItems = this.pager.querySelectorAll('[tabindex="0"]');
if (activeItems.length) {
activeItems[0].focus({ preventScroll: true });
}
}
}
getSlides() {
if (!this.track) return [];
return Array.from(this.track.children).filter(
(child) => child.tagName.toLowerCase() !== "template" && child.tagName.toLowerCase() !== "style" && child.tagName.toLowerCase() !== "script" && child.style.display !== "none"
);
}
refreshSlides() {
this.initialLoad = true;
this.slides = this.getSlides();
this.setupSlides();
if (this.useAutoPager) {
this.createPager();
} else {
this.setupPager();
}
this.groupPagerMarkers();
this.setupObservers();
}
setupSlides() {
this.slides = this.getSlides();
this.slides.forEach((slide, index) => {
const totalSlides = this.slides.length;
const currentSlide = index + 1;
const existingLabel = slide.getAttribute("aria-label") || "";
const isImage = slide.tagName.toLowerCase() === "img" || slide.tagName.toLowerCase() === "picture";
const slideLabelTag = isImage ? "alt" : "aria-label";
const hasAutoLabel = existingLabel.startsWith(
`${currentSlide} ${this.slideLabelSepparator} `
);
if (!slide.hasAttribute("id")) {
slide.setAttribute(
"id",
`${this.sliderId}-item-${currentSlide}`
);
}
if (!slide.hasAttribute(slideLabelTag) || slide.getAttribute(slideLabelTag) === "" || hasAutoLabel) {
slide.setAttribute(
slideLabelTag,
`${currentSlide} ${this.slideLabelSepparator} ${totalSlides}`
);
}
if (slide.tagName.toLowerCase() === "div" && !slide.hasAttribute("role")) {
slide.setAttribute("role", "group");
}
if (this.pager && !isImage) {
slide.setAttribute("role", "tabpanel");
}
if (slide.getAttribute("role") === "group") {
slide.setAttribute("aria-roledescription", "item");
}
});
if (!this.el.hasAttribute("role") && this.el.tagName !== "SECTION") {
this.el.setAttribute("role", "region");
}
if (!this.el.hasAttribute("aria-roledescription")) {
this.el.setAttribute("aria-roledescription", "carousel");
}
if (!this.track.hasAttribute("tabindex")) {
this.track.setAttribute("tabindex", 0);
}
this.track.setAttribute("aria-live", "polite");
}
setupNav() {
this.navBtns.forEach((btn) => {
btn.setAttribute("disabled", "");
btn.removeAttribute("hidden");
btn.classList.remove("invisible");
btn.style.visibility = null;
});
}
createPager() {
const newPager = document.createElement("nav");
newPager.setAttribute("data-pager", "");
newPager.setAttribute("role", "tablist");
newPager.classList.add(...this.pagerClasses.split(" "));
this.slides.forEach((slide, index) => {
const marker = document.createElement("button");
const slideId = slide.id || `${this.sliderId}-item-${index + 1}`;
marker.setAttribute(this.markerIdName, slideId);
marker.classList.add(...this.markerClasses.split(" "));
this.setupPagerMarker(marker, index);
newPager.appendChild(marker);
if (slide.tagName.toLowerCase() !== "img" && slide.tagName.toLowerCase() !== "picture") {
slide.removeAttribute("aria-roledescription");
slide.setAttribute("role", "tabpanel");
}
});
if (this.pager) {
this.pager.setAttribute("role", "tablist");
this.pager.replaceChildren(...newPager.children);
} else {
this.track.after(newPager);
this.pager = this.el.querySelector("[data-pager]");
}
}
setupPager() {
if (!this.pager) return;
this.pager.setAttribute("role", "tablist");
const items = Array.from(this.pager.querySelectorAll("a, button"));
items.forEach((marker, index) => this.setupPagerMarker(marker, index));
}
setupPagerMarker(marker, index) {
const markerId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
const slideId = markerId || `${this.sliderId}-item-${index + 1}`;
if (!markerId) {
marker.setAttribute(this.markerIdName, slideId);
}
marker.setAttribute("role", "tab");
marker.setAttribute("aria-controls", slideId);
marker.setAttribute("aria-posinset", index + 1);
marker.setAttribute("aria-setsize", this.slides.length);
marker.setAttribute("tabindex", "-1");
if (!marker.hasAttribute("aria-label")) {
marker.setAttribute("aria-label", `Slide ${index + 1}`);
}
}
setupObservers() {
if (this.inViewObserver) {
this.inViewObserver.disconnect();
}
this.inViewObserver = new IntersectionObserver(
this.handleInView.bind(this), {
root: this.track,
threshold: 0.8
}
);
this.slides.forEach((slide) => this.inViewObserver.observe(slide));
}
setupMutationObserver() {
this.mutationObserver = new MutationObserver((mutations) => {
if (mutations.some((m) => m.type === "childList" || m.target.parentElement === this.track)) {
this.refreshSlides();
}
});
this.mutationObserver.observe(this.track, {
childList: true,
subtree: true,
attributeFilter: ["style"]
});
}
setupResizeObserver() {
this.resizeObserver = new ResizeObserver(
this.groupPagerMarkers.bind(this)
);
this.resizeObserver.observe(this.el);
}
goToSlideDir(dir = "next") {
if (this.isNavigating) return;
const { firstInViewSlide, lastInViewSlide } = this.getInViewItems();
const isPrev = dir === "prev";
const referenceSlide = isPrev ? firstInViewSlide : lastInViewSlide;
const currentIndex = this.slides.indexOf(referenceSlide);
let targetIndex = isPrev ? currentIndex - 1 : currentIndex + 1;
if (targetIndex < 0 || targetIndex >= this.slides.length) {
if (!this.useLoop) return;
targetIndex = isPrev ? this.slides.length - 1 : 0;
}
const targetSlide = this.slides[targetIndex];
if (!targetSlide) return;
this.isNavigating = true;
targetSlide.scrollIntoView({
block: "nearest",
inline: isPrev ? "end" : "start"
});
}
pagerToSlide(event) {
if (!event.target.closest("[data-pager]")) return;
const marker = event.target.closest("a, button");
if (!marker) return;
event.preventDefault();
const slideId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
const targetSlide = this.track.querySelector(`#${slideId}`);
targetSlide?.scrollIntoView({ block: "nearest", inline: "start" });
}
eventHandler(event) {
const target = event.target.closest(
"[data-next], [data-prev], [data-pager]"
);
if (!target) return;
if (event.type === "click") {
if (target.hasAttribute("data-next")) {
this.goToSlideDir("next");
} else if (target.hasAttribute("data-prev")) {
this.goToSlideDir("prev");
} else if (target.closest("[data-pager]")) {
this.pagerToSlide(event);
}
}
if (event.type === "keydown" && target.closest("[data-pager]")) {
if (event.key === "ArrowRight" || event.key === "ArrowDown") {
event.preventDefault();
this.goToSlideDir("next");
} else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
event.preventDefault();
this.goToSlideDir("prev");
}
}
}
};
(() => {
function alpineSnapSlider(Alpine) {
Alpine.directive("snap-slider", (el, {
modifiers
}, {
cleanup
}) => {
const slider = new SnapSlider(el, {
autoPager: modifiers.includes("auto-pager"),
groupPager: modifiers.includes("group-pager"),
loop: modifiers.includes("loop"),
forcePager: modifiers.includes("force-pager")
});
cleanup(() => {
slider.destroy();
});
});
}
document.addEventListener("alpine:init", () => {
window.Alpine.plugin(alpineSnapSlider);
});
})();
//# sourceURL=alpine-snap-slider.js
</script>
<script>
(() => {
// src/dialog.js
function dialog_default(Alpine) {
Alpine.directive("htmldialog", fylgjaAlpineDialog);
function fylgjaAlpineDialog(el, { expression, modifiers }, { evaluateLater, cleanup }) {
const evaluate = expression.length ? evaluateLater(expression) : () => {};
const lockPageScroll = modifiers.includes("noscroll");
const isModeless = modifiers.includes("modeless");
const closeBy = el.getAttribute("closeby") || modifierValue(modifiers, "closeby", "closerequest");
el.style.display = null;
el.style.length === 0 && el.removeAttribute("style");
if (el._x_isShown) {
open();
}
const closeBySupported = (() => {
return "closedBy" in HTMLDialogElement.prototype;
})();
function scrollLock(use = true) {
document.body.style.overflow = use ? "hidden" : "";
}
function dialogSubmit(event) {
if (event.target.getAttribute("method") === "dialog" || event.submitter?.getAttribute("formmethod") === "dialog") {
event.preventDefault();
evaluate();
}
}
function escapeDialog(event) {
if (event.key !== "Escape") return;
event.preventDefault();
if (closeBy === "none") return;
evaluate();
}
function handleCloseByEvent(event) {
if (event.target !== el) return;
const rect = el.getBoundingClientRect();
const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
if (!isInDialog) {
if (closeBy === "any") {
if (closeBySupported) {
event.preventDefault();
}
evaluate();
}
}
}
function handleCloseEvent() {
evaluate();
}
function open() {
if (el.hasAttribute("open")) return;
isModeless ? el.show() : el.showModal();
scrollLock(lockPageScroll);
}
function close() {
if (!el.hasAttribute("open")) return;
el.close();
scrollLock(false);
}
el._x_doShow = () => open();
el._x_doHide = () => close();
el.addEventListener("keydown", escapeDialog);
el.addEventListener("submit", dialogSubmit);
el.addEventListener("click", handleCloseByEvent);
el.addEventListener("cancel", handleCloseEvent);
cleanup(() => {
el.removeEventListener("keydown", escapeDialog);
el.removeEventListener("submit", dialogSubmit);
el.removeEventListener("click", handleCloseByEvent);
el.removeEventListener("cancel", handleCloseEvent);
scrollLock(false);
});
}
}
function modifierValue(modifiers, key, fallback) {
if (modifiers.indexOf(key) === -1) return fallback;
const rawValue = modifiers[modifiers.indexOf(key) + 1];
if (!rawValue) return fallback;
if (key === "closeby") {
const allowedValues = ["auto", "none", "closerequest", "any"];
const options = allowedValues.join(", ");
if (!allowedValues.includes(rawValue)) {
console.warn(
`"${rawValue}" is not one of the allowed values for closeby: ${options}`
);
return fallback;
}
}
return rawValue;
}
// src/cdn.js
document.addEventListener("alpine:init", () => {
window.Alpine.plugin(dialog_default);
});
})();
//# sourceURL=alpine-htmldialog.js
</script>
<script>
(() => {
function src_default(Alpine) {
Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
let evaluate = evaluateLater(expression);
let options = {
rootMargin: getRootMargin(modifiers),
threshold: getThreshold(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 getThreshold(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);
});
})();
//# sourceURL=alpine-intersect.js
</script>
<script>
for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]:not([x-data] [x-data])":"intersect",".product-info [x-data]:not([x-data] [x-data])":"intersect","#filters-content [x-data]:not([x-data] [x-data])":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#product_addtocart_form [x-data]:not([x-data] [x-data])":"intersect","#notice-cookie-block":"idle"})) {
document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`));
}
//# sourceURL=alpine-defer-rules.js
</script>
<script>
(() => {
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});
})();
//# sourceURL=alpine-defer.js
</script>
<script type="module"
src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Hyva_Theme/js/alpine3.min.js"
defer
crossorigin
></script>
<script>
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 = () => {
if (typeof hyva.getFormKey !== 'function') return;
const formKey = hyva.getFormKey();
if (!formKey) return;
document.querySelectorAll('input[name="form_key"]').forEach((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);
// empty `mage-messages` cookie
const skipSetDomain = true;
hyva.setCookie('mage-messages','', -1, skipSetDomain);
} catch (error) {
console.warn('Error parsing Cookie Messages:', error);
}
}
window.addEventListener('DOMContentLoaded', hyva.initFormKey);
window.addEventListener('pageshow', (event) => {
if (event.persisted) {
hyva.initFormKey();
}
});
hyva.alpineInitialized(hyva.initMessages)
}( window.hyva = window.hyva || {} ));
//# sourceURL=hyva-cookies.js
</script>
<script>
(() => {
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 = 34187400;
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 () {
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([]);
} 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([]);
}
} else {
if (document.getElementById('default-section-data')) {
const privateContent = JSON.parse(document.getElementById('default-section-data').textContent.trim());
dispatchPrivateContent(privateContent);
} else {
dispatchPrivateContent({});
}
}
} catch (error) {
console.warn('Error retrieving Private Content:', error);
}
}
hyva.alpineInitialized(loadSectionData)
window.addEventListener('reload-customer-section-data', loadSectionData);
window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data);
function dispatchPrivateContent(data) {
const privateContentEvent = new CustomEvent("private-content-loaded", {
detail: {
data: window.processSectionDataBeforeDispatch(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.ok && response.json())
.then(
data => {
if (data) {
try {
const browserStorage = hyva.getBrowserStorage();
// merge new data preserving non-invalidated sections
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);
// don't persist messages, they've been dispatched already
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);
// We don't need the section_data_ids in Hyvä, but we store them for compatibility
// with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout
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);
}
}
}
)
.catch(error => {
console.warn("Couldn't fetch privateContent", error);
});
}
})();
//# sourceURL=hyva-private-content.js
</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', 'mousemove', 'wheel', 'scroll', 'keydown']);
//# sourceURL=hyva-init-external-scripts.js
</script>
<script>
function initCompareOnProductList() {
return {
addToCompare(productId) {
const formKey = hyva.getFormKey();
const postUrl = BASE_URL + 'catalog/product_compare/add/';
fetch(postUrl, {
"headers": {
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
"body": "form_key=" + formKey + "&product=" + productId + "&uenc=" + hyva.getUenc(),
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then(function (response) {
if (response.redirected) {
window.location.href = response.url;
}
}).catch(function (error) {
typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
[{
type: "error",
text: error
}], 5000
);
});
}
};
}
</script>
<script>
function initProductItemImage() {
return {
updateImage() {
const image = this.$event.detail.medium;
if (!image) return;
this.$el.src = image;
}
}
}
window.addEventListener('alpine:init', () => {
Alpine.data('initProductItemImage', initProductItemImage);
}, { once: true });
</script>
<script>
function initPriceBox()
{
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel && regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel && regularPriceLabel.classList.remove('hidden');
}
regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
}
}
}
</script>
<div class="page-footer-bottom bg-white"><div class="footer content pt-6 pb-4 px-6"><div class="footer-bottom-links flex flex-col md:flex-row justify-between mb-11 gap-6"><div class="footer-bottom-links-wrapper"><style>#html-body [data-pb-style=LLKYYIV]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="LLKYYIV"><div data-content-type="text" data-appearance="default" data-element="main"><ul>
<li><a tabindex="0" href="/conditions-generales-de-vente-avril-cosmetique-bio">Conditions générales de vente</a></li>
<li><a tabindex="0" href="/mentions-legales">Mentions légales</a></li>
<li><a tabindex="0" href="/sitemaps/fr/sitemap.xml">Plan du site</a></li>
<li><a tabindex="0" href="/politique-de-confidentialite">Politique de confidentialité</a></li>
</ul></div></div></div></div> <div class="flex flex-wrap gap-8">
<div x-data="{ open: false }" class="w-full pr-4">
<div class="relative text-right">
<div class="flex justify-start">
<button
@click="open = !open"
@click.outside="open = false"
@keydown.window.escape="open = false"
type="button"
class="w-full border-none p-0 text-sm shadow-none leading-[140%] font-light font-sans min-h-fit flex items-center pr-5 gap-2"
:aria-expanded="open.toString()"
aria-haspopup="true"
>
Français
<img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/FR.svg"
alt=""
width="17"
height="17"
aria-hidden="true"
loading="lazy" />
<span
:class="open ? 'inline-block rotate-90 transition-transform duration-300' : 'inline-block -rotate-90 transition-transform duration-300'"
>
<svg xmlns="http://www.w3.org/2000/svg" width="5" height="10" viewbox="0 0 7 12" fill="none" aria-hidden="true" class="block">
<path d="M6 1L1 6L6 11" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
</button>
</div>
<nav
x-cloak
x-show="open"
x-transition.origin.top.left
class="absolute mdonly:left-0 md:right-0 top-full z-20 w-auto py-2 mt-1 overflow-auto origin-top-left rounded-sm shadow-lg lg:mt-3 bg-container-lighter"
>
<div class="my-1" role="menu" aria-orientation="vertical" aria-labelledby="options-menu">
<a
x-data
@click.prevent="$el.setAttribute('href', atob($el.dataset.enc)); window.location.href = atob($el.dataset.enc)"
href="#"
role="link"
data-enc="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL3N0b3Jlcy9zdG9yZS9yZWRpcmVjdC9fX19zdG9yZS9iMmNfZW4vX19fZnJvbV9zdG9yZS9iMmNfZnIvdWVuYy9hSFIwY0hNNkx5OTNkM2N1WVhaeWFXd3RiM0puWVc1cFl5NWpiMjB2UDJkaFpGOXpiM1Z5WTJVOU1TWmZYMTl6ZEc5eVpUMWlNbU5mWlc0fi8="
class="px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100 leading-[140%] font-light font-sans text-sm flex items-center gap-4 md:justify-end"
>
Anglais <img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/EN.svg"
alt=""
width="17"
height="17"
aria-hidden="true"
loading="lazy" />
</a>
<a
x-data
@click.prevent="$el.setAttribute('href', atob($el.dataset.enc)); window.location.href = atob($el.dataset.enc)"
href="#"
role="link"
data-enc="aHR0cHM6Ly93d3cuYXZyaWwtYmVhdXRlLmZyL3N0b3Jlcy9zdG9yZS9yZWRpcmVjdC9fX19zdG9yZS9iMmNfZXMvX19fZnJvbV9zdG9yZS9iMmNfZnIvdWVuYy9hSFIwY0hNNkx5OTNkM2N1WVhaeWFXd3RZbWx2TG1Wekx6OW5ZV1JmYzI5MWNtTmxQVEVtWDE5ZmMzUnZjbVU5WWpKalgyVnov"
class="px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100 leading-[140%] font-light font-sans text-sm flex items-center gap-4 md:justify-end"
>
Espagnol <img src="https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/images/svg/ES.svg"
alt=""
width="17"
height="17"
aria-hidden="true"
loading="lazy" />
</a>
</div>
</nav>
</div>
</div>
</div>
</div>
<div class="flower relative flex flex-col justify-center items-center mt-20">
<svg xmlns="http://www.w3.org/2000/svg" width="59" height="59" viewbox="0 0 60 59" fill="none" class="absolute top-0 -translate-y-[60%] transition-all ease-in-out duration-500 z-1" aria-hidden="true">
<path d="M29.4639 31.8385C27.0808 32.9817 18.778 29.1936 13.6575 23.4436C8.54188 17.6889 8.18775 9.05668 14.227 4.46448C31.2393 -8.45957 31.9237 11.1639 32.206 16.8411C32.4788 22.5523 32.6845 30.2835 29.4639 31.8385Z" fill="#37424C"/>
<path d="M36.758 32.5609C35.2027 31.907 32.4176 14.1243 34.6811 7.44427C36.1311 3.22991 43.9314 2.97802 48.669 6.05402C52.1241 8.33559 55.0241 12.2835 54.3589 19.3075C54.3589 19.3075 60.4795 21.0368 59.3645 31.8391C58.2208 42.656 54.2441 45.1992 50.7172 45.6497C47.1999 46.1195 45.6111 46.1195 45.6111 46.1195C45.6111 46.1195 42.5293 58.6464 32.1974 59C21.8417 59.3536 14.8453 49.2779 15.9651 48.1105C17.1041 46.9672 36.5857 43.3875 38.007 41.3965C40.0408 38.6112 33.4417 39.2312 44.3669 30.4731C48.7456 26.9854 51.5212 22.8437 51.4015 21.9378C51.2867 21.032 44.3669 27.2421 42.4288 29.0683C40.4954 30.9188 37.8634 33.0259 36.7628 32.5512V32.5609H36.758Z" fill="#37424C"/>
<path d="M25.9372 37.9434C25.8798 34.4024 14.7775 26.6955 11.8344 25.6298C7.18776 23.9392 -0.435486 26.4968 0.593389 36.8923C1.25857 43.7951 7.12555 47.5105 13.3419 46.7306C19.6587 45.941 25.9755 41.3779 25.9372 37.9483V37.9434Z" fill="#37424C"/>
<path d="M29.1152 37.3707C29.1152 35.6607 30.4934 34.2656 32.1971 34.2656C33.9007 34.2656 35.2741 35.6607 35.2741 37.3707C35.2741 39.0807 33.8911 40.4758 32.1971 40.4758C30.503 40.4758 29.1152 39.1 29.1152 37.3707Z" fill="#37424C"/>
</svg>
<div class="flower-text mt-0 px-6 py-4 bg-container rounded-[10px] text-center z-[2]">
<span class="block font-sans font-light text-xs leading-[120%] tracking-normal text-blue_avril-100">
Pourquoi la fleur de magnolia ? </span>
<span class="block font-sans font-light text-xs leading-[120%] tracking-normal text-blue_avril-100">
<a href="https://www.avril-beaute.fr/le-logo-avril-fleur-magnolia" class="underline">
On vous raconte ici </a>
</span>
</div>
</div>
<script>
const flower = document.querySelector('.flower-text');
const flower_svg = document.querySelector('.flower svg');
flower.addEventListener('mouseenter', () => {
flower_svg.classList.add('-translate-y-[90%]');
});
flower.addEventListener('mouseleave', () => {
flower_svg.classList.remove('-translate-y-[90%]');
});
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"pourquoi_logo":""};
const finalData = {
event: 'footer'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.flower-text a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.flower-text a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
</div></div><script>
function initConfigurableOptions(productId, optionConfig) {
function findPathParam(key) {
const baseUrl = (BASE_URL.substring(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: [],
selectedOptions: {},
init() {
this.baseInit();
},
baseInit() {
this.buildLookupMap();
this.findAllowedAttributeOptions();
this.$nextTick(() => {
if (typeof this.optionConfig.defaultValues === 'object') {
for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) {
this.changeOption(attributeId, value + '');
}
}
this.applyCheckedState();
});
},
applyCheckedState() {
this.$root.querySelectorAll('input[data-attribute-id], select[data-attribute-id]').forEach(el => {
const val = this.selectedValues[el.dataset.attributeId];
if (!val) return;
if (el.tagName === 'SELECT') {
el.value = val;
this.selectedOptions[el.dataset.attributeId] = el.options[el.selectedIndex]?.text || '';
} else if (el.value === val && this.optionIsActive(el.dataset.attributeId, el.value)) {
el.checked = true;
this.selectedOptions[el.dataset.attributeId] = el.dataset.optionLabel || '';
}
});
},
productIndex: 0,
productIndexForPrice: 0,
productIndexesMap: null,
productIndexesKeys: null,
attributeCount: 0,
optionIsActive(attributeId, optionId) {
return !!this.getAllowedAttributeOptions(attributeId).find(
option => option.id === optionId
)
},
optionIsDisabled() {
const attributeId = this.$el.dataset.attributeId;
if (!attributeId) {
throw new Error('data-attribute-id missing, in item template');
}
return !this.optionIsActive(attributeId, this.$el.value);
},
findSimpleIndex() {
this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues);
this.productIndexForPrice = this.findCheapestProductForPartialSelection(this.selectedValues);
},
calculateSimpleIndexForPartialSelection(selectedValues) {
if (selectedValues.length === 0) return 0;
return this.findProductIdsForPartialSelection(selectedValues)[0];
},
buildLookupMap() {
this.productIndexesMap = new Map();
this.attributeCount = Object.keys(this.optionConfig.attributes).length;
for (const id in this.optionConfig.index) {
const options = this.optionConfig.index[id];
if (! this.productIndexesKeys) {
this.productIndexesKeys = Object.keys(options).sort();
}
const key = JSON.stringify(options, this.productIndexesKeys);
this.productIndexesMap.set(key, id);
}
},
findAllowedAttributeOptions() {
this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues);
},
calculateAllowedAttributeOptions(selectedValues) {
const allAttributes = this.optionConfig.attributes;
const allAttributesSorted = Object.values(allAttributes).sort((a,b) => {
return a.position - b.position
});
const newAllowedAttributeOptions = [];
allAttributesSorted.forEach(attribute => {
const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id));
const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr);
newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => {
return !!option.products.find(product => {
return availableIndexes.includes(product);
})
});
});
return newAllowedAttributeOptions;
},
calculateAvailableProductIndexes(selectedOptions) {
if (Object.keys(selectedOptions).length === 0) {
if (Object.values(this.optionConfig.salable || {}).length) {
return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i)
}
return Object.keys(this.optionConfig.index);
}
const selectedIds = Object.keys(selectedOptions);
if (Object.values(this.optionConfig.salable || {}).length) {
const selectedOptionIndexes = selectedIds.map(attrId => {
const optionValue = selectedOptions[attrId];
return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || []
})
return selectedOptionIndexes.reduce((acc, optionIndexes) => {
return acc.filter(index => optionIndexes.includes(index));
});
} else {
const productIndexes = this.optionConfig.index;
return Object.keys(productIndexes).filter(index => {
for (const attrId of selectedIds) {
if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false
}
return true
});
}
},
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] || []
},
getAllAttributeOptions(attributeId) {
return (
this.optionConfig.attributes[attributeId] &&
this.optionConfig.attributes[attributeId].options
) || []
},
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) => {
// in the first iteration we start with simpleIdx as the currently cheapest product
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)
},
removeAttrFromSelection(selectedValues, attributeId) {
attributeId = parseInt(attributeId);
return selectedValues.reduce((newSelection, val, attr) => {
if (attr !== attributeId) {
newSelection[attr] = val;
}
return newSelection;
}, []);
},
reflectOption(event) {
const attributeId = event.target.dataset.attributeId;
const label = event.target.dataset.optionLabel
|| event.target.options?.[event.target.selectedIndex]?.text
|| '';
this.selectedOptions[attributeId] = label;
this.changeOption(attributeId, event.target.value);
},
baseChangeOption(attributeId, value) {
if (value === '') {
this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId)
} else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) {
this.selectedValues[attributeId] = value;
}
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGallery();
},
changeOption(attributeId, value) {
this.baseChangeOption(attributeId, value);
const candidates = this.findProductIdsForPartialSelection(this.selectedValues);
window.dispatchEvent(
new CustomEvent(
'configurable-selection-changed',
{
detail: {
productId: this.productId,
optionId: attributeId,
value: value,
productIndex: this.productIndex,
selectedValues: this.selectedValues,
candidates: candidates,
skuCandidates: Object.values(candidates).map(id => this.optionConfig.sku?.[id] ?? null).filter(Boolean),
}
}
)
);
},
calculateIsMinimalPrice() {
return ! this.isFullSelection(this.selectedValues);
},
isFullSelection(selectedValues) {
return Object.keys(selectedValues).length === this.attributeCount;
},
updatePrices() {
const value = this.optionConfig.optionPrices[this.productIndexForPrice] || this.optionConfig.prices;
window.dispatchEvent(
new CustomEvent(
"update-prices-" + this.productId,
{
detail: Object.assign(
value,
{ isMinimalPrice: this.calculateIsMinimalPrice() }
)
}
)
);
},
updateGallery () {
if (this.productIndex) {
const images = this.optionConfig.images[this.productIndex];
images && window.dispatchEvent(new CustomEvent(
"update-gallery",
{ detail: this.sortImagesByPosition(images) }
));
} else {
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() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?',''));
this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code));
},
preselectLocationHashItems() {
// pre-select option like #144=167
const urlHashParams = new URLSearchParams(window.location.hash.replace('#',''));
this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id));
},
preselectItemsBasedOnLocation(getLocationValue) {
Object.values(this.optionConfig.attributes).map(attribute => {
const v = getLocationValue(attribute);
v && this.changeOption(attribute.id, v)
});
},
findProductForOptionPrice(attributeId, value) {
const options = this.optionConfig.attributes[attributeId]?.options || [];
const option = options.find(o => o.id === value);
if (!option?.products?.length) return null;
return option.products.reduce((cheapest, productId) => {
if (!cheapest) return productId;
const cheapestPrice = this.optionConfig.optionPrices[cheapest]?.finalPrice?.amount ?? Infinity;
const thisPrice = this.optionConfig.optionPrices[productId]?.finalPrice?.amount ?? Infinity;
return thisPrice < cheapestPrice ? productId : cheapest;
}, null);
},
getOptionLabel() {
const value = this.$el.value;
const attributeId = this.$el.dataset.attributeId;
const label = this.$el.dataset.optionLabel || '';
if (!value || !attributeId) return label;
const productId = this.findProductForOptionPrice(attributeId, value);
if (!productId) return label;
const optionPrice = this.optionConfig.optionPrices[productId]?.finalPrice?.amount;
const basePrice = this.optionConfig.prices?.finalPrice?.amount;
if (optionPrice == null || basePrice == null) return label;
const adjustment = optionPrice - basePrice;
if (Math.abs(adjustment) < 0.001) return label;
const formatted = hyva.formatPrice(Math.abs(adjustment));
return `${label} (${adjustment > 0 ? '+' : '-'}${formatted})`;
},
}
}
</script>
<script>
function initSwatchOptions() {
return {
activeTooltipItem: false,
tooltipPositionElement: false,
isTooltipVisible() {
return !!this.activeTooltipItem;
},
isCurrentTooltipVisual() {
return this.activeTooltipItem && ['color', 'image'].includes(this.activeTooltipItem.type);
},
getTooltipImageStyle() {
const item = this.activeTooltipItem;
if (item?.type === 'color') return {
backgroundColor: item.preview,
width: `${item.width ?? 90}px`,
height: `${item.height ?? 90}px`
};
if (item?.type === 'image') return {
backgroundImage: `url(${item.preview})`,
backgroundSize: 'cover',
backgroundPosition: 'center',
backgroundRepeat: 'no-repeat',
width: `${item.width ?? 90}px`,
height: `${item.height ?? 90}px`
};
return null;
},
getTooltipPosition() {
if (!this.tooltipPositionElement) return null;
const el = this.tooltipPositionElement;
const elRect = el.getBoundingClientRect();
const left = elRect.left + elRect.width / 2;
return {
bottom: `${window.innerHeight - elRect.top}px`,
left: `${left}px`,
translate: '-50% 0'
};
},
getTooltipLabel() {
return this.activeTooltipItem ? this.activeTooltipItem.label : '';
},
showTooltip(event) {
if (!window.matchMedia('(hover: hover) and (pointer: fine)').matches) return;
const input = event.currentTarget.querySelector('input');
this.activeTooltipItem = JSON.parse(input.dataset.tooltip);
this.tooltipPositionElement = event.currentTarget;
},
hideTooltip() {
this.activeTooltipItem = false;
},
}
}
</script>
<script>
'use strict';
const grecaptchaV2LoadCallbacks = [];
function executeRecaptchaLoadCallbacks () {
while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) {
const callback = grecaptchaV2LoadCallbacks.pop();
typeof callback === 'string' ? window[callback]() : callback();
}
}
(function() {
const loadRecaptchaScript = (event) => {
if (window.grecaptcha || !event.target.form) {
return;
}
const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks';
const siteKey = '6LcFYF4qAAAAADImTOaJzO6csad6UWhk\u002D3kW7m4q';
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`;
script.async = true;
document.head.appendChild(script);
script.addEventListener('load', () => {
Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled'));
});
}
window.forceLoadRecaptchaScript = (form) => {
loadRecaptchaScript({target: {form: form || 'dummy'}});
executeRecaptchaLoadCallbacks();
};
document.body.addEventListener('input', loadRecaptchaScript, { once: true });
document.body.addEventListener('focus', loadRecaptchaScript, { once: true });
}());
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"click":"{{inner_text}}"};
const finalData = {
event: 'breadcrumb'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.breadcrumbs a,.ultracrumbs-list a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.breadcrumbs a,.ultracrumbs-list a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"click_rs":"{{title}}"};
const finalData = {
event: 'footer'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.footer-socials-container a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.footer-socials-container a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"message":"{{inner_text}}","zone":"{{page_type}}"};
const finalData = {
event: 'rse_banner'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.footer_reassurance a, .project-slider a, .hp-project-link a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.footer_reassurance a, .project-slider a, .hp-project-link a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"search_term":"{{inner_text}}","search_method":"frequent_query","keyword":"selector:#search|value"};
const finalData = {
event: 'search_select'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.tracking-search-frequent a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.tracking-search-frequent a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"search_term":"{{inner_text}}","search_method":"suggestion_click","keyword":"selector:#search|value"};
const finalData = {
event: 'search_select'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.tracking-search-suggestion a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.tracking-search-suggestion a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
(function () {
const pushEvent = (el) => {
const rawData = {"search_term":"selector:.product-item-name|inner_text","search_method":"product","keyword":"selector:#search|value"};
const finalData = {
event: 'search_select'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.tracking-search-product a');
if (el) {
pushEvent(el);
}
}, true);
document.addEventListener('auxclick', function (e) {
const el = e.target.closest('.tracking-search-product a');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
function initWishlist({sku, productId, name}) {
return {
isLoading: false,
sku,
productId: String(productId),
name,
inWishlist: false,
wishlistItemId: null,
showMessage(type, text) {
if (typeof window.dispatchMessages === 'function') {
window.dispatchMessages([{type, text}], 5000);
}
},
syncFromClient(state) {
this.wishlistItemId = state.byProduct[this.productId] || null;
this.inWishlist = !!this.wishlistItemId;
},
getWishlistItems() {
if (!window.AvrilWishlistClient) { return; }
const apply = (state) => this.syncFromClient(state);
window.AvrilWishlistClient.fetchItems().then(apply);
window.addEventListener('avril-wishlist:changed', (e) => apply(e.detail));
window.addEventListener('avril-wishlist:loaded', (e) => apply(e.detail));
},
addToWishlist(productId) {
if (this.isLoading || !window.AvrilWishlistClient) { return; }
if (this.inWishlist) { return this.removeFromWishlist(); }
const msgs = (window.AvrilWishlist && window.AvrilWishlist.messages) || {};
const clientState = window.AvrilWishlistClient.getState();
if (clientState.requiresLogin) {
try {
window.sessionStorage.setItem('avril-wishlist:pending-add', JSON.stringify({ productId: this.productId, sku: this.sku }));
} catch (e) { /* noop */ }
window.location.href = clientState.loginUrl;
return;
}
const addedTpl = "__NAME__\u0020a\u0020\u00E9t\u00E9\u0020ajout\u00E9\u0020\u00E0\u0020votre\u0020liste\u0020d\u2019envies";
this.isLoading = true;
this.showMessage('success', addedTpl.replace('__NAME__', this.name));
window.AvrilWishlistClient.add(productId, { sku: this.sku })
.catch((err) => {
if (err && err.message === 'requires-login') {
window.location.href = window.AvrilWishlistClient.getState().loginUrl;
return;
}
this.showMessage('error', msgs.error || (err && err.message) || err);
})
.finally(() => { this.isLoading = false; });
},
removeFromWishlist() {
if (!this.wishlistItemId || !window.AvrilWishlistClient) { return; }
const msgs = (window.AvrilWishlist && window.AvrilWishlist.messages) || {};
const removedTpl = "__NAME__\u0020a\u0020\u00E9t\u00E9\u0020retir\u00E9\u0020de\u0020votre\u0020liste\u0020d\u0027achats.";
this.isLoading = true;
this.showMessage('success', removedTpl.replace('__NAME__', this.name));
window.AvrilWishlistClient.remove(this.wishlistItemId)
.catch((err) => {
this.showMessage('error', msgs.error || (err && err.message) || err);
})
.finally(() => { this.isLoading = false; });
}
}
}
</script>
<script>
function initPriceBox()
{
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel && regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel && regularPriceLabel.classList.remove('hidden');
}
regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
}
}
}
</script>
<script>
'use strict';
(() => {
function _calculateStrength({elementID, valid}) {
const password = document.getElementById(elementID),
emailElm = document.getElementById('email_address');
let displayScore;
if (!password || !password.value) {
displayScore = 0;
} else {
if (emailElm && password.value && emailElm.value &&
password.value.toLowerCase() === emailElm.value.toLowerCase()) {
displayScore = 1;
} else {
const zxcvbnScore = zxcvbn(password.value).score;
displayScore = valid && zxcvbnScore > 0 ? zxcvbnScore : 1;
}
}
_displayStrength(displayScore);
}
function _displayStrength(displayScore) {
let strengthLabel = '',
className;
switch (displayScore) {
case 0:
strengthLabel = "Aucun\u0020mot\u0020de\u0020passe";
className = 'password-none';
break;
case 1:
strengthLabel = "Faible";
className = 'password-weak';
break;
case 2:
strengthLabel = "Moyen";
className = 'password-medium';
break;
case 3:
strengthLabel = "Elev\u00E9";
className = 'password-strong';
break;
case 4:
strengthLabel = "Tr\u00E8s\u0020\u00E9lev\u00E9";
className = 'password-very-strong';
break;
}
const meterElm = document.getElementById('password-strength-meter-container'),
meterLabelElm = document.getElementById('password-strength-meter-label');
meterElm.className = '';
meterElm.classList.add(className);
meterLabelElm.textContent = strengthLabel;
}
let loading = false;
const callbacks = [];
function loadZxcvbn(cb) {
callbacks.push(cb);
if (loading) return;
loading = true;
const script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https\u003A\u002F\u002Fwww.avril\u002Dbeaute.fr\u002Fstatic\u002Fversion1791884672\u002Ffrontend\u002FAvril\u002Fhyva\u002Ffr_FR\u002Fjs\u002Fzxcvbn.min.js';
script.async = true;
script.onload = () => callbacks.forEach(cb => cb());
document.head.appendChild(script);
}
window.addEventListener('password-validate', function (evt) {
const meterElm = document.getElementById('password-strength-meter-container'),
meterLabelElm = document.getElementById('password-strength-meter-label');
if (meterElm && meterLabelElm) {
if (evt.detail && evt.detail.elementID) {
const cb = () => _calculateStrength(evt.detail);
window.zxcvbn ? cb() : loadZxcvbn(cb)
}
}
});
document.addEventListener('afterValidateField', (event) => {
const field = event.detail.field;
if (field.name === 'password') {
const msgLis = document.querySelectorAll('.messages');
msgLis.forEach(li => li.remove());
}
});
const observer = new MutationObserver((mutationsList) => {
mutationsList.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1 && node.matches('ul.messages')) {
if (node.querySelector('li[data-msg-field="password"]')) {
node.remove(); // supprime l'UL complète
}
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
document.addEventListener('DOMContentLoaded', () => {
if (hyva && hyva.formValidation) {
hyva.formValidation.addRule('password-strength', function (value, options, field, context) {
const minCharacterSets = options.minCharacterSets !== undefined ? options.minCharacterSets : 1;
const minimumPasswordLength = options.minimumPasswordLength !== undefined ? options.minimumPasswordLength : 8;
const criteriaContainer = field.element.closest('.field')?.querySelector('.password-criteria');
const criteria = {
length: value.length >= minimumPasswordLength,
lowercase: /[a-z]/.test(value),
uppercase: /[A-Z]/.test(value),
number: /\d/.test(value)
};
if (criteriaContainer) {
queueMicrotask(() => {
Object.keys(criteria).forEach(key => {
const li = criteriaContainer.querySelector(`li[data-criterion="${key}"]`);
if (li) li.classList.toggle('valid', criteria[key]);
});
});
}
let counter = 0;
if (criteria.number) counter++;
if (criteria.lowercase) counter++;
if (criteria.uppercase) counter++;
if (counter < minCharacterSets || value.length < minimumPasswordLength) {
return false;
}
return true;
});
}
});
})();
</script>
<script>try {
smileTracker.addPageVar('cms.identifier', 'home');
smileTracker.addPageVar('cms.title', 'Cosmétiques Plus Naturels Certifiés Bio | Avril');
} catch (err) { ; }</script><script>
(function () {
const pushEvent = (el) => {
const rawData = {"click":"{{inner_text}}"};
const finalData = {
event: 'faq'
};
const keys = Object.keys(rawData);
keys.forEach((key, index) => {
let value = String(rawData[key]);
value = value.replace(/{{inner_text}}/g, el.innerText.trim());
value = value.replace(/{{value}}/g, el.value || '');
value = value.replace(/{{title}}/g, el.title || el.getAttribute('aria-label') || '');
value = value.replace(/{{href}}/g, el.href || '');
value = value.replace(/{{page_type}}/g, 'homepage');
const selectorRegex = /(?:{{)?selector:([^|{}]+)\|([^}|]+)(?:}})?/g;
value = value.replace(selectorRegex, (match, cssSelector, attr) => {
const targetEl = el.querySelector(cssSelector) || document.querySelector(cssSelector);
if (!targetEl) return '';
if (attr === 'inner_text') return targetEl.innerText.trim();
if (attr === 'value') return targetEl.value || '';
return targetEl.getAttribute(attr) || '';
});
const suffix = keys.length > 1 ? (index + 1) : '';
finalData['event_parameter' + suffix] = key;
finalData['event_value' + suffix] = value;
});
window.dataLayer = window.dataLayer || [];
window.dataLayer.push(finalData);
};
// Using event delegation to support AJAX content
document.addEventListener('click', function (e) {
const el = e.target.closest('.collapse-faq [data-role="trigger"]:not(.open), .collapse-content [data-role="trigger"]:not(.open)');
if (el) {
pushEvent(el);
}
}, true);
})();
</script>
<script>
window.axeptioSettings = {
clientId: '61aa1fa3ca42105043f1ad17',
cookiesVersion: 'avril-base_BtoC_FR',
};
(function (d, s) {
var t = d.getElementsByTagName(s)[0], e = d.createElement(s);
e.async = true;
e.src = "//static.axept.io/sdk.js";
t.parentNode.insertBefore(e, t);
})(document, "script");
</script>
<script type="module">
import { initTracking } from 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Adexos_Tracking/js/helper/init.min.js';
import { initGa4Bridge } from 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Adexos_Tracking/js/helper/ga4-bridge.min.js';
import * as cookies from 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Adexos_Tracking/js/helper/cookies.min.js';
import { onCartSection } from 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Adexos_Tracking/js/helper/cart-section.min.js';
import { getItems } from 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Avril_Tracking/js/helper/utils.min.js';
import {
getStoredItemData,
getCartStoredItemData,
initDataPersistence,
initCartFromQuote,
updateListContext,
setCookieNames,
clearCartListContext
} from 'https://www.avril-beaute.fr/static/version1791884672/frontend/Avril/hyva/fr_FR/Adexos_Tracking/js/helper/data-persistence.min.js';
window.updateListContext = updateListContext;
window.clearCartListContext = clearCartListContext;
class TrackingEvents {
constructor(options) {
this.options = options;
this.currency = options.currency;
this.cookieAddToCart = options.cookieAddToCart;
this.cookieRemoveFromCart = options.cookieRemoveFromCart;
this.cookieCustomerLogin = options.cookieCustomerLogin;
this.cookieCustomerRegister = options.cookieCustomerRegister;
this.tagId = options.tagId;
this.analytics = options.analytics;
this.gtm = options.gtm;
this.itemHtmlClass = options.itemHtmlClass;
this.listHtmlClass = options.listHtmlClass;
this.itemSelectorId = options.itemSelectorId;
window.dataLayer = window.dataLayer || [];
this.init();
// The tarteaucitron gtag service already sends js/config before calling the tracking
if (options.analyticsDirect === '1' && this.tagId) {
initGa4Bridge(this.tagId, options.tarteaucitron !== '1');
}
}
init() {
const cookieNames = {
cookieKey: this.options.cookieTrackingData,
listCookieKey: this.options.cookieTrackingList,
cartCookieKey: this.options.cookieTrackingCartData,
cartListCookieKey: this.options.cookieTrackingCartList,
};
setCookieNames(cookieNames);
// The page may come from the full page cache: the cart content comes from its private section
onCartSection(cart => initCartFromQuote(cart.tracking_item_ids.map(id => ({item_id: id})), cookies));
initDataPersistence(cookies, cookieNames, this.options.persistentDataKeys || []);
this.subscribeCart();
this.subscribeAjaxCart();
this.subscribeSearch();
this.subscribeCustomer();
this.subscribeSelectItem();
}
subscribeSearch() {
const input = document.querySelector('input[name="q"]');
if (input) {
const form = input.closest('form');
if (form) {
form.addEventListener('submit', e => {
const q = input.value || '';
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'search',
search_term: q
});
});
}
}
}
subscribeCustomer() {
const reg = cookies.get(this.cookieCustomerRegister);
if (reg) {
const data = JSON.parse(reg);
if (data) {
data.email = decodeURIComponent(data.email);
window.dataLayer.push({event: 'sign_up', email: data.email});
}
cookies.clear(this.cookieCustomerRegister);
}
const log = cookies.get(this.cookieCustomerLogin);
if (log) {
const data = JSON.parse(log);
if (data) {
data.email = decodeURIComponent(data.email);
window.dataLayer.push({event: 'login', email: data.email});
}
cookies.clear(this.cookieCustomerLogin);
}
}
subscribeCart() {
this.addToCart();
this.removeFromCart();
}
subscribeAjaxCart() {
const handler = () => this.addToCart();
window.addEventListener('ajax:addToCart', handler);
const removeHandler = () => this.removeFromCart();
window.addEventListener('ajax:removeFromCart', removeHandler);
// Luma triggers these events through jQuery, which RequireJS may not have loaded yet at this point
if (typeof window.require === 'function') {
window.require(['jquery'], $ => {
$(document).on('ajax:addToCart', handler);
$(document).on('ajax:removeFromCart', removeHandler);
});
}
// Hyvä quantity update: re-read cookies after cart form POST completes
window.addEventListener('cart-is-loading', (event) => {
if (event.detail && event.detail.isLoading === false) {
this.addToCart();
this.removeFromCart();
}
});
}
addToCart() {
const rawCookie = cookies.get(this.cookieAddToCart);
if (!rawCookie) return;
try {
const data = JSON.parse(decodeURIComponent(rawCookie));
const items = Array.isArray(data.items) ? data.items : [];
const value = parseFloat(data.value) || 0;
const getPersistedData = (itemId) => {
const cartData = getCartStoredItemData(itemId);
if (cartData.item_list_id) return cartData;
return getStoredItemData(itemId);
};
if (items.length && value > 0) {
window.dataLayer.push({
event: 'add_to_cart',
ecommerce: {
currency: this.currency,
value: value,
items: getItems(items, getPersistedData)
}
});
}
} catch (err) {
console.error('Error parsing add_to_cart cookie:', err);
}
cookies.clear(this.cookieAddToCart);
}
removeFromCart() {
if (cookies.get(this.cookieRemoveFromCart)) {
let data = JSON.parse(decodeURIComponent(cookies.get(this.cookieRemoveFromCart)));
if (data?.value) {
window.dataLayer.push({
event: 'remove_from_cart',
ecommerce: {
currency: this.currency,
value: data.value,
items: getItems(data.items, getCartStoredItemData)
}
});
}
cookies.clear(this.cookieRemoveFromCart);
}
}
subscribeSelectItem() {
const matches = [...document.querySelectorAll(this.listHtmlClass)];
// Several selectors may match nested elements (Luma .products-grid > .product-items): one listener each
const lists = matches.filter(list => !matches.some(other => other !== list && other.contains(list)));
if (!lists.length) return;
lists.forEach(list => {
list.addEventListener('click', (event) => {
// Only a click on a product link selects the item. Controls may sit inside that link
// (add to cart, wishlist) or inside a label (quantity steppers): they stay in the list
if (event.target.closest('button, input, select, label, [role="button"]')) {
return;
}
const link = event.target.closest('a[href]');
if (!link || !list.contains(link)) {
return;
}
const item = event.target.closest(this.itemHtmlClass);
if (!item) return;
const productId = this.getProductId(item);
if (!productId) return;
const result = this.findProductInViewList(productId);
if (!result) return;
const { productData, item_list_id, item_list_name } = result;
window.dataLayer.push({
event: 'select_item',
ecommerce: {
currency: this.currency,
item_list_id,
item_list_name,
items: [productData]
}
});
});
});
}
/**
* The product id comes from the configured container id (product-item-info_1234), or from the
* add to cart form field when the theme does not render such a container (Hyvä default).
*/
getProductId(item) {
const container = this.findProductContainer(item);
if (container) {
return this.extractProductIdFromContainer(container);
}
return item.querySelector('input[name="product"]')?.value || null;
}
findProductContainer(item) {
const baseId = this.itemSelectorId.replace('#', '');
return item.querySelector(`[id^="${baseId}_"]`) ||
item.querySelector(`[id^="${baseId}-"]`);
}
extractProductIdFromContainer(container) {
const baseId = this.itemSelectorId.replace('#', '');
let match = container.id.match(new RegExp(`${baseId}_(\\d+)`));
if (match) return match[1];
match = container.id.match(new RegExp(`${baseId}-(\\d+)`));
return match ? match[1] : null;
}
findProductInViewList(productId) {
if (!window.dataLayer) return null;
const viewEvent = [...window.dataLayer]
.reverse()
.find(e => e.event === 'view_item_list');
if (!viewEvent?.ecommerce?.items) {
return null;
}
const flatItems = viewEvent.ecommerce.items.flat(Infinity);
const productData = flatItems.find(i => i.item_internal_id === productId);
if (!productData) return null;
return {
productData,
item_list_id: viewEvent.ecommerce.item_list_id || null,
item_list_name: viewEvent.ecommerce.item_list_name || null
};
}
}
document.addEventListener('DOMContentLoaded', () => {
initTracking(TrackingEvents, {
currency: "EUR",
cookieAddToCart: "tracking_cookie_add_to_cart",
cookieRemoveFromCart: "tracking_cookie_remove_from_cart",
cookieCustomerLogin: "tracking_cookie_customer_login",
cookieCustomerRegister: "tracking_cookie_customer_register",
axeptio: "1",
tarteaucitron: "",
tagId: "",
analytics: "",
analyticsDirect: "",
matomo: "",
gtmTagId: "GTM\u002DN95VVZ2",
gtm: "1",
itemHtmlClass: ".product\u002Ditem",
listHtmlClass: ".product\u002Ditems",
itemSelectorId: "\u0023product\u002Ditem\u002Dinfo",
cookieTrackingData: "tracking_last_view_item_list_data_product",
cookieTrackingList: "tracking_last_view_item_list_data",
cookieTrackingCartData: "tracking_cart_last_view_item_list_data_product",
cookieTrackingCartList: "tracking_cart_last_view_item_list_data",
persistentDataKeys: ["item_list_id","item_list_name","shopping_tool","position"] }, cookies);
});
</script>
<script data-datalayer-script="1">window.dataLayer = window.dataLayer || [];window.dataLayer.push({ ecommerce: null });window.dataLayer.push({"event":"view_item_list","ecommerce":{"item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","items":[{"item_id":"1561","item_internal_id":"498","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Cr\u00e8me jour et nuit","price":8,"quantity":1,"position":0,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"624","item_internal_id":"515","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Mousse nettoyante visage","price":8,"quantity":1,"position":1,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Nettoyant","item_category4":"Mousse nettoyante","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"2099","item_internal_id":"1753","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Mascara soin & pr\u00e9cision","price":9,"quantity":1,"position":2,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Mascara","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1562","item_internal_id":"530","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Gommage visage","price":8,"quantity":1,"position":3,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Nettoyant","item_category4":"Gommage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2180","item_internal_id":"1808","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Crayon yeux","price":4,"quantity":1,"position":4,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Crayon yeux","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2170","item_internal_id":"1763","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Baume \u00e0 l\u00e8vres rechargeable","price":4,"quantity":1,"position":5,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Baume \u00e0 l\u00e8vres","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"228","item_internal_id":"892","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Eau micellaire","price":7,"quantity":1,"position":6,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Pr\u00e9paration & d\u00e9maquillage","item_category3":"D\u00e9maquillant","item_category4":"Eau micellaire","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"706","item_internal_id":"500","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Cr\u00e8me anti-\u00e2ge","price":10,"quantity":1,"position":7,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1816","item_internal_id":"1607","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Anti-cernes liquide","price":10,"quantity":1,"position":8,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Correcteur & anti-cernes","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"1909","item_internal_id":"1670","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Baume d\u00e9maquillant","price":12,"quantity":1,"position":9,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Pr\u00e9paration & d\u00e9maquillage","item_category3":"D\u00e9maquillant","item_category4":"Baume d\u00e9maquillant","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"230","item_internal_id":"470","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Cr\u00e8me pour les mains","price":6,"quantity":1,"position":10,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"Soin corps","item_category4":"Cr\u00e8me corps","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"1741","item_internal_id":"1099","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"S\u00e9rum \u00e9clat","price":9,"quantity":1,"position":11,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"S\u00e9lections Avril","item_category2":"V\u00e9gan","item_category3":"Soin v\u00e9gan","item_category4":"Soin visage v\u00e9gan","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false}]},"events_by_tabs":[{"event":"view_item_list","ecommerce":{"item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","items":[{"item_id":"1561","item_internal_id":"498","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Cr\u00e8me jour et nuit","price":8,"quantity":1,"position":0,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"624","item_internal_id":"515","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Mousse nettoyante visage","price":8,"quantity":1,"position":1,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Nettoyant","item_category4":"Mousse nettoyante","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"2099","item_internal_id":"1753","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Mascara soin & pr\u00e9cision","price":9,"quantity":1,"position":2,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Mascara","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1562","item_internal_id":"530","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Gommage visage","price":8,"quantity":1,"position":3,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Nettoyant","item_category4":"Gommage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2180","item_internal_id":"1808","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Crayon yeux","price":4,"quantity":1,"position":4,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Crayon yeux","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2170","item_internal_id":"1763","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Baume \u00e0 l\u00e8vres rechargeable","price":4,"quantity":1,"position":5,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Baume \u00e0 l\u00e8vres","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"228","item_internal_id":"892","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Eau micellaire","price":7,"quantity":1,"position":6,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Pr\u00e9paration & d\u00e9maquillage","item_category3":"D\u00e9maquillant","item_category4":"Eau micellaire","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"706","item_internal_id":"500","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Cr\u00e8me anti-\u00e2ge","price":10,"quantity":1,"position":7,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1816","item_internal_id":"1607","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Anti-cernes liquide","price":10,"quantity":1,"position":8,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Correcteur & anti-cernes","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"1909","item_internal_id":"1670","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Baume d\u00e9maquillant","price":12,"quantity":1,"position":9,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Pr\u00e9paration & d\u00e9maquillage","item_category3":"D\u00e9maquillant","item_category4":"Baume d\u00e9maquillant","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"230","item_internal_id":"470","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"Cr\u00e8me pour les mains","price":6,"quantity":1,"position":10,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"Soin corps","item_category4":"Cr\u00e8me corps","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"1741","item_internal_id":"1099","item_list_id":"page_cms_2_block_1_tab_1","item_list_name":"Homepage - on vous accompagne ? - Nos essentiels","item_name":"S\u00e9rum \u00e9clat","price":9,"quantity":1,"position":11,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"S\u00e9lections Avril","item_category2":"V\u00e9gan","item_category3":"Soin v\u00e9gan","item_category4":"Soin visage v\u00e9gan","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false}]}},{"event":"view_item_list","ecommerce":{"item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","items":[{"item_id":"2325","item_internal_id":"1932","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Calendrier de l'Avent 2026 - 24 jours pour bien \u00eatre soi","price":94.5,"quantity":1,"position":0,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Cadeaux\t\t","item_category2":"Cadeaux","item_category3":"Coffrets cadeaux","item_category4":"Coffret cadeau Soin","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2293","item_internal_id":"1934","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Coffret cadeau Essentiels soins","price":22,"quantity":1,"position":1,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Cadeaux\t\t","item_category2":"Cadeaux","item_category3":"Coffrets cadeaux","item_category4":"Moins de 30\u20ac","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2295","item_internal_id":"1931","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Coffret cadeau Cocooning","price":30,"quantity":1,"position":2,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Cadeaux\t\t","item_category2":"Cadeaux","item_category3":"Coffrets cadeaux","item_category4":"Moins de 30\u20ac","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2235","item_internal_id":"1896","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Huile l\u00e8vres","price":10,"quantity":1,"position":3,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"L\u00e8vres","item_category4":"Huile l\u00e8vres","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2109","item_internal_id":"1747","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Cr\u00e8me pour les mains \u00e9dition limit\u00e9e","price":4,"quantity":1,"position":4,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"Soin corps","item_category4":"Cr\u00e8me corps","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2138","item_internal_id":"1899","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"S\u00e9rum visage PRO AGE +","price":13,"quantity":1,"position":5,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Anti-\u00e2ge","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2139","item_internal_id":"1898","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Soin contour des yeux et l\u00e8vres PRO AGE +","price":12,"quantity":1,"position":6,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2207","item_internal_id":"1900","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Cr\u00e8me de jour l\u00e9g\u00e8re PRO AGE +","price":16,"quantity":1,"position":7,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2208","item_internal_id":"1902","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Cr\u00e8me de jour riche PRO AGE +","price":16,"quantity":1,"position":8,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2209","item_internal_id":"1905","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Baume de nuit PRO AGE +","price":16,"quantity":1,"position":9,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2210","item_internal_id":"1901","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Recharge cr\u00e8me de jour l\u00e9g\u00e8re PRO AGE +","price":14,"quantity":1,"position":10,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9 - Recharge","item_list_highlight":false},{"item_id":"2211","item_internal_id":"1903","item_list_id":"page_cms_2_block_1_tab_2","item_list_name":"Homepage - on vous accompagne ? - Nouveau","item_name":"Recharge cr\u00e8me de jour riche PRO AGE +","price":14,"quantity":1,"position":11,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9 - Recharge","item_list_highlight":false}]}},{"event":"view_item_list","ecommerce":{"item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","items":[{"item_id":"2099","item_internal_id":"1753","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Mascara soin & pr\u00e9cision","price":9,"quantity":1,"position":0,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Mascara","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2180","item_internal_id":"1808","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Crayon yeux","price":4,"quantity":1,"position":1,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Crayon yeux","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1816","item_internal_id":"1607","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Anti-cernes liquide","price":10,"quantity":1,"position":2,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Correcteur & anti-cernes","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"2105","item_internal_id":"1813","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Poudre libre rechargeable - peaux claires \u00e0 m\u00e9dium","price":12,"quantity":1,"position":3,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Poudre compacte","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9 - Recharge","item_list_highlight":false},{"item_id":"2118","item_internal_id":"1754","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Blush","price":6,"quantity":1,"position":4,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Blush","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Recharge","item_list_highlight":false},{"item_id":"1596","item_internal_id":"968","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Eyeliner","price":10,"quantity":1,"position":5,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Eyeliner","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2133","item_internal_id":"1822","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Poudre compacte","price":7,"quantity":1,"position":6,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Poudre compacte","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9 - Recharge","item_list_highlight":false},{"item_id":"1587","item_internal_id":"1456","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Crayon sourcils","price":4,"quantity":1,"position":7,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Yeux","item_category4":"Crayon sourcils","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1082","item_internal_id":"1017","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Vernis soin nourrissant & protecteur","price":5,"quantity":1,"position":8,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Ongles","item_category4":"Vernis","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1825","item_internal_id":"1637","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Huile l\u00e8vres","price":10,"quantity":1,"position":9,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"L\u00e8vres","item_category4":"Huile l\u00e8vres","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"1477","item_internal_id":"771","item_list_id":"page_cms_2_block_1_tab_3","item_list_name":"Homepage - on vous accompagne ? - Maquillage","item_name":"Fond de teint","price":11,"quantity":1,"position":10,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Maquillage\t\t\t\t","item_category3":"Teint","item_category4":"Fond de teint & BB Cream","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false}]}},{"event":"view_item_list","ecommerce":{"item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","items":[{"item_id":"624","item_internal_id":"515","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Mousse nettoyante visage","price":8,"quantity":1,"position":0,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Nettoyant","item_category4":"Mousse nettoyante","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"1812","item_internal_id":"1049","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Cr\u00e8me de jour peaux s\u00e8ches et sensibles","price":8,"quantity":1,"position":1,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"176","item_internal_id":"463","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Gommage corporel","price":9,"quantity":1,"position":2,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"Soin corps","item_category4":"Gommage corps","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"2207","item_internal_id":"1900","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Cr\u00e8me de jour l\u00e9g\u00e8re PRO AGE +","price":16,"quantity":1,"position":3,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Nouveaut\u00e9","item_list_highlight":false},{"item_id":"2042","item_internal_id":"1755","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Baume r\u00e9parateur haute tol\u00e9rance","price":7,"quantity":1,"position":4,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"625","item_internal_id":"527","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Gel nettoyant visage","price":5,"quantity":1,"position":5,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Nettoyant","item_category4":"Gel nettoyant","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Coup de Coeur","item_list_highlight":false},{"item_id":"2175","item_internal_id":"1799","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Gel douche en poudre \u00e0 reconstituer Ros\u00e9e du matin","price":3,"quantity":1,"position":6,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"Savon & gel douche","item_category4":"Gel douche & gel mains","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"Recharge","item_list_highlight":false},{"item_id":"2170","item_internal_id":"1763","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Baume \u00e0 l\u00e8vres rechargeable","price":4,"quantity":1,"position":7,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Baume \u00e0 l\u00e8vres","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"228","item_internal_id":"892","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Eau micellaire","price":7,"quantity":1,"position":8,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Maquillage","item_category2":"Pr\u00e9paration & d\u00e9maquillage","item_category3":"D\u00e9maquillant","item_category4":"Eau micellaire","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"225","item_internal_id":"490","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"D\u00e9odorant bille","price":4,"quantity":1,"position":9,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"D\u00e9odorant","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"177","item_internal_id":"469","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Lait corporel","price":8,"quantity":1,"position":10,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Corps & douche","item_category3":"Soin corps","item_category4":"Cr\u00e8me corps","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false},{"item_id":"706","item_internal_id":"500","item_list_id":"page_cms_2_block_1_tab_4","item_list_name":"Homepage - on vous accompagne ? - Soin","item_name":"Cr\u00e8me anti-\u00e2ge","price":10,"quantity":1,"position":11,"item_brand":"Avril beaut\u00e9","item_variant":"","shopping_tool":"cms_index_index","item_category":"Soin","item_category2":"Visage","item_category3":"Cr\u00e8me","item_category4":"Cr\u00e8me visage","location_id":"ChIJIQBpAG2ahYAR_6128GcTUEo","discount":"non","item_label":"","item_list_highlight":false}]}}]});window.dataLayer.push({"event":"dataEnrichmentIsReady","page_env":"prod","user_status":"not logged","account_status":"","user_id":"","page_template":"homepage","page_name_global":"b2c_fr_homepage"});</script>
<script>
let resizeTimer = null;
setTimeout(() => {
updateImageProperties();
}, 500);
// Gestion du resize
window.addEventListener('resize', () => {
if (resizeTimer) {
clearTimeout(resizeTimer);
}
resizeTimer = setTimeout(() => {
resizeTimer = null;
const event = new Event('resizeend');
window.dispatchEvent(event);
}, 100);
});
window.addEventListener('resizeend', () => {
updateImageProperties();
});
function updateImageProperties() {
const quality = "";
const background = "";
const coverFactor = "2";
document.querySelectorAll('img').forEach(function(img) {
if (img.src.indexOf('media/') === -1) return;
if (img.classList.contains('no-responsive')) return;
let width = img.width;
let height = img.height;
let currentWidth = 0;
if (width > 0 && height > 0) {
img.width = width;
img.height = height;
const widthFactor = width * coverFactor;
const heightFactor = height * coverFactor;
const url = new URL(img.src);
const query = url.searchParams.get("twic");
if (query) {
const match = query.match(/cover=([^/]+)/);
if (match) {
const cover = match[1];
currentWidth = parseInt(cover.split('x')[0]);
}
}
if (widthFactor !== currentWidth) { // To prevent unnecessary loading
if (img.src.indexOf('cover=') !== -1) {
img.src = img.src.replace(/cover=\d+x\d+/, 'cover=' + parseInt(widthFactor) + 'x' + parseInt(heightFactor));
} else {
let newSrc = img.src;
if (quality) {
newSrc += '?twic=v1/cover=' + parseInt(widthFactor) + 'x' + parseInt(heightFactor) + '/quality=' + quality;
} else {
newSrc += '?twic=v1/cover=' + parseInt(widthFactor) + 'x' + parseInt(heightFactor);
}
if (background) {
newSrc += '/background=' + background;
}
img.src = newSrc;
}
}
if (!img.classList.contains('no-full-width')) {
img.style.width = '100%';
}
}
});
}
</script>
<script type="text/json" id="default-section-data">
{"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"AD":{"name":"Andorre"},"AE":{"name":"\u00c9mirats arabes unis"},"AF":{"name":"Afghanistan"},"AG":{"name":"Antigua-et-Barbuda"},"AI":{"name":"Anguilla"},"AL":{"name":"Albanie","regions":{"512":{"code":"AL-01","name":"Berat"},"513":{"code":"AL-09","name":"Dib\u00ebr"},"514":{"code":"AL-02","name":"Durr\u00ebs"},"515":{"code":"AL-03","name":"Elbasan"},"516":{"code":"AL-04","name":"Fier"},"517":{"code":"AL-05","name":"Gjirokast\u00ebr"},"518":{"code":"AL-06","name":"Kor\u00e7\u00eb"},"519":{"code":"AL-07","name":"Kuk\u00ebs"},"520":{"code":"AL-08","name":"Lezh\u00eb"},"521":{"code":"AL-10","name":"Shkod\u00ebr"},"522":{"code":"AL-11","name":"Tiran\u00eb"},"523":{"code":"AL-12","name":"Vlor\u00eb"}}},"AM":{"name":"Arm\u00e9nie"},"AN":{"name":null},"AO":{"name":"Angola"},"AQ":{"name":"Antarctique"},"AR":{"name":"Argentine","regions":{"525":{"code":"AR-B","name":"Buenos Aires"},"526":{"code":"AR-K","name":"Catamarca"},"527":{"code":"AR-H","name":"Chaco"},"528":{"code":"AR-U","name":"Chubut"},"524":{"code":"AR-C","name":"Ciudad Aut\u00f3noma de Buenos Aires"},"529":{"code":"AR-X","name":"C\u00f3rdoba"},"530":{"code":"AR-W","name":"Corrientes"},"531":{"code":"AR-E","name":"Entre R\u00edos"},"532":{"code":"AR-P","name":"Formosa"},"533":{"code":"AR-Y","name":"Jujuy"},"534":{"code":"AR-L","name":"La Pampa"},"535":{"code":"AR-F","name":"La Rioja"},"536":{"code":"AR-M","name":"Mendoza"},"537":{"code":"AR-N","name":"Misiones"},"538":{"code":"AR-Q","name":"Neuqu\u00e9n"},"539":{"code":"AR-R","name":"R\u00edo Negro"},"540":{"code":"AR-A","name":"Salta"},"541":{"code":"AR-J","name":"San Juan"},"542":{"code":"AR-D","name":"San Luis"},"543":{"code":"AR-Z","name":"Santa Cruz"},"544":{"code":"AR-S","name":"Santa Fe"},"545":{"code":"AR-G","name":"Santiago del Estero"},"546":{"code":"AR-V","name":"Tierra del Fuego"},"547":{"code":"AR-T","name":"Tucum\u00e1n"}}},"AS":{"name":"Samoa am\u00e9ricaines"},"AT":{"name":"Autriche","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"}}},"AU":{"name":"Australie","regions":{"605":{"code":"ACT","name":"Australian Capital Territory"},"606":{"code":"NSW","name":"New South Wales"},"612":{"code":"NT","name":"Northern Territory"},"608":{"code":"QLD","name":"Queensland"},"609":{"code":"SA","name":"South Australia"},"610":{"code":"TAS","name":"Tasmania"},"607":{"code":"VIC","name":"Victoria"},"611":{"code":"WA","name":"Western Australia"}}},"AW":{"name":"Aruba"},"AX":{"name":"\u00celes \u00c5land"},"AZ":{"name":"Azerba\u00efdjan"},"BA":{"name":"Bosnie-Herz\u00e9govine"},"BB":{"name":"Barbade"},"BD":{"name":"Bangladesh"},"BE":{"name":"Belgique","regions":{"620":{"code":"VAN","name":"Antwerpen"},"621":{"code":"WBR","name":"Brabant wallon"},"622":{"code":"BRU","name":"Brussels-Capital Region"},"623":{"code":"WHT","name":"Hainaut"},"625":{"code":"WLG","name":"Li\u00e8ge"},"624":{"code":"VLI","name":"Limburg"},"626":{"code":"WLX","name":"Luxembourg"},"627":{"code":"WNA","name":"Namur"},"628":{"code":"VOV","name":"Oost-Vlaanderen"},"629":{"code":"VBR","name":"Vlaams-Brabant"},"630":{"code":"VWV","name":"West-Vlaanderen"}}},"BF":{"name":"Burkina Faso"},"BG":{"name":"Bulgarie","regions":{"640":{"code":"BG-01","name":"Blagoevgrad"},"641":{"code":"BG-02","name":"Burgas"},"647":{"code":"BG-08","name":"Dobrich"},"646":{"code":"BG-07","name":"Gabrovo"},"665":{"code":"BG-26","name":"Haskovo"},"648":{"code":"BG-09","name":"Kardzhali"},"649":{"code":"BG-10","name":"Kyustendil"},"650":{"code":"BG-11","name":"Lovech"},"651":{"code":"BG-12","name":"Montana"},"652":{"code":"BG-13","name":"Pazardzhik"},"653":{"code":"BG-14","name":"Pernik"},"654":{"code":"BG-15","name":"Pleven"},"655":{"code":"BG-16","name":"Plovdiv"},"656":{"code":"BG-17","name":"Razgrad"},"657":{"code":"BG-18","name":"Ruse"},"666":{"code":"BG-27","name":"Shumen"},"658":{"code":"BG-19","name":"Silistra"},"659":{"code":"BG-20","name":"Sliven"},"660":{"code":"BG-21","name":"Smolyan"},"661":{"code":"BG-22","name":"Sofia City"},"662":{"code":"BG-23","name":"Sofia Province"},"663":{"code":"BG-24","name":"Stara Zagora"},"664":{"code":"BG-25","name":"Targovishte"},"642":{"code":"BG-03","name":"Varna"},"643":{"code":"BG-04","name":"Veliko Tarnovo"},"644":{"code":"BG-05","name":"Vidin"},"645":{"code":"BG-06","name":"Vratsa"},"667":{"code":"BG-28","name":"Yambol"}}},"BH":{"name":"Bahre\u00efn"},"BI":{"name":"Burundi"},"BJ":{"name":"B\u00e9nin"},"BL":{"name":"Saint-Barth\u00e9lemy"},"BM":{"name":"Bermudes"},"BN":{"name":"Brunei"},"BO":{"name":"Bolivie","regions":{"632":{"code":"BO-H","name":"Chuquisaca"},"631":{"code":"BO-C","name":"Cochabamba"},"633":{"code":"BO-B","name":"El Beni"},"634":{"code":"BO-L","name":"La Paz"},"635":{"code":"BO-O","name":"Oruro"},"636":{"code":"BO-N","name":"Pando"},"637":{"code":"BO-P","name":"Potos\u00ed"},"638":{"code":"BO-S","name":"Santa Cruz"},"639":{"code":"BO-T","name":"Tarija"}}},"BQ":{"name":"Pays-Bas carib\u00e9ens"},"BR":{"name":"Br\u00e9sil","regions":{"485":{"code":"AC","name":"Acre"},"486":{"code":"AL","name":"Alagoas"},"487":{"code":"AP","name":"Amap\u00e1"},"488":{"code":"AM","name":"Amazonas"},"489":{"code":"BA","name":"Bahia"},"490":{"code":"CE","name":"Cear\u00e1"},"511":{"code":"DF","name":"Distrito Federal"},"491":{"code":"ES","name":"Esp\u00edrito Santo"},"492":{"code":"GO","name":"Goi\u00e1s"},"493":{"code":"MA","name":"Maranh\u00e3o"},"494":{"code":"MT","name":"Mato Grosso"},"495":{"code":"MS","name":"Mato Grosso do Sul"},"496":{"code":"MG","name":"Minas Gerais"},"497":{"code":"PA","name":"Par\u00e1"},"498":{"code":"PB","name":"Para\u00edba"},"499":{"code":"PR","name":"Paran\u00e1"},"500":{"code":"PE","name":"Pernambuco"},"501":{"code":"PI","name":"Piau\u00ed"},"502":{"code":"RJ","name":"Rio de Janeiro"},"503":{"code":"RN","name":"Rio Grande do Norte"},"504":{"code":"RS","name":"Rio Grande do Sul"},"505":{"code":"RO","name":"Rond\u00f4nia"},"506":{"code":"RR","name":"Roraima"},"507":{"code":"SC","name":"Santa Catarina"},"508":{"code":"SP","name":"S\u00e3o Paulo"},"509":{"code":"SE","name":"Sergipe"},"510":{"code":"TO","name":"Tocantins"}}},"BS":{"name":"Bahamas"},"BT":{"name":"Bhoutan"},"BV":{"name":"\u00cele Bouvet"},"BW":{"name":"Botswana"},"BY":{"name":"Bi\u00e9lorussie","regions":{"613":{"code":"BY-BR","name":"Bresckaja voblas\u0107"},"614":{"code":"BY-HO","name":"Homie\u013askaja voblas\u0107"},"615":{"code":"BY-HM","name":"Horad Minsk"},"616":{"code":"BY-HR","name":"Hrodzienskaja voblas\u0107"},"617":{"code":"BY-MA","name":"Mahilio\u016dskaja voblas\u0107"},"618":{"code":"BY-MI","name":"Minskaja voblas\u0107"},"619":{"code":"BY-VI","name":"Viciebskaja voblas\u0107"}}},"BZ":{"name":"Belize"},"CA":{"name":"Canada","regions":{"66":{"code":"AB","name":"Alberta"},"67":{"code":"BC","name":"British Columbia"},"68":{"code":"MB","name":"Manitoba"},"70":{"code":"NB","name":"New Brunswick"},"69":{"code":"NL","name":"Newfoundland and Labrador"},"72":{"code":"NT","name":"Northwest Territories"},"71":{"code":"NS","name":"Nova Scotia"},"73":{"code":"NU","name":"Nunavut"},"74":{"code":"ON","name":"Ontario"},"75":{"code":"PE","name":"Prince Edward Island"},"76":{"code":"QC","name":"Quebec"},"77":{"code":"SK","name":"Saskatchewan"},"78":{"code":"YT","name":"Yukon Territory"}}},"CC":{"name":"\u00celes Cocos"},"CD":{"name":"Congo-Kinshasa"},"CF":{"name":"R\u00e9publique centrafricaine"},"CG":{"name":"Congo-Brazzaville"},"CH":{"name":"Suisse","regions":{"104":{"code":"AG","name":"Aargau"},"106":{"code":"AR","name":"Appenzell Ausserrhoden"},"105":{"code":"AI","name":"Appenzell Innerrhoden"},"108":{"code":"BL","name":"Basel-Landschaft"},"109":{"code":"BS","name":"Basel-Stadt"},"107":{"code":"BE","name":"Bern"},"110":{"code":"FR","name":"Friburg"},"111":{"code":"GE","name":"Geneva"},"112":{"code":"GL","name":"Glarus"},"113":{"code":"GR","name":"Graub\u00fcnden"},"114":{"code":"JU","name":"Jura"},"115":{"code":"LU","name":"Lucerne"},"116":{"code":"NE","name":"Neuch\u00e2tel"},"117":{"code":"NW","name":"Nidwalden"},"118":{"code":"OW","name":"Obwalden"},"120":{"code":"SH","name":"Schaffhausen"},"122":{"code":"SZ","name":"Schwyz"},"121":{"code":"SO","name":"Solothurn"},"119":{"code":"SG","name":"St. Gallen"},"123":{"code":"TG","name":"Thurgau"},"124":{"code":"TI","name":"Ticino"},"125":{"code":"UR","name":"Uri"},"126":{"code":"VD","name":"Vaud"},"127":{"code":"VS","name":"Wallis"},"128":{"code":"ZG","name":"Zug"},"129":{"code":"ZH","name":"Z\u00fcrich"}}},"CI":{"name":"C\u00f4te d\u2019Ivoire"},"CK":{"name":"\u00celes Cook"},"CL":{"name":"Chili","regions":{"668":{"code":"CL-AI","name":"Ais\u00e9n del General Carlos Iba\u00f1ez del Campo"},"669":{"code":"CL-AN","name":"Antofagasta"},"670":{"code":"CL-AP","name":"Arica y Parinacota"},"672":{"code":"CL-AT","name":"Atacama"},"673":{"code":"CL-BI","name":"Biob\u00edo"},"674":{"code":"CL-CO","name":"Coquimbo"},"671":{"code":"CL-AR","name":"La Araucan\u00eda"},"675":{"code":"CL-LI","name":"Libertador General Bernardo O'Higgins"},"676":{"code":"CL-LL","name":"Los Lagos"},"677":{"code":"CL-LR","name":"Los R\u00edos"},"678":{"code":"CL-MA","name":"Magallanes"},"679":{"code":"CL-ML","name":"Maule"},"680":{"code":"CL-NB","name":"\u00d1uble"},"681":{"code":"CL-RM","name":"Regi\u00f3n Metropolitana de Santiago"},"682":{"code":"CL-TA","name":"Tarapac\u00e1"},"683":{"code":"CL-VS","name":"Valpara\u00edso"}}},"CM":{"name":"Cameroun"},"CN":{"name":"Chine","regions":{"684":{"code":"CN-AH","name":"Anhui Sheng"},"685":{"code":"CN-BJ","name":"Beijing Shi"},"686":{"code":"CN-CQ","name":"Chongqing Shi"},"687":{"code":"CN-FJ","name":"Fujian Sheng"},"688":{"code":"CN-GS","name":"Gansu Sheng"},"689":{"code":"CN-GD","name":"Guangdong Sheng"},"690":{"code":"CN-GX","name":"Guangxi Zhuangzu Zizhiqu"},"691":{"code":"CN-GZ","name":"Guizhou Sheng"},"692":{"code":"CN-HI","name":"Hainan Sheng"},"693":{"code":"CN-HE","name":"Hebei Sheng"},"694":{"code":"CN-HL","name":"Heilongjiang Sheng"},"695":{"code":"CN-HA","name":"Henan Sheng"},"696":{"code":"CN-HK","name":"Hong Kong SAR"},"697":{"code":"CN-HB","name":"Hubei Sheng"},"698":{"code":"CN-HN","name":"Hunan Sheng"},"699":{"code":"CN-JS","name":"Jiangsu Sheng"},"700":{"code":"CN-JX","name":"Jiangxi Sheng"},"701":{"code":"CN-JL","name":"Jilin Sheng"},"702":{"code":"CN-LN","name":"Liaoning Sheng"},"703":{"code":"CN-MO","name":"Macao SAR"},"704":{"code":"CN-NM","name":"Nei Mongol Zizhiqu"},"705":{"code":"CN-NX","name":"Ningxia Huizi Zizhiqu"},"706":{"code":"CN-QH","name":"Qinghai Sheng"},"707":{"code":"CN-SN","name":"Shaanxi Sheng"},"708":{"code":"CN-SD","name":"Shandong Sheng"},"709":{"code":"CN-SH","name":"Shanghai Shi"},"710":{"code":"CN-SX","name":"Shanxi Sheng"},"711":{"code":"CN-SC","name":"Sichuan Sheng"},"712":{"code":"CN-TW","name":"Taiwan Sheng"},"713":{"code":"CN-TJ","name":"Tianjin Shi"},"714":{"code":"CN-XJ","name":"Xinjiang Uygur Zizhiqu"},"715":{"code":"CN-XZ","name":"Xizang Zizhiqu"},"716":{"code":"CN-YN","name":"Yunnan Sheng"},"717":{"code":"CN-ZJ","name":"Zhejiang Sheng"}}},"CO":{"name":"Colombie","regions":{"718":{"code":"CO-AMA","name":"Amazonas"},"719":{"code":"CO-ANT","name":"Antioquia"},"720":{"code":"CO-ARA","name":"Arauca"},"721":{"code":"CO-ATL","name":"Atl\u00e1ntico"},"722":{"code":"CO-BOL","name":"Bol\u00edvar"},"723":{"code":"CO-BOY","name":"Boyac\u00e1"},"724":{"code":"CO-CAL","name":"Caldas"},"725":{"code":"CO-CAQ","name":"Caquet\u00e1"},"726":{"code":"CO-CAS","name":"Casanare"},"727":{"code":"CO-CAU","name":"Cauca"},"728":{"code":"CO-CES","name":"Cesar"},"729":{"code":"CO-CHO","name":"Choc\u00f3"},"730":{"code":"CO-COR","name":"C\u00f3rdoba"},"731":{"code":"CO-CUN","name":"Cundinamarca"},"732":{"code":"CO-GUA","name":"Guain\u00eda"},"733":{"code":"CO-GUV","name":"Guaviare"},"734":{"code":"CO-HUL","name":"Huila"},"735":{"code":"CO-LAG","name":"La Guajira"},"736":{"code":"CO-MAG","name":"Magdalena"},"737":{"code":"CO-MET","name":"Meta"},"738":{"code":"CO-NAR","name":"Nari\u00f1o"},"739":{"code":"CO-NSA","name":"Norte de Santander"},"740":{"code":"CO-PUT","name":"Putumayo"},"741":{"code":"CO-QUI","name":"Quind\u00edo"},"742":{"code":"CO-RIS","name":"Risaralda"},"743":{"code":"CO-SAP","name":"San Andr\u00e9s y Providencia"},"744":{"code":"CO-SAN","name":"Santander"},"745":{"code":"CO-SUC","name":"Sucre"},"746":{"code":"CO-TOL","name":"Tolima"},"747":{"code":"CO-VAC","name":"Valle del Cauca"},"748":{"code":"CO-VAU","name":"Vaup\u00e9s"},"749":{"code":"CO-VID","name":"Vichada"}}},"CR":{"name":"Costa Rica","regions":{"1125":{"code":"CR-AL","name":"Alajuela"},"1126":{"code":"CR-CA","name":"Cartago"},"1128":{"code":"CR-GU","name":"Guanacaste"},"1127":{"code":"CR-HE","name":"Heredia"},"1130":{"code":"CR-LI","name":"Lim\u00f3n"},"1129":{"code":"CR-PU","name":"Puntarenas"},"1124":{"code":"CR-SJ","name":"San Jos\u00e9"}}},"CU":{"name":"Cuba"},"CV":{"name":"Cap-Vert"},"CW":{"name":"Cura\u00e7ao"},"CX":{"name":"\u00cele Christmas"},"CY":{"name":"Chypre"},"CZ":{"name":"Tch\u00e9quie","regions":{"752":{"code":"CZ-31","name":"Jiho\u010desk\u00fd kraj"},"760":{"code":"CZ-64","name":"Jihomoravsk\u00fd kraj"},"754":{"code":"CZ-41","name":"Karlovarsk\u00fd kraj"},"759":{"code":"CZ-63","name":"Kraj Vyso\u010dina"},"757":{"code":"CZ-52","name":"Kr\u00e1lov\u00e9hradeck\u00fd kraj"},"756":{"code":"CZ-51","name":"Libereck\u00fd kraj"},"763":{"code":"CZ-80","name":"Moravskoslezsk\u00fd kraj"},"761":{"code":"CZ-71","name":"Olomouck\u00fd kraj"},"758":{"code":"CZ-53","name":"Pardubick\u00fd kraj"},"753":{"code":"CZ-32","name":"Plze\u0148sk\u00fd kraj"},"750":{"code":"CZ-10","name":"Praha, Hlavn\u00ed m\u011bsto"},"751":{"code":"CZ-20","name":"St\u0159edo\u010desk\u00fd kraj"},"755":{"code":"CZ-42","name":"\u00dasteck\u00fd kraj"},"762":{"code":"CZ-72","name":"Zl\u00ednsk\u00fd kraj"}}},"DE":{"name":"Allemagne","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"}}},"DJ":{"name":"Djibouti"},"DK":{"name":"Danemark","regions":{"764":{"code":"DK-84","name":"Hovedstaden"},"765":{"code":"DK-82","name":"Midtjylland"},"766":{"code":"DK-81","name":"Nordjylland"},"767":{"code":"DK-85","name":"Sj\u00e6lland"},"768":{"code":"DK-83","name":"Syddanmark"}}},"DM":{"name":"Dominique"},"DO":{"name":"R\u00e9publique dominicaine"},"DZ":{"name":"Alg\u00e9rie"},"EC":{"name":"\u00c9quateur","regions":{"769":{"code":"EC-A","name":"Azuay"},"770":{"code":"EC-B","name":"Bol\u00edvar"},"771":{"code":"EC-F","name":"Ca\u00f1ar"},"772":{"code":"EC-C","name":"Carchi"},"773":{"code":"EC-H","name":"Chimborazo"},"774":{"code":"EC-X","name":"Cotopaxi"},"775":{"code":"EC-O","name":"El Oro"},"776":{"code":"EC-E","name":"Esmeraldas"},"777":{"code":"EC-W","name":"Gal\u00e1pagos"},"778":{"code":"EC-G","name":"Guayas"},"779":{"code":"EC-I","name":"Imbabura"},"780":{"code":"EC-L","name":"Loja"},"781":{"code":"EC-R","name":"Los R\u00edos"},"782":{"code":"EC-M","name":"Manab\u00ed"},"783":{"code":"EC-S","name":"Morona Santiago"},"784":{"code":"EC-N","name":"Napo"},"785":{"code":"EC-D","name":"Orellana"},"786":{"code":"EC-Y","name":"Pastaza"},"787":{"code":"EC-P","name":"Pichincha"},"788":{"code":"EC-SE","name":"Santa Elena"},"789":{"code":"EC-SD","name":"Santo Domingo de los Ts\u00e1chilas"},"790":{"code":"EC-U","name":"Sucumb\u00edos"},"791":{"code":"EC-T","name":"Tungurahua"},"792":{"code":"EC-Z","name":"Zamora Chinchipe"}}},"EE":{"name":"Estonie","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"}}},"EG":{"name":"\u00c9gypte"},"EH":{"name":"Sahara occidental"},"ER":{"name":"\u00c9rythr\u00e9e"},"ES":{"name":"Espagne","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"}}},"ET":{"name":"\u00c9thiopie"},"FI":{"name":"Finlande","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"}}},"FJ":{"name":"Fidji"},"FK":{"name":"\u00celes Malouines"},"FM":{"name":"Micron\u00e9sie"},"FO":{"name":"\u00celes F\u00e9ro\u00e9"},"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"},"1123":{"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"},"1122":{"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"}}},"GA":{"name":"Gabon"},"GB":{"name":"Royaume-Uni"},"GD":{"name":"Grenade"},"GE":{"name":"G\u00e9orgie"},"GF":{"name":"Guyane fran\u00e7aise"},"GG":{"name":"Guernesey"},"GH":{"name":"Ghana"},"GI":{"name":"Gibraltar"},"GL":{"name":"Groenland"},"GM":{"name":"Gambie"},"GN":{"name":"Guin\u00e9e"},"GP":{"name":"Guadeloupe"},"GQ":{"name":"Guin\u00e9e \u00e9quatoriale"},"GR":{"name":"Gr\u00e8ce","regions":{"806":{"code":"GR-69","name":"\u00c1gion \u00d3ros"},"793":{"code":"GR-A","name":"Anatolik\u00ed Makedon\u00eda kai Thr\u00e1ki"},"794":{"code":"GR-I","name":"Attik\u00ed"},"795":{"code":"GR-G","name":"Dytik\u00ed Ell\u00e1da"},"796":{"code":"GR-C","name":"Dytik\u00ed Makedon\u00eda"},"797":{"code":"GR-F","name":"Ion\u00eda N\u00edsia"},"798":{"code":"GR-D","name":"\u00cdpeiros"},"799":{"code":"GR-B","name":"Kentrik\u00ed Makedon\u00eda"},"800":{"code":"GR-M","name":"Kr\u00edti"},"801":{"code":"GR-L","name":"N\u00f3tio Aiga\u00edo"},"802":{"code":"GR-J","name":"Pelop\u00f3nnisos"},"803":{"code":"GR-H","name":"Stere\u00e1 Ell\u00e1da"},"804":{"code":"GR-E","name":"Thessal\u00eda"},"805":{"code":"GR-K","name":"V\u00f3reio Aiga\u00edo"}}},"GS":{"name":"G\u00e9orgie du Sud-et-les \u00celes Sandwich du Sud"},"GT":{"name":"Guatemala"},"GU":{"name":"Guam"},"GW":{"name":"Guin\u00e9e-Bissau"},"GY":{"name":"Guyana","regions":{"807":{"code":"GY-BA","name":"Barima-Waini"},"808":{"code":"GY-CU","name":"Cuyuni-Mazaruni"},"809":{"code":"GY-DE","name":"Demerara-Mahaica"},"810":{"code":"GY-EB","name":"East Berbice-Corentyne"},"811":{"code":"GY-ES","name":"Essequibo Islands-West Demerara"},"812":{"code":"GY-MA","name":"Mahaica-Berbice"},"813":{"code":"GY-PM","name":"Pomeroon-Supenaam"},"814":{"code":"GY-PT","name":"Potaro-Siparuni"},"815":{"code":"GY-UD","name":"Upper Demerara-Berbice"},"816":{"code":"GY-UT","name":"Upper Takutu-Upper Essequibo"}}},"HK":{"name":"R.A.S. chinoise de Hong Kong"},"HM":{"name":"\u00celes Heard-et-MacDonald"},"HN":{"name":"Honduras"},"HR":{"name":"Croatie","regions":{"554":{"code":"HR-07","name":"Bjelovarsko-bilogorska \u017eupanija"},"559":{"code":"HR-12","name":"Brodsko-posavska \u017eupanija"},"566":{"code":"HR-19","name":"Dubrova\u010dko-neretvanska \u017eupanija"},"568":{"code":"HR-21","name":"Grad Zagreb"},"565":{"code":"HR-18","name":"Istarska \u017eupanija"},"551":{"code":"HR-04","name":"Karlova\u010dka \u017eupanija"},"553":{"code":"HR-06","name":"Koprivni\u010dko-kri\u017eeva\u010dka \u017eupanija"},"549":{"code":"HR-02","name":"Krapinsko-zagorska \u017eupanija"},"556":{"code":"HR-09","name":"Li\u010dko-senjska \u017eupanija"},"567":{"code":"HR-20","name":"Me\u0111imurska \u017eupanija"},"561":{"code":"HR-14","name":"Osje\u010dko-baranjska \u017eupanija"},"558":{"code":"HR-11","name":"Po\u017ee\u0161ko-slavonska \u017eupanija"},"555":{"code":"HR-08","name":"Primorsko-goranska \u017eupanija"},"562":{"code":"HR-15","name":"\u0160ibensko-kninska \u017eupanija"},"550":{"code":"HR-03","name":"Sisa\u010dko-moslava\u010dka \u017eupanija"},"564":{"code":"HR-17","name":"Splitsko-dalmatinska \u017eupanija"},"552":{"code":"HR-05","name":"Vara\u017edinska \u017eupanija"},"557":{"code":"HR-10","name":"Viroviti\u010dko-podravska \u017eupanija"},"563":{"code":"HR-16","name":"Vukovarsko-srijemska \u017eupanija"},"560":{"code":"HR-13","name":"Zadarska \u017eupanija"},"548":{"code":"HR-01","name":"Zagreba\u010dka \u017eupanija"}}},"HT":{"name":"Ha\u00efti"},"HU":{"name":"Hongrie"},"ID":{"name":"Indon\u00e9sie"},"IE":{"name":"Irlande"},"IL":{"name":"Isra\u00ebl"},"IM":{"name":"\u00cele de Man"},"IN":{"name":"Inde","regions":{"569":{"code":"AN","name":"Andaman and Nicobar Islands"},"570":{"code":"AP","name":"Andhra Pradesh"},"571":{"code":"AR","name":"Arunachal Pradesh"},"572":{"code":"AS","name":"Assam"},"573":{"code":"BR","name":"Bihar"},"574":{"code":"CH","name":"Chandigarh"},"575":{"code":"CT","name":"Chhattisgarh"},"576":{"code":"DN","name":"Dadra and Nagar Haveli"},"577":{"code":"DD","name":"Daman and Diu"},"578":{"code":"DL","name":"Delhi"},"579":{"code":"GA","name":"Goa"},"580":{"code":"GJ","name":"Gujarat"},"581":{"code":"HR","name":"Haryana"},"582":{"code":"HP","name":"Himachal Pradesh"},"583":{"code":"JK","name":"Jammu and Kashmir"},"584":{"code":"JH","name":"Jharkhand"},"585":{"code":"KA","name":"Karnataka"},"586":{"code":"KL","name":"Kerala"},"1158":{"code":"LA","name":"Ladakh"},"587":{"code":"LD","name":"Lakshadweep"},"588":{"code":"MP","name":"Madhya Pradesh"},"589":{"code":"MH","name":"Maharashtra"},"590":{"code":"MN","name":"Manipur"},"591":{"code":"ML","name":"Meghalaya"},"592":{"code":"MZ","name":"Mizoram"},"593":{"code":"NL","name":"Nagaland"},"594":{"code":"OR","name":"Odisha"},"595":{"code":"PY","name":"Puducherry"},"596":{"code":"PB","name":"Punjab"},"597":{"code":"RJ","name":"Rajasthan"},"598":{"code":"SK","name":"Sikkim"},"599":{"code":"TN","name":"Tamil Nadu"},"600":{"code":"TG","name":"Telangana"},"601":{"code":"TR","name":"Tripura"},"602":{"code":"UP","name":"Uttar Pradesh"},"603":{"code":"UT","name":"Uttarakhand"},"604":{"code":"WB","name":"West Bengal"}}},"IO":{"name":"Territoire britannique de l\u2019oc\u00e9an Indien"},"IQ":{"name":"Irak"},"IR":{"name":"Iran"},"IS":{"name":"Islande","regions":{"823":{"code":"IS-07","name":"Austurland"},"817":{"code":"IS-01","name":"H\u00f6fu\u00f0borgarsv\u00e6\u00f0i"},"822":{"code":"IS-06","name":"Nor\u00f0urland eystra"},"821":{"code":"IS-05","name":"Nor\u00f0urland vestra"},"824":{"code":"IS-08","name":"Su\u00f0urland"},"818":{"code":"IS-02","name":"Su\u00f0urnes"},"820":{"code":"IS-04","name":"Vestfir\u00f0ir"},"819":{"code":"IS-03","name":"Vesturland"}}},"IT":{"name":"Italie","regions":{"825":{"code":"AG","name":"Agrigento"},"826":{"code":"AL","name":"Alessandria"},"827":{"code":"AN","name":"Ancona"},"828":{"code":"AO","name":"Aosta"},"830":{"code":"AR","name":"Arezzo"},"831":{"code":"AP","name":"Ascoli-Piceno"},"832":{"code":"AT","name":"Asti"},"833":{"code":"AV","name":"Avellino"},"834":{"code":"BA","name":"Bari"},"835":{"code":"BT","name":"Barletta-Andria-Trani"},"836":{"code":"BL","name":"Belluno"},"837":{"code":"BN","name":"Benevento"},"838":{"code":"BG","name":"Bergamo"},"839":{"code":"BI","name":"Biella"},"840":{"code":"BO","name":"Bologna"},"841":{"code":"BZ","name":"Bolzano"},"842":{"code":"BS","name":"Brescia"},"843":{"code":"BR","name":"Brindisi"},"844":{"code":"CA","name":"Cagliari"},"845":{"code":"CL","name":"Caltanissetta"},"846":{"code":"CB","name":"Campobasso"},"847":{"code":"CI","name":"Carbonia Iglesias"},"848":{"code":"CE","name":"Caserta"},"849":{"code":"CT","name":"Catania"},"850":{"code":"CZ","name":"Catanzaro"},"851":{"code":"CH","name":"Chieti"},"852":{"code":"CO","name":"Como"},"853":{"code":"CS","name":"Cosenza"},"854":{"code":"CR","name":"Cremona"},"855":{"code":"KR","name":"Crotone"},"856":{"code":"CN","name":"Cuneo"},"857":{"code":"EN","name":"Enna"},"858":{"code":"FM","name":"Fermo"},"859":{"code":"FE","name":"Ferrara"},"860":{"code":"FI","name":"Firenze"},"861":{"code":"FG","name":"Foggia"},"862":{"code":"FC","name":"Forli-Cesena"},"863":{"code":"FR","name":"Frosinone"},"864":{"code":"GE","name":"Genova"},"865":{"code":"GO","name":"Gorizia"},"866":{"code":"GR","name":"Grosseto"},"867":{"code":"IM","name":"Imperia"},"868":{"code":"IS","name":"Isernia"},"829":{"code":"AQ","name":"L'Aquila"},"869":{"code":"SP","name":"La-Spezia"},"870":{"code":"LT","name":"Latina"},"871":{"code":"LE","name":"Lecce"},"872":{"code":"LC","name":"Lecco"},"873":{"code":"LI","name":"Livorno"},"874":{"code":"LO","name":"Lodi"},"875":{"code":"LU","name":"Lucca"},"876":{"code":"MC","name":"Macerata"},"877":{"code":"MN","name":"Mantova"},"878":{"code":"MS","name":"Massa-Carrara"},"879":{"code":"MT","name":"Matera"},"880":{"code":"VS","name":"Medio Campidano"},"881":{"code":"ME","name":"Messina"},"882":{"code":"MI","name":"Milano"},"883":{"code":"MO","name":"Modena"},"884":{"code":"MB","name":"Monza-Brianza"},"885":{"code":"NA","name":"Napoli"},"886":{"code":"NO","name":"Novara"},"887":{"code":"NU","name":"Nuoro"},"888":{"code":"OG","name":"Ogliastra"},"889":{"code":"OT","name":"Olbia Tempio"},"890":{"code":"OR","name":"Oristano"},"891":{"code":"PD","name":"Padova"},"892":{"code":"PA","name":"Palermo"},"893":{"code":"PR","name":"Parma"},"894":{"code":"PV","name":"Pavia"},"895":{"code":"PG","name":"Perugia"},"896":{"code":"PU","name":"Pesaro-Urbino"},"897":{"code":"PE","name":"Pescara"},"898":{"code":"PC","name":"Piacenza"},"899":{"code":"PI","name":"Pisa"},"900":{"code":"PT","name":"Pistoia"},"901":{"code":"PN","name":"Pordenone"},"902":{"code":"PZ","name":"Potenza"},"903":{"code":"PO","name":"Prato"},"904":{"code":"RG","name":"Ragusa"},"905":{"code":"RA","name":"Ravenna"},"906":{"code":"RC","name":"Reggio-Calabria"},"907":{"code":"RE","name":"Reggio-Emilia"},"908":{"code":"RI","name":"Rieti"},"909":{"code":"RN","name":"Rimini"},"910":{"code":"RM","name":"Roma"},"911":{"code":"RO","name":"Rovigo"},"912":{"code":"SA","name":"Salerno"},"913":{"code":"SS","name":"Sassari"},"914":{"code":"SV","name":"Savona"},"915":{"code":"SI","name":"Siena"},"916":{"code":"SR","name":"Siracusa"},"917":{"code":"SO","name":"Sondrio"},"918":{"code":"TA","name":"Taranto"},"919":{"code":"TE","name":"Teramo"},"920":{"code":"TR","name":"Terni"},"921":{"code":"TO","name":"Torino"},"922":{"code":"TP","name":"Trapani"},"923":{"code":"TN","name":"Trento"},"924":{"code":"TV","name":"Treviso"},"925":{"code":"TS","name":"Trieste"},"926":{"code":"UD","name":"Udine"},"927":{"code":"VA","name":"Varese"},"928":{"code":"VE","name":"Venezia"},"929":{"code":"VB","name":"Verbania"},"930":{"code":"VC","name":"Vercelli"},"931":{"code":"VR","name":"Verona"},"932":{"code":"VV","name":"Vibo-Valentia"},"933":{"code":"VI","name":"Vicenza"},"934":{"code":"VT","name":"Viterbo"}}},"JE":{"name":"Jersey"},"JM":{"name":"Jama\u00efque"},"JO":{"name":"Jordanie"},"JP":{"name":"Japon"},"KE":{"name":"Kenya"},"KG":{"name":"Kirghizstan"},"KH":{"name":"Cambodge"},"KI":{"name":"Kiribati"},"KM":{"name":"Comores"},"KN":{"name":"Saint-Christophe-et-Ni\u00e9v\u00e8s"},"KP":{"name":"Cor\u00e9e du Nord"},"KR":{"name":"Cor\u00e9e du Sud"},"KW":{"name":"Kowe\u00eft"},"KY":{"name":"\u00celes Ca\u00efmans"},"KZ":{"name":"Kazakhstan"},"LA":{"name":"Laos"},"LB":{"name":"Liban"},"LC":{"name":"Sainte-Lucie"},"LI":{"name":"Liechtenstein"},"LK":{"name":"Sri Lanka"},"LR":{"name":"Liberia"},"LS":{"name":"Lesotho"},"LT":{"name":"Lituanie","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":"Lettonie","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"}}},"LY":{"name":"Libye"},"MA":{"name":"Maroc"},"MC":{"name":"Monaco"},"MD":{"name":"Moldavie"},"ME":{"name":"Mont\u00e9n\u00e9gro"},"MF":{"name":"Saint-Martin"},"MG":{"name":"Madagascar"},"MH":{"name":"\u00celes Marshall"},"MK":{"name":"Mac\u00e9doine du Nord"},"ML":{"name":"Mali"},"MM":{"name":"Myanmar (Birmanie)"},"MN":{"name":"Mongolie"},"MO":{"name":"R.A.S. chinoise de Macao"},"MP":{"name":"\u00celes Mariannes du Nord"},"MQ":{"name":"Martinique"},"MR":{"name":"Mauritanie"},"MS":{"name":"Montserrat"},"MT":{"name":"Malte"},"MU":{"name":"Maurice"},"MV":{"name":"Maldives"},"MW":{"name":"Malawi"},"MX":{"name":"Mexique","regions":{"935":{"code":"AGU","name":"Aguascalientes"},"936":{"code":"BCN","name":"Baja California"},"937":{"code":"BCS","name":"Baja California Sur"},"938":{"code":"CAM","name":"Campeche"},"939":{"code":"CHP","name":"Chiapas"},"940":{"code":"CHH","name":"Chihuahua"},"941":{"code":"CMX","name":"Ciudad de M\u00e9xico"},"942":{"code":"COA","name":"Coahuila"},"943":{"code":"COL","name":"Colima"},"944":{"code":"DUR","name":"Durango"},"945":{"code":"MEX","name":"Estado de M\u00e9xico"},"946":{"code":"GUA","name":"Guanajuato"},"947":{"code":"GRO","name":"Guerrero"},"948":{"code":"HID","name":"Hidalgo"},"949":{"code":"JAL","name":"Jalisco"},"950":{"code":"MIC","name":"Michoac\u00e1n"},"951":{"code":"MOR","name":"Morelos"},"952":{"code":"NAY","name":"Nayarit"},"953":{"code":"NLE","name":"Nuevo Le\u00f3n"},"954":{"code":"OAX","name":"Oaxaca"},"955":{"code":"PUE","name":"Puebla"},"956":{"code":"QUE","name":"Quer\u00e9taro"},"957":{"code":"ROO","name":"Quintana Roo"},"958":{"code":"SLP","name":"San Luis Potos\u00ed"},"959":{"code":"SIN","name":"Sinaloa"},"960":{"code":"SON","name":"Sonora"},"961":{"code":"TAB","name":"Tabasco"},"962":{"code":"TAM","name":"Tamaulipas"},"963":{"code":"TLA","name":"Tlaxcala"},"964":{"code":"VER","name":"Veracruz"},"965":{"code":"YUC","name":"Yucat\u00e1n"},"966":{"code":"ZAC","name":"Zacatecas"}}},"MY":{"name":"Malaisie"},"MZ":{"name":"Mozambique"},"NA":{"name":"Namibie"},"NC":{"name":"Nouvelle-Cal\u00e9donie"},"NE":{"name":"Niger"},"NF":{"name":"\u00cele Norfolk"},"NG":{"name":"Nigeria"},"NI":{"name":"Nicaragua"},"NL":{"name":"Pays-Bas"},"NO":{"name":"Norv\u00e8ge"},"NP":{"name":"N\u00e9pal"},"NR":{"name":"Nauru"},"NU":{"name":"Niue"},"NZ":{"name":"Nouvelle-Z\u00e9lande"},"OM":{"name":"Oman"},"PA":{"name":"Panama"},"PE":{"name":"P\u00e9rou","regions":{"986":{"code":"PE-AMA","name":"Amazonas"},"987":{"code":"PE-ANC","name":"Ancash"},"988":{"code":"PE-APU","name":"Apur\u00edmac"},"989":{"code":"PE-ARE","name":"Arequipa"},"990":{"code":"PE-AYA","name":"Ayacucho"},"991":{"code":"PE-CAJ","name":"Cajamarca"},"992":{"code":"PE-CUS","name":"Cusco"},"993":{"code":"PE-CAL","name":"El Callao"},"994":{"code":"PE-HUV","name":"Huancavelica"},"995":{"code":"PE-HUC","name":"Hu\u00e1nuco"},"996":{"code":"PE-ICA","name":"Ica"},"997":{"code":"PE-JUN","name":"Jun\u00edn"},"998":{"code":"PE-LAL","name":"La Libertad"},"999":{"code":"PE-LAM","name":"Lambayeque"},"1000":{"code":"PE-LIM","name":"Lima"},"1001":{"code":"PE-LOR","name":"Loreto"},"1002":{"code":"PE-MDD","name":"Madre de Dios"},"1003":{"code":"PE-MOQ","name":"Moquegua"},"985":{"code":"PE-LMA","name":"Municipalidad Metropolitana de Lima"},"1004":{"code":"PE-PAS","name":"Pasco"},"1005":{"code":"PE-PIU","name":"Piura"},"1006":{"code":"PE-PUN","name":"Puno"},"1007":{"code":"PE-SAM","name":"San Mart\u00edn"},"1008":{"code":"PE-TAC","name":"Tacna"},"1009":{"code":"PE-TUM","name":"Tumbes"},"1010":{"code":"PE-UCA","name":"Ucayali"}}},"PF":{"name":"Polyn\u00e9sie fran\u00e7aise"},"PG":{"name":"Papouasie-Nouvelle-Guin\u00e9e"},"PH":{"name":"Philippines"},"PK":{"name":"Pakistan"},"PL":{"name":"Pologne","regions":{"1011":{"code":"PL-02","name":"dolno\u015bl\u0105skie"},"1012":{"code":"PL-04","name":"kujawsko-pomorskie"},"1013":{"code":"PL-06","name":"lubelskie"},"1014":{"code":"PL-08","name":"lubuskie"},"1017":{"code":"PL-14","name":"mazowieckie"},"1016":{"code":"PL-12","name":"ma\u0142opolskie"},"1018":{"code":"PL-16","name":"opolskie"},"1019":{"code":"PL-18","name":"podkarpackie"},"1020":{"code":"PL-20","name":"podlaskie"},"1021":{"code":"PL-22","name":"pomorskie"},"1022":{"code":"PL-24","name":"\u015bl\u0105skie"},"1023":{"code":"PL-26","name":"\u015bwi\u0119tokrzyskie"},"1024":{"code":"PL-28","name":"warmi\u0144sko-mazurskie"},"1025":{"code":"PL-30","name":"wielkopolskie"},"1026":{"code":"PL-32","name":"zachodniopomorskie"},"1015":{"code":"PL-10","name":"\u0142\u00f3dzkie"}}},"PM":{"name":"Saint-Pierre-et-Miquelon"},"PN":{"name":"\u00celes Pitcairn"},"PS":{"name":"Territoires palestiniens"},"PT":{"name":"Portugal","regions":{"1027":{"code":"PT-01","name":"Aveiro"},"1028":{"code":"PT-02","name":"Beja"},"1029":{"code":"PT-03","name":"Braga"},"1030":{"code":"PT-04","name":"Bragan\u00e7a"},"1031":{"code":"PT-05","name":"Castelo Branco"},"1032":{"code":"PT-06","name":"Coimbra"},"1033":{"code":"PT-07","name":"\u00c9vora"},"1034":{"code":"PT-08","name":"Faro"},"1035":{"code":"PT-09","name":"Guarda"},"1036":{"code":"PT-10","name":"Leiria"},"1037":{"code":"PT-11","name":"Lisboa"},"1038":{"code":"PT-12","name":"Portalegre"},"1039":{"code":"PT-13","name":"Porto"},"1046":{"code":"PT-30","name":"Regi\u00e3o Aut\u00f3noma da Madeira"},"1045":{"code":"PT-20","name":"Regi\u00e3o Aut\u00f3noma dos A\u00e7ores"},"1040":{"code":"PT-14","name":"Santar\u00e9m"},"1041":{"code":"PT-15","name":"Set\u00fabal"},"1042":{"code":"PT-16","name":"Viana do Castelo"},"1043":{"code":"PT-17","name":"Vila Real"},"1044":{"code":"PT-18","name":"Viseu"}}},"PW":{"name":"Palaos"},"PY":{"name":"Paraguay","regions":{"968":{"code":"PY-16","name":"Alto Paraguay"},"969":{"code":"PY-10","name":"Alto Paran\u00e1"},"970":{"code":"PY-13","name":"Amambay"},"967":{"code":"PY-ASU","name":"Asunci\u00f3n"},"971":{"code":"PY-19","name":"Boquer\u00f3n"},"972":{"code":"PY-5","name":"Caaguaz\u00fa"},"973":{"code":"PY-6","name":"Caazap\u00e1"},"974":{"code":"PY-14","name":"Canindey\u00fa"},"975":{"code":"PY-11","name":"Central"},"976":{"code":"PY-1","name":"Concepci\u00f3n"},"977":{"code":"PY-3","name":"Cordillera"},"978":{"code":"PY-4","name":"Guair\u00e1"},"979":{"code":"PY-7","name":"Itap\u00faa"},"980":{"code":"PY-8","name":"Misiones"},"981":{"code":"PY-12","name":"\u00d1eembuc\u00fa"},"982":{"code":"PY-9","name":"Paraguar\u00ed"},"983":{"code":"PY-15","name":"Presidente Hayes"},"984":{"code":"PY-2","name":"San Pedro"}}},"QA":{"name":"Qatar"},"RE":{"name":"La R\u00e9union"},"RO":{"name":"Roumanie","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"}}},"RS":{"name":"Serbie"},"RU":{"name":"Russie"},"RW":{"name":"Rwanda"},"SA":{"name":"Arabie saoudite"},"SB":{"name":"\u00celes Salomon"},"SC":{"name":"Seychelles"},"SD":{"name":"Soudan"},"SE":{"name":"Su\u00e8de","regions":{"1057":{"code":"SE-K","name":"Blekinge l\u00e4n"},"1058":{"code":"SE-W","name":"Dalarnas l\u00e4n"},"1060":{"code":"SE-X","name":"G\u00e4vleborgs l\u00e4n"},"1059":{"code":"SE-I","name":"Gotlands l\u00e4n"},"1061":{"code":"SE-N","name":"Hallands l\u00e4n"},"1062":{"code":"SE-Z","name":"J\u00e4mtlands l\u00e4n"},"1063":{"code":"SE-F","name":"J\u00f6nk\u00f6pings l\u00e4n"},"1064":{"code":"SE-H","name":"Kalmar l\u00e4n"},"1065":{"code":"SE-G","name":"Kronobergs l\u00e4n"},"1066":{"code":"SE-BD","name":"Norrbottens l\u00e4n"},"1076":{"code":"SE-T","name":"\u00d6rebro l\u00e4n"},"1077":{"code":"SE-E","name":"\u00d6sterg\u00f6tlands l\u00e4n"},"1067":{"code":"SE-M","name":"Sk\u00e5ne l\u00e4n"},"1069":{"code":"SE-D","name":"S\u00f6dermanlands l\u00e4n"},"1068":{"code":"SE-AB","name":"Stockholms l\u00e4n"},"1070":{"code":"SE-C","name":"Uppsala l\u00e4n"},"1071":{"code":"SE-S","name":"V\u00e4rmlands l\u00e4n"},"1072":{"code":"SE-AC","name":"V\u00e4sterbottens l\u00e4n"},"1073":{"code":"SE-Y","name":"V\u00e4sternorrlands l\u00e4n"},"1074":{"code":"SE-U","name":"V\u00e4stmanlands l\u00e4n"},"1075":{"code":"SE-O","name":"V\u00e4stra G\u00f6talands l\u00e4n"}}},"SG":{"name":"Singapour"},"SH":{"name":"Sainte-H\u00e9l\u00e8ne"},"SI":{"name":"Slov\u00e9nie"},"SJ":{"name":"Svalbard et Jan Mayen"},"SK":{"name":"Slovaquie"},"SL":{"name":"Sierra Leone"},"SM":{"name":"Saint-Marin"},"SN":{"name":"S\u00e9n\u00e9gal"},"SO":{"name":"Somalie"},"SR":{"name":"Suriname","regions":{"1047":{"code":"SR-BR","name":"Brokopondo"},"1048":{"code":"SR-CM","name":"Commewijne"},"1049":{"code":"SR-CR","name":"Coronie"},"1050":{"code":"SR-MA","name":"Marowijne"},"1051":{"code":"SR-NI","name":"Nickerie"},"1052":{"code":"SR-PR","name":"Para"},"1053":{"code":"SR-PM","name":"Paramaribo"},"1054":{"code":"SR-SA","name":"Saramacca"},"1055":{"code":"SR-SI","name":"Sipaliwini"},"1056":{"code":"SR-WA","name":"Wanica"}}},"ST":{"name":"Sao Tom\u00e9-et-Principe"},"SV":{"name":"Salvador"},"SX":{"name":"Saint-Martin (partie n\u00e9erlandaise)"},"SY":{"name":"Syrie"},"SZ":{"name":"Eswatini"},"TC":{"name":"\u00celes Turques-et-Ca\u00efques"},"TD":{"name":"Tchad"},"TF":{"name":"Terres australes fran\u00e7aises"},"TG":{"name":"Togo"},"TH":{"name":"Tha\u00eflande"},"TJ":{"name":"Tadjikistan"},"TK":{"name":"Tokelau"},"TL":{"name":"Timor oriental"},"TM":{"name":"Turkm\u00e9nistan"},"TN":{"name":"Tunisie"},"TO":{"name":"Tonga"},"TR":{"name":"Turquie"},"TT":{"name":"Trinit\u00e9-et-Tobago"},"TV":{"name":"Tuvalu"},"TW":{"name":"Ta\u00efwan"},"TZ":{"name":"Tanzanie"},"UA":{"name":"Ukraine","regions":{"1155":{"code":"UA-43","name":"Avtonomna Respublika Krym"},"1131":{"code":"UA-71","name":"Cherkaska oblast"},"1132":{"code":"UA-74","name":"Chernihivska oblast"},"1133":{"code":"UA-77","name":"Chernivetska oblast"},"1134":{"code":"UA-12","name":"Dnipropetrovska oblast"},"1135":{"code":"UA-14","name":"Donetska oblast"},"1136":{"code":"UA-26","name":"Ivano-Frankivska oblast"},"1137":{"code":"UA-63","name":"Kharkivska oblast"},"1138":{"code":"UA-65","name":"Khersonska oblast"},"1139":{"code":"UA-68","name":"Khmelnytska oblast"},"1140":{"code":"UA-35","name":"Kirovohradska oblast"},"1156":{"code":"UA-30","name":"Kyiv"},"1141":{"code":"UA-32","name":"Kyivska oblast"},"1142":{"code":"UA-09","name":"Luhanska oblast"},"1143":{"code":"UA-46","name":"Lvivska oblast"},"1144":{"code":"UA-48","name":"Mykolaivska oblast"},"1145":{"code":"UA-51","name":"Odeska oblast"},"1146":{"code":"UA-53","name":"Poltavska oblast"},"1147":{"code":"UA-56","name":"Rivnenska oblast"},"1157":{"code":"UA-40","name":"Sevastopol"},"1148":{"code":"UA-59","name":"Sumska oblast"},"1149":{"code":"UA-61","name":"Ternopilska oblast"},"1150":{"code":"UA-05","name":"Vinnytska oblast"},"1151":{"code":"UA-07","name":"Volynska oblast"},"1152":{"code":"UA-21","name":"Zakarpatska oblast"},"1153":{"code":"UA-23","name":"Zaporizka oblast"},"1154":{"code":"UA-18","name":"Zhytomyrska oblast"}}},"UG":{"name":"Ouganda"},"UM":{"name":"\u00celes mineures \u00e9loign\u00e9es des \u00c9tats-Unis"},"US":{"name":"\u00c9tats-Unis","regions":{"1":{"code":"AL","name":"Alabama"},"2":{"code":"AK","name":"Alaska"},"3":{"code":"AS","name":"American Samoa"},"4":{"code":"AZ","name":"Arizona"},"5":{"code":"AR","name":"Arkansas"},"6":{"code":"AE","name":"Armed Forces Africa"},"7":{"code":"AA","name":"Armed Forces Americas"},"8":{"code":"AE","name":"Armed Forces Canada"},"9":{"code":"AE","name":"Armed Forces Europe"},"10":{"code":"AE","name":"Armed Forces Middle East"},"11":{"code":"AP","name":"Armed Forces Pacific"},"12":{"code":"CA","name":"California"},"13":{"code":"CO","name":"Colorado"},"14":{"code":"CT","name":"Connecticut"},"15":{"code":"DE","name":"Delaware"},"16":{"code":"DC","name":"District of Columbia"},"17":{"code":"FM","name":"Federated States Of Micronesia"},"18":{"code":"FL","name":"Florida"},"19":{"code":"GA","name":"Georgia"},"20":{"code":"GU","name":"Guam"},"21":{"code":"HI","name":"Hawaii"},"22":{"code":"ID","name":"Idaho"},"23":{"code":"IL","name":"Illinois"},"24":{"code":"IN","name":"Indiana"},"25":{"code":"IA","name":"Iowa"},"26":{"code":"KS","name":"Kansas"},"27":{"code":"KY","name":"Kentucky"},"28":{"code":"LA","name":"Louisiana"},"29":{"code":"ME","name":"Maine"},"30":{"code":"MH","name":"Marshall Islands"},"31":{"code":"MD","name":"Maryland"},"32":{"code":"MA","name":"Massachusetts"},"33":{"code":"MI","name":"Michigan"},"34":{"code":"MN","name":"Minnesota"},"35":{"code":"MS","name":"Mississippi"},"36":{"code":"MO","name":"Missouri"},"37":{"code":"MT","name":"Montana"},"38":{"code":"NE","name":"Nebraska"},"39":{"code":"NV","name":"Nevada"},"40":{"code":"NH","name":"New Hampshire"},"41":{"code":"NJ","name":"New Jersey"},"42":{"code":"NM","name":"New Mexico"},"43":{"code":"NY","name":"New York"},"44":{"code":"NC","name":"North Carolina"},"45":{"code":"ND","name":"North Dakota"},"46":{"code":"MP","name":"Northern Mariana Islands"},"47":{"code":"OH","name":"Ohio"},"48":{"code":"OK","name":"Oklahoma"},"49":{"code":"OR","name":"Oregon"},"50":{"code":"PW","name":"Palau"},"51":{"code":"PA","name":"Pennsylvania"},"52":{"code":"PR","name":"Puerto Rico"},"53":{"code":"RI","name":"Rhode Island"},"54":{"code":"SC","name":"South Carolina"},"55":{"code":"SD","name":"South Dakota"},"56":{"code":"TN","name":"Tennessee"},"57":{"code":"TX","name":"Texas"},"58":{"code":"UT","name":"Utah"},"59":{"code":"VT","name":"Vermont"},"60":{"code":"VI","name":"Virgin Islands"},"61":{"code":"VA","name":"Virginia"},"62":{"code":"WA","name":"Washington"},"63":{"code":"WV","name":"West Virginia"},"64":{"code":"WI","name":"Wisconsin"},"65":{"code":"WY","name":"Wyoming"}}},"UY":{"name":"Uruguay","regions":{"1078":{"code":"UY-AR","name":"Artigas"},"1079":{"code":"UY-CA","name":"Canelones"},"1080":{"code":"UY-CL","name":"Cerro Largo"},"1081":{"code":"UY-CO","name":"Colonia"},"1082":{"code":"UY-DU","name":"Durazno"},"1083":{"code":"UY-FS","name":"Flores"},"1084":{"code":"UY-FD","name":"Florida"},"1085":{"code":"UY-LA","name":"Lavalleja"},"1086":{"code":"UY-MA","name":"Maldonado"},"1087":{"code":"UY-MO","name":"Montevideo"},"1088":{"code":"UY-PA","name":"Paysandu"},"1089":{"code":"UY-RN","name":"R\u00edo Negro"},"1090":{"code":"UY-RV","name":"Rivera"},"1091":{"code":"UY-RO","name":"Rocha"},"1092":{"code":"UY-SA","name":"Salto"},"1093":{"code":"UY-SJ","name":"San Jos\u00e9"},"1094":{"code":"UY-SO","name":"Soriano"},"1095":{"code":"UY-TA","name":"Tacuaremb\u00f3"},"1096":{"code":"UY-TT","name":"Treinta y Tres"}}},"UZ":{"name":"Ouzb\u00e9kistan"},"VA":{"name":"\u00c9tat de la Cit\u00e9 du Vatican"},"VC":{"name":"Saint-Vincent-et-les Grenadines"},"VE":{"name":"Venezuela","regions":{"1099":{"code":"VE-Z","name":"Amazonas"},"1100":{"code":"VE-B","name":"Anzo\u00e1tegui"},"1101":{"code":"VE-C","name":"Apure"},"1102":{"code":"VE-D","name":"Aragua"},"1103":{"code":"VE-E","name":"Barinas"},"1104":{"code":"VE-F","name":"Bol\u00edvar"},"1105":{"code":"VE-G","name":"Carabobo"},"1106":{"code":"VE-H","name":"Cojedes"},"1107":{"code":"VE-Y","name":"Delta Amacuro"},"1097":{"code":"VE-W","name":"Dependencias Federales"},"1098":{"code":"VE-A","name":"Distrito Capital"},"1108":{"code":"VE-I","name":"Falc\u00f3n"},"1109":{"code":"VE-J","name":"Gu\u00e1rico"},"1110":{"code":"VE-K","name":"Lara"},"1111":{"code":"VE-L","name":"M\u00e9rida"},"1112":{"code":"VE-M","name":"Miranda"},"1113":{"code":"VE-N","name":"Monagas"},"1114":{"code":"VE-O","name":"Nueva Esparta"},"1115":{"code":"VE-P","name":"Portuguesa"},"1116":{"code":"VE-R","name":"Sucre"},"1117":{"code":"VE-S","name":"T\u00e1chira"},"1118":{"code":"VE-T","name":"Trujillo"},"1119":{"code":"VE-X","name":"Vargas"},"1120":{"code":"VE-U","name":"Yaracuy"},"1121":{"code":"VE-V","name":"Zulia"}}},"VG":{"name":"\u00celes Vierges britanniques"},"VI":{"name":"\u00celes Vierges des \u00c9tats-Unis"},"VN":{"name":"Vi\u00eat Nam"},"VU":{"name":"Vanuatu"},"WF":{"name":"Wallis-et-Futuna"},"WS":{"name":"Samoa"},"XK":{"name":"Kosovo"},"YE":{"name":"Y\u00e9men"},"YT":{"name":"Mayotte"},"ZA":{"name":"Afrique du Sud"},"ZM":{"name":"Zambie"},"ZW":{"name":"Zimbabwe"},"data_id":1791965363},"captcha":[],"instant-purchase":[],"loggedAsCustomer":[],"persistent":[],"review":[],"payments":[],"wishlist":{"items":[]},"amasty-storepickup-data":[],"billing_amount_shipping":[],"avrilb2b-homepage-activity":[],"hyva_checkout":[],"payplug-payments-cards":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[],"paypal-buyer-country":[],"connectif":[]}</script>
<script>
window.ajaxCart = (selectors = '.product_addtocart_form', recursive = true) => {
const forms = document.querySelectorAll(selectors);
const createLoader = () => {
const loader = document.createElement('div');
loader.className = 'absolute inset-0 flex justify-center items-center loader';
loader.innerHTML = `
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="32" height="32">
<path fill="#fff"
d="M73 50c0-12.7-10.3-23-23-23S27 37.3 27 50m3.9 0c0-10.5 8.5-19.1 19.1-19.1S69.1 39.5 69.1 50">
<animateTransform attributeName="transform" type="rotate" dur="1s"
from="0 50 50" to="360 50 50" repeatCount="indefinite"/>
</path>
</svg>`;
return loader;
};
const getButtonForForm = (form) => {
return form.querySelector('.btn-add-to-cart')
|| form.querySelector('[type="submit"]')
|| (form.id ? document.querySelector(`button[form="${CSS.escape(form.id)}"]`) : null);
};
const setButtonLoading = (button, loader, loading) => {
if (!button) return;
if (loading) {
button.classList.add('relative', 'is-loading');
button.disabled = true;
button.prepend(loader);
} else {
setTimeout(() => {
loader.remove();
button.classList.remove('is-loading');
button.disabled = false;
}, 250);
}
};
forms.forEach(form => {
let isSubmitting = false;
const externalButtons = form.id
? document.querySelectorAll(`button[form="${CSS.escape(form.id)}"]`)
: [];
externalButtons.forEach((button) => {
button.addEventListener('click', (e) => {
e.preventDefault();
if (isSubmitting) return;
if (typeof form.requestSubmit === 'function') {
form.requestSubmit(button);
return;
}
if (typeof form.checkValidity === 'function' && !form.checkValidity()) {
form.reportValidity?.();
return;
}
form.submit();
});
});
form.addEventListener('submit', async (e) => {
e.preventDefault();
// Keep native browser validation (required/email/etc.) before AJAX add-to-cart.
if (typeof form.checkValidity === 'function' && !form.checkValidity()) {
if (typeof form.reportValidity === 'function') {
form.reportValidity();
}
return;
}
if (isSubmitting) return;
isSubmitting = true;
const formData = new FormData(form);
const button = getButtonForForm(form);
const loader = createLoader();
const startTime = Date.now();
externalButtons.forEach(btn => { btn.disabled = true; });
setButtonLoading(button, loader, true);
const getCleanFormAction = (form) => {
try {
const url = new URL(form.action);
['p', 'isAjax', 'q'].forEach(param => url.searchParams.delete(param));
return url.toString();
} catch (e) {
return form.action;
}
};
try {
const response = await fetch(getCleanFormAction(form), {
method: 'POST',
body: formData,
headers: { 'X-Requested-With': 'XMLHttpRequest' }
});
if (!response.ok) {
form.submit();
return;
}
if (response.redirected) {
window.location.href = response.url;
return;
}
const data = await response.json();
if (data.backUrl) {
window.location.href = data.backUrl;
return;
}
window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
if (recursive) {
window.dispatchEvent(new CustomEvent('ajax:addToCart'));
}
} catch (err) {
if (typeof window.dispatchMessages !== 'undefined') {
window.dispatchMessages(
[{ type: 'error', text: 'Il\u0020y\u0020a\u0020eu\u0020un\u0020probl\u00E8me\u0020dans\u0020l\u0027ajout\u0020de\u0020votre\u0020article\u0020au\u0020panier.' }],
5000
);
}
} finally {
document.cookie = 'mage-messages=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
const elapsed = Date.now() - startTime;
const delay = Math.max(0, 250 - elapsed);
setTimeout(() => {
setButtonLoading(button, loader, false);
externalButtons.forEach(btn => { btn.disabled = false; });
isSubmitting = false;
}, delay);
}
});
});
};
window.ajaxCart();
</script>
</div><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4a5ac945ad9d122',t:'MTc5MTk3MTM2Nw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>